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