@kortix/ui 0.14.8 → 0.14.10
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/README.md +2 -2
- package/dist/_vendor/kortix-shared.js +116 -3
- package/dist/_vendor/shared/app-config.d.ts +175 -0
- package/dist/_vendor/shared/artifact-comments.d.ts +235 -0
- package/dist/_vendor/shared/channel-descriptors.d.ts +96 -0
- package/dist/_vendor/shared/channel-message.d.ts +45 -5
- package/dist/_vendor/shared/index.d.ts +2 -0
- package/dist/_vendor/shared/space-slug.d.ts +37 -0
- package/dist/access/access/access-detail-shell.js +1 -1
- package/dist/access/access/principal-picker.d.ts +11 -0
- package/dist/access/access/principal-picker.js +3 -2
- package/dist/apps/app-preview-pool.d.ts +7 -2
- package/dist/apps/app-preview-pool.js +30 -7
- package/dist/apps/app-shared.d.ts +22 -15
- package/dist/apps/app-shared.js +37 -19
- package/dist/apps/index.d.ts +2 -2
- package/dist/apps/index.js +2 -2
- package/dist/artifacts/artifact-frame.d.ts +16 -0
- package/dist/artifacts/artifact-frame.js +55 -0
- package/dist/artifacts/artifact-session.d.ts +18 -0
- package/dist/artifacts/artifact-session.js +101 -0
- package/dist/artifacts/frame-policy.d.ts +30 -0
- package/dist/artifacts/frame-policy.js +61 -0
- package/dist/artifacts/index.d.ts +3 -0
- package/dist/artifacts/index.js +5 -0
- package/dist/browser/sandbox-browser-chrome.d.ts +4 -1
- package/dist/browser/sandbox-browser-chrome.js +2 -2
- package/dist/customize/agents/agent-grant-pages.d.ts +5 -1
- package/dist/customize/agents/agent-grant-pages.js +30 -4
- package/dist/customize/agents/agent-page.js +3 -1
- package/dist/customize/agents/agent-policy-sets.d.ts +43 -0
- package/dist/customize/agents/agent-policy-sets.js +72 -0
- package/dist/customize/agents/agent-triggers-section.js +2 -1
- package/dist/customize/connectors/add-mcp/add-mcp-server-dialog.d.ts +6 -1
- package/dist/customize/connectors/add-mcp/add-mcp-server-dialog.js +10 -4
- package/dist/customize/connectors/agent-access.d.ts +35 -0
- package/dist/customize/connectors/agent-access.js +77 -0
- package/dist/customize/connectors/catalog/browse-sections.d.ts +2 -29
- package/dist/customize/connectors/catalog/browse-sections.js +7 -74
- package/dist/customize/connectors/catalog/catalog-entry.d.ts +18 -37
- package/dist/customize/connectors/catalog/catalog-entry.js +28 -40
- package/dist/customize/connectors/catalog/connector-browse.d.ts +3 -32
- package/dist/customize/connectors/catalog/connector-browse.js +19 -50
- package/dist/customize/connectors/catalog/use-catalog.d.ts +20 -59
- package/dist/customize/connectors/catalog/use-catalog.js +48 -175
- package/dist/customize/connectors/connector-identity.d.ts +9 -11
- package/dist/customize/connectors/connector-identity.js +13 -42
- package/dist/customize/connectors/connector-moves-banner.d.ts +2 -1
- package/dist/customize/connectors/connector-moves-banner.js +4 -6
- package/dist/customize/connectors/connector-routes.d.ts +21 -9
- package/dist/customize/connectors/connector-routes.js +29 -20
- package/dist/customize/connectors/connectors-page.js +53 -82
- package/dist/customize/connectors/detail/app-page.js +226 -98
- package/dist/customize/connectors/detail/computer-app-page.d.ts +16 -0
- package/dist/customize/connectors/detail/computer-app-page.js +39 -0
- package/dist/customize/connectors/detail/connector-accounts.js +3 -1
- package/dist/customize/connectors/detail/connector-advanced-tools.d.ts +4 -1
- package/dist/customize/connectors/detail/connector-advanced-tools.js +2 -2
- package/dist/customize/connectors/detail/connector-agents.d.ts +14 -0
- package/dist/customize/connectors/detail/connector-agents.js +69 -0
- package/dist/customize/connectors/detail/connector-detail-tabs.js +2 -1
- package/dist/customize/connectors/detail/connector-move-row.d.ts +8 -5
- package/dist/customize/connectors/detail/connector-move-row.js +23 -14
- package/dist/customize/connectors/detail/connector-page.d.ts +4 -1
- package/dist/customize/connectors/detail/connector-page.js +14 -10
- package/dist/customize/connectors/detail/connector-policy-sets.d.ts +28 -0
- package/dist/customize/connectors/detail/connector-policy-sets.js +203 -0
- package/dist/customize/connectors/detail/connector-settings.d.ts +4 -1
- package/dist/customize/connectors/detail/connector-settings.js +7 -3
- package/dist/customize/connectors/detail/connector-status.d.ts +19 -6
- package/dist/customize/connectors/detail/connector-status.js +34 -10
- package/dist/customize/connectors/detail/connector-tabs.d.ts +4 -1
- package/dist/customize/connectors/detail/connector-tabs.js +8 -2
- package/dist/customize/connectors/detail/connector-tools.d.ts +3 -3
- package/dist/customize/connectors/detail/connector-tools.js +105 -48
- package/dist/customize/connectors/detail/email-inboxes.d.ts +43 -0
- package/dist/customize/connectors/detail/email-inboxes.js +184 -0
- package/dist/customize/connectors/detail/provider-info.d.ts +1 -1
- package/dist/customize/connectors/detail/provider-info.js +2 -2
- package/dist/customize/connectors/detail/status-badge.d.ts +1 -1
- package/dist/customize/connectors/detail/status-badge.js +4 -5
- package/dist/customize/connectors/detail/use-connector-detail.d.ts +6 -0
- package/dist/customize/connectors/detail/use-connector-detail.js +14 -4
- package/dist/customize/connectors/install/install-dialog.d.ts +23 -0
- package/dist/customize/connectors/install/install-dialog.js +40 -0
- package/dist/customize/connectors/install/install.d.ts +13 -2
- package/dist/customize/connectors/install/install.js +9 -4
- package/dist/customize/connectors/install/use-install.d.ts +19 -2
- package/dist/customize/connectors/install/use-install.js +65 -37
- package/dist/customize/connectors/install/way-kind.d.ts +5 -0
- package/dist/customize/connectors/install/way-kind.js +16 -0
- package/dist/customize/connectors/provider-label.d.ts +2 -1
- package/dist/customize/connectors/provider-label.js +13 -3
- package/dist/customize/connectors/tools/pattern-rule-draft.d.ts +4 -0
- package/dist/customize/connectors/tools/pattern-rule-draft.js +12 -3
- package/dist/customize/connectors/tools/policy-sets.d.ts +27 -0
- package/dist/customize/connectors/tools/policy-sets.js +41 -0
- package/dist/customize/connectors/tools/tool-groups.d.ts +32 -9
- package/dist/customize/connectors/tools/tool-groups.js +78 -16
- package/dist/customize/connectors/tools/tool-policy-control.d.ts +11 -10
- package/dist/customize/connectors/tools/tool-policy-control.js +15 -16
- package/dist/customize/connectors/tools/tool-policy-labels.d.ts +6 -5
- package/dist/customize/connectors/tools/tool-policy-labels.js +17 -16
- package/dist/customize/connectors/tools/tool-policy.d.ts +50 -4
- package/dist/customize/connectors/tools/tool-policy.js +74 -8
- package/dist/customize/connectors/use-agent-access.d.ts +85 -0
- package/dist/customize/connectors/use-agent-access.js +72 -0
- package/dist/customize/migrate-to-v2/index.d.ts +1 -2
- package/dist/customize/migrate-to-v2/index.js +1 -2
- package/dist/customize/migrate-to-v2/migration-prompt.d.ts +12 -25
- package/dist/customize/migrate-to-v2/migration-prompt.js +34 -236
- package/dist/customize/migrate-to-v2/upgrade-defs.d.ts +1 -1
- package/dist/customize/migrate-to-v2/upgrade-defs.js +7 -6
- package/dist/customize/migrate-to-v2/upgrade-view.js +7 -7
- package/dist/customize/migrate-to-v2/use-run-upgrade.d.ts +3 -3
- package/dist/customize/providers/provider-accordion.js +17 -2
- package/dist/customize/sections/component/channel-access-panel.d.ts +16 -0
- package/dist/customize/sections/component/channel-access-panel.js +146 -0
- package/dist/customize/sections/component/channel-connect-hero.d.ts +3 -2
- package/dist/customize/sections/component/channel-connect-hero.js +3 -2
- package/dist/customize/sections/component/channel-hero-frame.d.ts +31 -0
- package/dist/customize/sections/component/channel-hero-frame.js +40 -0
- package/dist/customize/sections/component/channel-mocks.d.ts +6 -0
- package/dist/customize/sections/component/channel-mocks.js +46 -0
- package/dist/customize/sections/component/channel-row.d.ts +13 -3
- package/dist/customize/sections/component/channel-row.js +10 -4
- package/dist/customize/sections/component/email-connect-form.d.ts +27 -0
- package/dist/customize/sections/component/email-connect-form.js +183 -0
- package/dist/customize/sections/component/slack-connect-card.d.ts +7 -0
- package/dist/customize/sections/component/slack-connect-card.js +2 -3
- package/dist/customize/sections/component/teams-connect-card.d.ts +7 -0
- package/dist/customize/sections/component/teams-connect-card.js +2 -3
- package/dist/customize/sections/component/telegram-channel-row.js +21 -28
- package/dist/customize/sections/connectors-view.d.ts +1 -15
- package/dist/customize/sections/connectors-view.js +81 -314
- package/dist/customize/sections/view/agent-editor-catalog.js +10 -0
- package/dist/customize/sections/view/channels-view.d.ts +6 -1
- package/dist/customize/sections/view/channels-view.js +72 -81
- package/dist/customize/sections/view/gateway/gateway-overview.js +10 -2
- package/dist/customize/settings/rail.js +9 -0
- package/dist/customize/settings/settings-tabs.d.ts +1 -1
- package/dist/customize/settings/settings-tabs.js +1 -0
- package/dist/customize/settings/tabs/chrome-connections-tab.d.ts +6 -0
- package/dist/customize/settings/tabs/chrome-connections-tab.js +99 -0
- package/dist/customize/settings/tabs/experimental-tab.js +35 -16
- package/dist/customize/shared/catalog/catalog-empty-state.d.ts +4 -15
- package/dist/customize/shared/catalog/catalog-empty-state.js +9 -7
- package/dist/customize/shared/channels-switch-dialog.d.ts +18 -0
- package/dist/customize/shared/channels-switch-dialog.js +30 -0
- package/dist/customize/shared/feature-gate-screen.js +27 -9
- package/dist/customize/shared/use-customize-prefetch.d.ts +2 -3
- package/dist/customize/shared/use-customize-prefetch.js +9 -27
- package/dist/customize/triggers/schedule/post-to-field.d.ts +18 -0
- package/dist/customize/triggers/schedule/post-to-field.js +49 -0
- package/dist/customize/triggers/schedule/schedule-copy.d.ts +10 -6
- package/dist/customize/triggers/schedule/schedule-copy.js +42 -11
- package/dist/customize/triggers/schedule/schedule-detail-sheet.js +2 -1
- package/dist/customize/triggers/schedule/trigger-composer-logic.d.ts +22 -0
- package/dist/customize/triggers/schedule/trigger-composer-logic.js +25 -0
- package/dist/customize/triggers/schedule/trigger-composer.d.ts +5 -0
- package/dist/customize/triggers/schedule/trigger-composer.js +23 -14
- package/dist/customize/triggers/schedule/trigger-edit-logic.js +3 -0
- package/dist/customize/triggers/schedule/trigger-filter.js +1 -1
- package/dist/customize/triggers/schedule/trigger-runs-logic.d.ts +2 -2
- package/dist/customize/triggers/schedule/trigger-runs-panel.js +1 -0
- package/dist/customize/triggers/schedule/trigger-toast.js +2 -1
- package/dist/customize/triggers/schedule-view.js +5 -2
- package/dist/files/index.d.ts +1 -0
- package/dist/files/index.js +1 -0
- package/dist/files/project/change-request-recovery.d.ts +1 -26
- package/dist/files/project/change-request-recovery.js +1 -59
- package/dist/files/project/components/change-request-detail-dialog.js +13 -3
- package/dist/files/project/components/drive-explorer.js +15 -15
- package/dist/files/project/components/drive-toolbar.d.ts +16 -2
- package/dist/files/project/components/drive-toolbar.js +14 -5
- package/dist/files/project/hooks/use-change-request-recovery.js +3 -19
- package/dist/files/project/hooks/use-change-requests.d.ts +1 -0
- package/dist/files/project/hooks/use-change-requests.js +11 -2
- package/dist/files/renderers/image-frame.d.ts +48 -0
- package/dist/files/renderers/image-frame.js +59 -0
- package/dist/files/renderers/image-renderer.d.ts +11 -1
- package/dist/files/renderers/image-renderer.js +13 -3
- package/dist/files/renderers/pdf/pdf-clipboard.d.ts +2 -0
- package/dist/files/renderers/pdf/pdf-clipboard.js +21 -0
- package/dist/files/renderers/pdf/pdf-viewer.js +4 -2
- package/dist/files/renderers/show-content-renderer.d.ts +9 -1
- package/dist/files/renderers/show-content-renderer.js +56 -14
- package/dist/files/runtime/file-source.js +2 -0
- package/dist/files/runtime/hooks/use-binary-blob.d.ts +10 -1
- package/dist/files/runtime/hooks/use-binary-blob.js +10 -4
- package/dist/files/runtime/hooks/use-shared-image.d.ts +41 -0
- package/dist/files/runtime/hooks/use-shared-image.js +177 -0
- package/dist/files/viewer/file-content-renderer.d.ts +22 -1
- package/dist/files/viewer/file-content-renderer.js +50 -7
- package/dist/files/viewer/file-header.d.ts +7 -3
- package/dist/files/viewer/file-header.js +20 -11
- package/dist/files/viewer/file-preview-modal.d.ts +1 -1
- package/dist/files/viewer/file-preview-modal.js +10 -22
- package/dist/files/viewer/file-source.d.ts +13 -0
- package/dist/files/viewer/use-file-content-state.d.ts +2 -0
- package/dist/files/viewer/use-file-content-state.js +28 -10
- package/dist/files/viewer/viewer-actions.d.ts +3 -1
- package/dist/files/viewer/viewer-actions.js +2 -2
- package/dist/hooks/use-media-query.d.ts +1 -0
- package/dist/hooks/use-mobile.d.ts +5 -0
- package/dist/hooks/use-mobile.js +8 -0
- package/dist/i18n/en.d.ts +1062 -85
- package/dist/i18n/en.js +1078 -101
- package/dist/i18n/ui-catalog/localize-ui-catalog.js +4 -0
- package/dist/i18n/ui-catalog/remaining-ui-translation-keys.generated.js +15 -3
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/internal/account-hub/account-settings-sidebar.js +1 -1
- package/dist/internal/account-hub/hub-sheet.d.ts +9 -1
- package/dist/internal/account-hub/hub-sheet.js +21 -5
- package/dist/internal/account-hub/sections.d.ts +1 -1
- package/dist/internal/account-hub/sections.js +2 -1
- package/dist/internal/apps-and-extensions/apps-modal.d.ts +9 -0
- package/dist/internal/apps-and-extensions/apps-modal.js +107 -0
- package/dist/internal/auth/auth-card-shell.js +3 -3
- package/dist/internal/chrome/browser-icon.d.ts +24 -0
- package/dist/internal/chrome/browser-icon.js +58 -0
- package/dist/internal/chrome/chrome-card-state.d.ts +16 -0
- package/dist/internal/chrome/chrome-card-state.js +9 -0
- package/dist/internal/chrome/chrome-connect.d.ts +69 -0
- package/dist/internal/chrome/chrome-connect.js +178 -0
- package/dist/internal/chrome/chrome-mock.d.ts +4 -0
- package/dist/internal/chrome/chrome-mock.js +15 -0
- package/dist/internal/chrome/chrome-names.d.ts +15 -0
- package/dist/internal/chrome/chrome-names.js +35 -0
- package/dist/internal/chrome/extension.d.ts +47 -0
- package/dist/internal/chrome/extension.js +91 -0
- package/dist/internal/chrome/use-chrome-offered.d.ts +11 -0
- package/dist/internal/chrome/use-chrome-offered.js +22 -0
- package/dist/internal/components/agent-mark.js +5 -2
- package/dist/internal/connector-logo/connector-logo-source.d.ts +64 -0
- package/dist/internal/connector-logo/connector-logo-source.js +49 -0
- package/dist/internal/connector-logo/connector-logo.d.ts +39 -0
- package/dist/internal/connector-logo/connector-logo.js +56 -0
- package/dist/internal/connector-logo/connector-mark-files.d.ts +11 -0
- package/dist/internal/connector-logo/connector-mark-files.js +35 -0
- package/dist/internal/files/file-read-retry.d.ts +13 -0
- package/dist/internal/files/file-read-retry.js +23 -3
- package/dist/internal/files/session-drive-files.d.ts +5 -1
- package/dist/internal/files/session-drive-files.js +7 -2
- package/dist/internal/hooks/channels/use-channels-installations.d.ts +32 -5
- package/dist/internal/hooks/channels/use-channels-installations.js +55 -7
- package/dist/internal/hooks/channels/use-email-inboxes.d.ts +19 -0
- package/dist/internal/hooks/channels/use-email-inboxes.js +48 -0
- package/dist/internal/hooks/connectors/use-add-account.js +1 -1
- package/dist/internal/hooks/index.d.ts +1 -1
- package/dist/internal/hooks/index.js +1 -1
- package/dist/internal/hooks/projects/use-new-project-session.d.ts +9 -0
- package/dist/internal/hooks/projects/use-new-project-session.js +28 -12
- package/dist/internal/hooks/use-auto-scroll.d.ts +8 -1
- package/dist/internal/hooks/use-auto-scroll.js +4 -4
- package/dist/internal/icons/edge.d.ts +5 -0
- package/dist/internal/icons/edge.js +10 -0
- package/dist/internal/icons/telegram.d.ts +5 -0
- package/dist/internal/icons/telegram.js +6 -1
- package/dist/internal/layout/nav-hover-card.d.ts +35 -0
- package/dist/internal/layout/nav-hover-card.js +84 -0
- package/dist/internal/layout/project-nav-row.d.ts +3 -1
- package/dist/internal/layout/project-nav-row.js +3 -2
- package/dist/internal/layout/project-page-header.d.ts +4 -2
- package/dist/internal/layout/project-page-header.js +4 -3
- package/dist/internal/layout/project-settings-nav.js +59 -2
- package/dist/internal/lib/browser-error-noise.d.ts +1 -1
- package/dist/internal/lib/browser-error-noise.js +1 -1
- package/dist/internal/lib/browser-noise/rules/extensions.js +17 -3
- package/dist/internal/lib/browser-noise/rules/injected-scripts.d.ts +7 -0
- package/dist/internal/lib/browser-noise/rules/injected-scripts.js +15 -0
- package/dist/internal/lib/detect-os.d.ts +43 -0
- package/dist/internal/lib/detect-os.js +70 -0
- package/dist/internal/lib/manifest-version.d.ts +1 -1
- package/dist/internal/lib/manifest-version.js +2 -2
- package/dist/internal/lib/memory-href.d.ts +16 -0
- package/dist/internal/lib/memory-href.js +46 -0
- package/dist/internal/lib/use-project-feature-flags.js +13 -9
- package/dist/internal/lib/utils/heic-convert.d.ts +1 -1
- package/dist/internal/lib/utils/heic-convert.js +3 -4
- package/dist/internal/lib/web-notifications.d.ts +20 -0
- package/dist/internal/lib/web-notifications.js +48 -4
- package/dist/internal/notifications/notification-bell.d.ts +4 -1
- package/dist/internal/notifications/notification-bell.js +2 -2
- package/dist/internal/selection/selection-bar.d.ts +2 -1
- package/dist/internal/selection/selection-bar.js +1 -1
- package/dist/internal/stores/apps-modal-store.d.ts +8 -0
- package/dist/internal/stores/apps-modal-store.js +6 -0
- package/dist/internal/stores/composer-prefill-store.d.ts +12 -5
- package/dist/internal/stores/file-preview-store.d.ts +29 -2
- package/dist/internal/stores/file-preview-store.js +19 -1
- package/dist/internal/stores/kortix-computer-store.js +3 -0
- package/dist/internal/stores/sidebar-nav-store.d.ts +1 -1
- package/dist/internal/stores/sidebar-nav-store.js +3 -1
- package/dist/lib/routes.d.ts +13 -1
- package/dist/lib/routes.js +13 -0
- package/dist/markdown/index.d.ts +2 -1
- package/dist/markdown/index.js +2 -1
- package/dist/markdown/setup-links/approval-decision.d.ts +1 -0
- package/dist/markdown/setup-links/approval-decision.js +9 -3
- package/dist/markdown/setup-links/connector-handshake.d.ts +3 -1
- package/dist/markdown/setup-links/connector-handshake.js +12 -10
- package/dist/markdown/setup-links/secret-intake-form.d.ts +0 -10
- package/dist/markdown/setup-links/secret-intake-form.js +1 -1
- package/dist/markdown/setup-links/show-connect-hero.d.ts +28 -0
- package/dist/markdown/setup-links/show-connect-hero.js +91 -0
- package/dist/markdown/unified-markdown.js +5 -5
- package/dist/primitives/badge.d.ts +1 -1
- package/dist/primitives/badge.js +2 -0
- package/dist/primitives/disclosure.js +14 -2
- package/dist/primitives/empty-art.d.ts +12 -0
- package/dist/primitives/empty-art.js +11 -0
- package/dist/primitives/empty-state.d.ts +2 -2
- package/dist/primitives/empty-state.js +6 -5
- package/dist/primitives/mermaid-renderer.d.ts +2 -0
- package/dist/primitives/mermaid-renderer.js +21 -15
- package/dist/primitives/resizable.js +6 -1
- package/dist/primitives/resize-seam.d.ts +11 -0
- package/dist/primitives/resize-seam.js +12 -0
- package/dist/primitives/sidebar-panel.js +4 -7
- package/dist/primitives/tabs.d.ts +14 -1
- package/dist/primitives/tabs.js +1 -1
- package/dist/providers/ui-provider.d.ts +9 -0
- package/dist/session/composer/ComposerAboveCard.d.ts +1 -1
- package/dist/session/composer/ComposerAboveCard.js +2 -2
- package/dist/session/composer/ComposerCard.d.ts +1 -1
- package/dist/session/composer/ComposerCard.js +3 -3
- package/dist/session/composer/agent-selector.d.ts +13 -1
- package/dist/session/composer/agent-selector.js +25 -5
- package/dist/session/composer/composer-agent-access.d.ts +15 -0
- package/dist/session/composer/composer-agent-access.js +27 -0
- package/dist/session/composer/composer-chat-input.d.ts +8 -2
- package/dist/session/composer/composer-chat-input.js +8 -6
- package/dist/session/composer/composer-logic.d.ts +16 -0
- package/dist/session/composer/composer-logic.js +12 -0
- package/dist/session/composer/composer-underbar.d.ts +3 -1
- package/dist/session/composer/composer-underbar.js +4 -3
- package/dist/session/composer/composer.d.ts +15 -1
- package/dist/session/composer/composer.js +19 -1
- package/dist/session/composer/draft/composer-draft.d.ts +6 -2
- package/dist/session/composer/draft/composer-draft.js +5 -1
- package/dist/session/composer/reasoning-effort-selector.js +1 -1
- package/dist/session/models/chatgpt-connection-button.d.ts +11 -0
- package/dist/session/models/chatgpt-connection-button.js +54 -0
- package/dist/session/models/model-selector.js +5 -2
- package/dist/session/models/use-model-connection-gate.d.ts +5 -5
- package/dist/session/models/use-model-connection-gate.js +5 -5
- package/dist/session/outcomes/jump-to-outcome.d.ts +10 -0
- package/dist/session/outcomes/jump-to-outcome.js +11 -0
- package/dist/session/outcomes/session-outcomes-bridge.d.ts +14 -0
- package/dist/session/outcomes/session-outcomes-bridge.js +12 -0
- package/dist/session/outcomes/session-outcomes-provider.d.ts +3 -1
- package/dist/session/outcomes/session-outcomes-provider.js +33 -3
- package/dist/session/panel/easy/app-preview.d.ts +10 -0
- package/dist/session/panel/easy/app-preview.js +31 -12
- package/dist/session/panel/easy/change-requests-card.d.ts +7 -0
- package/dist/session/panel/easy/change-requests-card.js +17 -0
- package/dist/session/panel/easy/easy-panel-logic.js +7 -1
- package/dist/session/panel/easy/easy-panel.js +5 -2
- package/dist/session/panel/easy/file-preview.js +1 -1
- package/dist/session/panel/easy/outputs-card.d.ts +2 -1
- package/dist/session/panel/easy/outputs-card.js +3 -2
- package/dist/session/panel/mobile-tool-drawer.js +7 -1
- package/dist/session/panel/session-audit-panel.js +9 -2
- package/dist/session/panel/session-audit-shared.js +3 -1
- package/dist/session/panel/session-detail-panel.js +9 -3
- package/dist/session/panel/session-files-explorer.d.ts +9 -0
- package/dist/session/panel/session-files-explorer.js +12 -3
- package/dist/session/panel/session-panel-provider.d.ts +15 -1
- package/dist/session/panel/session-panel-provider.js +32 -7
- package/dist/session/panel/shared/derive-panels.d.ts +8 -1
- package/dist/session/panel/shared/derive-panels.js +12 -2
- package/dist/session/panel/shared/output-priority.js +2 -0
- package/dist/session/participants/session-participants.d.ts +8 -2
- package/dist/session/participants/session-participants.js +11 -4
- package/dist/session/prompts/approval-request.d.ts +5 -0
- package/dist/session/prompts/approval-request.js +9 -1
- package/dist/session/prompts/session-approval-review.d.ts +9 -0
- package/dist/session/prompts/session-approval-review.js +18 -0
- package/dist/session/status/session-error-banner.js +2 -49
- package/dist/session/status/session-starting-loader.d.ts +14 -2
- package/dist/session/status/session-starting-loader.js +16 -4
- package/dist/session/thread/after-first-prompt.d.ts +7 -0
- package/dist/session/thread/after-first-prompt.js +8 -0
- package/dist/session/thread/detect-command.d.ts +12 -0
- package/dist/session/thread/detect-command.js +20 -0
- package/dist/session/thread/session-chat.d.ts +3 -1
- package/dist/session/thread/session-chat.js +377 -252
- package/dist/session/thread/session-thread.d.ts +15 -1
- package/dist/session/thread/session-thread.js +20 -3
- package/dist/session/thread/session-transcript-class.d.ts +5 -1
- package/dist/session/thread/session-transcript-class.js +5 -1
- package/dist/session/thread/thread-boot-rows.d.ts +36 -0
- package/dist/session/thread/thread-boot-rows.js +89 -0
- package/dist/session/thread/transcript-rows.d.ts +31 -0
- package/dist/session/thread/transcript-rows.js +3 -0
- package/dist/session/thread/transcript.d.ts +0 -9
- package/dist/session/thread/transcript.js +104 -19
- package/dist/session/tool/shared/infrastructure-contexts.d.ts +28 -0
- package/dist/session/tool/shared/infrastructure-contexts.js +31 -3
- package/dist/session/tool/tool-part-renderer.d.ts +5 -4
- package/dist/session/tool/tool-part-renderer.js +8 -3
- package/dist/session/tool/tools/bash-tool.js +7 -6
- package/dist/session/tool/tools/channel-send-card.d.ts +1 -2
- package/dist/session/tool/tools/channel-send.d.ts +2 -1
- package/dist/session/tool/tools/codemode-tool.js +1 -1
- package/dist/session/tool/tools/connector-tools.js +1 -1
- package/dist/session/tool/tools/image-gen-tool.d.ts +1 -1
- package/dist/session/tool/tools/image-gen-tool.js +241 -53
- package/dist/session/tool/tools/show-tool.js +19 -8
- package/dist/session/turn/channel-brand.d.ts +8 -3
- package/dist/session/turn/channel-brand.js +20 -4
- package/dist/session/turn/message-author.d.ts +8 -0
- package/dist/session/turn/message-author.js +24 -0
- package/dist/session/turn/message-row.d.ts +52 -0
- package/dist/session/turn/message-row.js +44 -0
- package/dist/session/turn/plan-anchor.d.ts +1 -1
- package/dist/session/turn/plan-anchor.js +1 -1
- package/dist/session/turn/user-message.d.ts +14 -6
- package/dist/session/turn/user-message.js +35 -15
- package/dist/styles.css +1 -1
- package/dist/workspace/home/access-requests-bell.d.ts +9 -2
- package/dist/workspace/home/access-requests-bell.js +20 -6
- package/dist/workspace/home/first-chat.d.ts +8 -21
- package/dist/workspace/home/first-chat.js +22 -72
- package/dist/workspace/index.d.ts +6 -0
- package/dist/workspace/index.js +6 -0
- package/dist/workspace/layout/project-home.d.ts +14 -2
- package/dist/workspace/layout/project-home.js +60 -21
- package/dist/workspace/layout/use-project-home-send.d.ts +9 -1
- package/dist/workspace/layout/use-project-home-send.js +82 -3
- package/dist/workspace/memory/body-doc.d.ts +17 -0
- package/dist/workspace/memory/body-doc.js +208 -0
- package/dist/workspace/memory/body-extensions.d.ts +38 -0
- package/dist/workspace/memory/body-extensions.js +103 -0
- package/dist/workspace/memory/company-memory-page.d.ts +8 -0
- package/dist/workspace/memory/company-memory-page.js +16 -0
- package/dist/workspace/memory/memory-all.d.ts +20 -0
- package/dist/workspace/memory/memory-all.js +27 -0
- package/dist/workspace/memory/memory-body.d.ts +19 -0
- package/dist/workspace/memory/memory-body.js +139 -0
- package/dist/workspace/memory/memory-empty.d.ts +13 -0
- package/dist/workspace/memory/memory-empty.js +28 -0
- package/dist/workspace/memory/memory-history.d.ts +27 -0
- package/dist/workspace/memory/memory-history.js +108 -0
- package/dist/workspace/memory/memory-labels.d.ts +16 -0
- package/dist/workspace/memory/memory-labels.js +47 -0
- package/dist/workspace/memory/memory-page-list.d.ts +34 -0
- package/dist/workspace/memory/memory-page-list.js +156 -0
- package/dist/workspace/memory/memory-reader.d.ts +58 -0
- package/dist/workspace/memory/memory-reader.js +123 -0
- package/dist/workspace/memory/memory-view.d.ts +21 -0
- package/dist/workspace/memory/memory-view.js +124 -0
- package/dist/workspace/memory/remember-popover.d.ts +19 -0
- package/dist/workspace/memory/remember-popover.js +61 -0
- package/dist/workspace/memory/remember-this.d.ts +12 -0
- package/dist/workspace/memory/remember-this.js +89 -0
- package/dist/workspace/memory/source-mark.d.ts +18 -0
- package/dist/workspace/memory/source-mark.js +79 -0
- package/dist/workspace/memory/used-memory-chip.d.ts +14 -0
- package/dist/workspace/memory/used-memory-chip.js +61 -0
- package/dist/workspace/new/advanced-fields.d.ts +2 -1
- package/dist/workspace/new/advanced-fields.js +2 -2
- package/dist/workspace/new/source-param.d.ts +1 -1
- package/dist/workspace/new/source-param.js +3 -1
- package/dist/workspace/new/use-create-workspace.d.ts +8 -10
- package/dist/workspace/new/use-create-workspace.js +3 -3
- package/dist/workspace/projects/onboarding/app-logo.d.ts +7 -2
- package/dist/workspace/projects/onboarding/app-logo.js +6 -13
- package/dist/workspace/projects/policies-panel.js +5 -3
- package/dist/workspace/review/review-actions.d.ts +4 -2
- package/dist/workspace/review/review-actions.js +8 -2
- package/dist/workspace/review/review-center.js +11 -7
- package/dist/workspace/review/review-detail.d.ts +10 -0
- package/dist/workspace/review/review-detail.js +101 -13
- package/dist/workspace/saved-session-skeleton.d.ts +2 -2
- package/dist/workspace/saved-session-skeleton.js +3 -3
- package/dist/workspace/session-workspace.js +15 -13
- package/dist/workspace/sessions/project-sessions-view.js +3 -2
- package/dist/workspace/sessions/session-label-badges.js +2 -1
- package/dist/workspace/sessions/sessions-toolbar.d.ts +3 -1
- package/dist/workspace/sessions/sessions-toolbar.js +2 -2
- package/dist/workspace/sidebar/footer/project-apps-nav.d.ts +5 -0
- package/dist/workspace/sidebar/footer/project-apps-nav.js +41 -2
- package/dist/workspace/sidebar/footer/project-artifacts-nav.d.ts +6 -0
- package/dist/workspace/sidebar/footer/project-artifacts-nav.js +22 -0
- package/dist/workspace/sidebar/footer/project-chrome-nav.d.ts +10 -0
- package/dist/workspace/sidebar/footer/project-chrome-nav.js +56 -0
- package/dist/workspace/sidebar/footer/project-manifest-upgrade-alert.js +13 -13
- package/dist/workspace/sidebar/footer/project-memory-nav.d.ts +7 -0
- package/dist/workspace/sidebar/footer/project-memory-nav.js +19 -0
- package/dist/workspace/sidebar/nav-row-meta.js +14 -2
- package/dist/workspace/sidebar/project-nav-items.js +3 -0
- package/dist/workspace/sidebar/project-session-list.js +68 -56
- package/dist/workspace/sidebar/project-sidebar.js +13 -2
- package/dist/workspace/sidebar/project-spaces-nav.d.ts +8 -0
- package/dist/workspace/sidebar/project-spaces-nav.js +69 -0
- package/dist/workspace/sidebar/session-group-order.d.ts +9 -0
- package/dist/workspace/sidebar/session-group-order.js +25 -0
- package/dist/workspace/sidebar/session-group-sections.d.ts +62 -0
- package/dist/workspace/sidebar/session-group-sections.js +267 -0
- package/dist/workspace/sidebar/session-list-chrome.d.ts +28 -0
- package/dist/workspace/sidebar/session-list-chrome.js +50 -0
- package/dist/workspace/spaces/channel-glyph.d.ts +5 -0
- package/dist/workspace/spaces/channel-glyph.js +6 -0
- package/dist/workspace/spaces/channel-setup.d.ts +16 -0
- package/dist/workspace/spaces/channel-setup.js +105 -0
- package/dist/workspace/spaces/channels-onboarding.d.ts +13 -0
- package/dist/workspace/spaces/channels-onboarding.js +37 -0
- package/dist/workspace/spaces/create-channel-dialog.d.ts +16 -0
- package/dist/workspace/spaces/create-channel-dialog.js +158 -0
- package/dist/workspace/spaces/private-channels-not-in.d.ts +9 -0
- package/dist/workspace/spaces/private-channels-not-in.js +69 -0
- package/dist/workspace/spaces/space-agents.d.ts +10 -0
- package/dist/workspace/spaces/space-agents.js +10 -0
- package/dist/workspace/spaces/space-details-dialog.d.ts +20 -0
- package/dist/workspace/spaces/space-details-dialog.js +176 -0
- package/dist/workspace/spaces/space-link-label.d.ts +49 -0
- package/dist/workspace/spaces/space-link-label.js +73 -0
- package/dist/workspace/spaces/space-links.d.ts +19 -0
- package/dist/workspace/spaces/space-links.js +230 -0
- package/dist/workspace/spaces/space-members.d.ts +46 -0
- package/dist/workspace/spaces/space-members.js +182 -0
- package/dist/workspace/spaces/space-roster.d.ts +15 -0
- package/dist/workspace/spaces/space-roster.js +44 -0
- package/dist/workspace/spaces/space-threads-tab.d.ts +56 -0
- package/dist/workspace/spaces/space-threads-tab.js +156 -0
- package/dist/workspace/spaces/space-timeline-view.d.ts +254 -0
- package/dist/workspace/spaces/space-timeline-view.js +235 -0
- package/dist/workspace/spaces/space-timeline.d.ts +106 -0
- package/dist/workspace/spaces/space-timeline.js +183 -0
- package/dist/workspace/spaces/space-triggers.d.ts +13 -0
- package/dist/workspace/spaces/space-triggers.js +78 -0
- package/dist/workspace/spaces/space-view.d.ts +37 -0
- package/dist/workspace/spaces/space-view.js +436 -0
- package/package.json +67 -36
- package/skills/kortix-ui/SKILL.md +3 -3
- package/skills/kortix-ui/references/custom-dashboard.md +3 -3
- package/skills/kortix-ui/references/modules.md +29 -5
- package/skills/kortix-ui/references/theming.md +1 -1
- package/dist/customize/connectors/catalog/merge-search.d.ts +0 -10
- package/dist/customize/connectors/catalog/merge-search.js +0 -26
- package/dist/customize/connectors/detail/find-easy-connect-app.d.ts +0 -29
- package/dist/customize/connectors/detail/find-easy-connect-app.js +0 -22
- package/dist/customize/migrate-to-v2/use-migrate-to-v2.d.ts +0 -9
- package/dist/customize/migrate-to-v2/use-migrate-to-v2.js +0 -24
- package/dist/customize/sections/connector-connection-header.d.ts +0 -36
- package/dist/customize/sections/connector-connection-header.js +0 -33
- package/dist/customize/sections/connector-connection-modal.d.ts +0 -34
- package/dist/customize/sections/connector-connection-modal.js +0 -72
- package/dist/customize/sections/discover-catalogue-card.d.ts +0 -19
- package/dist/customize/sections/discover-catalogue-card.js +0 -26
- package/dist/customize/sections/discover-catalogue-detail.d.ts +0 -15
- package/dist/customize/sections/discover-catalogue-detail.js +0 -24
- package/dist/customize/sections/discover-catalogue.d.ts +0 -17
- package/dist/customize/sections/discover-catalogue.js +0 -132
- package/dist/customize/sections/llm-provider/provider-access-menu.d.ts +0 -10
- package/dist/customize/sections/llm-provider/provider-access-menu.js +0 -23
- package/dist/files/project/components/drive-empty-art.d.ts +0 -2
- package/dist/files/project/components/drive-empty-art.js +0 -5
- package/dist/internal/hooks/use-media-query.d.ts +0 -2
- package/dist/internal/share/public-share-link-button.d.ts +0 -14
- package/dist/internal/share/public-share-link-button.js +0 -17
- package/dist/markdown/setup-links/app-credentials-form.d.ts +0 -12
- package/dist/markdown/setup-links/app-credentials-form.js +0 -115
- /package/dist/{internal/hooks → hooks}/use-media-query.js +0 -0
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { PlugIcon } from '@phosphor-icons/react';
|
|
4
|
-
import { UiImage as Image } from '../../providers/ui-provider.js';
|
|
5
|
-
import { EntityAvatar } from '../../primitives/entity-avatar.js';
|
|
6
|
-
import { cn } from '../../internal/lib/utils.js';
|
|
7
|
-
/**
|
|
8
|
-
* The icon tile for a connector that does not exist yet. `ConnectorAppIcon`
|
|
9
|
-
* (`connectors-view.tsx:729`) needs an `AdminConnector`; the add flow has a
|
|
10
|
-
* catalogue app — an image URL and a name, nothing more. Same 40px bordered
|
|
11
|
-
* tile, same `object-contain` treatment, so the two are indistinguishable on
|
|
12
|
-
* screen.
|
|
13
|
-
*/
|
|
14
|
-
export function ConnectorConnectionIcon({ src, name }) {
|
|
15
|
-
if (src) {
|
|
16
|
-
return (_jsx("span", { className: "border-border/60 bg-card relative flex size-10 shrink-0 items-center justify-center overflow-hidden rounded-sm border", children: _jsx(Image, { src: src, alt: "", referrerPolicy: "no-referrer", fill: true, sizes: "40px", className: "object-contain", unoptimized: true }) }));
|
|
17
|
-
}
|
|
18
|
-
return _jsx(EntityAvatar, { icon: PlugIcon, size: "lg", label: name });
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* A connector's identity block — icon, name, byline, description —
|
|
22
|
-
* shared by the add flow (`ConnectorConnectionModal`) and the detail modal
|
|
23
|
-
* (`connector-modal.tsx`), so "what is this thing?" is answered by the same
|
|
24
|
-
* layout in both places.
|
|
25
|
-
*
|
|
26
|
-
* Everything except `icon` and `name` is optional; a custom connector with
|
|
27
|
-
* no catalogue record simply renders less. `nameSlot` swaps the plain name
|
|
28
|
-
* for a caller-owned control (the detail modal's inline rename, or Radix's
|
|
29
|
-
* `ModalTitle`) without changing the rhythm around it.
|
|
30
|
-
*/
|
|
31
|
-
export function ConnectorConnectionHeader({ icon, name, nameSlot, byline, meta, status, description, className, }) {
|
|
32
|
-
return (_jsxs("div", { className: cn('flex items-start gap-3.5', className), children: [icon, _jsxs("div", { className: "min-w-0 flex-1 space-y-0", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-x-2 gap-y-1", children: [nameSlot ?? (_jsx("span", { className: "text-foreground truncate text-lg font-semibold", children: name })), status] }), byline || meta ? (_jsxs("div", { className: "text-muted-foreground flex flex-wrap items-center gap-x-2 gap-y-1 text-xs", children: [byline ? _jsx("span", { children: byline }) : null, meta] })) : null, description ? (_jsx("p", { className: "text-muted-foreground text-sm text-pretty", children: description })) : null] })] }));
|
|
33
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { type EasyConnectConnectionInput } from './connector-connection-form.js';
|
|
2
|
-
/**
|
|
3
|
-
* The "Add connector" dialog: connection header + one primary button.
|
|
4
|
-
*
|
|
5
|
-
* Defaults (app name, proposed slug) are always valid, so a non-technical user
|
|
6
|
-
* reads the header and presses "+ Add connector" without meeting "slug". That
|
|
7
|
-
* field stays behind a collapsed disclosure for the rare rename case. The
|
|
8
|
-
* disclosure force-opens when the slug inside it becomes invalid, so a submit
|
|
9
|
-
* that would silently refuse never hides its reason.
|
|
10
|
-
*
|
|
11
|
-
* There is no owner choice here any more. A connector is a capability with no
|
|
12
|
-
* identity; WHO it runs as is a property of each account on its Accounts tab,
|
|
13
|
-
* where both a shared and a private account can exist at the same time.
|
|
14
|
-
*/
|
|
15
|
-
export declare function ConnectorConnectionModal({ open, idPrefix, title, initialName, initialSlug, existingSlugs, pending, icon, byline, summary, submitLabel, onOpenChange, onSubmit, }: {
|
|
16
|
-
open: boolean;
|
|
17
|
-
idPrefix: string;
|
|
18
|
-
title: string;
|
|
19
|
-
description: string;
|
|
20
|
-
initialName: string;
|
|
21
|
-
initialSlug: string;
|
|
22
|
-
existingSlugs: readonly string[];
|
|
23
|
-
pending: boolean;
|
|
24
|
-
/** The app tile — `ConnectorConnectionIcon` over the catalogue record. */
|
|
25
|
-
icon?: React.ReactNode;
|
|
26
|
-
/** e.g. "by Pipedream". */
|
|
27
|
-
byline?: string | null;
|
|
28
|
-
/** The catalogue description, when the source publishes one. */
|
|
29
|
-
summary?: string | null;
|
|
30
|
-
/** Defaults to `+ Add connector`. */
|
|
31
|
-
submitLabel?: string;
|
|
32
|
-
onOpenChange: (open: boolean) => void;
|
|
33
|
-
onSubmit: (connection: EasyConnectConnectionInput) => void;
|
|
34
|
-
}): import("react").JSX.Element;
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useTranslations as useI18nTranslations } from '../../i18n/index.js';
|
|
4
|
-
import { useState } from 'react';
|
|
5
|
-
import { Button } from '../../primitives/button.js';
|
|
6
|
-
import { Disclosure, DisclosureContent, DisclosureTrigger } from '../../primitives/disclosure.js';
|
|
7
|
-
import { Field, FieldDescription, FieldGroup, FieldLabel } from '../../primitives/field.js';
|
|
8
|
-
import { Input } from '../../primitives/input.js';
|
|
9
|
-
import Loading from '../../primitives/loading.js';
|
|
10
|
-
import { Modal, ModalBody, ModalContent, ModalFooter, ModalHeader, ModalTitle, } from '../../primitives/modal.js';
|
|
11
|
-
import { cn } from '../../internal/lib/utils.js';
|
|
12
|
-
import { CaretDownIcon, PlusIcon } from '@phosphor-icons/react';
|
|
13
|
-
import { VisuallyHidden } from '@radix-ui/react-visually-hidden';
|
|
14
|
-
import { connectorConnectionSlugAfterNameChange, isConnectorConnectionSlugAvailable, normalizeConnectorConnectionSlug, proposeConnectorConnectionName, } from './connector-connection-form.js';
|
|
15
|
-
import { ConnectorConnectionHeader } from './connector-connection-header.js';
|
|
16
|
-
/**
|
|
17
|
-
* The "Add connector" dialog: connection header + one primary button.
|
|
18
|
-
*
|
|
19
|
-
* Defaults (app name, proposed slug) are always valid, so a non-technical user
|
|
20
|
-
* reads the header and presses "+ Add connector" without meeting "slug". That
|
|
21
|
-
* field stays behind a collapsed disclosure for the rare rename case. The
|
|
22
|
-
* disclosure force-opens when the slug inside it becomes invalid, so a submit
|
|
23
|
-
* that would silently refuse never hides its reason.
|
|
24
|
-
*
|
|
25
|
-
* There is no owner choice here any more. A connector is a capability with no
|
|
26
|
-
* identity; WHO it runs as is a property of each account on its Accounts tab,
|
|
27
|
-
* where both a shared and a private account can exist at the same time.
|
|
28
|
-
*/
|
|
29
|
-
export function ConnectorConnectionModal({ open, idPrefix, title, initialName, initialSlug, existingSlugs, pending, icon, byline, summary, submitLabel, onOpenChange, onSubmit, }) {
|
|
30
|
-
const tI18nComplete = useI18nTranslations('hardcodedUi.i18nComplete');
|
|
31
|
-
// The proposed name counts the project's existing connections to this app,
|
|
32
|
-
// so the second Sentry is "Sentry 2" — see `proposeConnectorConnectionName`.
|
|
33
|
-
const proposedName = proposeConnectorConnectionName(initialName, existingSlugs);
|
|
34
|
-
const [name, setName] = useState(proposedName);
|
|
35
|
-
const [slug, setSlug] = useState(initialSlug);
|
|
36
|
-
const [slugEdited, setSlugEdited] = useState(false);
|
|
37
|
-
const [optionsOpen, setOptionsOpen] = useState(false);
|
|
38
|
-
const [resetFor, setResetFor] = useState(null);
|
|
39
|
-
if (!resetFor || resetFor[0] !== proposedName || resetFor[1] !== initialSlug || resetFor[2] !== open) {
|
|
40
|
-
setResetFor([proposedName, initialSlug, open]);
|
|
41
|
-
if (open) {
|
|
42
|
-
setName(proposedName);
|
|
43
|
-
setSlug(initialSlug);
|
|
44
|
-
setSlugEdited(false);
|
|
45
|
-
setOptionsOpen(false);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
const slugAvailable = isConnectorConnectionSlugAvailable(slug, existingSlugs);
|
|
49
|
-
const slugInvalid = slug.length > 0 && !slugAvailable;
|
|
50
|
-
const slugDescriptionId = `${idPrefix}-slug-description`;
|
|
51
|
-
const displayName = name.trim() || initialName;
|
|
52
|
-
return (_jsx(Modal, { open: open, onOpenChange: (next) => !pending && onOpenChange(next), children: _jsxs(ModalContent, { className: "lg:max-w-lg", "aria-describedby": undefined, children: [_jsx(VisuallyHidden, { asChild: true, children: _jsx(ModalTitle, { children: title }) }), _jsx(ModalHeader, { children: _jsx(ConnectorConnectionHeader, { icon: icon, name: displayName, byline: byline, description: summary }) }), _jsxs("form", { onSubmit: (event) => {
|
|
53
|
-
event.preventDefault();
|
|
54
|
-
if (!name.trim() || !slugAvailable || pending)
|
|
55
|
-
return;
|
|
56
|
-
onSubmit({ name, slug });
|
|
57
|
-
}, children: [_jsxs(ModalBody, { className: "max-h-[60vh] space-y-4 overflow-y-auto", children: [_jsxs("p", { className: "text-muted-foreground text-sm text-pretty", children: [tI18nComplete.raw('text17e9f72b9ba8'), " ", displayName, ' ', tI18nComplete.raw('texte99baf469ca8')] }), _jsxs(Disclosure, { variant: "outline", className: "overflow-hidden", open: optionsOpen || slugInvalid, onOpenChange: setOptionsOpen, children: [_jsx(DisclosureTrigger, { variant: "outline", children: _jsxs(Button, { type: "button", variant: "popover", className: "flex w-full items-center justify-between rounded-none", children: [_jsx("span", { className: "text-muted-foreground truncate text-sm font-medium", children: tI18nComplete.raw('text9443ff69463e') }), _jsx(CaretDownIcon, { className: "text-muted-foreground size-4 shrink-0 transition-transform group-data-[state=open]:rotate-180" })] }) }), _jsx(DisclosureContent, { variant: "outline", contentClassName: "border-border border-t", children: _jsx("div", { className: "px-4 py-5", children: _jsxs(FieldGroup, { className: "gap-4", children: [_jsxs(Field, { children: [_jsx(FieldLabel, { htmlFor: `${idPrefix}-name`, children: tI18nComplete.raw('text2b7f6a84de91') }), _jsx(Input, { id: `${idPrefix}-name`, value: name, onChange: (event) => {
|
|
58
|
-
const nextName = event.target.value;
|
|
59
|
-
setName(nextName);
|
|
60
|
-
setSlug((currentSlug) => connectorConnectionSlugAfterNameChange({
|
|
61
|
-
displayName: nextName,
|
|
62
|
-
currentSlug,
|
|
63
|
-
existingSlugs,
|
|
64
|
-
slugEdited,
|
|
65
|
-
}));
|
|
66
|
-
}, placeholder: initialName, variant: "popover", maxLength: 255, disabled: pending, required: true })] }), _jsxs(Field, { children: [_jsx(FieldLabel, { htmlFor: `${idPrefix}-slug`, children: tI18nComplete.raw('textd15387ecc6c5') }), _jsx(Input, { id: `${idPrefix}-slug`, value: slug, onChange: (event) => {
|
|
67
|
-
setSlugEdited(true);
|
|
68
|
-
setSlug(normalizeConnectorConnectionSlug(event.target.value));
|
|
69
|
-
}, placeholder: initialSlug, variant: "popover", className: "font-mono text-xs", maxLength: 128, "aria-invalid": slug.length > 0 && !slugAvailable, "aria-describedby": slugDescriptionId, disabled: pending, required: true }), _jsx(FieldDescription, { id: slugDescriptionId, role: slug.length > 0 && !slugAvailable ? 'alert' : undefined, className: cn(slug.length > 0 && !slugAvailable && 'text-destructive'), children: slug.length > 0 && !slugAvailable
|
|
70
|
-
? tI18nComplete.raw('text1b07037029d3')
|
|
71
|
-
: tI18nComplete.raw('text48026cbaf423') })] })] }) }) })] })] }), _jsxs(ModalFooter, { className: "sm:justify-between", children: [_jsx(Button, { type: "button", variant: "outline-ghost", onClick: () => onOpenChange(false), disabled: pending, children: tI18nComplete.raw('text19766ed6ccb2') }), _jsxs(Button, { type: "submit", className: "gap-1.5 active:scale-[0.96]", disabled: pending || !name.trim() || !slugAvailable, children: [pending ? (_jsx(Loading, { className: "size-4 shrink-0" })) : (_jsx(PlusIcon, { className: "size-4 shrink-0", weight: "bold" })), submitLabel ?? tI18nComplete.raw('texta6ef2483d6fb')] })] })] })] }) }));
|
|
72
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type { DiscoverConnector, PipedreamApp } from '@kortix/sdk';
|
|
2
|
-
export type DiscoverCard = {
|
|
3
|
-
source: 'connector';
|
|
4
|
-
item: DiscoverConnector;
|
|
5
|
-
} | {
|
|
6
|
-
source: 'pipedream';
|
|
7
|
-
app: PipedreamApp;
|
|
8
|
-
};
|
|
9
|
-
export declare function DiscoverCatalogueCard({ card, addConnector, setConnectorTarget, setSelectedConnector }: {
|
|
10
|
-
card: DiscoverCard;
|
|
11
|
-
addConnector: {
|
|
12
|
-
isPending: boolean;
|
|
13
|
-
};
|
|
14
|
-
setConnectorTarget: (target: {
|
|
15
|
-
source: 'pipedream';
|
|
16
|
-
app: PipedreamApp;
|
|
17
|
-
}) => void;
|
|
18
|
-
setSelectedConnector: (item: DiscoverConnector) => void;
|
|
19
|
-
}): import("react").JSX.Element;
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useTranslations } from '../../i18n/index.js';
|
|
4
|
-
import { CaretRightIcon as ChevronRight, GlobeIcon as Globe, PlusIcon as Plus, LightningIcon as Zap } from '@phosphor-icons/react';
|
|
5
|
-
import { UiImage as Image } from '../../providers/ui-provider.js';
|
|
6
|
-
import { Badge } from '../../primitives/badge.js';
|
|
7
|
-
import { EntityAvatar } from '../../primitives/entity-avatar.js';
|
|
8
|
-
export function DiscoverCatalogueCard({ card, addConnector, setConnectorTarget, setSelectedConnector }) {
|
|
9
|
-
const tI18nComplete = useTranslations('hardcodedUi.i18nComplete');
|
|
10
|
-
const isOAuth = card.source === 'pipedream';
|
|
11
|
-
const name = isOAuth ? card.app.name : card.item.name;
|
|
12
|
-
const description = isOAuth ? card.app.description : card.item.description;
|
|
13
|
-
const icon = isOAuth ? card.app.imgSrc : card.item.icon;
|
|
14
|
-
const key = isOAuth ? `pipedream:${card.app.slug}` : card.item.id;
|
|
15
|
-
// The public index often has one feed entry (commonly MCP) for a
|
|
16
|
-
// domain whose surface document contains APIs, CLIs, and more.
|
|
17
|
-
const subtitle = isOAuth
|
|
18
|
-
? tI18nComplete.raw('text87a46ec2620a')
|
|
19
|
-
: tI18nComplete.raw('text678094dc2f3f');
|
|
20
|
-
return (_jsxs("button", { type: "button", disabled: addConnector.isPending, onClick: () => isOAuth
|
|
21
|
-
? setConnectorTarget({ source: 'pipedream', app: card.app })
|
|
22
|
-
: setSelectedConnector(card.item), className: "group bg-popover hover:bg-muted/80 focus-visible:ring-primary/50 flex min-h-28 flex-col rounded-md border p-3.5 text-left transition-[background-color,transform] focus-visible:ring-2 focus-visible:outline-none active:scale-[0.96] disabled:opacity-60", children: [_jsxs("div", { className: "flex items-center gap-3", children: [icon ? (_jsx(Image, { src: icon, alt: "", width: 36, height: 36, className: "ring-foreground/10 size-8 shrink-0 rounded-md object-contain ring-1", referrerPolicy: "no-referrer", unoptimized: true })) : (_jsx(EntityAvatar, { icon: isOAuth ? Zap : Globe, size: "sm" })), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("div", { className: "text-foreground truncate text-sm font-medium", children: name }), _jsx(Badge, { variant: isOAuth ? 'kortix' : 'outline', size: "xs", children: subtitle })] }), isOAuth ? (_jsx(Plus, { className: "text-muted-foreground/40 group-hover:text-primary size-4 shrink-0 transition-colors" })) : (_jsx(ChevronRight, { className: "text-muted-foreground/40 group-hover:text-primary size-4 shrink-0 transition-colors" }))] }), _jsx("p", { className: "text-muted-foreground mt-2 line-clamp-2 min-h-8 text-xs leading-relaxed", children: description ??
|
|
23
|
-
(isOAuth
|
|
24
|
-
? tI18nComplete.raw('textc618c6bd416a')
|
|
25
|
-
: tI18nComplete.raw('text673760b857d0')) })] }, key));
|
|
26
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { DiscoverConnector, DiscoverConnectorVariant, getDiscoverConnector } from '@kortix/sdk';
|
|
2
|
-
import type { UseQueryResult } from '@tanstack/react-query';
|
|
3
|
-
export declare function DiscoverCatalogueDetail({ selectedConnector, setSelectedConnector, detailQuery, addConnector, setConnectorTarget }: {
|
|
4
|
-
selectedConnector: DiscoverConnector | null;
|
|
5
|
-
setSelectedConnector: (item: DiscoverConnector | null) => void;
|
|
6
|
-
detailQuery: UseQueryResult<Awaited<ReturnType<typeof getDiscoverConnector>>, Error>;
|
|
7
|
-
addConnector: {
|
|
8
|
-
isPending: boolean;
|
|
9
|
-
};
|
|
10
|
-
setConnectorTarget: (target: {
|
|
11
|
-
source: 'connector';
|
|
12
|
-
item: DiscoverConnector;
|
|
13
|
-
variant: DiscoverConnectorVariant;
|
|
14
|
-
}) => void;
|
|
15
|
-
}): import("react").JSX.Element;
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useTranslations } from '../../i18n/index.js';
|
|
4
|
-
import { CubeIcon as Boxes, ArrowSquareOutIcon as ExternalLink, GlobeIcon as Globe } from '@phosphor-icons/react';
|
|
5
|
-
import { Badge } from '../../primitives/badge.js';
|
|
6
|
-
import { Button } from '../../primitives/button.js';
|
|
7
|
-
import { InfoBanner } from '../../primitives/info-banner.js';
|
|
8
|
-
import { Modal, ModalBody, ModalContent, ModalDescription, ModalHeader, ModalTitle } from '../../primitives/modal.js';
|
|
9
|
-
import { Skeleton } from '../../primitives/skeleton.js';
|
|
10
|
-
import { EmptyState } from '../../primitives/empty-state.js';
|
|
11
|
-
export function DiscoverCatalogueDetail({ selectedConnector, setSelectedConnector, detailQuery, addConnector, setConnectorTarget }) {
|
|
12
|
-
const tI18nComplete = useTranslations('hardcodedUi.i18nComplete');
|
|
13
|
-
return (_jsx(Modal, { open: Boolean(selectedConnector), onOpenChange: (open) => !open && setSelectedConnector(null), children: _jsxs(ModalContent, { className: "lg:max-w-2xl", children: [_jsxs(ModalHeader, { children: [_jsx(ModalTitle, { children: selectedConnector?.name ?? 'Connector' }), _jsxs(ModalDescription, { children: [tI18nComplete.raw('textcd9f6b36a2c7'), " ", selectedConnector?.domain, tI18nComplete.raw('text554add02368e')] })] }), _jsx(ModalBody, { className: "max-h-[60vh] overflow-y-auto", children: detailQuery.isLoading ? (_jsx("div", { className: "space-y-2", children: Array.from({ length: 3 }).map((_, index) => (_jsx(Skeleton, { className: "h-20 w-full rounded-md" }, index))) })) : detailQuery.isError ? (_jsx(InfoBanner, { tone: "destructive", title: tI18nComplete.raw('textda3e4af8062b'), action: _jsx(Button, { variant: "outline", size: "sm", onClick: () => detailQuery.refetch(), children: tI18nComplete.raw('text942087cc2d41') }), children: detailQuery.error?.message ?? tI18nComplete.raw('texta0c2cc1374d9') })) : detailQuery.data?.variants.length ? (_jsx("ul", { className: "space-y-2", children: detailQuery.data.variants.map((variant) => {
|
|
14
|
-
const href = variant.docs ?? variant.url;
|
|
15
|
-
return (_jsxs("li", { className: "bg-popover flex items-center gap-3 rounded-md border px-4 py-3", children: [_jsx("span", { className: "bg-kortix-blue/15 text-kortix-blue flex size-9 shrink-0 items-center justify-center rounded-sm", children: variant.kind === 'mcp' ? (_jsx(Boxes, { className: "size-5" })) : (_jsx(Globe, { className: "size-5" })) }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("p", { className: "text-foreground truncate text-sm font-medium", children: variant.name }), _jsxs("div", { className: "mt-1 flex items-center gap-1.5", children: [_jsx(Badge, { variant: "outline", size: "xs", children: variant.kind === 'openapi' ? 'OpenAPI' : variant.kind.toUpperCase() }), variant.requiresAuth ? (_jsx("span", { className: "text-muted-foreground text-xs", children: tI18nComplete.raw('text46f49bfb8d8f') })) : null] })] }), variant.connector ? (_jsx(Button, { size: "sm", className: "shrink-0", disabled: addConnector.isPending, onClick: () => {
|
|
16
|
-
setSelectedConnector(null);
|
|
17
|
-
setConnectorTarget({
|
|
18
|
-
source: 'connector',
|
|
19
|
-
item: detailQuery.data.item,
|
|
20
|
-
variant,
|
|
21
|
-
});
|
|
22
|
-
}, children: tI18nComplete.raw('text16613cfc614f') })) : href ? (_jsx(Button, { asChild: true, variant: "outline", size: "sm", className: "shrink-0", children: _jsxs("a", { href: href, target: "_blank", rel: "noreferrer", children: [tI18nComplete.raw('textb1d877ab2f51'), _jsx(ExternalLink, { className: "size-3.5 shrink-0" })] }) })) : (_jsx(Badge, { variant: "secondary", size: "sm", children: tI18nComplete.raw('textdf0453d185c4') }))] }, `${variant.kind}:${variant.id}`));
|
|
23
|
-
}) })) : (_jsx(EmptyState, { icon: Globe, size: "sm", title: tI18nComplete.raw('text363579e1d66b'), description: tI18nComplete.raw('text4d286e47d580') })) })] }) }));
|
|
24
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The Add-connector modal's Discover tab: a flat, searchable grid of the
|
|
3
|
-
* public catalogue plus Pipedream's OAuth apps.
|
|
4
|
-
*
|
|
5
|
-
* ── Known duplication, read before changing this file ──────────────────────
|
|
6
|
-
* The app page's Install
|
|
7
|
-
* (`packages/ui/src/customize/connectors/install/install.ts`) runs the
|
|
8
|
-
* same add journey (pick a surface -> `createConnector` -> credential entry)
|
|
9
|
-
* for the Connectors page's catalogue. The two are separate implementations
|
|
10
|
-
* of one journey and must stay behaviourally consistent; a fix here very
|
|
11
|
-
* likely belongs there too.
|
|
12
|
-
*/
|
|
13
|
-
export declare function DiscoverCatalogue({ projectId, existingSlugs, onAdded, }: {
|
|
14
|
-
projectId: string;
|
|
15
|
-
existingSlugs: readonly string[];
|
|
16
|
-
onAdded: (slug?: string) => void;
|
|
17
|
-
}): import("react").JSX.Element;
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
-
import { useTranslations } from '../../i18n/index.js';
|
|
4
|
-
import { createConnector, getConnectStatus, getDiscoverConnector, listDiscoverConnectors, listPipedreamApps, } from '@kortix/sdk';
|
|
5
|
-
import { MagnifyingGlassIcon as Search } from '@phosphor-icons/react';
|
|
6
|
-
import { useInfiniteQuery, useMutation, useQuery } from '@tanstack/react-query';
|
|
7
|
-
import { useState } from 'react';
|
|
8
|
-
import { Button } from '../../primitives/button.js';
|
|
9
|
-
import { InfoBanner } from '../../primitives/info-banner.js';
|
|
10
|
-
import { Input } from '../../primitives/input.js';
|
|
11
|
-
import Loading from '../../primitives/loading.js';
|
|
12
|
-
import { Skeleton } from '../../primitives/skeleton.js';
|
|
13
|
-
import { errorToast, successToast, warningToast } from '../../primitives/toast.js';
|
|
14
|
-
import { EmptyState } from '../../primitives/empty-state.js';
|
|
15
|
-
import { useDebounce } from '../../hooks/use-debounce.js';
|
|
16
|
-
import { useUiHostConfig } from '../../providers/ui-provider.js';
|
|
17
|
-
import { buildDiscoverConnectorDraft, connectorSyncErrorForSlug, createOnlyConnectorDraft, proposeConnectorConnectionSlug, } from './connector-connection-form.js';
|
|
18
|
-
import { DiscoverCatalogueCard } from './discover-catalogue-card.js';
|
|
19
|
-
import { DiscoverCatalogueDetail } from './discover-catalogue-detail.js';
|
|
20
|
-
import { ConnectorConnectionModal } from './connector-connection-modal.js';
|
|
21
|
-
const BUILT_IN_CHANNEL_APP_SLUGS = new Set(['slack', 'slack_v2']);
|
|
22
|
-
/**
|
|
23
|
-
* The Add-connector modal's Discover tab: a flat, searchable grid of the
|
|
24
|
-
* public catalogue plus Pipedream's OAuth apps.
|
|
25
|
-
*
|
|
26
|
-
* ── Known duplication, read before changing this file ──────────────────────
|
|
27
|
-
* The app page's Install
|
|
28
|
-
* (`packages/ui/src/customize/connectors/install/install.ts`) runs the
|
|
29
|
-
* same add journey (pick a surface -> `createConnector` -> credential entry)
|
|
30
|
-
* for the Connectors page's catalogue. The two are separate implementations
|
|
31
|
-
* of one journey and must stay behaviourally consistent; a fix here very
|
|
32
|
-
* likely belongs there too.
|
|
33
|
-
*/
|
|
34
|
-
export function DiscoverCatalogue({ projectId, existingSlugs, onAdded, }) {
|
|
35
|
-
const tI18nComplete = useTranslations('hardcodedUi.i18nComplete');
|
|
36
|
-
const [q, setQ] = useState('');
|
|
37
|
-
const { debouncedValue: deferredQuery } = useDebounce(q.trim(), 300);
|
|
38
|
-
const [selectedConnector, setSelectedConnector] = useState(null);
|
|
39
|
-
const [connectorTarget, setConnectorTarget] = useState(null);
|
|
40
|
-
const { connectorsEnabled } = useUiHostConfig();
|
|
41
|
-
const connectStatus = useQuery({
|
|
42
|
-
queryKey: ['connect-status'],
|
|
43
|
-
queryFn: getConnectStatus,
|
|
44
|
-
staleTime: 5 * 60_000,
|
|
45
|
-
enabled: connectorsEnabled,
|
|
46
|
-
});
|
|
47
|
-
const pipedreamEnabled = connectorsEnabled && connectStatus.data?.configured === true;
|
|
48
|
-
const connectorsQuery = useInfiniteQuery({
|
|
49
|
-
queryKey: ['discover-connectors', projectId, deferredQuery],
|
|
50
|
-
queryFn: ({ pageParam }) => listDiscoverConnectors(projectId, deferredQuery || undefined, pageParam),
|
|
51
|
-
initialPageParam: undefined,
|
|
52
|
-
getNextPageParam: (last) => (last.hasMore ? last.nextCursor : undefined),
|
|
53
|
-
staleTime: 5 * 60_000,
|
|
54
|
-
});
|
|
55
|
-
const pipedreamQuery = useInfiniteQuery({
|
|
56
|
-
queryKey: ['discover-pipedream-oauth', projectId, deferredQuery],
|
|
57
|
-
queryFn: ({ pageParam }) => listPipedreamApps(projectId, deferredQuery || undefined, pageParam),
|
|
58
|
-
initialPageParam: undefined,
|
|
59
|
-
getNextPageParam: (last) => (last.hasMore ? last.nextCursor : undefined),
|
|
60
|
-
staleTime: 60_000,
|
|
61
|
-
enabled: pipedreamEnabled,
|
|
62
|
-
});
|
|
63
|
-
const detailQuery = useQuery({
|
|
64
|
-
queryKey: ['discover-connector-detail', projectId, selectedConnector?.id],
|
|
65
|
-
queryFn: () => selectedConnector
|
|
66
|
-
? getDiscoverConnector(projectId, selectedConnector.id)
|
|
67
|
-
: Promise.reject(new Error('No connector selected')),
|
|
68
|
-
enabled: Boolean(selectedConnector),
|
|
69
|
-
staleTime: 15 * 60_000,
|
|
70
|
-
});
|
|
71
|
-
const connectorCards = (connectorsQuery.data?.pages ?? []).flatMap((page) => page.items.map((item) => ({ source: 'connector', item })));
|
|
72
|
-
const pipedreamOAuthCards = (pipedreamQuery.data?.pages ?? []).flatMap((page) => page.apps
|
|
73
|
-
.filter((app) => app.authType === 'oauth' && !BUILT_IN_CHANNEL_APP_SLUGS.has(app.slug))
|
|
74
|
-
.map((app) => ({ source: 'pipedream', app })));
|
|
75
|
-
const discoverCards = [...connectorCards, ...pipedreamOAuthCards];
|
|
76
|
-
const addConnector = useMutation({
|
|
77
|
-
mutationFn: async ({ target, connection, }) => {
|
|
78
|
-
let draft;
|
|
79
|
-
if (target.source === 'pipedream') {
|
|
80
|
-
draft = {
|
|
81
|
-
slug: connection.slug,
|
|
82
|
-
name: connection.name.trim(),
|
|
83
|
-
provider: 'pipedream',
|
|
84
|
-
app: target.app.slug,
|
|
85
|
-
account: 'default',
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
if (!target.variant.connector) {
|
|
90
|
-
throw new Error('This surface needs manual configuration');
|
|
91
|
-
}
|
|
92
|
-
draft = buildDiscoverConnectorDraft(target.variant.connector, connection);
|
|
93
|
-
}
|
|
94
|
-
const createDraft = createOnlyConnectorDraft(draft);
|
|
95
|
-
const result = await createConnector(projectId, createDraft);
|
|
96
|
-
return {
|
|
97
|
-
slug: createDraft.slug,
|
|
98
|
-
name: createDraft.name ?? createDraft.slug,
|
|
99
|
-
pipedream: target.source === 'pipedream',
|
|
100
|
-
syncError: connectorSyncErrorForSlug(result, createDraft.slug),
|
|
101
|
-
};
|
|
102
|
-
},
|
|
103
|
-
onSuccess: ({ slug, name, pipedream, syncError }) => {
|
|
104
|
-
setConnectorTarget(null);
|
|
105
|
-
if (syncError) {
|
|
106
|
-
warningToast(tI18nComplete('textd6a135de3872', { value0: name, value1: syncError }));
|
|
107
|
-
onAdded();
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
successToast(pipedream
|
|
111
|
-
? tI18nComplete('text590d36262e11', { value0: name })
|
|
112
|
-
: tI18nComplete('text29f396e2d238', { value0: name }));
|
|
113
|
-
onAdded(slug);
|
|
114
|
-
},
|
|
115
|
-
onError: (error) => errorToast(error.message || tI18nComplete.raw('texta34a2714da91')),
|
|
116
|
-
});
|
|
117
|
-
const loading = connectorsQuery.isLoading || (pipedreamEnabled && pipedreamQuery.isLoading);
|
|
118
|
-
const connectionDisplayName = connectorTarget?.source === 'pipedream'
|
|
119
|
-
? connectorTarget.app.name
|
|
120
|
-
: (connectorTarget?.variant.name ?? '');
|
|
121
|
-
return (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { className: "relative", children: [_jsx(Search, { className: "text-muted-foreground pointer-events-none absolute top-1/2 left-3 size-4 -translate-y-1/2" }), _jsx(Input, { value: q, onChange: (event) => setQ(event.target.value), placeholder: tI18nComplete.raw('textd95934d15292'), variant: "popover", className: "pl-9" })] }), connectorsQuery.isError ? (_jsx(InfoBanner, { tone: "destructive", title: tI18nComplete.raw('textab93638292af'), action: _jsx(Button, { variant: "outline", size: "sm", onClick: () => connectorsQuery.refetch(), children: tI18nComplete.raw('text942087cc2d41') }), children: connectorsQuery.error?.message ?? tI18nComplete.raw('text0d31cf2c2307') })) : loading ? (_jsx("div", { className: "grid grid-cols-2 gap-3 sm:grid-cols-3 lg:grid-cols-4", children: Array.from({ length: 12 }).map((_, index) => (_jsx(Skeleton, { className: "h-28 w-full rounded-md" }, index))) })) : discoverCards.length === 0 ? (_jsx(EmptyState, { icon: Search, title: tI18nComplete.raw('texta2ac2ce730c9'), description: q
|
|
122
|
-
? tI18nComplete('text3e71adfa7d54', { value0: q })
|
|
123
|
-
: tI18nComplete.raw('text06cf1d8d7c75') })) : (_jsxs(_Fragment, { children: [_jsx("div", { className: "grid grid-cols-2 gap-3 sm:grid-cols-3 lg:grid-cols-4", children: discoverCards.map((card) => {
|
|
124
|
-
return (_jsx(DiscoverCatalogueCard, { card: card, addConnector: addConnector, setConnectorTarget: setConnectorTarget, setSelectedConnector: setSelectedConnector }, card.source === 'pipedream' ? `pipedream:${card.app.slug}` : card.item.id));
|
|
125
|
-
}) }), (connectorsQuery.hasNextPage || pipedreamQuery.hasNextPage) && (_jsxs("div", { className: "flex flex-wrap justify-center gap-2 pt-1", children: [connectorsQuery.hasNextPage && (_jsxs(Button, { variant: "outline", size: "sm", onClick: () => connectorsQuery.fetchNextPage(), disabled: connectorsQuery.isFetchingNextPage, children: [connectorsQuery.isFetchingNextPage ? (_jsx(Loading, { className: "size-4 shrink-0" })) : null, tI18nComplete.raw('texta085437ccc11')] })), pipedreamQuery.hasNextPage && (_jsxs(Button, { variant: "outline", size: "sm", onClick: () => pipedreamQuery.fetchNextPage(), disabled: pipedreamQuery.isFetchingNextPage, children: [pipedreamQuery.isFetchingNextPage ? (_jsx(Loading, { className: "size-4 shrink-0" })) : null, tI18nComplete.raw('text69cea0daa681')] }))] }))] })), _jsx(DiscoverCatalogueDetail, { selectedConnector: selectedConnector, setSelectedConnector: setSelectedConnector, detailQuery: detailQuery, addConnector: addConnector, setConnectorTarget: setConnectorTarget }), _jsx(ConnectorConnectionModal, { open: connectorTarget !== null, idPrefix: "discover-connector", title: `Add ${connectionDisplayName || 'connector'}`, description: tI18nComplete.raw('text49ad6dbe32fb'), initialName: connectionDisplayName, initialSlug: connectorTarget
|
|
126
|
-
? proposeConnectorConnectionSlug(connectionDisplayName, existingSlugs)
|
|
127
|
-
: '', existingSlugs: existingSlugs, pending: addConnector.isPending, onOpenChange: (open) => !open && setConnectorTarget(null), onSubmit: (connection) => {
|
|
128
|
-
if (!connectorTarget)
|
|
129
|
-
return;
|
|
130
|
-
addConnector.mutate({ target: connectorTarget, connection });
|
|
131
|
-
} })] }));
|
|
132
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { useModelAccess } from '@kortix/sdk/react';
|
|
2
|
-
type Access = ReturnType<typeof useModelAccess>;
|
|
3
|
-
/** Credential configuration stays available while inference is disabled. */
|
|
4
|
-
export declare function ProviderAccessMenu({ access, providerId, name, canWrite, }: {
|
|
5
|
-
access: Access;
|
|
6
|
-
providerId: string;
|
|
7
|
-
name: string;
|
|
8
|
-
canWrite: boolean;
|
|
9
|
-
}): import("react").JSX.Element | null;
|
|
10
|
-
export {};
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useTranslations } from '../../../i18n/index.js';
|
|
4
|
-
import { DotsThreeIcon } from '@phosphor-icons/react';
|
|
5
|
-
import { Badge } from '../../../primitives/badge.js';
|
|
6
|
-
import { Button } from '../../../primitives/button.js';
|
|
7
|
-
import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem } from '../../../primitives/dropdown-menu.js';
|
|
8
|
-
import { errorToast } from '../../../primitives/toast.js';
|
|
9
|
-
/** Credential configuration stays available while inference is disabled. */
|
|
10
|
-
export function ProviderAccessMenu({ access, providerId, name, canWrite, }) {
|
|
11
|
-
const t = useTranslations('modelAccess');
|
|
12
|
-
if (!access.data?.enforced)
|
|
13
|
-
return null;
|
|
14
|
-
const enabled = !access.data.disabledProviders.includes(providerId);
|
|
15
|
-
const isDefault = access.defaultProvider === providerId;
|
|
16
|
-
return (_jsxs("div", { "data-provider-access": providerId, className: "flex shrink-0 items-center gap-1.5", children: [!enabled && _jsx(Badge, { variant: "secondary", size: "sm", children: t('disabled') }), canWrite && (_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { variant: "ghost", size: "icon", className: "text-muted-foreground size-6", "aria-label": t('manageProvider', { name }), children: _jsx(DotsThreeIcon, { className: "size-4 shrink-0" }) }) }), _jsxs(DropdownMenuContent, { align: "start", className: "max-w-xs", children: [_jsx(DropdownMenuItem, { disabled: access.isUpdating || (isDefault && enabled), onSelect: () => {
|
|
17
|
-
void access
|
|
18
|
-
.setEnabled({ target: 'provider', id: providerId, enabled: !enabled })
|
|
19
|
-
.catch((error) => {
|
|
20
|
-
errorToast(error instanceof Error ? error.message : t('providerError'));
|
|
21
|
-
});
|
|
22
|
-
}, children: enabled ? t('disableProviderAction') : t('enableProviderAction') }), _jsx("p", { className: "text-muted-foreground px-2 py-1.5 text-xs text-pretty", children: isDefault && enabled ? t('defaultProviderHint') : t('credentialsHint') })] })] }))] }));
|
|
23
|
-
}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
/** Three stacked pages: the empty-folder artwork in the drive explorer. */
|
|
3
|
-
export function DriveEmptyArt() {
|
|
4
|
-
return (_jsxs("svg", { width: "72", height: "60", viewBox: "0 0 72 60", fill: "none", "aria-hidden": "true", children: [_jsx("rect", { x: "10", y: "10", width: "34", height: "42", rx: "5", transform: "rotate(-8 10 10)", className: "fill-card stroke-foreground/10" }), _jsx("rect", { x: "30", y: "6", width: "34", height: "42", rx: "5", transform: "rotate(7 30 6)", className: "fill-card stroke-foreground/10" }), _jsx("path", { d: "M22 12h17l9 9v30a4 4 0 0 1-4 4H22a4 4 0 0 1-4-4V16a4 4 0 0 1 4-4Z", className: "fill-muted stroke-foreground/20" }), _jsx("path", { d: "M39 12v6a3 3 0 0 0 3 3h6", className: "stroke-foreground/20" }), _jsx("path", { d: "M25 30h16M25 36h16M25 42h10", strokeWidth: "1.5", strokeLinecap: "round", className: "stroke-foreground/15" })] }));
|
|
5
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/** @internal Kortix apps only. No semver: it may change in any release. */
|
|
2
|
-
import type { CreateSessionPublicShareInput } from '@kortix/sdk';
|
|
3
|
-
export declare function PublicShareLinkButton({ projectId, sessionId, input, tooltip, title, className, iconClassName, tooltipSideOffset, }: {
|
|
4
|
-
projectId?: string;
|
|
5
|
-
sessionId?: string;
|
|
6
|
-
input: CreateSessionPublicShareInput | null;
|
|
7
|
-
tooltip?: string;
|
|
8
|
-
title?: string;
|
|
9
|
-
className?: string;
|
|
10
|
-
/** Icon size override. Defaults to this component's own 16px. */
|
|
11
|
-
iconClassName?: string;
|
|
12
|
-
/** Tooltip sideOffset override. Omit to keep `Hint`'s own default. */
|
|
13
|
-
tooltipSideOffset?: number;
|
|
14
|
-
}): import("react").JSX.Element | null;
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { CheckIcon as Check, LinkSimpleIcon } from '@phosphor-icons/react';
|
|
4
|
-
import { AnimatePresence, m } from 'motion/react';
|
|
5
|
-
import { PublicShareLinkConfirm } from './public-share-link-confirm.js';
|
|
6
|
-
import { Button } from '../../primitives/button.js';
|
|
7
|
-
import Hint from '../../primitives/hint.js';
|
|
8
|
-
import Loading from '../../primitives/loading.js';
|
|
9
|
-
import { usePublicShareLink } from './use-public-share-link.js';
|
|
10
|
-
import { cn } from '../../lib/utils.js';
|
|
11
|
-
export function PublicShareLinkButton({ projectId, sessionId, input, tooltip = 'Copy a public view-only link', title = 'Copy public link', className, iconClassName = 'size-4', tooltipSideOffset, }) {
|
|
12
|
-
const share = usePublicShareLink({ projectId, sessionId, input });
|
|
13
|
-
const disabled = !share.canShare || share.isPending;
|
|
14
|
-
if (!share.enabled)
|
|
15
|
-
return null;
|
|
16
|
-
return (_jsxs(_Fragment, { children: [_jsx(Hint, { label: share.copied ? 'Copied' : tooltip, side: "bottom", sideOffset: tooltipSideOffset, className: "max-w-56 text-xs", children: _jsx(Button, { variant: "ghost", size: "icon", className: cn('size-8 active:scale-[0.96]', className), onClick: share.copyLink, disabled: disabled, title: title, children: share.isPending ? (_jsx(Loading, { className: cn(iconClassName, 'shrink-0') })) : (_jsx("span", { className: cn('relative inline-flex items-center justify-center', iconClassName), children: _jsx(AnimatePresence, { initial: false, mode: "popLayout", children: _jsx(m.span, { initial: { scale: 0.25, opacity: 0, filter: 'blur(4px)' }, animate: { scale: 1, opacity: 1, filter: 'blur(0px)' }, exit: { scale: 0.25, opacity: 0, filter: 'blur(4px)' }, transition: { type: 'spring', duration: 0.3, bounce: 0 }, className: "absolute inset-0 inline-flex items-center justify-center", children: share.copied ? (_jsx(Check, { className: cn(iconClassName, 'text-kortix-green') })) : (_jsx(LinkSimpleIcon, { className: iconClassName })) }, share.copied ? 'check' : 'link') }) })) }) }), _jsx(PublicShareLinkConfirm, { confirmation: share.confirmation })] }));
|
|
17
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The form behind an own-app connect link (`/connect/app/[token]`): the app's
|
|
3
|
-
* client credentials and the store, for a Composio toolkit that runs on the
|
|
4
|
-
* customer's own app. Shopify is the one such app today.
|
|
5
|
-
*
|
|
6
|
-
* The page opens in the connect popup. The window that opened it polls the
|
|
7
|
-
* connection, so after a success this window only confirms and closes itself
|
|
8
|
-
* (or follows the native app's return link).
|
|
9
|
-
*/
|
|
10
|
-
export declare function AppCredentialsForm({ token }: {
|
|
11
|
-
token: string;
|
|
12
|
-
}): import("react").JSX.Element;
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { Button } from '../../primitives/button.js';
|
|
4
|
-
import { Field, FieldGroup, FieldLabel } from '../../primitives/field.js';
|
|
5
|
-
import { Input } from '../../primitives/input.js';
|
|
6
|
-
import { InputGroup, InputGroupAddon, InputGroupInput } from '../../primitives/input-group.js';
|
|
7
|
-
import Loading from '../../primitives/loading.js';
|
|
8
|
-
import { useTranslations } from '../../i18n/index.js';
|
|
9
|
-
import { getConnectorAppForm, HostBoundaryError, submitConnectorAppForm, } from '@kortix/sdk';
|
|
10
|
-
import { ArrowUpRightIcon, CheckIcon, ClockCountdownIcon, LinkBreakIcon, WarningCircleIcon, } from '@phosphor-icons/react';
|
|
11
|
-
import { useEffect, useState } from 'react';
|
|
12
|
-
import { setupLinkApiBase } from './api-base.js';
|
|
13
|
-
import { StatusNotice } from './secret-intake-form.js';
|
|
14
|
-
// Machine values, not prose: Shopify serves every store at <handle>.myshopify.com.
|
|
15
|
-
const SHOPIFY_HOST_SUFFIX = '.myshopify.com';
|
|
16
|
-
const EXAMPLE_STORE_HANDLE = 'acme';
|
|
17
|
-
const DEV_DASHBOARD_URL = 'https://dev.shopify.com/dashboard';
|
|
18
|
-
/** Long enough to read the confirmation before the window closes itself. */
|
|
19
|
-
const CLOSE_AFTER_MS = 1_500;
|
|
20
|
-
function statusOf(cause) {
|
|
21
|
-
return cause instanceof HostBoundaryError ? cause.status : null;
|
|
22
|
-
}
|
|
23
|
-
function DashboardLink({ children }) {
|
|
24
|
-
return (_jsxs("a", { href: DEV_DASHBOARD_URL, target: "_blank", rel: "noopener noreferrer", className: "group text-kortix-base focus-visible:ring-ring inline-flex items-baseline gap-0.5 rounded-sm font-medium outline-none focus-visible:ring-2", children: [_jsx("span", { className: "decoration-kortix-base/40 group-hover:decoration-kortix-base underline underline-offset-2", children: children }), _jsx(ArrowUpRightIcon, { className: "size-3 shrink-0 self-center" })] }));
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* The form behind an own-app connect link (`/connect/app/[token]`): the app's
|
|
28
|
-
* client credentials and the store, for a Composio toolkit that runs on the
|
|
29
|
-
* customer's own app. Shopify is the one such app today.
|
|
30
|
-
*
|
|
31
|
-
* The page opens in the connect popup. The window that opened it polls the
|
|
32
|
-
* connection, so after a success this window only confirms and closes itself
|
|
33
|
-
* (or follows the native app's return link).
|
|
34
|
-
*/
|
|
35
|
-
export function AppCredentialsForm({ token }) {
|
|
36
|
-
const t = useTranslations('connectAppForm');
|
|
37
|
-
const base = setupLinkApiBase();
|
|
38
|
-
const [phase, setPhase] = useState('loading');
|
|
39
|
-
const [info, setInfo] = useState(null);
|
|
40
|
-
const [store, setStore] = useState('');
|
|
41
|
-
const [clientId, setClientId] = useState('');
|
|
42
|
-
const [clientSecret, setClientSecret] = useState('');
|
|
43
|
-
const [connectedAs, setConnectedAs] = useState(null);
|
|
44
|
-
const [message, setMessage] = useState(null);
|
|
45
|
-
useEffect(() => {
|
|
46
|
-
let cancelled = false;
|
|
47
|
-
getConnectorAppForm(token, { backendUrl: base }).then((body) => {
|
|
48
|
-
if (cancelled)
|
|
49
|
-
return;
|
|
50
|
-
setInfo(body);
|
|
51
|
-
setConnectedAs(body.connected_as);
|
|
52
|
-
setPhase(body.connected ? 'done' : 'ready');
|
|
53
|
-
}, (cause) => {
|
|
54
|
-
if (cancelled)
|
|
55
|
-
return;
|
|
56
|
-
const status = statusOf(cause);
|
|
57
|
-
setMessage(cause instanceof Error ? cause.message : null);
|
|
58
|
-
setPhase(status === 410 ? 'expired' : status === 404 ? 'invalid' : status === 409 ? 'stale' : 'error');
|
|
59
|
-
});
|
|
60
|
-
return () => {
|
|
61
|
-
cancelled = true;
|
|
62
|
-
};
|
|
63
|
-
}, [base, token]);
|
|
64
|
-
async function submit() {
|
|
65
|
-
if (!store.trim() || !clientId.trim() || !clientSecret.trim()) {
|
|
66
|
-
setMessage(t.raw('missingFields'));
|
|
67
|
-
return;
|
|
68
|
-
}
|
|
69
|
-
setPhase('submitting');
|
|
70
|
-
setMessage(null);
|
|
71
|
-
try {
|
|
72
|
-
const result = await submitConnectorAppForm(token, { store: store.trim(), clientId: clientId.trim(), clientSecret: clientSecret.trim() }, { backendUrl: base });
|
|
73
|
-
setConnectedAs(result.connected_as);
|
|
74
|
-
setPhase('done');
|
|
75
|
-
window.setTimeout(() => {
|
|
76
|
-
if (result.success_redirect_uri)
|
|
77
|
-
window.location.assign(result.success_redirect_uri);
|
|
78
|
-
else
|
|
79
|
-
window.close();
|
|
80
|
-
}, CLOSE_AFTER_MS);
|
|
81
|
-
}
|
|
82
|
-
catch (cause) {
|
|
83
|
-
const status = statusOf(cause);
|
|
84
|
-
setMessage(cause instanceof Error ? cause.message : t.raw('failed'));
|
|
85
|
-
if (status === 410)
|
|
86
|
-
setPhase('expired');
|
|
87
|
-
else if (status === 409)
|
|
88
|
-
setPhase('stale');
|
|
89
|
-
else
|
|
90
|
-
setPhase('ready');
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
const app = info?.name ?? 'Shopify';
|
|
94
|
-
switch (phase) {
|
|
95
|
-
case 'loading':
|
|
96
|
-
return (_jsxs("div", { role: "status", className: "text-muted-foreground flex items-center justify-center gap-2 py-8 text-sm", children: [_jsx(Loading, { className: "size-4 shrink-0" }), t.raw('loading')] }));
|
|
97
|
-
case 'expired':
|
|
98
|
-
return (_jsx(StatusNotice, { icon: ClockCountdownIcon, tone: "warning", title: t.raw('expiredTitle'), description: t.raw('startAgain') }));
|
|
99
|
-
case 'invalid':
|
|
100
|
-
return (_jsx(StatusNotice, { icon: LinkBreakIcon, tone: "destructive", title: t.raw('invalidTitle'), description: t.raw('startAgain') }));
|
|
101
|
-
case 'stale':
|
|
102
|
-
return (_jsx(StatusNotice, { icon: LinkBreakIcon, tone: "warning", title: t.raw('staleTitle'), description: message ?? t.raw('startAgain') }));
|
|
103
|
-
case 'error':
|
|
104
|
-
return _jsx(StatusNotice, { icon: WarningCircleIcon, tone: "destructive", title: message ?? t.raw('failed') });
|
|
105
|
-
case 'done':
|
|
106
|
-
return (_jsx(StatusNotice, { icon: CheckIcon, tone: "success", title: t('connectedTitle', { app }), description: connectedAs ? t('connectedDescription', { store: connectedAs }) : t.raw('closeWindow') }));
|
|
107
|
-
}
|
|
108
|
-
const submitting = phase === 'submitting';
|
|
109
|
-
return (_jsxs("div", { className: "space-y-5", children: [_jsxs("div", { className: "space-y-2", children: [_jsx("p", { className: "text-foreground text-sm font-medium", children: t.raw('stepsTitle') }), _jsxs("ol", { className: "text-muted-foreground list-decimal space-y-1 pl-4 text-xs text-pretty", children: [_jsx("li", { children: t.rich('step1', { link: (chunks) => _jsx(DashboardLink, { children: chunks }) }) }), _jsx("li", { children: t.raw('step2') }), _jsx("li", { children: t.raw('step3') }), _jsx("li", { children: t.raw('step4') })] }), _jsx("p", { className: "text-muted-foreground text-xs text-pretty", children: t.raw('sameOrganization') })] }), _jsxs(FieldGroup, { className: "gap-5", children: [_jsxs(Field, { className: "space-y-2", children: [_jsx(FieldLabel, { htmlFor: "app-form-store", className: "text-foreground", children: t.raw('storeLabel') }), _jsxs(InputGroup, { children: [_jsx(InputGroupInput, { id: "app-form-store", name: "store", autoComplete: "off", spellCheck: false,
|
|
110
|
-
// 16px below `sm` so iOS Safari does not zoom the page on focus.
|
|
111
|
-
className: "font-mono max-sm:text-base", placeholder: EXAMPLE_STORE_HANDLE, value: store, disabled: submitting, onChange: (e) => setStore(e.target.value) }), _jsx(InputGroupAddon, { align: "inline-end", children: SHOPIFY_HOST_SUFFIX })] })] }), _jsxs(Field, { className: "space-y-2", children: [_jsx(FieldLabel, { htmlFor: "app-form-client-id", className: "text-foreground", children: t.raw('clientIdLabel') }), _jsx(Input, { id: "app-form-client-id", name: "client_id", autoComplete: "off", spellCheck: false, className: "font-mono max-sm:text-base", value: clientId, disabled: submitting, onChange: (e) => setClientId(e.target.value) })] }), _jsxs(Field, { className: "space-y-2", children: [_jsx(FieldLabel, { htmlFor: "app-form-client-secret", className: "text-foreground", children: t.raw('clientSecretLabel') }), _jsx(Input, { id: "app-form-client-secret", name: "client_secret", type: "password", autoComplete: "off", spellCheck: false, className: "font-mono max-sm:text-base", placeholder: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022", value: clientSecret, disabled: submitting, onChange: (e) => setClientSecret(e.target.value), onKeyDown: (e) => {
|
|
112
|
-
if (e.key === 'Enter')
|
|
113
|
-
void submit();
|
|
114
|
-
} })] })] }), _jsxs("div", { className: "space-y-3", children: [message ? (_jsx("p", { role: "alert", className: "text-destructive text-xs text-pretty", children: message })) : null, _jsxs(Button, { type: "button", className: "w-full", onClick: submit, disabled: submitting, children: [submitting ? _jsx(Loading, { className: "size-4 shrink-0" }) : null, submitting ? t.raw('connecting') : t('submit', { app })] }), _jsx("p", { className: "text-muted-foreground text-center text-xs text-pretty", children: t.raw('secretNote') })] })] }));
|
|
115
|
-
}
|