@parhelia/core 0.3.12831 → 0.4.12784

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 (278) hide show
  1. package/dist/agents-view/AgentCard.js +1 -1
  2. package/dist/agents-view/AgentsWorkspaceView.js +8 -1
  3. package/dist/agents-view/AgentsWorkspaceView.js.map +1 -1
  4. package/dist/components/ui/checkbox.js +3 -2
  5. package/dist/components/ui/checkbox.js.map +1 -1
  6. package/dist/components/ui/context-menu.d.ts +9 -1
  7. package/dist/components/ui/context-menu.js +59 -12
  8. package/dist/components/ui/context-menu.js.map +1 -1
  9. package/dist/components/ui/select.js +16 -2
  10. package/dist/components/ui/select.js.map +1 -1
  11. package/dist/config/config.d.ts +2 -0
  12. package/dist/config/config.js +36 -4
  13. package/dist/config/config.js.map +1 -1
  14. package/dist/config/types.d.ts +24 -0
  15. package/dist/config/types.js.map +1 -1
  16. package/dist/editor/ContextMenu.js +59 -6
  17. package/dist/editor/ContextMenu.js.map +1 -1
  18. package/dist/editor/Editor.js +9 -2
  19. package/dist/editor/Editor.js.map +1 -1
  20. package/dist/editor/EditorWarning.d.ts +3 -1
  21. package/dist/editor/EditorWarning.js +24 -7
  22. package/dist/editor/EditorWarning.js.map +1 -1
  23. package/dist/editor/FieldList.js +1 -1
  24. package/dist/editor/FieldList.js.map +1 -1
  25. package/dist/editor/ai/AgentSharingSection.d.ts +1 -1
  26. package/dist/editor/ai/AgentSharingSection.js +7 -0
  27. package/dist/editor/ai/AgentSharingSection.js.map +1 -1
  28. package/dist/editor/ai/Agents.js +1 -1
  29. package/dist/editor/ai/Agents.js.map +1 -1
  30. package/dist/editor/ai/InlineAiDialog.d.ts +7 -1
  31. package/dist/editor/ai/InlineAiDialog.js +27 -7
  32. package/dist/editor/ai/InlineAiDialog.js.map +1 -1
  33. package/dist/editor/ai/InlineAiTrigger.js +63 -1
  34. package/dist/editor/ai/InlineAiTrigger.js.map +1 -1
  35. package/dist/editor/ai/terminal/activeReasoningModel.d.ts +9 -0
  36. package/dist/editor/ai/terminal/activeReasoningModel.js +20 -0
  37. package/dist/editor/ai/terminal/activeReasoningModel.js.map +1 -0
  38. package/dist/editor/ai/terminal/agentDurations.d.ts +27 -0
  39. package/dist/editor/ai/terminal/agentDurations.js +89 -0
  40. package/dist/editor/ai/terminal/agentDurations.js.map +1 -0
  41. package/dist/editor/ai/terminal/agentStartRequest.d.ts +1 -0
  42. package/dist/editor/ai/terminal/agentStartRequest.js +1 -0
  43. package/dist/editor/ai/terminal/agentStartRequest.js.map +1 -1
  44. package/dist/editor/ai/terminal/agentTurnTiming.d.ts +33 -0
  45. package/dist/editor/ai/terminal/agentTurnTiming.js +103 -0
  46. package/dist/editor/ai/terminal/agentTurnTiming.js.map +1 -0
  47. package/dist/editor/ai/terminal/components/AgentCostDisplay.d.ts +4 -1
  48. package/dist/editor/ai/terminal/components/AgentCostDisplay.js +17 -25
  49. package/dist/editor/ai/terminal/components/AgentCostDisplay.js.map +1 -1
  50. package/dist/editor/ai/terminal/components/AgentProfileModelSettingsSection.d.ts +5 -1
  51. package/dist/editor/ai/terminal/components/AgentProfileModelSettingsSection.js +7 -2
  52. package/dist/editor/ai/terminal/components/AgentProfileModelSettingsSection.js.map +1 -1
  53. package/dist/editor/ai/terminal/components/AgentProfileRecovery.d.ts +10 -0
  54. package/dist/editor/ai/terminal/components/AgentProfileRecovery.js +12 -0
  55. package/dist/editor/ai/terminal/components/AgentProfileRecovery.js.map +1 -0
  56. package/dist/editor/ai/terminal/components/AgentPromptComposer.js +1 -1
  57. package/dist/editor/ai/terminal/components/AgentSettingsContent.d.ts +5 -1
  58. package/dist/editor/ai/terminal/components/AgentSettingsContent.js +2 -2
  59. package/dist/editor/ai/terminal/components/AgentSettingsContent.js.map +1 -1
  60. package/dist/editor/ai/terminal/components/AgentTerminalFullLayout.d.ts +2 -1
  61. package/dist/editor/ai/terminal/components/AgentTerminalFullLayout.js +2 -2
  62. package/dist/editor/ai/terminal/components/AgentTerminalFullLayout.js.map +1 -1
  63. package/dist/editor/ai/terminal/components/AgentTerminalFullPromptControls.d.ts +1 -1
  64. package/dist/editor/ai/terminal/components/AgentTerminalFullPromptControls.js +2 -2
  65. package/dist/editor/ai/terminal/components/AgentTerminalFullPromptControls.js.map +1 -1
  66. package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.js +10 -1
  67. package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.js.map +1 -1
  68. package/dist/editor/ai/terminal/components/AgentTerminalMessageGroups.js +2 -1
  69. package/dist/editor/ai/terminal/components/AgentTerminalMessageGroups.js.map +1 -1
  70. package/dist/editor/ai/terminal/components/AgentTerminalStatusBar.d.ts +1 -1
  71. package/dist/editor/ai/terminal/components/AgentTerminalStatusBar.js +67 -6
  72. package/dist/editor/ai/terminal/components/AgentTerminalStatusBar.js.map +1 -1
  73. package/dist/editor/ai/terminal/components/AgentTerminalSummaryLayout.d.ts +2 -1
  74. package/dist/editor/ai/terminal/components/AgentTerminalSummaryLayout.js +2 -2
  75. package/dist/editor/ai/terminal/components/AgentTerminalSummaryLayout.js.map +1 -1
  76. package/dist/editor/ai/terminal/components/AgentThinkingIndicator.d.ts +8 -1
  77. package/dist/editor/ai/terminal/components/AgentThinkingIndicator.js +8 -4
  78. package/dist/editor/ai/terminal/components/AgentThinkingIndicator.js.map +1 -1
  79. package/dist/editor/ai/terminal/components/AiResponseMessage.d.ts +3 -1
  80. package/dist/editor/ai/terminal/components/AiResponseMessage.js +66 -48
  81. package/dist/editor/ai/terminal/components/AiResponseMessage.js.map +1 -1
  82. package/dist/editor/ai/terminal/components/ApprovalCard.js +5 -6
  83. package/dist/editor/ai/terminal/components/ApprovalCard.js.map +1 -1
  84. package/dist/editor/ai/terminal/components/InitialThinkingSplash.js +2 -2
  85. package/dist/editor/ai/terminal/components/InitialThinkingSplash.js.map +1 -1
  86. package/dist/editor/ai/terminal/components/QueuedPromptsPanel.js +2 -2
  87. package/dist/editor/ai/terminal/components/ResponseTurnDuration.d.ts +15 -0
  88. package/dist/editor/ai/terminal/components/ResponseTurnDuration.js +52 -0
  89. package/dist/editor/ai/terminal/components/ResponseTurnDuration.js.map +1 -0
  90. package/dist/editor/ai/terminal/components/ToolCallDisplay.js +32 -56
  91. package/dist/editor/ai/terminal/components/ToolCallDisplay.js.map +1 -1
  92. package/dist/editor/ai/terminal/components/UserMessage.js +1 -1
  93. package/dist/editor/ai/terminal/components/UserMessage.js.map +1 -1
  94. package/dist/editor/ai/terminal/components/agentThinkingStyles.d.ts +5 -1
  95. package/dist/editor/ai/terminal/components/agentThinkingStyles.js +5 -1
  96. package/dist/editor/ai/terminal/components/agentThinkingStyles.js.map +1 -1
  97. package/dist/editor/ai/terminal/reasoningEffortLevels.d.ts +8 -0
  98. package/dist/editor/ai/terminal/reasoningEffortLevels.js +54 -0
  99. package/dist/editor/ai/terminal/reasoningEffortLevels.js.map +1 -0
  100. package/dist/editor/ai/terminal/requestUsage.d.ts +3 -0
  101. package/dist/editor/ai/terminal/requestUsage.js +22 -0
  102. package/dist/editor/ai/terminal/requestUsage.js.map +1 -0
  103. package/dist/editor/ai/terminal/types.d.ts +1 -0
  104. package/dist/editor/ai/terminal/useAgentModeState.js.map +1 -1
  105. package/dist/editor/ai/terminal/useAgentProfileSelection.d.ts +10 -0
  106. package/dist/editor/ai/terminal/useAgentProfileSelection.js +10 -2
  107. package/dist/editor/ai/terminal/useAgentProfileSelection.js.map +1 -1
  108. package/dist/editor/ai/terminal/useAgentReasoningEffortState.d.ts +5 -0
  109. package/dist/editor/ai/terminal/useAgentReasoningEffortState.js +10 -0
  110. package/dist/editor/ai/terminal/useAgentReasoningEffortState.js.map +1 -0
  111. package/dist/editor/ai/terminal/useAgentSessionSync.d.ts +1 -0
  112. package/dist/editor/ai/terminal/useAgentSettingsCommands.d.ts +9 -0
  113. package/dist/editor/ai/terminal/useAgentSettingsCommands.js +63 -6
  114. package/dist/editor/ai/terminal/useAgentSettingsCommands.js.map +1 -1
  115. package/dist/editor/ai/terminal/useAgentSettingsPanel.d.ts +5 -0
  116. package/dist/editor/ai/terminal/useAgentSettingsPanel.js +8 -0
  117. package/dist/editor/ai/terminal/useAgentSettingsPanel.js.map +1 -1
  118. package/dist/editor/ai/terminal/useAgentSkillActions.d.ts +1 -0
  119. package/dist/editor/ai/terminal/useAgentSkillActions.js +1 -0
  120. package/dist/editor/ai/terminal/useAgentSkillActions.js.map +1 -1
  121. package/dist/editor/ai/terminal/useAgentTerminalController.d.ts +1 -1
  122. package/dist/editor/ai/terminal/useAgentTerminalController.js +20 -4
  123. package/dist/editor/ai/terminal/useAgentTerminalController.js.map +1 -1
  124. package/dist/editor/ai/terminal/useAgentTerminalControls.d.ts +4 -0
  125. package/dist/editor/ai/terminal/useAgentTerminalControls.js +5 -1
  126. package/dist/editor/ai/terminal/useAgentTerminalControls.js.map +1 -1
  127. package/dist/editor/ai-image-editor/AiImageEditorDialog.d.ts +6 -0
  128. package/dist/editor/ai-image-editor/AiImageEditorDialog.js +202 -64
  129. package/dist/editor/ai-image-editor/AiImageEditorDialog.js.map +1 -1
  130. package/dist/editor/client/EditorShell.js +30 -33
  131. package/dist/editor/client/EditorShell.js.map +1 -1
  132. package/dist/editor/client/SandboxWelcomeOverlay.d.ts +4 -1
  133. package/dist/editor/client/SandboxWelcomeOverlay.js +6 -5
  134. package/dist/editor/client/SandboxWelcomeOverlay.js.map +1 -1
  135. package/dist/editor/client/SessionsDialog.d.ts +2 -0
  136. package/dist/editor/client/SessionsDialog.js +27 -0
  137. package/dist/editor/client/SessionsDialog.js.map +1 -0
  138. package/dist/editor/client/hooks/useSocketMessageHandler.js +4 -0
  139. package/dist/editor/client/hooks/useSocketMessageHandler.js.map +1 -1
  140. package/dist/editor/client/ui/DevModeIndicator.js +6 -4
  141. package/dist/editor/client/ui/DevModeIndicator.js.map +1 -1
  142. package/dist/editor/editor-warnings/ItemLocked.js +1 -1
  143. package/dist/editor/editor-warnings/ItemLocked.js.map +1 -1
  144. package/dist/editor/editor-warnings/NoLanguageWriteAccess.js +1 -1
  145. package/dist/editor/editor-warnings/NoLanguageWriteAccess.js.map +1 -1
  146. package/dist/editor/editor-warnings/NoWorkflowWriteAccess.js +1 -1
  147. package/dist/editor/editor-warnings/NoWorkflowWriteAccess.js.map +1 -1
  148. package/dist/editor/editor-warnings/NoWriteAccess.js +1 -1
  149. package/dist/editor/editor-warnings/NoWriteAccess.js.map +1 -1
  150. package/dist/editor/media-selector/MediaFolderBrowser.js +1 -1
  151. package/dist/editor/menubar/ActiveUsers.js +4 -1
  152. package/dist/editor/menubar/ActiveUsers.js.map +1 -1
  153. package/dist/editor/menubar/OpenPublishedPageButton.d.ts +1 -0
  154. package/dist/editor/menubar/OpenPublishedPageButton.js +22 -0
  155. package/dist/editor/menubar/OpenPublishedPageButton.js.map +1 -0
  156. package/dist/editor/menubar/WorkflowButton.js +77 -22
  157. package/dist/editor/menubar/WorkflowButton.js.map +1 -1
  158. package/dist/editor/menubar/toolbar-sections/PreviewModeControl.js +1 -1
  159. package/dist/editor/menubar/toolbar-sections/PreviewModeControl.js.map +1 -1
  160. package/dist/editor/menubar/toolbar-sections/ViewportControls.js +8 -4
  161. package/dist/editor/menubar/toolbar-sections/ViewportControls.js.map +1 -1
  162. package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.js +36 -1
  163. package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.js.map +1 -1
  164. package/dist/editor/page-editor-chrome/bridgeInlineFormatToolbarLayout.d.ts +19 -0
  165. package/dist/editor/page-editor-chrome/bridgeInlineFormatToolbarLayout.js +14 -0
  166. package/dist/editor/page-editor-chrome/bridgeInlineFormatToolbarLayout.js.map +1 -1
  167. package/dist/editor/page-editor-chrome/overlay/IframeOverlayProvider.d.ts +3 -0
  168. package/dist/editor/page-editor-chrome/overlay/IframeOverlayProvider.js +18 -0
  169. package/dist/editor/page-editor-chrome/overlay/IframeOverlayProvider.js.map +1 -1
  170. package/dist/editor/page-viewer/DeviceToolbar.js +20 -8
  171. package/dist/editor/page-viewer/DeviceToolbar.js.map +1 -1
  172. package/dist/editor/page-viewer/EditorForm.js +8 -7
  173. package/dist/editor/page-viewer/EditorForm.js.map +1 -1
  174. package/dist/editor/page-viewer/PageViewerFrame.js +10 -0
  175. package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
  176. package/dist/editor/page-viewer/PreviewModeNotice.d.ts +7 -0
  177. package/dist/editor/page-viewer/PreviewModeNotice.js +19 -0
  178. package/dist/editor/page-viewer/PreviewModeNotice.js.map +1 -0
  179. package/dist/editor/page-viewer/pageViewContext.d.ts +5 -1
  180. package/dist/editor/page-viewer/pageViewContext.js +59 -2
  181. package/dist/editor/page-viewer/pageViewContext.js.map +1 -1
  182. package/dist/editor/page-viewer/previewEditAttempt.d.ts +31 -0
  183. package/dist/editor/page-viewer/previewEditAttempt.js +68 -0
  184. package/dist/editor/page-viewer/previewEditAttempt.js.map +1 -0
  185. package/dist/editor/pageModel.d.ts +1 -0
  186. package/dist/editor/services/agentService.d.ts +67 -0
  187. package/dist/editor/services/agentService.js +2 -0
  188. package/dist/editor/services/agentService.js.map +1 -1
  189. package/dist/editor/services/aiService.d.ts +5 -0
  190. package/dist/editor/services/aiService.js.map +1 -1
  191. package/dist/editor/services/contentService.d.ts +9 -0
  192. package/dist/editor/services/contentService.js.map +1 -1
  193. package/dist/editor/services/editService.d.ts +13 -0
  194. package/dist/editor/services/editService.js +8 -0
  195. package/dist/editor/services/editService.js.map +1 -1
  196. package/dist/editor/services/migrationService.d.ts +31 -0
  197. package/dist/editor/services/migrationService.js +22 -0
  198. package/dist/editor/services/migrationService.js.map +1 -0
  199. package/dist/editor/services/publicSiteService.d.ts +40 -0
  200. package/dist/editor/services/publicSiteService.js +5 -0
  201. package/dist/editor/services/publicSiteService.js.map +1 -0
  202. package/dist/editor/settings/About.js +71 -32
  203. package/dist/editor/settings/About.js.map +1 -1
  204. package/dist/editor/settings/MigrationJournalCard.d.ts +12 -0
  205. package/dist/editor/settings/MigrationJournalCard.js +114 -0
  206. package/dist/editor/settings/MigrationJournalCard.js.map +1 -0
  207. package/dist/editor/settings/QuotaUserPicker.js +1 -1
  208. package/dist/editor/settings/SettingsView.js +18 -5
  209. package/dist/editor/settings/SettingsView.js.map +1 -1
  210. package/dist/editor/settings/panels/ModelConfigPanel.js +2 -0
  211. package/dist/editor/settings/panels/ModelConfigPanel.js.map +1 -1
  212. package/dist/editor/settings/panels/PublicSiteEntryDialog.d.ts +8 -0
  213. package/dist/editor/settings/panels/PublicSiteEntryDialog.js +113 -0
  214. package/dist/editor/settings/panels/PublicSiteEntryDialog.js.map +1 -0
  215. package/dist/editor/settings/panels/PublicSitesPanel.d.ts +1 -0
  216. package/dist/editor/settings/panels/PublicSitesPanel.js +153 -0
  217. package/dist/editor/settings/panels/PublicSitesPanel.js.map +1 -0
  218. package/dist/editor/settings/panels/StatusPanel.js +2 -1
  219. package/dist/editor/settings/panels/StatusPanel.js.map +1 -1
  220. package/dist/editor/settings/panels/UserPreferencesPanel.js +4 -4
  221. package/dist/editor/settings/panels/UserPreferencesPanel.js.map +1 -1
  222. package/dist/editor/settings/panels/index.d.ts +1 -0
  223. package/dist/editor/settings/panels/index.js +1 -0
  224. package/dist/editor/settings/panels/index.js.map +1 -1
  225. package/dist/editor/settings/panels/publicSiteHelpers.d.ts +6 -0
  226. package/dist/editor/settings/panels/publicSiteHelpers.js +30 -0
  227. package/dist/editor/settings/panels/publicSiteHelpers.js.map +1 -0
  228. package/dist/editor/settings/status/coreStatusChecks.js +4 -0
  229. package/dist/editor/settings/status/coreStatusChecks.js.map +1 -1
  230. package/dist/editor/sidebar/Sessions.d.ts +3 -1
  231. package/dist/editor/sidebar/Sessions.js +2 -1
  232. package/dist/editor/sidebar/Sessions.js.map +1 -1
  233. package/dist/editor/sidebar/Workbox.js +22 -7
  234. package/dist/editor/sidebar/Workbox.js.map +1 -1
  235. package/dist/editor/ui/PerfectTree.js +10 -6
  236. package/dist/editor/ui/PerfectTree.js.map +1 -1
  237. package/dist/editor/ui/PublishDialog.d.ts +5 -2
  238. package/dist/editor/ui/PublishDialog.js +48 -31
  239. package/dist/editor/ui/PublishDialog.js.map +1 -1
  240. package/dist/editor/ui/PublishItemDialog.js +31 -20
  241. package/dist/editor/ui/PublishItemDialog.js.map +1 -1
  242. package/dist/editor/ui/PublishReadinessSummary.d.ts +12 -0
  243. package/dist/editor/ui/PublishReadinessSummary.js +34 -0
  244. package/dist/editor/ui/PublishReadinessSummary.js.map +1 -0
  245. package/dist/editor/ui/TemplateSelectorDialog.js +27 -1
  246. package/dist/editor/ui/TemplateSelectorDialog.js.map +1 -1
  247. package/dist/editor/ui/publishReadiness.d.ts +65 -0
  248. package/dist/editor/ui/publishReadiness.js +211 -0
  249. package/dist/editor/ui/publishReadiness.js.map +1 -0
  250. package/dist/editor/ui/usePublishingItem.d.ts +8 -0
  251. package/dist/editor/ui/usePublishingItem.js +47 -0
  252. package/dist/editor/ui/usePublishingItem.js.map +1 -0
  253. package/dist/editor/views/ItemEditor.js +15 -23
  254. package/dist/editor/views/ItemEditor.js.map +1 -1
  255. package/dist/index.d.ts +9 -1
  256. package/dist/index.js +8 -1
  257. package/dist/index.js.map +1 -1
  258. package/dist/lib/viewportClip.d.ts +18 -0
  259. package/dist/lib/viewportClip.js +22 -0
  260. package/dist/lib/viewportClip.js.map +1 -0
  261. package/dist/revision.d.ts +2 -2
  262. package/dist/revision.js +2 -2
  263. package/dist/setup/wizard/steps/ImportModelDialog.js +238 -176
  264. package/dist/setup/wizard/steps/ImportModelDialog.js.map +1 -1
  265. package/dist/task-board/components/ProjectSettingsDialog.js +4 -1
  266. package/dist/task-board/components/ProjectSettingsDialog.js.map +1 -1
  267. package/dist/tour/Tour.d.ts +10 -2
  268. package/dist/tour/Tour.js +136 -31
  269. package/dist/tour/Tour.js.map +1 -1
  270. package/dist/tour/default-tour.js +1 -12
  271. package/dist/tour/default-tour.js.map +1 -1
  272. package/dist/tour/sandbox-tour.js +3 -2
  273. package/dist/tour/sandbox-tour.js.map +1 -1
  274. package/dist/tour/tour-utils.d.ts +6 -0
  275. package/dist/tour/tour-utils.js +10 -0
  276. package/dist/tour/tour-utils.js.map +1 -1
  277. package/dist/types.d.ts +7 -0
  278. package/package.json +1 -1
