@kortix/ui 0.14.8 → 0.14.9
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 +63 -3
- package/dist/_vendor/shared/app-config.d.ts +175 -0
- package/dist/_vendor/shared/channel-message.d.ts +34 -5
- package/dist/_vendor/shared/index.d.ts +1 -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 +11 -5
- 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 +51 -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 +16 -25
- 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 +5 -0
- package/dist/customize/sections/view/channels-view.d.ts +5 -1
- package/dist/customize/sections/view/channels-view.js +61 -75
- package/dist/customize/sections/view/gateway/gateway-overview.js +10 -2
- package/dist/customize/settings/tabs/experimental-tab.js +35 -16
- package/dist/customize/shared/catalog/catalog-empty-state.d.ts +1 -12
- package/dist/customize/shared/catalog/catalog-empty-state.js +3 -3
- 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 +46 -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 +873 -85
- package/dist/i18n/en.js +888 -100
- 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/auth/auth-card-shell.js +3 -3
- package/dist/internal/components/agent-mark.js +5 -2
- package/dist/internal/connector-logo/connector-logo-source.d.ts +63 -0
- package/dist/internal/connector-logo/connector-logo-source.js +48 -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/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/injected-scripts.d.ts +7 -0
- package/dist/internal/lib/browser-noise/rules/injected-scripts.js +15 -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 +9 -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/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 +6 -2
- 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/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-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 +5 -1
- package/dist/session/participants/session-participants.js +9 -2
- package/dist/session/prompts/approval-request.d.ts +5 -0
- package/dist/session/prompts/approval-request.js +7 -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 +3 -1
- package/dist/session/thread/session-thread.js +9 -2
- 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 +240 -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 +7 -1
- package/dist/session/turn/user-message.js +21 -7
- 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/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-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 +9 -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 +27 -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 +28 -4
- 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,18 +1,6 @@
|
|
|
1
1
|
import { faviconUrlForHostname } from '../../../lib/favicon.js';
|
|
2
|
+
import { discoverLogoSource } from '../../../internal/connector-logo/connector-logo-source.js';
|
|
2
3
|
import { POPULAR_SECTION } from './connector-categories.js';
|
|
3
|
-
/** Native platform provider. Each member's paired machine is one of its accounts. */
|
|
4
|
-
export function computersCatalogEntry(tI18nComplete) {
|
|
5
|
-
return {
|
|
6
|
-
source: 'computer',
|
|
7
|
-
key: 'computer:computers',
|
|
8
|
-
slug: 'computers',
|
|
9
|
-
name: 'Computer',
|
|
10
|
-
description: tI18nComplete.raw('text070855f4fe8d'),
|
|
11
|
-
icon: null,
|
|
12
|
-
categories: ['developer-tools'],
|
|
13
|
-
popularity: null,
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
4
|
/**
|
|
17
5
|
* The icon URL a Discover record's card loads.
|
|
18
6
|
*
|
|
@@ -29,6 +17,25 @@ export function computersCatalogEntry(tI18nComplete) {
|
|
|
29
17
|
export function discoverEntryIcon(connector) {
|
|
30
18
|
return connector.icon ?? faviconUrlForHostname(connector.domain);
|
|
31
19
|
}
|
|
20
|
+
/** A Composio toolkit as the card the Easy Connect grid renders. The paged
|
|
21
|
+
* catalogue and the browse sections both use this, so a card is identical in
|
|
22
|
+
* a section and behind its "View all". */
|
|
23
|
+
export function connectToolkitApp(toolkit) {
|
|
24
|
+
return {
|
|
25
|
+
slug: toolkit.slug,
|
|
26
|
+
name: toolkit.name,
|
|
27
|
+
description: toolkit.description ?? null,
|
|
28
|
+
imgSrc: toolkit.logo,
|
|
29
|
+
authType: toolkit.isNoAuth ? 'none' : 'oauth',
|
|
30
|
+
categories: toolkit.categories ?? [],
|
|
31
|
+
hasActions: true,
|
|
32
|
+
hasTriggers: false,
|
|
33
|
+
featuredWeight: 0,
|
|
34
|
+
provider: 'composio',
|
|
35
|
+
directId: toolkit.directId ?? null,
|
|
36
|
+
directMcpUrl: toolkit.directMcpUrl ?? null,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
32
39
|
export function catalogEntryFromDiscover(connector) {
|
|
33
40
|
return {
|
|
34
41
|
source: 'discover',
|
|
@@ -42,19 +49,6 @@ export function catalogEntryFromDiscover(connector) {
|
|
|
42
49
|
popularity: connector.popularity,
|
|
43
50
|
};
|
|
44
51
|
}
|
|
45
|
-
export function catalogEntryFromEasyConnect(app) {
|
|
46
|
-
return {
|
|
47
|
-
source: 'easy-connect',
|
|
48
|
-
app,
|
|
49
|
-
key: `easy-connect:${app.slug}`,
|
|
50
|
-
slug: app.slug,
|
|
51
|
-
name: app.name,
|
|
52
|
-
description: app.description,
|
|
53
|
-
icon: app.imgSrc,
|
|
54
|
-
categories: app.categories,
|
|
55
|
-
popularity: null,
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
52
|
/**
|
|
59
53
|
* The one fact that varies between cards: HOW this entry connects. Short
|
|
60
54
|
* nouns, shown as the card's quiet line under the title — every card gets
|
|
@@ -73,20 +67,15 @@ export function appNameKey(name) {
|
|
|
73
67
|
.replace(/(mcp|mcpserver)$/, '');
|
|
74
68
|
}
|
|
75
69
|
export function catalogEntryKindLabel(entry) {
|
|
76
|
-
if (entry.source === 'computer')
|
|
77
|
-
return 'Native';
|
|
78
|
-
// An app with both ways to connect names both.
|
|
79
|
-
if (entry.source === 'easy-connect')
|
|
80
|
-
return entry.app?.directId ? 'App · MCP' : 'App';
|
|
81
|
-
if (entry.alsoApp && entry.connector.kind === 'mcp')
|
|
82
|
-
return 'MCP · App';
|
|
83
70
|
switch (entry.connector.kind) {
|
|
71
|
+
case 'composio':
|
|
72
|
+
return 'Composio';
|
|
73
|
+
case 'kortix':
|
|
74
|
+
return 'Kortix';
|
|
84
75
|
case 'mcp':
|
|
85
76
|
return 'MCP';
|
|
86
77
|
case 'graphql':
|
|
87
78
|
return 'GraphQL';
|
|
88
|
-
case 'cli':
|
|
89
|
-
return 'CLI';
|
|
90
79
|
default:
|
|
91
80
|
return 'API';
|
|
92
81
|
}
|
|
@@ -149,8 +138,6 @@ export function connectedCatalogKeys(connectors) {
|
|
|
149
138
|
return keys;
|
|
150
139
|
}
|
|
151
140
|
export function isCatalogEntryConnected(entry, connectedKeys) {
|
|
152
|
-
if (entry.source === 'computer')
|
|
153
|
-
return connectedKeys.has('provider:computer');
|
|
154
141
|
return connectedKeys.has(foldKey(entry.slug)) || connectedKeys.has(foldKey(entry.name));
|
|
155
142
|
}
|
|
156
143
|
/**
|
|
@@ -177,9 +164,6 @@ function tokenIdentifiesEntry(connectorToken, entryToken) {
|
|
|
177
164
|
* `install/install.ts`.
|
|
178
165
|
*/
|
|
179
166
|
export function catalogEntryConnectors(connectors, entry) {
|
|
180
|
-
if (entry.source === 'computer') {
|
|
181
|
-
return connectors.filter((connector) => connector.provider === 'computer');
|
|
182
|
-
}
|
|
183
167
|
const tokens = [foldKey(entry.slug), foldKey(entry.name)].filter(Boolean);
|
|
184
168
|
return connectors.filter((connector) => [foldKey(connector.slug), foldKey(connector.name ?? '')].some((connectorToken) => tokens.some((token) => tokenIdentifiesEntry(connectorToken, token))));
|
|
185
169
|
}
|
|
@@ -187,3 +171,7 @@ export function catalogEntryConnectors(connectors, entry) {
|
|
|
187
171
|
* `browseSections` in `browse-sections.ts`. Defined in `connector-categories.ts`
|
|
188
172
|
* and re-exported here for the modules that already import this one. */
|
|
189
173
|
export { POPULAR_SECTION };
|
|
174
|
+
/** The logo source of a catalogue card (`ConnectorLogo`): same rule as every other surface. */
|
|
175
|
+
export function catalogEntryLogoSource(entry) {
|
|
176
|
+
return discoverLogoSource(entry.connector);
|
|
177
|
+
}
|
|
@@ -10,34 +10,6 @@ export interface CatalogInstall {
|
|
|
10
10
|
pendingKey: string | null;
|
|
11
11
|
onInstall: (entry: CatalogEntry) => void;
|
|
12
12
|
}
|
|
13
|
-
/**
|
|
14
|
-
* A catalog favicon, or a neutral glyph tile when the record has none or its
|
|
15
|
-
* URL fails to load.
|
|
16
|
-
*
|
|
17
|
-
* A plain `<img>`, not `next/image`. These are third-party favicons on
|
|
18
|
-
* arbitrary hosts, so the loader was already bypassed with `unoptimized` — which
|
|
19
|
-
* left `fill` costing an absolutely-positioned child inside a `relative`
|
|
20
|
-
* wrapper, per card, for no optimisation in return. Native `loading="lazy"`
|
|
21
|
-
* defers every icon below the fold, which is most of them on a browse page.
|
|
22
|
-
*
|
|
23
|
-
* `width`/`height` are set so the box is reserved before the image arrives and
|
|
24
|
-
* the grid never reflows around a late favicon.
|
|
25
|
-
*
|
|
26
|
-
* The broken-image state is the fallback the null case already had: a logo
|
|
27
|
-
* URL that 404s used to render the browser's broken-image glyph inside the
|
|
28
|
-
* tile, which is worse than no imagery at all. `onError` swaps to the same
|
|
29
|
-
* glyph tile — the same fallback a record with no icon gets, so "missing" and
|
|
30
|
-
* "unavailable" look identical. Mirrors `ConnectorAppIcon`'s broken state.
|
|
31
|
-
*
|
|
32
|
-
* The latch is per URL (`failedUrl`, not a boolean): a URL that failed stays
|
|
33
|
-
* failed, while a swapped URL gets a fresh try without any call-site key —
|
|
34
|
-
* merge-search swaps a merged twin's icon to the managed logo as catalogue
|
|
35
|
-
* pages stream in.
|
|
36
|
-
*/
|
|
37
|
-
export declare function ConnectorIcon({ icon, computer, }: {
|
|
38
|
-
icon: string | null;
|
|
39
|
-
computer?: boolean;
|
|
40
|
-
}): import("react").JSX.Element;
|
|
41
13
|
/**
|
|
42
14
|
* The catalogue body: one flat, paginated, searchable grid.
|
|
43
15
|
*
|
|
@@ -46,12 +18,11 @@ export declare function ConnectorIcon({ icon, computer, }: {
|
|
|
46
18
|
* no per-category deepening loop, no reveal window uncovering already-loaded
|
|
47
19
|
* cards.
|
|
48
20
|
*/
|
|
49
|
-
export declare function ConnectorBrowse({ state, connectedKeys, hrefFor,
|
|
21
|
+
export declare function ConnectorBrowse({ state, connectedKeys, hrefFor, install, emptyTitle, emptyDescription, suppressNoMatch, }: {
|
|
50
22
|
state: CatalogState;
|
|
51
23
|
connectedKeys: ReadonlySet<string>;
|
|
52
|
-
/** The card's page
|
|
53
|
-
hrefFor: (entry: CatalogEntry) => string
|
|
54
|
-
onOpen: (entry: CatalogEntry) => void;
|
|
24
|
+
/** The card's app page. */
|
|
25
|
+
hrefFor: (entry: CatalogEntry) => string;
|
|
55
26
|
install: CatalogInstall;
|
|
56
27
|
emptyTitle: string;
|
|
57
28
|
emptyDescription: string;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { useTranslations } from '../../../i18n/index.js';
|
|
4
|
-
import { GlobeIcon
|
|
5
|
-
import { memo
|
|
4
|
+
import { GlobeIcon } from '@phosphor-icons/react';
|
|
5
|
+
import { memo } from 'react';
|
|
6
6
|
import { Badge } from '../../../primitives/badge.js';
|
|
7
7
|
import { Button } from '../../../primitives/button.js';
|
|
8
8
|
import Loading from '../../../primitives/loading.js';
|
|
@@ -13,13 +13,13 @@ import { CatalogCardSkeleton, CatalogGrid, } from '../../shared/catalog/catalog-
|
|
|
13
13
|
import { DENSE_GRID_CLASSNAME, DENSE_GRID_CONTAINER_CLASSNAME, } from '../../shared/catalog/catalog-grid-tokens.js';
|
|
14
14
|
import { cn } from '../../../internal/lib/utils.js';
|
|
15
15
|
import { InstallButton } from '../install/install-menu.js';
|
|
16
|
-
import {
|
|
16
|
+
import { ConnectorLogo } from '../../../internal/connector-logo/connector-logo.js';
|
|
17
|
+
import { catalogEntryKindLabel, catalogEntryLogoSource, isCatalogEntryConnected, } from './catalog-entry.js';
|
|
17
18
|
import { catalogFootSummary } from './catalog-foot.js';
|
|
18
19
|
import { useCatalogAutoload } from './use-catalog-autoload.js';
|
|
19
|
-
/** The Install control is offered only where the caller may add the app
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
return install.canWrite && entry.source !== 'computer';
|
|
20
|
+
/** The Install control is offered only where the caller may add the app. */
|
|
21
|
+
function canInstallEntry(install) {
|
|
22
|
+
return install.canWrite;
|
|
23
23
|
}
|
|
24
24
|
/**
|
|
25
25
|
* What a catalogue card offers on its right edge: "Added" when the project has
|
|
@@ -35,44 +35,15 @@ function CatalogAffordance({ entry, connected, install, }) {
|
|
|
35
35
|
if (connected) {
|
|
36
36
|
return (_jsx(Badge, { variant: "success", size: "sm", "data-testid": "catalog-connected", children: t('added') }));
|
|
37
37
|
}
|
|
38
|
-
if (!canInstallEntry(
|
|
38
|
+
if (!canInstallEntry(install))
|
|
39
39
|
return null;
|
|
40
|
-
|
|
40
|
+
// What Kortix built is set up on its own page, not installed.
|
|
41
|
+
const channel = entry.source === 'discover' && entry.connector.kind === 'kortix';
|
|
42
|
+
return (_jsx(InstallButton, { label: channel ? t('waySetUp') : t('install'), variant: "outline", className: "gap-1 rounded-full", "aria-label": channel ? t('setUpNamed', { name: entry.name }) : t('installNamed', { name: entry.name }), onInstall: () => install.onInstall(entry), pending: install.pendingKey === entry.slug,
|
|
41
43
|
// `pendingKey` holds one install. A second one started beside it would
|
|
42
44
|
// clear the first one's pending state when it settles.
|
|
43
45
|
disabled: !install.ready || install.pendingKey !== null, "data-testid": "catalog-add" }));
|
|
44
46
|
}
|
|
45
|
-
/**
|
|
46
|
-
* A catalog favicon, or a neutral glyph tile when the record has none or its
|
|
47
|
-
* URL fails to load.
|
|
48
|
-
*
|
|
49
|
-
* A plain `<img>`, not `next/image`. These are third-party favicons on
|
|
50
|
-
* arbitrary hosts, so the loader was already bypassed with `unoptimized` — which
|
|
51
|
-
* left `fill` costing an absolutely-positioned child inside a `relative`
|
|
52
|
-
* wrapper, per card, for no optimisation in return. Native `loading="lazy"`
|
|
53
|
-
* defers every icon below the fold, which is most of them on a browse page.
|
|
54
|
-
*
|
|
55
|
-
* `width`/`height` are set so the box is reserved before the image arrives and
|
|
56
|
-
* the grid never reflows around a late favicon.
|
|
57
|
-
*
|
|
58
|
-
* The broken-image state is the fallback the null case already had: a logo
|
|
59
|
-
* URL that 404s used to render the browser's broken-image glyph inside the
|
|
60
|
-
* tile, which is worse than no imagery at all. `onError` swaps to the same
|
|
61
|
-
* glyph tile — the same fallback a record with no icon gets, so "missing" and
|
|
62
|
-
* "unavailable" look identical. Mirrors `ConnectorAppIcon`'s broken state.
|
|
63
|
-
*
|
|
64
|
-
* The latch is per URL (`failedUrl`, not a boolean): a URL that failed stays
|
|
65
|
-
* failed, while a swapped URL gets a fresh try without any call-site key —
|
|
66
|
-
* merge-search swaps a merged twin's icon to the managed logo as catalogue
|
|
67
|
-
* pages stream in.
|
|
68
|
-
*/
|
|
69
|
-
export function ConnectorIcon({ icon, computer = false, }) {
|
|
70
|
-
const [failedUrl, setFailedUrl] = useState(null);
|
|
71
|
-
if (!icon || failedUrl === icon) {
|
|
72
|
-
return (_jsx("span", { className: "bg-card flex size-9 shrink-0 items-center justify-center rounded-sm", children: computer ? _jsx(MonitorIcon, { className: "size-5" }) : _jsx(GlobeIcon, { className: "size-5" }) }));
|
|
73
|
-
}
|
|
74
|
-
return (_jsx("span", { className: "flex size-9 shrink-0 items-center justify-center overflow-hidden rounded-sm", children: _jsx("img", { src: icon, alt: "", width: 36, height: 36, loading: "lazy", decoding: "async", referrerPolicy: "no-referrer", className: "size-9 object-contain", onError: () => setFailedUrl(icon) }) }));
|
|
75
|
-
}
|
|
76
47
|
/**
|
|
77
48
|
* One catalogue card: icon and title on the bare page — no border, no
|
|
78
49
|
* description — with one quiet line under the title saying how the entry
|
|
@@ -81,24 +52,22 @@ export function ConnectorIcon({ icon, computer = false, }) {
|
|
|
81
52
|
* `memo`'d because the grid renders several hundred of these. `entry` and `connectedKeys` are referentially stable
|
|
82
53
|
* across a page landing (the arrays they come from are rebuilt, but the entry
|
|
83
54
|
* objects inside them are not), so the comparison actually pays off.
|
|
84
|
-
* `hrefFor
|
|
55
|
+
* `hrefFor` and `install` must be stable for the same reason;
|
|
85
56
|
* `install` changes identity only when an install starts or ends.
|
|
86
57
|
*/
|
|
87
|
-
const CatalogEntryCard = memo(function CatalogEntryCard({ entry, connectedKeys, hrefFor,
|
|
58
|
+
const CatalogEntryCard = memo(function CatalogEntryCard({ entry, connectedKeys, hrefFor, install, }) {
|
|
88
59
|
const href = hrefFor(entry);
|
|
89
60
|
const connected = isCatalogEntryConnected(entry, connectedKeys);
|
|
90
61
|
const shared = {
|
|
91
62
|
variant: 'plain',
|
|
92
|
-
leading: _jsx(
|
|
63
|
+
leading: _jsx(ConnectorLogo, { source: catalogEntryLogoSource(entry), size: "lg" }),
|
|
93
64
|
title: entry.name,
|
|
94
65
|
subtitle: _jsx("span", { className: "text-muted-foreground text-xs", children: catalogEntryKindLabel(entry) }),
|
|
95
66
|
trailing: _jsx(CatalogAffordance, { entry: entry, connected: connected, install: install }),
|
|
96
67
|
};
|
|
97
|
-
// An entry with no page of its own (the computer card) opens in place.
|
|
98
|
-
return href ? (
|
|
99
68
|
// Only the Install control needs to sit beside the link. The "Added" badge
|
|
100
69
|
// stays inside it, so a click on the badge still opens the page.
|
|
101
|
-
_jsx(CatalogCard, { ...shared, href: href, trailingInteractive: !connected && canInstallEntry(
|
|
70
|
+
return (_jsx(CatalogCard, { ...shared, href: href, trailingInteractive: !connected && canInstallEntry(install) }));
|
|
102
71
|
});
|
|
103
72
|
/** Skeletons appended to a growing grid while a request is in flight. Six —
|
|
104
73
|
* two full rows of the widest layout — so the placeholder block is the same
|
|
@@ -120,7 +89,7 @@ function CatalogFoot({ summary, hasMore, isLoadingMore, loadMore, }) {
|
|
|
120
89
|
const tI18nComplete = useTranslations('hardcodedUi.i18nComplete');
|
|
121
90
|
if (!hasMore && summary === null)
|
|
122
91
|
return null;
|
|
123
|
-
return (_jsxs("div", { className: "flex flex-col items-center gap-2 pt-2", children: [hasMore && !isLoadingMore ? (_jsx(Button, { variant: "outline", size: "sm", onClick: loadMore, className: "transition-transform duration-(--duration-normal) ease-out active:scale-[0.96]", children: tI18nComplete.raw('textac8991ef0101') })) : null, summary ? (_jsxs("p", { className: "text-muted-foreground
|
|
92
|
+
return (_jsxs("div", { className: "flex flex-col items-center gap-2 pt-2", children: [hasMore && !isLoadingMore ? (_jsx(Button, { variant: "outline", size: "sm", onClick: loadMore, className: "transition-transform duration-(--duration-normal) ease-out active:scale-[0.96]", children: tI18nComplete.raw('textac8991ef0101') })) : null, summary ? (_jsxs("p", { className: "text-muted-foreground flex items-center gap-2 text-xs tabular-nums", role: isLoadingMore ? 'status' : undefined, "aria-live": isLoadingMore ? 'polite' : undefined, children: [isLoadingMore ? _jsx(Loading, { className: "size-3.5 shrink-0" }) : null, summary] })) : null] }));
|
|
124
93
|
}
|
|
125
94
|
/**
|
|
126
95
|
* The catalogue body: one flat, paginated, searchable grid.
|
|
@@ -130,7 +99,7 @@ function CatalogFoot({ summary, hasMore, isLoadingMore, loadMore, }) {
|
|
|
130
99
|
* no per-category deepening loop, no reveal window uncovering already-loaded
|
|
131
100
|
* cards.
|
|
132
101
|
*/
|
|
133
|
-
export function ConnectorBrowse({ state, connectedKeys, hrefFor,
|
|
102
|
+
export function ConnectorBrowse({ state, connectedKeys, hrefFor, install, emptyTitle, emptyDescription, suppressNoMatch = false, }) {
|
|
134
103
|
const { activeQuery, entries, total } = state;
|
|
135
104
|
const searching = activeQuery.length > 0;
|
|
136
105
|
const hasMore = state.hasMore;
|
|
@@ -149,7 +118,7 @@ export function ConnectorBrowse({ state, connectedKeys, hrefFor, onOpen, install
|
|
|
149
118
|
// documented order, so those three states are delegated here and the grid
|
|
150
119
|
// gets no children it could render.
|
|
151
120
|
if (state.isLoading || state.isError || isEmpty) {
|
|
152
|
-
return (_jsx(CatalogGrid, { isLoading: state.isLoading, isError: state.isError, error: state.error, onRetry: state.refetch, isEmpty: true, empty: searching ? (suppressNoMatch ? null : (_jsx(CatalogNoMatch, { query: activeQuery
|
|
121
|
+
return (_jsx(CatalogGrid, { isLoading: state.isLoading, isError: state.isError, error: state.error, onRetry: state.refetch, isEmpty: true, empty: searching ? (suppressNoMatch ? null : (_jsx(CatalogNoMatch, { query: activeQuery }))) : (_jsx(EmptyState, { icon: GlobeIcon, size: "sm", title: emptyTitle, description: emptyDescription })), children: null }));
|
|
153
122
|
}
|
|
154
123
|
const summary = catalogFootSummary({
|
|
155
124
|
loaded: entries.length,
|
|
@@ -158,7 +127,7 @@ export function ConnectorBrowse({ state, connectedKeys, hrefFor, onOpen, install
|
|
|
158
127
|
hasMore,
|
|
159
128
|
isLoadingMore: state.isLoadingMore,
|
|
160
129
|
});
|
|
161
|
-
return (_jsxs("div", { "aria-busy": state.isRefreshing || undefined, className: cn('space-y-6 transition-opacity duration-(--duration-normal) ease-out', state.isRefreshing && 'pointer-events-none opacity-60'), children: [_jsx("div", { className: DENSE_GRID_CONTAINER_CLASSNAME, children: _jsxs("div", { className: DENSE_GRID_CLASSNAME, children: [entries.map((entry) => (_jsx(CatalogEntryCard, { entry: entry, connectedKeys: connectedKeys, hrefFor: hrefFor,
|
|
130
|
+
return (_jsxs("div", { "aria-busy": state.isRefreshing || undefined, className: cn('space-y-6 transition-opacity duration-(--duration-normal) ease-out', state.isRefreshing && 'pointer-events-none opacity-60'), children: [_jsx("div", { className: DENSE_GRID_CONTAINER_CLASSNAME, children: _jsxs("div", { className: DENSE_GRID_CLASSNAME, children: [entries.map((entry) => (_jsx(CatalogEntryCard, { entry: entry, connectedKeys: connectedKeys, hrefFor: hrefFor, install: install }, entry.key))), state.isLoadingMore
|
|
162
131
|
? Array.from({ length: LOADING_MORE_SKELETONS }, (_, index) => (_jsx(CatalogCardSkeleton, {}, `loading-${index}`)))
|
|
163
132
|
: null] }) }), hasMore ? _jsx("div", { ref: sentinelRef, "aria-hidden": true, className: "h-px" }) : null, _jsx(CatalogFoot, { summary: summary, hasMore: hasMore, isLoadingMore: state.isLoadingMore, loadMore: loadMore })] }));
|
|
164
133
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { getConnectStatus,
|
|
1
|
+
import { getConnectStatus, type DiscoverConnectorKind } from '@kortix/sdk';
|
|
2
2
|
import { type BrowseSectionsPage } from './browse-sections.js';
|
|
3
|
-
import {
|
|
3
|
+
import { type CatalogEntry } from './catalog-entry.js';
|
|
4
4
|
/**
|
|
5
5
|
* One browse section: a category, a fixed slice of it, and its true size.
|
|
6
6
|
*
|
|
@@ -22,14 +22,6 @@ export interface CatalogState {
|
|
|
22
22
|
total: number;
|
|
23
23
|
/** The debounced query actually in flight, trimmed. Empty when browsing. */
|
|
24
24
|
activeQuery: string;
|
|
25
|
-
/** Which catalogue answered. Decides the add flow a card opens. */
|
|
26
|
-
source: CatalogSource;
|
|
27
|
-
/** Categories the user can filter by, each with its true count. Empty for
|
|
28
|
-
* the Discover source and while the Easy Connect index is still building. */
|
|
29
|
-
/** Apps matching the query that publish no actions, so the catalogue does
|
|
30
|
-
* not offer them. Lets the no-match state say why instead of implying the
|
|
31
|
-
* app does not exist — `q=SAP` is exactly this case. */
|
|
32
|
-
excludedNoActions: number;
|
|
33
25
|
/** The browse page. Empty while searching or inside a category — both are
|
|
34
26
|
* one flat result set by definition. */
|
|
35
27
|
sections: CatalogSection[];
|
|
@@ -90,12 +82,15 @@ export declare const connectStatusQuery: {
|
|
|
90
82
|
queryFn: typeof getConnectStatus;
|
|
91
83
|
};
|
|
92
84
|
/**
|
|
93
|
-
* The browse page's one request
|
|
94
|
-
*
|
|
95
|
-
* the Discover landing reads.
|
|
85
|
+
* The browse page's one request. Exported so the Customize prefetch
|
|
86
|
+
* (`use-customize-prefetch.ts`) fills the exact cache entry the landing reads.
|
|
96
87
|
*/
|
|
97
|
-
export declare function catalogSectionsQuery(projectId: string,
|
|
98
|
-
|
|
88
|
+
export declare function catalogSectionsQuery(projectId: string,
|
|
89
|
+
/** Just the apps that connect with nothing to set up. */
|
|
90
|
+
oneClick?: boolean,
|
|
91
|
+
/** Just the apps that connect these ways. */
|
|
92
|
+
kinds?: readonly DiscoverConnectorKind[]): {
|
|
93
|
+
queryKey: readonly ["catalog-sections", string, "kortix", ...string[]];
|
|
99
94
|
queryFn: () => Promise<BrowseSectionsPage>;
|
|
100
95
|
staleTime: number;
|
|
101
96
|
};
|
|
@@ -108,54 +103,20 @@ export declare function listConnectCatalogPage(input: {
|
|
|
108
103
|
limit: number;
|
|
109
104
|
}): Promise<import("@kortix/sdk").PipedreamCatalogPage>;
|
|
110
105
|
/**
|
|
111
|
-
* The catalogue behind the All tab
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
* **Why two sources.** `connectors_api_discover` resolves to `false` by
|
|
115
|
-
* default (`apps/api/src/experimental/features.ts:83`), so the Discover
|
|
116
|
-
* catalogue is unavailable to most projects. Easy Connect (Pipedream) is not
|
|
117
|
-
* flagged. Falling back keeps the page populated for every project.
|
|
118
|
-
*
|
|
119
|
-
* **Why not merge them.** The two publish overlapping apps under different
|
|
120
|
-
* slugs and different `id` namespaces, and each has its own add flow. A merged
|
|
121
|
-
* list would need a cross-catalogue identity that neither API provides.
|
|
106
|
+
* The catalogue behind the All tab: Kortix's apps, every integrations.sh
|
|
107
|
+
* server and API, and the Composio apps, each app once by its best way in
|
|
108
|
+
* (`apps/api/src/connectors/mcp-apps.ts`). One source, the Discover routes.
|
|
122
109
|
*
|
|
123
110
|
* **One paging mechanism.** A scroll or a click on "Load more" fetches the next
|
|
124
|
-
* page.
|
|
125
|
-
*
|
|
126
|
-
* window over the top — that existed only because the client had to accumulate
|
|
127
|
-
* enough pages to fake a category filter. The server filters by category now
|
|
128
|
-
* (`pipedreamCatalogPage`), so the client asks for exactly the page it renders.
|
|
129
|
-
*
|
|
130
|
-
* **Filtering happens server-side, over the whole catalogue.** Both `q` and
|
|
131
|
-
* `category` are query keys, so changing either starts a new list rather than
|
|
132
|
-
* re-slicing an accumulated one. Pipedream's own API cannot filter by category
|
|
133
|
-
* at all — see `apps/api/src/connectors/pipedream-index.ts`.
|
|
134
|
-
*
|
|
135
|
-
* **Easy Connect waits for the deployment probe.** No Pipedream request is sent
|
|
136
|
-
* until `usePipedreamStatus` has ruled out `absent`, because on a deployment
|
|
137
|
-
* without Pipedream credentials every one of them is a `501` — and one landing
|
|
138
|
-
* before the probe would paint the error card the probe exists to prevent. The
|
|
139
|
-
* cost is one round trip on the first load of the session, spent on a route that
|
|
140
|
-
* only reads env vars, and the wait is reported as `isLoading` so the grid holds
|
|
141
|
-
* its skeletons instead of flashing an empty result.
|
|
111
|
+
* page. `q`, `oneClick` and `kinds` are query keys, so changing any of them
|
|
112
|
+
* starts a new list rather than re-slicing an accumulated one.
|
|
142
113
|
*/
|
|
143
114
|
export declare function useCatalog(projectId: string, query: string, opts: {
|
|
144
115
|
enabled: boolean;
|
|
145
|
-
/**
|
|
146
|
-
discoverEnabled: boolean;
|
|
147
|
-
/** `connectors_v2`: the catalogue is Kortix's own MCP apps, served on the
|
|
148
|
-
* Discover routes. No Composio or Pipedream request is sent. */
|
|
149
|
-
mcpApps?: boolean;
|
|
150
|
-
/** Show the native Computer card: this deployment can connect computers. */
|
|
116
|
+
/** This deployment can pair computers; without it the Computer record goes. */
|
|
151
117
|
computers?: boolean;
|
|
118
|
+
/** List just the apps that connect with nothing to set up. */
|
|
119
|
+
oneClick?: boolean;
|
|
120
|
+
/** List just the apps that connect these ways. */
|
|
121
|
+
kinds?: readonly DiscoverConnectorKind[];
|
|
152
122
|
}): CatalogState;
|
|
153
|
-
export declare function assembleCatalogEntries({ source, computers, activeQuery, searchDirect, tI18nComplete, discoverPages, managedPages, }: {
|
|
154
|
-
source: CatalogSource;
|
|
155
|
-
computers: boolean;
|
|
156
|
-
activeQuery: string;
|
|
157
|
-
searchDirect: boolean;
|
|
158
|
-
tI18nComplete: Parameters<typeof computersCatalogEntry>[0];
|
|
159
|
-
discoverPages?: Awaited<ReturnType<typeof listDiscoverConnectors>>[];
|
|
160
|
-
managedPages?: Awaited<ReturnType<typeof listConnectCatalogPage>>[];
|
|
161
|
-
}): CatalogEntry[];
|