@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.
Files changed (567) hide show
  1. package/README.md +2 -2
  2. package/dist/_vendor/kortix-shared.js +116 -3
  3. package/dist/_vendor/shared/app-config.d.ts +175 -0
  4. package/dist/_vendor/shared/artifact-comments.d.ts +235 -0
  5. package/dist/_vendor/shared/channel-descriptors.d.ts +96 -0
  6. package/dist/_vendor/shared/channel-message.d.ts +45 -5
  7. package/dist/_vendor/shared/index.d.ts +2 -0
  8. package/dist/_vendor/shared/space-slug.d.ts +37 -0
  9. package/dist/access/access/access-detail-shell.js +1 -1
  10. package/dist/access/access/principal-picker.d.ts +11 -0
  11. package/dist/access/access/principal-picker.js +3 -2
  12. package/dist/apps/app-preview-pool.d.ts +7 -2
  13. package/dist/apps/app-preview-pool.js +30 -7
  14. package/dist/apps/app-shared.d.ts +22 -15
  15. package/dist/apps/app-shared.js +37 -19
  16. package/dist/apps/index.d.ts +2 -2
  17. package/dist/apps/index.js +2 -2
  18. package/dist/artifacts/artifact-frame.d.ts +16 -0
  19. package/dist/artifacts/artifact-frame.js +55 -0
  20. package/dist/artifacts/artifact-session.d.ts +18 -0
  21. package/dist/artifacts/artifact-session.js +101 -0
  22. package/dist/artifacts/frame-policy.d.ts +30 -0
  23. package/dist/artifacts/frame-policy.js +61 -0
  24. package/dist/artifacts/index.d.ts +3 -0
  25. package/dist/artifacts/index.js +5 -0
  26. package/dist/browser/sandbox-browser-chrome.d.ts +4 -1
  27. package/dist/browser/sandbox-browser-chrome.js +2 -2
  28. package/dist/customize/agents/agent-grant-pages.d.ts +5 -1
  29. package/dist/customize/agents/agent-grant-pages.js +30 -4
  30. package/dist/customize/agents/agent-page.js +3 -1
  31. package/dist/customize/agents/agent-policy-sets.d.ts +43 -0
  32. package/dist/customize/agents/agent-policy-sets.js +72 -0
  33. package/dist/customize/agents/agent-triggers-section.js +2 -1
  34. package/dist/customize/connectors/add-mcp/add-mcp-server-dialog.d.ts +6 -1
  35. package/dist/customize/connectors/add-mcp/add-mcp-server-dialog.js +10 -4
  36. package/dist/customize/connectors/agent-access.d.ts +35 -0
  37. package/dist/customize/connectors/agent-access.js +77 -0
  38. package/dist/customize/connectors/catalog/browse-sections.d.ts +2 -29
  39. package/dist/customize/connectors/catalog/browse-sections.js +7 -74
  40. package/dist/customize/connectors/catalog/catalog-entry.d.ts +18 -37
  41. package/dist/customize/connectors/catalog/catalog-entry.js +28 -40
  42. package/dist/customize/connectors/catalog/connector-browse.d.ts +3 -32
  43. package/dist/customize/connectors/catalog/connector-browse.js +19 -50
  44. package/dist/customize/connectors/catalog/use-catalog.d.ts +20 -59
  45. package/dist/customize/connectors/catalog/use-catalog.js +48 -175
  46. package/dist/customize/connectors/connector-identity.d.ts +9 -11
  47. package/dist/customize/connectors/connector-identity.js +13 -42
  48. package/dist/customize/connectors/connector-moves-banner.d.ts +2 -1
  49. package/dist/customize/connectors/connector-moves-banner.js +4 -6
  50. package/dist/customize/connectors/connector-routes.d.ts +21 -9
  51. package/dist/customize/connectors/connector-routes.js +29 -20
  52. package/dist/customize/connectors/connectors-page.js +53 -82
  53. package/dist/customize/connectors/detail/app-page.js +226 -98
  54. package/dist/customize/connectors/detail/computer-app-page.d.ts +16 -0
  55. package/dist/customize/connectors/detail/computer-app-page.js +39 -0
  56. package/dist/customize/connectors/detail/connector-accounts.js +3 -1
  57. package/dist/customize/connectors/detail/connector-advanced-tools.d.ts +4 -1
  58. package/dist/customize/connectors/detail/connector-advanced-tools.js +2 -2
  59. package/dist/customize/connectors/detail/connector-agents.d.ts +14 -0
  60. package/dist/customize/connectors/detail/connector-agents.js +69 -0
  61. package/dist/customize/connectors/detail/connector-detail-tabs.js +2 -1
  62. package/dist/customize/connectors/detail/connector-move-row.d.ts +8 -5
  63. package/dist/customize/connectors/detail/connector-move-row.js +23 -14
  64. package/dist/customize/connectors/detail/connector-page.d.ts +4 -1
  65. package/dist/customize/connectors/detail/connector-page.js +14 -10
  66. package/dist/customize/connectors/detail/connector-policy-sets.d.ts +28 -0
  67. package/dist/customize/connectors/detail/connector-policy-sets.js +203 -0
  68. package/dist/customize/connectors/detail/connector-settings.d.ts +4 -1
  69. package/dist/customize/connectors/detail/connector-settings.js +7 -3
  70. package/dist/customize/connectors/detail/connector-status.d.ts +19 -6
  71. package/dist/customize/connectors/detail/connector-status.js +34 -10
  72. package/dist/customize/connectors/detail/connector-tabs.d.ts +4 -1
  73. package/dist/customize/connectors/detail/connector-tabs.js +8 -2
  74. package/dist/customize/connectors/detail/connector-tools.d.ts +3 -3
  75. package/dist/customize/connectors/detail/connector-tools.js +105 -48
  76. package/dist/customize/connectors/detail/email-inboxes.d.ts +43 -0
  77. package/dist/customize/connectors/detail/email-inboxes.js +184 -0
  78. package/dist/customize/connectors/detail/provider-info.d.ts +1 -1
  79. package/dist/customize/connectors/detail/provider-info.js +2 -2
  80. package/dist/customize/connectors/detail/status-badge.d.ts +1 -1
  81. package/dist/customize/connectors/detail/status-badge.js +4 -5
  82. package/dist/customize/connectors/detail/use-connector-detail.d.ts +6 -0
  83. package/dist/customize/connectors/detail/use-connector-detail.js +14 -4
  84. package/dist/customize/connectors/install/install-dialog.d.ts +23 -0
  85. package/dist/customize/connectors/install/install-dialog.js +40 -0
  86. package/dist/customize/connectors/install/install.d.ts +13 -2
  87. package/dist/customize/connectors/install/install.js +9 -4
  88. package/dist/customize/connectors/install/use-install.d.ts +19 -2
  89. package/dist/customize/connectors/install/use-install.js +65 -37
  90. package/dist/customize/connectors/install/way-kind.d.ts +5 -0
  91. package/dist/customize/connectors/install/way-kind.js +16 -0
  92. package/dist/customize/connectors/provider-label.d.ts +2 -1
  93. package/dist/customize/connectors/provider-label.js +13 -3
  94. package/dist/customize/connectors/tools/pattern-rule-draft.d.ts +4 -0
  95. package/dist/customize/connectors/tools/pattern-rule-draft.js +12 -3
  96. package/dist/customize/connectors/tools/policy-sets.d.ts +27 -0
  97. package/dist/customize/connectors/tools/policy-sets.js +41 -0
  98. package/dist/customize/connectors/tools/tool-groups.d.ts +32 -9
  99. package/dist/customize/connectors/tools/tool-groups.js +78 -16
  100. package/dist/customize/connectors/tools/tool-policy-control.d.ts +11 -10
  101. package/dist/customize/connectors/tools/tool-policy-control.js +15 -16
  102. package/dist/customize/connectors/tools/tool-policy-labels.d.ts +6 -5
  103. package/dist/customize/connectors/tools/tool-policy-labels.js +17 -16
  104. package/dist/customize/connectors/tools/tool-policy.d.ts +50 -4
  105. package/dist/customize/connectors/tools/tool-policy.js +74 -8
  106. package/dist/customize/connectors/use-agent-access.d.ts +85 -0
  107. package/dist/customize/connectors/use-agent-access.js +72 -0
  108. package/dist/customize/migrate-to-v2/index.d.ts +1 -2
  109. package/dist/customize/migrate-to-v2/index.js +1 -2
  110. package/dist/customize/migrate-to-v2/migration-prompt.d.ts +12 -25
  111. package/dist/customize/migrate-to-v2/migration-prompt.js +34 -236
  112. package/dist/customize/migrate-to-v2/upgrade-defs.d.ts +1 -1
  113. package/dist/customize/migrate-to-v2/upgrade-defs.js +7 -6
  114. package/dist/customize/migrate-to-v2/upgrade-view.js +7 -7
  115. package/dist/customize/migrate-to-v2/use-run-upgrade.d.ts +3 -3
  116. package/dist/customize/providers/provider-accordion.js +17 -2
  117. package/dist/customize/sections/component/channel-access-panel.d.ts +16 -0
  118. package/dist/customize/sections/component/channel-access-panel.js +146 -0
  119. package/dist/customize/sections/component/channel-connect-hero.d.ts +3 -2
  120. package/dist/customize/sections/component/channel-connect-hero.js +3 -2
  121. package/dist/customize/sections/component/channel-hero-frame.d.ts +31 -0
  122. package/dist/customize/sections/component/channel-hero-frame.js +40 -0
  123. package/dist/customize/sections/component/channel-mocks.d.ts +6 -0
  124. package/dist/customize/sections/component/channel-mocks.js +46 -0
  125. package/dist/customize/sections/component/channel-row.d.ts +13 -3
  126. package/dist/customize/sections/component/channel-row.js +10 -4
  127. package/dist/customize/sections/component/email-connect-form.d.ts +27 -0
  128. package/dist/customize/sections/component/email-connect-form.js +183 -0
  129. package/dist/customize/sections/component/slack-connect-card.d.ts +7 -0
  130. package/dist/customize/sections/component/slack-connect-card.js +2 -3
  131. package/dist/customize/sections/component/teams-connect-card.d.ts +7 -0
  132. package/dist/customize/sections/component/teams-connect-card.js +2 -3
  133. package/dist/customize/sections/component/telegram-channel-row.js +21 -28
  134. package/dist/customize/sections/connectors-view.d.ts +1 -15
  135. package/dist/customize/sections/connectors-view.js +81 -314
  136. package/dist/customize/sections/view/agent-editor-catalog.js +10 -0
  137. package/dist/customize/sections/view/channels-view.d.ts +6 -1
  138. package/dist/customize/sections/view/channels-view.js +72 -81
  139. package/dist/customize/sections/view/gateway/gateway-overview.js +10 -2
  140. package/dist/customize/settings/rail.js +9 -0
  141. package/dist/customize/settings/settings-tabs.d.ts +1 -1
  142. package/dist/customize/settings/settings-tabs.js +1 -0
  143. package/dist/customize/settings/tabs/chrome-connections-tab.d.ts +6 -0
  144. package/dist/customize/settings/tabs/chrome-connections-tab.js +99 -0
  145. package/dist/customize/settings/tabs/experimental-tab.js +35 -16
  146. package/dist/customize/shared/catalog/catalog-empty-state.d.ts +4 -15
  147. package/dist/customize/shared/catalog/catalog-empty-state.js +9 -7
  148. package/dist/customize/shared/channels-switch-dialog.d.ts +18 -0
  149. package/dist/customize/shared/channels-switch-dialog.js +30 -0
  150. package/dist/customize/shared/feature-gate-screen.js +27 -9
  151. package/dist/customize/shared/use-customize-prefetch.d.ts +2 -3
  152. package/dist/customize/shared/use-customize-prefetch.js +9 -27
  153. package/dist/customize/triggers/schedule/post-to-field.d.ts +18 -0
  154. package/dist/customize/triggers/schedule/post-to-field.js +49 -0
  155. package/dist/customize/triggers/schedule/schedule-copy.d.ts +10 -6
  156. package/dist/customize/triggers/schedule/schedule-copy.js +42 -11
  157. package/dist/customize/triggers/schedule/schedule-detail-sheet.js +2 -1
  158. package/dist/customize/triggers/schedule/trigger-composer-logic.d.ts +22 -0
  159. package/dist/customize/triggers/schedule/trigger-composer-logic.js +25 -0
  160. package/dist/customize/triggers/schedule/trigger-composer.d.ts +5 -0
  161. package/dist/customize/triggers/schedule/trigger-composer.js +23 -14
  162. package/dist/customize/triggers/schedule/trigger-edit-logic.js +3 -0
  163. package/dist/customize/triggers/schedule/trigger-filter.js +1 -1
  164. package/dist/customize/triggers/schedule/trigger-runs-logic.d.ts +2 -2
  165. package/dist/customize/triggers/schedule/trigger-runs-panel.js +1 -0
  166. package/dist/customize/triggers/schedule/trigger-toast.js +2 -1
  167. package/dist/customize/triggers/schedule-view.js +5 -2
  168. package/dist/files/index.d.ts +1 -0
  169. package/dist/files/index.js +1 -0
  170. package/dist/files/project/change-request-recovery.d.ts +1 -26
  171. package/dist/files/project/change-request-recovery.js +1 -59
  172. package/dist/files/project/components/change-request-detail-dialog.js +13 -3
  173. package/dist/files/project/components/drive-explorer.js +15 -15
  174. package/dist/files/project/components/drive-toolbar.d.ts +16 -2
  175. package/dist/files/project/components/drive-toolbar.js +14 -5
  176. package/dist/files/project/hooks/use-change-request-recovery.js +3 -19
  177. package/dist/files/project/hooks/use-change-requests.d.ts +1 -0
  178. package/dist/files/project/hooks/use-change-requests.js +11 -2
  179. package/dist/files/renderers/image-frame.d.ts +48 -0
  180. package/dist/files/renderers/image-frame.js +59 -0
  181. package/dist/files/renderers/image-renderer.d.ts +11 -1
  182. package/dist/files/renderers/image-renderer.js +13 -3
  183. package/dist/files/renderers/pdf/pdf-clipboard.d.ts +2 -0
  184. package/dist/files/renderers/pdf/pdf-clipboard.js +21 -0
  185. package/dist/files/renderers/pdf/pdf-viewer.js +4 -2
  186. package/dist/files/renderers/show-content-renderer.d.ts +9 -1
  187. package/dist/files/renderers/show-content-renderer.js +56 -14
  188. package/dist/files/runtime/file-source.js +2 -0
  189. package/dist/files/runtime/hooks/use-binary-blob.d.ts +10 -1
  190. package/dist/files/runtime/hooks/use-binary-blob.js +10 -4
  191. package/dist/files/runtime/hooks/use-shared-image.d.ts +41 -0
  192. package/dist/files/runtime/hooks/use-shared-image.js +177 -0
  193. package/dist/files/viewer/file-content-renderer.d.ts +22 -1
  194. package/dist/files/viewer/file-content-renderer.js +50 -7
  195. package/dist/files/viewer/file-header.d.ts +7 -3
  196. package/dist/files/viewer/file-header.js +20 -11
  197. package/dist/files/viewer/file-preview-modal.d.ts +1 -1
  198. package/dist/files/viewer/file-preview-modal.js +10 -22
  199. package/dist/files/viewer/file-source.d.ts +13 -0
  200. package/dist/files/viewer/use-file-content-state.d.ts +2 -0
  201. package/dist/files/viewer/use-file-content-state.js +28 -10
  202. package/dist/files/viewer/viewer-actions.d.ts +3 -1
  203. package/dist/files/viewer/viewer-actions.js +2 -2
  204. package/dist/hooks/use-media-query.d.ts +1 -0
  205. package/dist/hooks/use-mobile.d.ts +5 -0
  206. package/dist/hooks/use-mobile.js +8 -0
  207. package/dist/i18n/en.d.ts +1062 -85
  208. package/dist/i18n/en.js +1078 -101
  209. package/dist/i18n/ui-catalog/localize-ui-catalog.js +4 -0
  210. package/dist/i18n/ui-catalog/remaining-ui-translation-keys.generated.js +15 -3
  211. package/dist/index.d.ts +2 -2
  212. package/dist/index.js +2 -2
  213. package/dist/internal/account-hub/account-settings-sidebar.js +1 -1
  214. package/dist/internal/account-hub/hub-sheet.d.ts +9 -1
  215. package/dist/internal/account-hub/hub-sheet.js +21 -5
  216. package/dist/internal/account-hub/sections.d.ts +1 -1
  217. package/dist/internal/account-hub/sections.js +2 -1
  218. package/dist/internal/apps-and-extensions/apps-modal.d.ts +9 -0
  219. package/dist/internal/apps-and-extensions/apps-modal.js +107 -0
  220. package/dist/internal/auth/auth-card-shell.js +3 -3
  221. package/dist/internal/chrome/browser-icon.d.ts +24 -0
  222. package/dist/internal/chrome/browser-icon.js +58 -0
  223. package/dist/internal/chrome/chrome-card-state.d.ts +16 -0
  224. package/dist/internal/chrome/chrome-card-state.js +9 -0
  225. package/dist/internal/chrome/chrome-connect.d.ts +69 -0
  226. package/dist/internal/chrome/chrome-connect.js +178 -0
  227. package/dist/internal/chrome/chrome-mock.d.ts +4 -0
  228. package/dist/internal/chrome/chrome-mock.js +15 -0
  229. package/dist/internal/chrome/chrome-names.d.ts +15 -0
  230. package/dist/internal/chrome/chrome-names.js +35 -0
  231. package/dist/internal/chrome/extension.d.ts +47 -0
  232. package/dist/internal/chrome/extension.js +91 -0
  233. package/dist/internal/chrome/use-chrome-offered.d.ts +11 -0
  234. package/dist/internal/chrome/use-chrome-offered.js +22 -0
  235. package/dist/internal/components/agent-mark.js +5 -2
  236. package/dist/internal/connector-logo/connector-logo-source.d.ts +64 -0
  237. package/dist/internal/connector-logo/connector-logo-source.js +49 -0
  238. package/dist/internal/connector-logo/connector-logo.d.ts +39 -0
  239. package/dist/internal/connector-logo/connector-logo.js +56 -0
  240. package/dist/internal/connector-logo/connector-mark-files.d.ts +11 -0
  241. package/dist/internal/connector-logo/connector-mark-files.js +35 -0
  242. package/dist/internal/files/file-read-retry.d.ts +13 -0
  243. package/dist/internal/files/file-read-retry.js +23 -3
  244. package/dist/internal/files/session-drive-files.d.ts +5 -1
  245. package/dist/internal/files/session-drive-files.js +7 -2
  246. package/dist/internal/hooks/channels/use-channels-installations.d.ts +32 -5
  247. package/dist/internal/hooks/channels/use-channels-installations.js +55 -7
  248. package/dist/internal/hooks/channels/use-email-inboxes.d.ts +19 -0
  249. package/dist/internal/hooks/channels/use-email-inboxes.js +48 -0
  250. package/dist/internal/hooks/connectors/use-add-account.js +1 -1
  251. package/dist/internal/hooks/index.d.ts +1 -1
  252. package/dist/internal/hooks/index.js +1 -1
  253. package/dist/internal/hooks/projects/use-new-project-session.d.ts +9 -0
  254. package/dist/internal/hooks/projects/use-new-project-session.js +28 -12
  255. package/dist/internal/hooks/use-auto-scroll.d.ts +8 -1
  256. package/dist/internal/hooks/use-auto-scroll.js +4 -4
  257. package/dist/internal/icons/edge.d.ts +5 -0
  258. package/dist/internal/icons/edge.js +10 -0
  259. package/dist/internal/icons/telegram.d.ts +5 -0
  260. package/dist/internal/icons/telegram.js +6 -1
  261. package/dist/internal/layout/nav-hover-card.d.ts +35 -0
  262. package/dist/internal/layout/nav-hover-card.js +84 -0
  263. package/dist/internal/layout/project-nav-row.d.ts +3 -1
  264. package/dist/internal/layout/project-nav-row.js +3 -2
  265. package/dist/internal/layout/project-page-header.d.ts +4 -2
  266. package/dist/internal/layout/project-page-header.js +4 -3
  267. package/dist/internal/layout/project-settings-nav.js +59 -2
  268. package/dist/internal/lib/browser-error-noise.d.ts +1 -1
  269. package/dist/internal/lib/browser-error-noise.js +1 -1
  270. package/dist/internal/lib/browser-noise/rules/extensions.js +17 -3
  271. package/dist/internal/lib/browser-noise/rules/injected-scripts.d.ts +7 -0
  272. package/dist/internal/lib/browser-noise/rules/injected-scripts.js +15 -0
  273. package/dist/internal/lib/detect-os.d.ts +43 -0
  274. package/dist/internal/lib/detect-os.js +70 -0
  275. package/dist/internal/lib/manifest-version.d.ts +1 -1
  276. package/dist/internal/lib/manifest-version.js +2 -2
  277. package/dist/internal/lib/memory-href.d.ts +16 -0
  278. package/dist/internal/lib/memory-href.js +46 -0
  279. package/dist/internal/lib/use-project-feature-flags.js +13 -9
  280. package/dist/internal/lib/utils/heic-convert.d.ts +1 -1
  281. package/dist/internal/lib/utils/heic-convert.js +3 -4
  282. package/dist/internal/lib/web-notifications.d.ts +20 -0
  283. package/dist/internal/lib/web-notifications.js +48 -4
  284. package/dist/internal/notifications/notification-bell.d.ts +4 -1
  285. package/dist/internal/notifications/notification-bell.js +2 -2
  286. package/dist/internal/selection/selection-bar.d.ts +2 -1
  287. package/dist/internal/selection/selection-bar.js +1 -1
  288. package/dist/internal/stores/apps-modal-store.d.ts +8 -0
  289. package/dist/internal/stores/apps-modal-store.js +6 -0
  290. package/dist/internal/stores/composer-prefill-store.d.ts +12 -5
  291. package/dist/internal/stores/file-preview-store.d.ts +29 -2
  292. package/dist/internal/stores/file-preview-store.js +19 -1
  293. package/dist/internal/stores/kortix-computer-store.js +3 -0
  294. package/dist/internal/stores/sidebar-nav-store.d.ts +1 -1
  295. package/dist/internal/stores/sidebar-nav-store.js +3 -1
  296. package/dist/lib/routes.d.ts +13 -1
  297. package/dist/lib/routes.js +13 -0
  298. package/dist/markdown/index.d.ts +2 -1
  299. package/dist/markdown/index.js +2 -1
  300. package/dist/markdown/setup-links/approval-decision.d.ts +1 -0
  301. package/dist/markdown/setup-links/approval-decision.js +9 -3
  302. package/dist/markdown/setup-links/connector-handshake.d.ts +3 -1
  303. package/dist/markdown/setup-links/connector-handshake.js +12 -10
  304. package/dist/markdown/setup-links/secret-intake-form.d.ts +0 -10
  305. package/dist/markdown/setup-links/secret-intake-form.js +1 -1
  306. package/dist/markdown/setup-links/show-connect-hero.d.ts +28 -0
  307. package/dist/markdown/setup-links/show-connect-hero.js +91 -0
  308. package/dist/markdown/unified-markdown.js +5 -5
  309. package/dist/primitives/badge.d.ts +1 -1
  310. package/dist/primitives/badge.js +2 -0
  311. package/dist/primitives/disclosure.js +14 -2
  312. package/dist/primitives/empty-art.d.ts +12 -0
  313. package/dist/primitives/empty-art.js +11 -0
  314. package/dist/primitives/empty-state.d.ts +2 -2
  315. package/dist/primitives/empty-state.js +6 -5
  316. package/dist/primitives/mermaid-renderer.d.ts +2 -0
  317. package/dist/primitives/mermaid-renderer.js +21 -15
  318. package/dist/primitives/resizable.js +6 -1
  319. package/dist/primitives/resize-seam.d.ts +11 -0
  320. package/dist/primitives/resize-seam.js +12 -0
  321. package/dist/primitives/sidebar-panel.js +4 -7
  322. package/dist/primitives/tabs.d.ts +14 -1
  323. package/dist/primitives/tabs.js +1 -1
  324. package/dist/providers/ui-provider.d.ts +9 -0
  325. package/dist/session/composer/ComposerAboveCard.d.ts +1 -1
  326. package/dist/session/composer/ComposerAboveCard.js +2 -2
  327. package/dist/session/composer/ComposerCard.d.ts +1 -1
  328. package/dist/session/composer/ComposerCard.js +3 -3
  329. package/dist/session/composer/agent-selector.d.ts +13 -1
  330. package/dist/session/composer/agent-selector.js +25 -5
  331. package/dist/session/composer/composer-agent-access.d.ts +15 -0
  332. package/dist/session/composer/composer-agent-access.js +27 -0
  333. package/dist/session/composer/composer-chat-input.d.ts +8 -2
  334. package/dist/session/composer/composer-chat-input.js +8 -6
  335. package/dist/session/composer/composer-logic.d.ts +16 -0
  336. package/dist/session/composer/composer-logic.js +12 -0
  337. package/dist/session/composer/composer-underbar.d.ts +3 -1
  338. package/dist/session/composer/composer-underbar.js +4 -3
  339. package/dist/session/composer/composer.d.ts +15 -1
  340. package/dist/session/composer/composer.js +19 -1
  341. package/dist/session/composer/draft/composer-draft.d.ts +6 -2
  342. package/dist/session/composer/draft/composer-draft.js +5 -1
  343. package/dist/session/composer/reasoning-effort-selector.js +1 -1
  344. package/dist/session/models/chatgpt-connection-button.d.ts +11 -0
  345. package/dist/session/models/chatgpt-connection-button.js +54 -0
  346. package/dist/session/models/model-selector.js +5 -2
  347. package/dist/session/models/use-model-connection-gate.d.ts +5 -5
  348. package/dist/session/models/use-model-connection-gate.js +5 -5
  349. package/dist/session/outcomes/jump-to-outcome.d.ts +10 -0
  350. package/dist/session/outcomes/jump-to-outcome.js +11 -0
  351. package/dist/session/outcomes/session-outcomes-bridge.d.ts +14 -0
  352. package/dist/session/outcomes/session-outcomes-bridge.js +12 -0
  353. package/dist/session/outcomes/session-outcomes-provider.d.ts +3 -1
  354. package/dist/session/outcomes/session-outcomes-provider.js +33 -3
  355. package/dist/session/panel/easy/app-preview.d.ts +10 -0
  356. package/dist/session/panel/easy/app-preview.js +31 -12
  357. package/dist/session/panel/easy/change-requests-card.d.ts +7 -0
  358. package/dist/session/panel/easy/change-requests-card.js +17 -0
  359. package/dist/session/panel/easy/easy-panel-logic.js +7 -1
  360. package/dist/session/panel/easy/easy-panel.js +5 -2
  361. package/dist/session/panel/easy/file-preview.js +1 -1
  362. package/dist/session/panel/easy/outputs-card.d.ts +2 -1
  363. package/dist/session/panel/easy/outputs-card.js +3 -2
  364. package/dist/session/panel/mobile-tool-drawer.js +7 -1
  365. package/dist/session/panel/session-audit-panel.js +9 -2
  366. package/dist/session/panel/session-audit-shared.js +3 -1
  367. package/dist/session/panel/session-detail-panel.js +9 -3
  368. package/dist/session/panel/session-files-explorer.d.ts +9 -0
  369. package/dist/session/panel/session-files-explorer.js +12 -3
  370. package/dist/session/panel/session-panel-provider.d.ts +15 -1
  371. package/dist/session/panel/session-panel-provider.js +32 -7
  372. package/dist/session/panel/shared/derive-panels.d.ts +8 -1
  373. package/dist/session/panel/shared/derive-panels.js +12 -2
  374. package/dist/session/panel/shared/output-priority.js +2 -0
  375. package/dist/session/participants/session-participants.d.ts +8 -2
  376. package/dist/session/participants/session-participants.js +11 -4
  377. package/dist/session/prompts/approval-request.d.ts +5 -0
  378. package/dist/session/prompts/approval-request.js +9 -1
  379. package/dist/session/prompts/session-approval-review.d.ts +9 -0
  380. package/dist/session/prompts/session-approval-review.js +18 -0
  381. package/dist/session/status/session-error-banner.js +2 -49
  382. package/dist/session/status/session-starting-loader.d.ts +14 -2
  383. package/dist/session/status/session-starting-loader.js +16 -4
  384. package/dist/session/thread/after-first-prompt.d.ts +7 -0
  385. package/dist/session/thread/after-first-prompt.js +8 -0
  386. package/dist/session/thread/detect-command.d.ts +12 -0
  387. package/dist/session/thread/detect-command.js +20 -0
  388. package/dist/session/thread/session-chat.d.ts +3 -1
  389. package/dist/session/thread/session-chat.js +377 -252
  390. package/dist/session/thread/session-thread.d.ts +15 -1
  391. package/dist/session/thread/session-thread.js +20 -3
  392. package/dist/session/thread/session-transcript-class.d.ts +5 -1
  393. package/dist/session/thread/session-transcript-class.js +5 -1
  394. package/dist/session/thread/thread-boot-rows.d.ts +36 -0
  395. package/dist/session/thread/thread-boot-rows.js +89 -0
  396. package/dist/session/thread/transcript-rows.d.ts +31 -0
  397. package/dist/session/thread/transcript-rows.js +3 -0
  398. package/dist/session/thread/transcript.d.ts +0 -9
  399. package/dist/session/thread/transcript.js +104 -19
  400. package/dist/session/tool/shared/infrastructure-contexts.d.ts +28 -0
  401. package/dist/session/tool/shared/infrastructure-contexts.js +31 -3
  402. package/dist/session/tool/tool-part-renderer.d.ts +5 -4
  403. package/dist/session/tool/tool-part-renderer.js +8 -3
  404. package/dist/session/tool/tools/bash-tool.js +7 -6
  405. package/dist/session/tool/tools/channel-send-card.d.ts +1 -2
  406. package/dist/session/tool/tools/channel-send.d.ts +2 -1
  407. package/dist/session/tool/tools/codemode-tool.js +1 -1
  408. package/dist/session/tool/tools/connector-tools.js +1 -1
  409. package/dist/session/tool/tools/image-gen-tool.d.ts +1 -1
  410. package/dist/session/tool/tools/image-gen-tool.js +241 -53
  411. package/dist/session/tool/tools/show-tool.js +19 -8
  412. package/dist/session/turn/channel-brand.d.ts +8 -3
  413. package/dist/session/turn/channel-brand.js +20 -4
  414. package/dist/session/turn/message-author.d.ts +8 -0
  415. package/dist/session/turn/message-author.js +24 -0
  416. package/dist/session/turn/message-row.d.ts +52 -0
  417. package/dist/session/turn/message-row.js +44 -0
  418. package/dist/session/turn/plan-anchor.d.ts +1 -1
  419. package/dist/session/turn/plan-anchor.js +1 -1
  420. package/dist/session/turn/user-message.d.ts +14 -6
  421. package/dist/session/turn/user-message.js +35 -15
  422. package/dist/styles.css +1 -1
  423. package/dist/workspace/home/access-requests-bell.d.ts +9 -2
  424. package/dist/workspace/home/access-requests-bell.js +20 -6
  425. package/dist/workspace/home/first-chat.d.ts +8 -21
  426. package/dist/workspace/home/first-chat.js +22 -72
  427. package/dist/workspace/index.d.ts +6 -0
  428. package/dist/workspace/index.js +6 -0
  429. package/dist/workspace/layout/project-home.d.ts +14 -2
  430. package/dist/workspace/layout/project-home.js +60 -21
  431. package/dist/workspace/layout/use-project-home-send.d.ts +9 -1
  432. package/dist/workspace/layout/use-project-home-send.js +82 -3
  433. package/dist/workspace/memory/body-doc.d.ts +17 -0
  434. package/dist/workspace/memory/body-doc.js +208 -0
  435. package/dist/workspace/memory/body-extensions.d.ts +38 -0
  436. package/dist/workspace/memory/body-extensions.js +103 -0
  437. package/dist/workspace/memory/company-memory-page.d.ts +8 -0
  438. package/dist/workspace/memory/company-memory-page.js +16 -0
  439. package/dist/workspace/memory/memory-all.d.ts +20 -0
  440. package/dist/workspace/memory/memory-all.js +27 -0
  441. package/dist/workspace/memory/memory-body.d.ts +19 -0
  442. package/dist/workspace/memory/memory-body.js +139 -0
  443. package/dist/workspace/memory/memory-empty.d.ts +13 -0
  444. package/dist/workspace/memory/memory-empty.js +28 -0
  445. package/dist/workspace/memory/memory-history.d.ts +27 -0
  446. package/dist/workspace/memory/memory-history.js +108 -0
  447. package/dist/workspace/memory/memory-labels.d.ts +16 -0
  448. package/dist/workspace/memory/memory-labels.js +47 -0
  449. package/dist/workspace/memory/memory-page-list.d.ts +34 -0
  450. package/dist/workspace/memory/memory-page-list.js +156 -0
  451. package/dist/workspace/memory/memory-reader.d.ts +58 -0
  452. package/dist/workspace/memory/memory-reader.js +123 -0
  453. package/dist/workspace/memory/memory-view.d.ts +21 -0
  454. package/dist/workspace/memory/memory-view.js +124 -0
  455. package/dist/workspace/memory/remember-popover.d.ts +19 -0
  456. package/dist/workspace/memory/remember-popover.js +61 -0
  457. package/dist/workspace/memory/remember-this.d.ts +12 -0
  458. package/dist/workspace/memory/remember-this.js +89 -0
  459. package/dist/workspace/memory/source-mark.d.ts +18 -0
  460. package/dist/workspace/memory/source-mark.js +79 -0
  461. package/dist/workspace/memory/used-memory-chip.d.ts +14 -0
  462. package/dist/workspace/memory/used-memory-chip.js +61 -0
  463. package/dist/workspace/new/advanced-fields.d.ts +2 -1
  464. package/dist/workspace/new/advanced-fields.js +2 -2
  465. package/dist/workspace/new/source-param.d.ts +1 -1
  466. package/dist/workspace/new/source-param.js +3 -1
  467. package/dist/workspace/new/use-create-workspace.d.ts +8 -10
  468. package/dist/workspace/new/use-create-workspace.js +3 -3
  469. package/dist/workspace/projects/onboarding/app-logo.d.ts +7 -2
  470. package/dist/workspace/projects/onboarding/app-logo.js +6 -13
  471. package/dist/workspace/projects/policies-panel.js +5 -3
  472. package/dist/workspace/review/review-actions.d.ts +4 -2
  473. package/dist/workspace/review/review-actions.js +8 -2
  474. package/dist/workspace/review/review-center.js +11 -7
  475. package/dist/workspace/review/review-detail.d.ts +10 -0
  476. package/dist/workspace/review/review-detail.js +101 -13
  477. package/dist/workspace/saved-session-skeleton.d.ts +2 -2
  478. package/dist/workspace/saved-session-skeleton.js +3 -3
  479. package/dist/workspace/session-workspace.js +15 -13
  480. package/dist/workspace/sessions/project-sessions-view.js +3 -2
  481. package/dist/workspace/sessions/session-label-badges.js +2 -1
  482. package/dist/workspace/sessions/sessions-toolbar.d.ts +3 -1
  483. package/dist/workspace/sessions/sessions-toolbar.js +2 -2
  484. package/dist/workspace/sidebar/footer/project-apps-nav.d.ts +5 -0
  485. package/dist/workspace/sidebar/footer/project-apps-nav.js +41 -2
  486. package/dist/workspace/sidebar/footer/project-artifacts-nav.d.ts +6 -0
  487. package/dist/workspace/sidebar/footer/project-artifacts-nav.js +22 -0
  488. package/dist/workspace/sidebar/footer/project-chrome-nav.d.ts +10 -0
  489. package/dist/workspace/sidebar/footer/project-chrome-nav.js +56 -0
  490. package/dist/workspace/sidebar/footer/project-manifest-upgrade-alert.js +13 -13
  491. package/dist/workspace/sidebar/footer/project-memory-nav.d.ts +7 -0
  492. package/dist/workspace/sidebar/footer/project-memory-nav.js +19 -0
  493. package/dist/workspace/sidebar/nav-row-meta.js +14 -2
  494. package/dist/workspace/sidebar/project-nav-items.js +3 -0
  495. package/dist/workspace/sidebar/project-session-list.js +68 -56
  496. package/dist/workspace/sidebar/project-sidebar.js +13 -2
  497. package/dist/workspace/sidebar/project-spaces-nav.d.ts +8 -0
  498. package/dist/workspace/sidebar/project-spaces-nav.js +69 -0
  499. package/dist/workspace/sidebar/session-group-order.d.ts +9 -0
  500. package/dist/workspace/sidebar/session-group-order.js +25 -0
  501. package/dist/workspace/sidebar/session-group-sections.d.ts +62 -0
  502. package/dist/workspace/sidebar/session-group-sections.js +267 -0
  503. package/dist/workspace/sidebar/session-list-chrome.d.ts +28 -0
  504. package/dist/workspace/sidebar/session-list-chrome.js +50 -0
  505. package/dist/workspace/spaces/channel-glyph.d.ts +5 -0
  506. package/dist/workspace/spaces/channel-glyph.js +6 -0
  507. package/dist/workspace/spaces/channel-setup.d.ts +16 -0
  508. package/dist/workspace/spaces/channel-setup.js +105 -0
  509. package/dist/workspace/spaces/channels-onboarding.d.ts +13 -0
  510. package/dist/workspace/spaces/channels-onboarding.js +37 -0
  511. package/dist/workspace/spaces/create-channel-dialog.d.ts +16 -0
  512. package/dist/workspace/spaces/create-channel-dialog.js +158 -0
  513. package/dist/workspace/spaces/private-channels-not-in.d.ts +9 -0
  514. package/dist/workspace/spaces/private-channels-not-in.js +69 -0
  515. package/dist/workspace/spaces/space-agents.d.ts +10 -0
  516. package/dist/workspace/spaces/space-agents.js +10 -0
  517. package/dist/workspace/spaces/space-details-dialog.d.ts +20 -0
  518. package/dist/workspace/spaces/space-details-dialog.js +176 -0
  519. package/dist/workspace/spaces/space-link-label.d.ts +49 -0
  520. package/dist/workspace/spaces/space-link-label.js +73 -0
  521. package/dist/workspace/spaces/space-links.d.ts +19 -0
  522. package/dist/workspace/spaces/space-links.js +230 -0
  523. package/dist/workspace/spaces/space-members.d.ts +46 -0
  524. package/dist/workspace/spaces/space-members.js +182 -0
  525. package/dist/workspace/spaces/space-roster.d.ts +15 -0
  526. package/dist/workspace/spaces/space-roster.js +44 -0
  527. package/dist/workspace/spaces/space-threads-tab.d.ts +56 -0
  528. package/dist/workspace/spaces/space-threads-tab.js +156 -0
  529. package/dist/workspace/spaces/space-timeline-view.d.ts +254 -0
  530. package/dist/workspace/spaces/space-timeline-view.js +235 -0
  531. package/dist/workspace/spaces/space-timeline.d.ts +106 -0
  532. package/dist/workspace/spaces/space-timeline.js +183 -0
  533. package/dist/workspace/spaces/space-triggers.d.ts +13 -0
  534. package/dist/workspace/spaces/space-triggers.js +78 -0
  535. package/dist/workspace/spaces/space-view.d.ts +37 -0
  536. package/dist/workspace/spaces/space-view.js +436 -0
  537. package/package.json +67 -36
  538. package/skills/kortix-ui/SKILL.md +3 -3
  539. package/skills/kortix-ui/references/custom-dashboard.md +3 -3
  540. package/skills/kortix-ui/references/modules.md +29 -5
  541. package/skills/kortix-ui/references/theming.md +1 -1
  542. package/dist/customize/connectors/catalog/merge-search.d.ts +0 -10
  543. package/dist/customize/connectors/catalog/merge-search.js +0 -26
  544. package/dist/customize/connectors/detail/find-easy-connect-app.d.ts +0 -29
  545. package/dist/customize/connectors/detail/find-easy-connect-app.js +0 -22
  546. package/dist/customize/migrate-to-v2/use-migrate-to-v2.d.ts +0 -9
  547. package/dist/customize/migrate-to-v2/use-migrate-to-v2.js +0 -24
  548. package/dist/customize/sections/connector-connection-header.d.ts +0 -36
  549. package/dist/customize/sections/connector-connection-header.js +0 -33
  550. package/dist/customize/sections/connector-connection-modal.d.ts +0 -34
  551. package/dist/customize/sections/connector-connection-modal.js +0 -72
  552. package/dist/customize/sections/discover-catalogue-card.d.ts +0 -19
  553. package/dist/customize/sections/discover-catalogue-card.js +0 -26
  554. package/dist/customize/sections/discover-catalogue-detail.d.ts +0 -15
  555. package/dist/customize/sections/discover-catalogue-detail.js +0 -24
  556. package/dist/customize/sections/discover-catalogue.d.ts +0 -17
  557. package/dist/customize/sections/discover-catalogue.js +0 -132
  558. package/dist/customize/sections/llm-provider/provider-access-menu.d.ts +0 -10
  559. package/dist/customize/sections/llm-provider/provider-access-menu.js +0 -23
  560. package/dist/files/project/components/drive-empty-art.d.ts +0 -2
  561. package/dist/files/project/components/drive-empty-art.js +0 -5
  562. package/dist/internal/hooks/use-media-query.d.ts +0 -2
  563. package/dist/internal/share/public-share-link-button.d.ts +0 -14
  564. package/dist/internal/share/public-share-link-button.js +0 -17
  565. package/dist/markdown/setup-links/app-credentials-form.d.ts +0 -12
  566. package/dist/markdown/setup-links/app-credentials-form.js +0 -115
  567. /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,2 +0,0 @@
1
- /** Three stacked pages: the empty-folder artwork in the drive explorer. */
2
- export declare function DriveEmptyArt(): import("react").JSX.Element;
@@ -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,2 +0,0 @@
1
- /** @internal Kortix apps only. No semver: it may change in any release. */
2
- export declare function useMediaQuery(query: string): boolean;
@@ -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
- }