@@ -1,249 +1,311 @@
1
- import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useCallback, useState, useMemo, useEffect, useRef, } from "react";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React, { useCallback, useEffect, useMemo, useRef, useState } from "react";
3
3
  import { Dialog, DialogContent, DialogFooter, } from "../../../components/ui/dialog";
4
4
  import { Button } from "../../../components/ui/button";
5
5
  import { CountBadge } from "../../../components/ui/badge";
6
6
  import { Select } from "../../../components/ui/select";
7
+ import { MultiSwitchButton } from "../../../components/ui/multi-switch-button";
7
8
  import { StyledDialogTitle } from "../../../components/ui/styled-dialog-title";
9
+ import { Alert, AlertDescription } from "../../../components/ui/alert";
10
+ import { Checkbox } from "../../../components/ui/checkbox";
8
11
  import { SearchInput } from "../../../components/SearchInput";
12
+ import { cn } from "../../../lib/utils";
9
13
  import { setupWizardService, } from "../../services/setupWizardService";
10
- import { RefreshCw, Upload, Plus, ExternalLink, AlertTriangle, } from "lucide-react";
14
+ import { AlertTriangle, CheckCircle2, ExternalLink, Info, Plus, RefreshCw, Upload, } from "lucide-react";
11
15
  import { useEditContext } from "../../../editor/client/editContext";
12
- import { Checkbox } from "../../../components/ui/checkbox";
13
16
  import { LoadingState } from "../../../editor/ui/LoadingState";
14
- const roundsToNonZero = (value, decimals) => {
15
- if (value === undefined || value === null)
16
- return false;
17
- return Number(value.toFixed(decimals)) > 0;
17
+ import { ProviderIcon } from "../../../editor/settings/panels/ProviderIcon";
18
+ const MODEL_TYPE_ORDER = ["chat", "embeddings", "image"];
19
+ const MODEL_TYPE_LABELS = {
20
+ chat: "Chat",
21
+ embeddings: "Embeddings",
22
+ image: "Image",
18
23
  };
24
+ const isDefined = (value) => value !== undefined && value !== null;
25
+ const roundsToNonZero = (value, decimals) => isDefined(value) && Number(value.toFixed(decimals)) > 0;
19
26
  const hasUsableImagePricing = (model) => roundsToNonZero(model.pricing?.requestCost, 4) ||
20
27
  roundsToNonZero(model.pricing?.imageCost, 4) ||
21
28
  roundsToNonZero(model.pricing?.imageOutputCost, 4) ||
22
29
  roundsToNonZero(model.pricing?.inputTextTokenCostPerMillion, 2) ||
23
30
  roundsToNonZero(model.pricing?.inputImageTokenCostPerMillion, 2) ||
24
31
  roundsToNonZero(model.pricing?.outputImageTokenCostPerMillion, 2);
32
+ const formatUsd = (value, decimals) => `$${value.toFixed(decimals)}`;
33
+ const formatTokenCount = (tokens) => {
34
+ if (tokens >= 1_000_000) {
35
+ const millions = tokens / 1_000_000;
36
+ return `${Number.isInteger(millions) ? millions : millions.toFixed(1)}M`;
37
+ }
38
+ return `${Math.round(tokens / 1000)}k`;
39
+ };
40
+ /** One-line facts about a model: context window, then pricing. */
41
+ function describeModel(model) {
42
+ const parts = [];
43
+ if (model.contextLength) {
44
+ parts.push(`${formatTokenCount(model.contextLength)} context`);
45
+ }
46
+ const pricing = model.pricing;
47
+ if (!pricing)
48
+ return parts;
49
+ if (model.modelType === "image" && hasUsableImagePricing(model)) {
50
+ if (isDefined(pricing.requestCost))
51
+ parts.push(`Request ${formatUsd(pricing.requestCost, 4)}`);
52
+ if (isDefined(pricing.imageCost))
53
+ parts.push(`Image ${formatUsd(pricing.imageCost, 4)}`);
54
+ if (isDefined(pricing.imageOutputCost))
55
+ parts.push(`Out image ${formatUsd(pricing.imageOutputCost, 4)}`);
56
+ if (isDefined(pricing.inputTextTokenCostPerMillion))
57
+ parts.push(`In text ${formatUsd(pricing.inputTextTokenCostPerMillion, 2)}/M`);
58
+ if (isDefined(pricing.inputImageTokenCostPerMillion))
59
+ parts.push(`In image ${formatUsd(pricing.inputImageTokenCostPerMillion, 2)}/M`);
60
+ if (isDefined(pricing.outputImageTokenCostPerMillion))
61
+ parts.push(`Out image ${formatUsd(pricing.outputImageTokenCostPerMillion, 2)}/M`);
62
+ return parts;
63
+ }
64
+ const input = pricing.inputCostPerMillionTokens;
65
+ const output = pricing.outputCostPerMillionTokens;
66
+ if (isDefined(input) && isDefined(output) && input === 0 && output === 0) {
67
+ parts.push("Free");
68
+ return parts;
69
+ }
70
+ if (isDefined(input))
71
+ parts.push(`In ${formatUsd(input, 2)}/M`);
72
+ if (isDefined(output))
73
+ parts.push(`Out ${formatUsd(output, 2)}/M`);
74
+ return parts;
75
+ }
25
76
  export function ImportModelDialog({ open, onOpenChange, onSuccess, importableProviders, providerTypes = [], }) {
26
77
  const editContext = useEditContext();
27
- const [error, setError] = useState(null);
28
- // Import from provider state
29
- const [importProviderId, setImportProviderId] = useState(importableProviders[0]?.id || "");
78
+ const [providerId, setProviderId] = useState(importableProviders[0]?.id || "");
30
79
  const [providerModels, setProviderModels] = useState([]);
31
- const [loadingProviderModels, setLoadingProviderModels] = useState(false);
32
- const [selectedModelIds, setSelectedModelIds] = useState(new Set());
80
+ const [loading, setLoading] = useState(false);
81
+ const [loadError, setLoadError] = useState(null);
82
+ const [importError, setImportError] = useState(null);
33
83
  const [importing, setImporting] = useState(false);
34
- const [importSearchQuery, setImportSearchQuery] = useState("");
35
- const [importTypeFilter, setImportTypeFilter] = useState("all");
36
- const [importStatusFilter, setImportStatusFilter] = useState("all");
37
- // Check if the selected provider uses a static catalog
38
- const selectedProviderType = useMemo(() => {
39
- const provider = importableProviders.find((p) => p.id === importProviderId);
40
- if (!provider)
41
- return null;
42
- return providerTypes.find((pt) => pt.providerId === provider.type);
43
- }, [importProviderId, importableProviders, providerTypes]);
84
+ const [selectedIds, setSelectedIds] = useState(new Set());
85
+ const [query, setQuery] = useState("");
86
+ const [typeFilter, setTypeFilter] = useState("all");
87
+ const [hideInstalled, setHideInstalled] = useState(false);
88
+ const [reloadToken, setReloadToken] = useState(0);
89
+ const selectedProvider = useMemo(() => importableProviders.find((p) => p.id === providerId) ?? null, [importableProviders, providerId]);
90
+ const selectedProviderType = useMemo(() => selectedProvider
91
+ ? providerTypes.find((pt) => pt.providerId === selectedProvider.type)
92
+ : undefined, [selectedProvider, providerTypes]);
44
93
  const isStaticCatalog = selectedProviderType?.isStaticCatalog ?? false;
45
- // Track previous open state to detect open transitions
94
+ // Reset everything when the dialog transitions from closed to open.
46
95
  const wasOpenRef = useRef(false);
47
- // Reset state only when dialog transitions from closed to open
48
96
  useEffect(() => {
49
97
  if (open && !wasOpenRef.current) {
50
- setError(null);
51
- setImportProviderId(importableProviders[0]?.id || "");
98
+ setProviderId(importableProviders[0]?.id || "");
52
99
  setProviderModels([]);
53
- setSelectedModelIds(new Set());
54
- setImportSearchQuery("");
55
- setImportTypeFilter("all");
56
- setImportStatusFilter("all");
100
+ setLoadError(null);
101
+ setImportError(null);
102
+ setSelectedIds(new Set());
103
+ setQuery("");
104
+ setTypeFilter("all");
105
+ setHideInstalled(false);
57
106
  setImporting(false);
58
107
  }
59
108
  wasOpenRef.current = open;
60
109
  }, [open, importableProviders]);
61
- // Automatically load models when provider is selected
110
+ // Load the catalog whenever the provider changes (or a reload is requested).
62
111
  useEffect(() => {
63
- if (!open || !importProviderId) {
112
+ if (!open || !providerId)
64
113
  return;
65
- }
66
114
  let cancelled = false;
67
- const loadModels = async () => {
68
- try {
69
- setLoadingProviderModels(true);
70
- setError(null);
71
- const models = await setupWizardService.getProviderModels(importProviderId);
72
- if (!cancelled) {
73
- setProviderModels(models);
74
- setSelectedModelIds(new Set());
75
- }
76
- }
77
- catch (e) {
78
- if (!cancelled) {
79
- setError(e?.message || "Failed to load models from provider");
80
- }
81
- }
82
- finally {
83
- if (!cancelled) {
84
- setLoadingProviderModels(false);
85
- }
86
- }
87
- };
88
- loadModels();
115
+ setLoading(true);
116
+ setLoadError(null);
117
+ setImportError(null);
118
+ setupWizardService
119
+ .getProviderModels(providerId)
120
+ .then((models) => {
121
+ if (cancelled)
122
+ return;
123
+ setProviderModels(models);
124
+ setSelectedIds(new Set());
125
+ })
126
+ .catch((e) => {
127
+ if (cancelled)
128
+ return;
129
+ setProviderModels([]);
130
+ setLoadError(e?.message || "Failed to load models from provider");
131
+ })
132
+ .finally(() => {
133
+ if (!cancelled)
134
+ setLoading(false);
135
+ });
89
136
  return () => {
90
137
  cancelled = true;
91
138
  };
92
- }, [open, importProviderId]);
93
- // Load models from provider
94
- const handleLoadProviderModels = useCallback(async () => {
95
- if (!importProviderId) {
96
- setError("Please select a provider first");
97
- return;
98
- }
99
- try {
100
- setLoadingProviderModels(true);
101
- setError(null);
102
- const models = await setupWizardService.getProviderModels(importProviderId);
103
- setProviderModels(models);
104
- setSelectedModelIds(new Set());
105
- }
106
- catch (e) {
107
- setError(e?.message || "Failed to load models from provider");
139
+ }, [open, providerId, reloadToken]);
140
+ const handleProviderChange = useCallback((value) => {
141
+ setProviderId(value);
142
+ setProviderModels([]);
143
+ setSelectedIds(new Set());
144
+ setTypeFilter("all");
145
+ }, []);
146
+ // Only offer the type switch for types the catalog actually contains.
147
+ const availableTypes = useMemo(() => MODEL_TYPE_ORDER.filter((type) => providerModels.some((m) => m.modelType === type)), [providerModels]);
148
+ const effectiveTypeFilter = typeFilter === "all" || availableTypes.includes(typeFilter)
149
+ ? typeFilter
150
+ : "all";
151
+ const typeOptions = useMemo(() => [
152
+ { value: "all", label: "All" },
153
+ ...availableTypes.map((type) => ({
154
+ value: type,
155
+ label: MODEL_TYPE_LABELS[type],
156
+ })),
157
+ ], [availableTypes]);
158
+ const trimmedQuery = query.trim().toLowerCase();
159
+ // Models matching the type switch and the search, regardless of install state.
160
+ const matchingModels = useMemo(() => providerModels.filter((model) => {
161
+ if (effectiveTypeFilter !== "all" &&
162
+ model.modelType !== effectiveTypeFilter) {
163
+ return false;
108
164
  }
109
- finally {
110
- setLoadingProviderModels(false);
165
+ if (trimmedQuery) {
166
+ return (model.id.toLowerCase().includes(trimmedQuery) ||
167
+ (model.name || "").toLowerCase().includes(trimmedQuery) ||
168
+ (model.provider || "").toLowerCase().includes(trimmedQuery));
111
169
  }
112
- }, [importProviderId]);
113
- // Filter provider models
114
- const filteredProviderModels = useMemo(() => {
115
- return providerModels.filter((model) => {
116
- // Search filter
117
- if (importSearchQuery) {
118
- const query = importSearchQuery.toLowerCase();
119
- if (!model.id.toLowerCase().includes(query) &&
120
- !model.name.toLowerCase().includes(query) &&
121
- !model.provider.toLowerCase().includes(query)) {
122
- return false;
123
- }
124
- }
125
- // Type filter
126
- if (importTypeFilter !== "all" && model.modelType !== importTypeFilter) {
127
- return false;
128
- }
129
- // Status filter
130
- if (importStatusFilter === "missing" && model.isInstalled) {
131
- return false;
132
- }
133
- if (importStatusFilter === "installed" && !model.isInstalled) {
134
- return false;
135
- }
136
- if (importStatusFilter === "pricingDiffers" && !model.pricingDiffers) {
137
- return false;
138
- }
139
- return true;
140
- });
141
- }, [providerModels, importSearchQuery, importTypeFilter, importStatusFilter]);
142
- // Group models by provider
143
- const groupedProviderModels = useMemo(() => {
170
+ return true;
171
+ }), [providerModels, effectiveTypeFilter, trimmedQuery]);
172
+ const visibleModels = useMemo(() => hideInstalled
173
+ ? matchingModels.filter((m) => !m.isInstalled)
174
+ : matchingModels, [matchingModels, hideInstalled]);
175
+ const availableVisible = useMemo(() => visibleModels.filter((m) => !m.isInstalled), [visibleModels]);
176
+ const installedMatchingCount = useMemo(() => matchingModels.filter((m) => m.isInstalled).length, [matchingModels]);
177
+ const hasInstalledModels = useMemo(() => providerModels.some((m) => m.isInstalled), [providerModels]);
178
+ // Aggregators (OpenRouter etc.) list models from many vendors; only then
179
+ // is a vendor grouping worth the extra header rows.
180
+ const hasMultipleVendors = useMemo(() => new Set(providerModels.map((m) => (m.provider || "").toLowerCase()))
181
+ .size > 1, [providerModels]);
182
+ const groupedModels = useMemo(() => {
183
+ if (!hasMultipleVendors)
184
+ return [[null, visibleModels]];
144
185
  const groups = {};
145
- filteredProviderModels.forEach((model) => {
146
- const provider = model.provider || "other";
147
- if (!groups[provider]) {
148
- groups[provider] = [];
149
- }
150
- groups[provider].push(model);
186
+ visibleModels.forEach((model) => {
187
+ const vendor = model.provider || "other";
188
+ (groups[vendor] ??= []).push(model);
151
189
  });
152
- // Sort groups by provider name
153
190
  return Object.entries(groups).sort(([a], [b]) => a.localeCompare(b));
154
- }, [filteredProviderModels]);
155
- // Toggle model selection
156
- const toggleModelSelection = useCallback((modelId) => {
157
- setSelectedModelIds((prev) => {
191
+ }, [hasMultipleVendors, visibleModels]);
192
+ const selectedVisibleCount = useMemo(() => availableVisible.filter((m) => selectedIds.has(m.id)).length, [availableVisible, selectedIds]);
193
+ const selectAllState = availableVisible.length === 0
194
+ ? false
195
+ : selectedVisibleCount === availableVisible.length
196
+ ? true
197
+ : selectedVisibleCount > 0
198
+ ? "indeterminate"
199
+ : false;
200
+ const toggleSelectAll = useCallback(() => {
201
+ setSelectedIds((prev) => {
158
202
  const next = new Set(prev);
159
- if (next.has(modelId)) {
160
- next.delete(modelId);
203
+ if (selectAllState === true) {
204
+ availableVisible.forEach((m) => next.delete(m.id));
161
205
  }
162
206
  else {
163
- next.add(modelId);
207
+ availableVisible.forEach((m) => next.add(m.id));
164
208
  }
165
209
  return next;
166
210
  });
211
+ }, [availableVisible, selectAllState]);
212
+ const toggleModel = useCallback((modelId) => {
213
+ setSelectedIds((prev) => {
214
+ const next = new Set(prev);
215
+ if (next.has(modelId))
216
+ next.delete(modelId);
217
+ else
218
+ next.add(modelId);
219
+ return next;
220
+ });
167
221
  }, []);
168
- // Import selected models
169
222
  const handleImportSelected = useCallback(async () => {
170
- if (selectedModelIds.size === 0) {
171
- setError("Please select at least one model to import");
223
+ if (selectedIds.size === 0)
172
224
  return;
173
- }
174
225
  try {
175
226
  setImporting(true);
176
- setError(null);
227
+ setImportError(null);
177
228
  const result = await setupWizardService.upsertProviderModels({
178
- providerId: importProviderId,
179
- selectedModelIds: Array.from(selectedModelIds),
229
+ providerId,
230
+ selectedModelIds: Array.from(selectedIds),
180
231
  mode: "createMissing",
181
232
  });
182
- // Update local state optimistically to mark imported models as installed
183
- // This avoids reloading the entire list and showing the spinner
233
+ // Mark imported models as installed locally instead of reloading the catalog.
184
234
  if (result.createdCount > 0) {
185
- setProviderModels((prevModels) => prevModels.map((model) => selectedModelIds.has(model.id)
235
+ setProviderModels((prev) => prev.map((model) => selectedIds.has(model.id)
186
236
  ? { ...model, isInstalled: true, pricingDiffers: false }
187
237
  : model));
188
238
  }
189
- // Clear selection after successful import
190
- setSelectedModelIds(new Set());
191
- // Refresh the parent's installed models list
239
+ setSelectedIds(new Set());
192
240
  onSuccess();
193
- // Show result
194
241
  if (result.errors.length > 0) {
195
- setError(`Created ${result.createdCount} models. Errors: ${result.errors.join(", ")}`);
242
+ setImportError(`Imported ${result.createdCount} model${result.createdCount === 1 ? "" : "s"}. Errors: ${result.errors.join(", ")}`);
196
243
  }
197
244
  else {
198
245
  onOpenChange(false);
199
246
  }
200
247
  }
201
248
  catch (e) {
202
- setError(e?.message || "Failed to import models");
249
+ setImportError(e?.message || "Failed to import models");
203
250
  }
204
251
  finally {
205
252
  setImporting(false);
206
253
  }
207
- }, [importProviderId, onOpenChange, selectedModelIds, onSuccess]);
208
- return (_jsx(Dialog, { open: open, onOpenChange: onOpenChange, children: _jsxs(DialogContent, { className: "flex h-[60vh] max-w-3xl flex-col", children: [_jsx(StyledDialogTitle, { icon: _jsx(Upload, { strokeWidth: 1 }), title: "Import Models from Provider" }), _jsxs("div", { className: "flex min-h-0 flex-1 flex-col gap-4 overflow-hidden p-6", children: [_jsxs("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: [_jsxs("div", { className: "space-y-1.5", children: [_jsx("label", { className: "text-neutral-grey-50 text-xs font-medium tracking-wider", children: "Provider" }), _jsx(Select, { value: importProviderId, onValueChange: (value) => {
209
- setImportProviderId(value);
210
- setProviderModels([]);
211
- setSelectedModelIds(new Set());
212
- }, options: importableProviders.map((provider) => ({
213
- value: provider.id,
214
- label: provider.name,
215
- })), placeholder: "Select provider" })] }), importProviderId && (_jsxs("div", { className: "space-y-1.5", children: [_jsx("label", { className: "text-neutral-grey-50 text-xs font-medium tracking-wider", children: "Model Type" }), _jsx(Select, { value: importTypeFilter, onValueChange: (value) => setImportTypeFilter(value), options: [
216
- { value: "all", label: "All Types" },
217
- { value: "chat", label: "Chat Models" },
218
- { value: "embeddings", label: "Embeddings" },
219
- { value: "image", label: "Image" },
220
- ] })] })), !loadingProviderModels && providerModels.length > 0 && (_jsxs("div", { className: "space-y-1.5", children: [_jsx("label", { className: "text-neutral-grey-50 text-xs font-medium tracking-wider", children: "Status" }), _jsx(Select, { value: importStatusFilter, onValueChange: (value) => setImportStatusFilter(value), options: [
221
- { value: "all", label: "All Status" },
222
- { value: "missing", label: "Not Installed" },
223
- { value: "installed", label: "Installed" },
224
- { value: "pricingDiffers", label: "Pricing Differs" },
225
- ] })] }))] }), (isStaticCatalog || importProviderId) && (_jsxs("div", { className: `flex flex-col gap-2 rounded-lg border p-3 text-xs ${isStaticCatalog
226
- ? "border-feedback-orange bg-feedback-orange-light text-feedback-orange"
227
- : "border-feedback-blue bg-feedback-blue-light text-feedback-blue"}`, children: [isStaticCatalog && (_jsxs("div", { className: "flex items-start gap-2", children: [_jsx(AlertTriangle, { strokeWidth: 1, className: "mt-0.5 h-4 w-4 shrink-0" }), _jsx("p", { children: "This provider's model catalog is maintained manually and may not include the latest models or pricing." })] })), importProviderId && (_jsxs("div", { className: "flex items-start gap-2", children: [_jsx(AlertTriangle, { strokeWidth: 1, className: `mt-0.5 h-4 w-4 shrink-0 ${isStaticCatalog ? "text-feedback-orange" : "text-feedback-blue"}` }), _jsx("p", { children: isStaticCatalog
228
- ? "Model availability and pricing for this provider are maintained manually and may lag behind the live provider catalog."
229
- : "Pricing is retrieved from the provider's API and may not be 100% precise. Please verify on the provider's website." })] }))] })), (loadingProviderModels || providerModels.length > 0) && (_jsxs(_Fragment, { children: [!loadingProviderModels && providerModels.length > 0 && (_jsx("div", { className: "flex flex-col gap-3", children: _jsx("div", { className: "flex flex-wrap items-center gap-2", children: _jsx(SearchInput, { value: importSearchQuery, onChange: setImportSearchQuery, className: "min-w-48 flex-1", inputClassName: "border-border-default focus:border-feedback-blue focus:ring-feedback-blue h-10", size: "lg", placeholder: "Search models by name or ID..." }) }) })), _jsx("div", { className: "border-border-default min-h-0 flex-1 overflow-y-auto rounded-xl border bg-white", children: loadingProviderModels ? (_jsx(LoadingState, { variant: "fill", message: "Loading model catalog...", className: "min-h-48", spinnerClassName: "text-neutral-grey-50", textClassName: "text-neutral-grey-50" })) : (_jsxs(_Fragment, { children: [groupedProviderModels.map(([provider, models]) => (_jsxs("div", { className: "border-border-default border-b last:border-0", children: [_jsxs("div", { className: "border-border-default/50 bg-neutral-grey-5/90 text-neutral-grey-50 sticky top-0 z-10 flex items-center justify-between border-b px-4 py-2 text-[11px] font-bold tracking-widest backdrop-blur", children: [_jsx("span", { children: provider }), _jsx(CountBadge, { children: models.length })] }), _jsx("div", { className: "divide-border-default divide-y p-2", children: models.map((model) => (_jsxs("div", { className: "group hover:bg-neutral-grey-5 flex cursor-pointer items-start gap-3 rounded-lg p-3 transition-all", onClick: () => toggleModelSelection(model.id), children: [_jsx("div", { className: "mt-0.5 shrink-0", children: _jsx(Checkbox, { checked: selectedModelIds.has(model.id), onCheckedChange: () => toggleModelSelection(model.id), onClick: (event) => event.stopPropagation(), "aria-label": `Select ${model.name || model.id}` }) }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-x-2 gap-y-1", children: [_jsx("span", { className: "text-neutral-grey-100 truncate text-sm font-medium", children: model.name || model.id }), _jsxs("div", { className: "flex flex-wrap gap-1", children: [model.isInstalled && (_jsx("span", { className: "rounded-badge bg-feedback-green-light badge-pad-sm text-2xs text-feedback-green ring-feedback-green/20 inline-flex items-center font-bold ring-1 ring-inset", children: "Installed" })), model.pricingDiffers && (_jsx("span", { className: "rounded-badge bg-feedback-orange-light badge-pad-sm text-2xs text-feedback-orange ring-feedback-orange/20 inline-flex items-center font-bold ring-1 ring-inset", children: "Update available" })), _jsx("span", { className: "rounded-badge bg-neutral-grey-5 badge-pad-sm text-2xs text-neutral-grey-50 inline-flex items-center font-medium", children: model.modelType })] }), model.isInstalled &&
230
- model.installedItemId && (_jsx("button", { onClick: async (e) => {
231
- e.stopPropagation();
232
- await editContext?.loadItem(model.installedItemId);
233
- editContext?.switchWorkspace("editor");
234
- }, className: "text-neutral-grey-50 hover:bg-feedback-blue-light hover:text-feedback-blue ml-auto rounded-md p-1 transition-colors", title: "Load item in editor", children: _jsx(ExternalLink, { className: "h-3.5 w-3.5", strokeWidth: 1 }) }))] }), _jsxs("div", { className: "text-neutral-grey-50 mt-1 flex items-center gap-2 text-[11px] font-medium", children: [model.pricing && (_jsx("div", { className: "flex items-center gap-1.5", children: model.modelType === "image" &&
235
- hasUsableImagePricing(model) ? (_jsxs(_Fragment, { children: [model.pricing.requestCost !==
236
- undefined && (_jsxs("span", { className: "border-border-default bg-neutral-grey-5 badge-pad-sm rounded border", children: ["Request: $", model.pricing.requestCost.toFixed(4)] })), model.pricing.imageCost !==
237
- undefined && (_jsxs("span", { className: "border-border-default bg-neutral-grey-5 badge-pad-sm rounded border", children: ["Image: $", model.pricing.imageCost.toFixed(4)] })), model.pricing.imageOutputCost !==
238
- undefined && (_jsxs("span", { className: "border-border-default bg-neutral-grey-5 badge-pad-sm rounded border", children: ["Out Image: $", model.pricing.imageOutputCost.toFixed(4)] })), model.pricing
239
- .inputTextTokenCostPerMillion !==
240
- undefined && (_jsxs("span", { className: "border-border-default bg-neutral-grey-5 badge-pad-sm rounded border", children: ["In Text: $", model.pricing.inputTextTokenCostPerMillion.toFixed(2), "/M"] })), model.pricing
241
- .inputImageTokenCostPerMillion !==
242
- undefined && (_jsxs("span", { className: "border-border-default bg-neutral-grey-5 badge-pad-sm rounded border", children: ["In Image: $", model.pricing.inputImageTokenCostPerMillion.toFixed(2), "/M"] })), model.pricing
243
- .outputImageTokenCostPerMillion !==
244
- undefined && (_jsxs("span", { className: "border-border-default bg-neutral-grey-5 badge-pad-sm rounded border", children: ["Out Image: $", model.pricing.outputImageTokenCostPerMillion.toFixed(2), "/M"] }))] })) : (_jsxs(_Fragment, { children: [_jsxs("span", { className: "border-border-default bg-neutral-grey-5 badge-pad-sm rounded border", children: ["In: $", model.pricing.inputCostPerMillionTokens?.toFixed(2) || "0.00", "/M"] }), model.pricing
245
- .outputCostPerMillionTokens !==
246
- undefined && (_jsxs("span", { className: "border-border-default bg-neutral-grey-5 badge-pad-sm rounded border", children: ["Out: $", model.pricing.outputCostPerMillionTokens.toFixed(2), "/M"] }))] })) })), model.contextLength && (_jsxs("span", { className: "flex items-center gap-1", children: [_jsx("span", { className: "bg-neutral-grey-10 h-1 w-1 rounded-full" }), (model.contextLength / 1000).toFixed(0), "k context"] })), _jsx("span", { className: "text-neutral-grey-50 ml-auto hidden font-mono text-[10px] sm:block", children: model.id })] })] })] }, model.id))) })] }, provider))), filteredProviderModels.length === 0 && (_jsx("div", { className: "text-neutral-grey-50 py-12 text-center text-xs", children: "No models match your filters" }))] })) })] })), error && (_jsx("div", { className: "border-feedback-red bg-feedback-red-light text-feedback-red rounded-md border p-3 text-sm", children: error }))] }), _jsxs(DialogFooter, { className: "border-border-default mt-auto shrink-0 border-t px-6 py-4", children: [_jsx(Button, { variant: "outline", onClick: () => onOpenChange(false), children: "Close" }), _jsxs(Button, { onClick: handleImportSelected, disabled: selectedModelIds.size === 0 || importing, className: "shadow-feedback-blue gap-2 shadow-sm", children: [importing ? (_jsx(RefreshCw, { strokeWidth: 1, className: "h-3.5 w-3.5 animate-spin" })) : (_jsx(Plus, { strokeWidth: 1, className: "h-3.5 w-3.5" })), "Import selected models (", selectedModelIds.size, ")"] })] })] }) }));
254
+ }, [providerId, onOpenChange, selectedIds, onSuccess]);
255
+ const openInstalledModel = useCallback(async (itemId) => {
256
+ await editContext?.loadItem(itemId);
257
+ editContext?.switchWorkspace("editor");
258
+ }, [editContext]);
259
+ const providerOptions = useMemo(() => importableProviders.map((provider) => ({
260
+ value: provider.id,
261
+ label: provider.name,
262
+ icon: (_jsx(ProviderIcon, { providerId: provider.type, providerName: provider.name, size: 16 })),
263
+ })), [importableProviders]);
264
+ const selectedCount = selectedIds.size;
265
+ const importLabel = selectedCount === 0
266
+ ? "Import models"
267
+ : selectedCount === 1
268
+ ? "Import 1 model"
269
+ : `Import ${selectedCount} models`;
270
+ const renderListBody = () => {
271
+ if (loading) {
272
+ return (_jsx(LoadingState, { variant: "fill", message: "Loading model catalog...", className: "min-h-48", spinnerClassName: "text-neutral-grey-50", textClassName: "text-neutral-grey-50" }));
273
+ }
274
+ if (loadError) {
275
+ return (_jsxs("div", { className: "flex flex-col items-center justify-center gap-3 px-6 py-12 text-center", children: [_jsx("p", { className: "text-feedback-red text-sm", children: loadError }), _jsxs(Button, { size: "sm", variant: "outline", onClick: () => setReloadToken((t) => t + 1), children: [_jsx(RefreshCw, { strokeWidth: 1, className: "h-3.5 w-3.5" }), "Try again"] })] }));
276
+ }
277
+ if (providerModels.length === 0) {
278
+ return (_jsx("div", { className: "text-neutral-grey-50 px-6 py-12 text-center text-sm", children: "This provider returned no models." }));
279
+ }
280
+ if (matchingModels.length === 0) {
281
+ return (_jsxs("div", { className: "flex flex-col items-center justify-center gap-3 px-6 py-12 text-center", children: [_jsx("p", { className: "text-neutral-grey-50 text-sm", children: trimmedQuery
282
+ ? `No models match "${query.trim()}".`
283
+ : "No models of this type." }), (trimmedQuery || effectiveTypeFilter !== "all") && (_jsx(Button, { size: "sm", variant: "outline", onClick: () => {
284
+ setQuery("");
285
+ setTypeFilter("all");
286
+ }, children: "Clear filters" }))] }));
287
+ }
288
+ if (visibleModels.length === 0) {
289
+ return (_jsxs("div", { className: "flex flex-col items-center justify-center gap-3 px-6 py-12 text-center", children: [_jsx("p", { className: "text-neutral-grey-50 text-sm", children: "All matching models are already installed." }), _jsx(Button, { size: "sm", variant: "outline", onClick: () => setHideInstalled(false), children: "Show installed models" })] }));
290
+ }
291
+ return groupedModels.map(([vendor, models]) => (_jsxs("div", { children: [vendor !== null && (_jsxs("div", { className: "border-border-default/50 bg-neutral-grey-5/90 text-neutral-grey-50 sticky top-0 z-10 flex items-center justify-between border-b px-4 py-1.5 text-[11px] font-bold tracking-widest backdrop-blur", children: [_jsx("span", { children: vendor }), _jsx(CountBadge, { children: models.length })] })), _jsx("div", { className: "divide-border-default divide-y", children: models.map((model) => {
292
+ const installed = model.isInstalled;
293
+ const selected = selectedIds.has(model.id);
294
+ const title = model.name || model.id;
295
+ const facts = describeModel(model);
296
+ return (_jsxs("div", { "data-testid": "import-model-row", "data-model-id": model.id, "data-installed": installed ? "true" : undefined, className: cn("flex items-center gap-3 px-4 py-2.5 transition-colors", installed
297
+ ? "cursor-default"
298
+ : "hover:bg-neutral-grey-5 cursor-pointer", selected && "bg-neutral-grey-5"), onClick: installed ? undefined : () => toggleModel(model.id), children: [_jsx("div", { className: "flex w-4 shrink-0 items-center justify-center", children: installed ? (_jsx(CheckCircle2, { strokeWidth: 1.5, className: "text-feedback-green h-4 w-4", "aria-label": "Installed" })) : (_jsx(Checkbox, { checked: selected, onCheckedChange: () => toggleModel(model.id), onClick: (event) => event.stopPropagation(), "aria-label": `Select ${title}` })) }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [_jsx("span", { className: cn("truncate text-sm", installed
299
+ ? "text-neutral-grey-50"
300
+ : "text-neutral-grey-100 font-medium"), children: title }), _jsx("span", { className: "bg-neutral-grey-5 badge-pad-sm text-neutral-grey-50 shrink-0 rounded text-[10px] font-medium", children: MODEL_TYPE_LABELS[model.modelType] ?? model.modelType }), installed && (_jsx("span", { className: "bg-feedback-green-light badge-pad-sm text-feedback-green shrink-0 rounded text-[10px] font-medium", children: "Installed" }))] }), _jsxs("div", { className: "text-neutral-grey-50 mt-0.5 flex min-w-0 flex-wrap items-center gap-x-1.5 text-[11px]", children: [title !== model.id && (_jsx("span", { className: "max-w-full truncate font-mono text-[10px]", children: model.id })), facts.map((fact, index) => (_jsxs(React.Fragment, { children: [(index > 0 || title !== model.id) && (_jsx("span", { "aria-hidden": "true", children: "\u00B7" })), _jsx("span", { className: "shrink-0", children: fact })] }, fact)))] })] }), installed && model.installedItemId && (_jsxs(Button, { size: "xs", variant: "ghost", className: "text-neutral-grey-50 hover:text-feedback-blue shrink-0", onClick: (e) => {
301
+ e.stopPropagation();
302
+ void openInstalledModel(model.installedItemId);
303
+ }, title: "Open the installed model item in the editor", children: ["Open", _jsx(ExternalLink, { className: "h-3.5 w-3.5", strokeWidth: 1 })] }))] }, model.id));
304
+ }) })] }, vendor ?? "all")));
305
+ };
306
+ return (_jsx(Dialog, { open: open, onOpenChange: onOpenChange, children: _jsxs(DialogContent, { className: "flex max-w-4xl flex-col", style: { height: "85vh" }, "data-testid": "import-model-dialog", children: [_jsx(StyledDialogTitle, { icon: _jsx(Upload, { strokeWidth: 1 }), title: "Import models", subtitle: "Pick models from a provider's catalog to add them to Parhelia." }), _jsxs("div", { className: "flex min-h-0 flex-1 flex-col gap-3 p-6 pb-4", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsx(Select, { value: providerId, onValueChange: handleProviderChange, options: providerOptions, placeholder: "Select provider", className: "w-52 shrink-0", "data-testid": "import-model-provider" }), _jsx(SearchInput, { value: query, onChange: setQuery, className: "min-w-48 flex-1", inputClassName: "border-border-default bg-white", size: "md", placeholder: "Search by name or ID...", disabled: loading || !!loadError, testId: "import-model-search" }), typeOptions.length > 2 && (_jsx(MultiSwitchButton, { value: effectiveTypeFilter, options: typeOptions, onValueChange: setTypeFilter, className: "shrink-0", optionClassName: "h-6 px-3", "aria-label": "Filter by model type", testId: "import-model-type-filter" }))] }), _jsxs("div", { className: "border-border-default flex min-h-0 flex-1 flex-col overflow-hidden rounded-xl border bg-white", children: [!loading && !loadError && providerModels.length > 0 && (_jsxs("div", { className: "border-border-default bg-neutral-grey-5/60 flex items-center gap-3 border-b px-4 py-2 text-xs", children: [_jsxs("label", { className: "flex cursor-pointer items-center gap-3", children: [_jsx(Checkbox, { checked: selectAllState, onCheckedChange: toggleSelectAll, disabled: availableVisible.length === 0, "aria-label": "Select all available models", "data-testid": "import-model-select-all" }), _jsxs("span", { className: "text-neutral-grey-100", children: [availableVisible.length, " available"] })] }), installedMatchingCount > 0 && (_jsxs("span", { className: "text-neutral-grey-50", children: ["\u00B7 ", installedMatchingCount, " installed"] })), selectedCount > 0 && (_jsxs("span", { className: "text-highlight-100 font-medium", children: ["\u00B7 ", selectedCount, " selected"] })), hasInstalledModels && (_jsxs("label", { className: "text-neutral-grey-50 ml-auto flex cursor-pointer items-center gap-2", children: [_jsx(Checkbox, { checked: hideInstalled, onCheckedChange: (value) => setHideInstalled(value === true), "data-testid": "import-model-hide-installed" }), "Hide installed"] }))] })), _jsx("div", { className: "min-h-0 flex-1 overflow-y-auto", children: renderListBody() })] }), providerId && (_jsxs("p", { className: "text-neutral-grey-50 flex items-start gap-1.5 text-[11px] leading-snug", children: [isStaticCatalog ? (_jsx(AlertTriangle, { strokeWidth: 1, className: "text-feedback-orange mt-px h-3.5 w-3.5 shrink-0" })) : (_jsx(Info, { strokeWidth: 1, className: "mt-px h-3.5 w-3.5 shrink-0" })), _jsx("span", { children: isStaticCatalog
307
+ ? "This provider's catalog is maintained by hand, so it may lag behind the provider's own model list and pricing."
308
+ : "Pricing comes from the provider's API and may be imprecise. Verify it on the provider's website." })] })), importError && (_jsx(Alert, { variant: "destructive", className: "py-2", children: _jsx(AlertDescription, { className: "text-xs", children: importError }) }))] }), _jsxs(DialogFooter, { className: "border-border-default mt-auto shrink-0 border-t px-6 py-4", children: [_jsx(Button, { variant: "outline", onClick: () => onOpenChange(false), children: "Close" }), _jsxs(Button, { onClick: handleImportSelected, disabled: selectedCount === 0 || importing || loading, className: "shadow-feedback-blue gap-2 shadow-sm", "data-testid": "import-model-submit", children: [importing ? (_jsx(RefreshCw, { strokeWidth: 1, className: "h-3.5 w-3.5 animate-spin" })) : (_jsx(Plus, { strokeWidth: 1, className: "h-3.5 w-3.5" })), importLabel] })] })] }) }));
247
309
  }
248
310
  export default ImportModelDialog;
249
311
  //# sourceMappingURL=ImportModelDialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ImportModelDialog.js","sourceRoot":"","sources":["../../../../src/setup/wizard/steps/ImportModelDialog.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ImportModelDialog.js","sourceRoot":"","sources":["../../../../src/setup/wizard/steps/ImportModelDialog.tsx"],"names":[],"mappings":"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"}