@parhelia/core 0.1.12485 → 0.1.12496

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 (207) hide show
  1. package/dist/agents-view/AgentCard.js +2 -1
  2. package/dist/agents-view/AgentCard.js.map +1 -1
  3. package/dist/agents-view/AgentsView.js +2 -1
  4. package/dist/agents-view/AgentsView.js.map +1 -1
  5. package/dist/agents-view/AgentsWorkspaceView.js +12 -5
  6. package/dist/agents-view/AgentsWorkspaceView.js.map +1 -1
  7. package/dist/agents-view/ProfileAgentsGroup.js +2 -1
  8. package/dist/agents-view/ProfileAgentsGroup.js.map +1 -1
  9. package/dist/components/ui/input.js +1 -1
  10. package/dist/components/ui/input.js.map +1 -1
  11. package/dist/components/ui/tabs.d.ts +1 -1
  12. package/dist/components/ui/tabs.js +4 -11
  13. package/dist/components/ui/tabs.js.map +1 -1
  14. package/dist/config/config.js +33 -8
  15. package/dist/config/config.js.map +1 -1
  16. package/dist/config/types.d.ts +7 -0
  17. package/dist/config/types.js.map +1 -1
  18. package/dist/editor/FieldHistory.js +49 -31
  19. package/dist/editor/FieldHistory.js.map +1 -1
  20. package/dist/editor/ai/AgentDocumentList.js +32 -14
  21. package/dist/editor/ai/AgentDocumentList.js.map +1 -1
  22. package/dist/editor/ai/AgentGreeting.js +3 -2
  23. package/dist/editor/ai/AgentGreeting.js.map +1 -1
  24. package/dist/editor/ai/AgentProfileSelector.js +2 -1
  25. package/dist/editor/ai/AgentProfileSelector.js.map +1 -1
  26. package/dist/editor/ai/AgentTerminal.js +544 -169
  27. package/dist/editor/ai/AgentTerminal.js.map +1 -1
  28. package/dist/editor/ai/Agents.js +26 -26
  29. package/dist/editor/ai/Agents.js.map +1 -1
  30. package/dist/editor/ai/AiResponseMessage.js +3 -4
  31. package/dist/editor/ai/AiResponseMessage.js.map +1 -1
  32. package/dist/editor/ai/GuidanceOverlay.js +17 -11
  33. package/dist/editor/ai/GuidanceOverlay.js.map +1 -1
  34. package/dist/editor/ai/InlineAiDialog.js +3 -2
  35. package/dist/editor/ai/InlineAiDialog.js.map +1 -1
  36. package/dist/editor/ai/MediaImage.js +40 -8
  37. package/dist/editor/ai/MediaImage.js.map +1 -1
  38. package/dist/editor/ai/SpawnedAgentsPanel.js +10 -12
  39. package/dist/editor/ai/SpawnedAgentsPanel.js.map +1 -1
  40. package/dist/editor/ai/ToolCallDisplay.js +4 -1
  41. package/dist/editor/ai/ToolCallDisplay.js.map +1 -1
  42. package/dist/editor/ai/agentDiagnostics.js +1 -3
  43. package/dist/editor/ai/agentDiagnostics.js.map +1 -1
  44. package/dist/editor/ai/dialogs/AgentDialogHandler.d.ts +1 -8
  45. package/dist/editor/ai/dialogs/AgentDialogHandler.js +89 -12
  46. package/dist/editor/ai/dialogs/AgentDialogHandler.js.map +1 -1
  47. package/dist/editor/ai/dialogs/agentDialogTypes.d.ts +62 -0
  48. package/dist/editor/ai/dialogs/agentDialogTypes.js +2 -0
  49. package/dist/editor/ai/dialogs/agentDialogTypes.js.map +1 -1
  50. package/dist/editor/ai/dialogs/browserBoundCapture.d.ts +29 -0
  51. package/dist/editor/ai/dialogs/browserBoundCapture.js +117 -0
  52. package/dist/editor/ai/dialogs/browserBoundCapture.js.map +1 -0
  53. package/dist/editor/ai/dialogs/capturePageDom.d.ts +3 -0
  54. package/dist/editor/ai/dialogs/capturePageDom.js +64 -0
  55. package/dist/editor/ai/dialogs/capturePageDom.js.map +1 -0
  56. package/dist/editor/ai/dialogs/capturePageScreenshot.d.ts +3 -0
  57. package/dist/editor/ai/dialogs/capturePageScreenshot.js +446 -0
  58. package/dist/editor/ai/dialogs/capturePageScreenshot.js.map +1 -0
  59. package/dist/editor/ai/useAgentStatus.js +11 -0
  60. package/dist/editor/ai/useAgentStatus.js.map +1 -1
  61. package/dist/editor/client/EditorShell.js +39 -41
  62. package/dist/editor/client/EditorShell.js.map +1 -1
  63. package/dist/editor/client/editContext.d.ts +5 -1
  64. package/dist/editor/client/editContext.js.map +1 -1
  65. package/dist/editor/client/hooks/useEditorWebSocket.js +56 -44
  66. package/dist/editor/client/hooks/useEditorWebSocket.js.map +1 -1
  67. package/dist/editor/client/itemsRepository.js +10 -6
  68. package/dist/editor/client/itemsRepository.js.map +1 -1
  69. package/dist/editor/client/pageModelBuilder.js +1 -1
  70. package/dist/editor/client/pageModelBuilder.js.map +1 -1
  71. package/dist/editor/commands/componentCommands.js +3 -49
  72. package/dist/editor/commands/componentCommands.js.map +1 -1
  73. package/dist/editor/commands/customCommandConverter.js +2 -1
  74. package/dist/editor/commands/customCommandConverter.js.map +1 -1
  75. package/dist/editor/commands/handlers/agentHandler.js +2 -1
  76. package/dist/editor/commands/handlers/agentHandler.js.map +1 -1
  77. package/dist/editor/page-editor-chrome/FrameMenu.js +1 -1
  78. package/dist/editor/page-editor-chrome/FrameMenu.js.map +1 -1
  79. package/dist/editor/page-editor-chrome/PlaceholderDropZone.js +11 -11
  80. package/dist/editor/page-editor-chrome/PlaceholderDropZone.js.map +1 -1
  81. package/dist/editor/page-viewer/PageViewerFrame.js +21 -8
  82. package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
  83. package/dist/editor/page-viewer/pageModelSkeletonBuilder.js +107 -49
  84. package/dist/editor/page-viewer/pageModelSkeletonBuilder.js.map +1 -1
  85. package/dist/editor/page-viewer/pageViewContext.d.ts +1 -0
  86. package/dist/editor/page-viewer/pageViewContext.js +51 -14
  87. package/dist/editor/page-viewer/pageViewContext.js.map +1 -1
  88. package/dist/editor/reviews/CreateReviewDialog.js +1 -1
  89. package/dist/editor/reviews/CreateReviewDialog.js.map +1 -1
  90. package/dist/editor/reviews/DiffView.js +7 -14
  91. package/dist/editor/reviews/DiffView.js.map +1 -1
  92. package/dist/editor/reviews/useMultiReview.js +2 -2
  93. package/dist/editor/reviews/useMultiReview.js.map +1 -1
  94. package/dist/editor/services/agentService.d.ts +31 -1
  95. package/dist/editor/services/agentService.js +107 -72
  96. package/dist/editor/services/agentService.js.map +1 -1
  97. package/dist/editor/services/aiService.d.ts +3 -1
  98. package/dist/editor/services/aiService.js.map +1 -1
  99. package/dist/editor/services/indexService.js +1 -1
  100. package/dist/editor/services/indexService.js.map +1 -1
  101. package/dist/editor/settings/SettingsView.js +18 -16
  102. package/dist/editor/settings/SettingsView.js.map +1 -1
  103. package/dist/editor/settings/Status.js +5 -4
  104. package/dist/editor/settings/Status.js.map +1 -1
  105. package/dist/editor/settings/index/useIndexStatus.js +19 -21
  106. package/dist/editor/settings/index/useIndexStatus.js.map +1 -1
  107. package/dist/editor/settings/panels/CreateJavaScriptToolDialog.d.ts +7 -0
  108. package/dist/editor/settings/panels/CreateJavaScriptToolDialog.js +48 -0
  109. package/dist/editor/settings/panels/CreateJavaScriptToolDialog.js.map +1 -0
  110. package/dist/editor/settings/panels/GroupedFieldConfigPanel.d.ts +2 -1
  111. package/dist/editor/settings/panels/GroupedFieldConfigPanel.js +2 -2
  112. package/dist/editor/settings/panels/GroupedFieldConfigPanel.js.map +1 -1
  113. package/dist/editor/settings/panels/JavaScriptToolAgentPanel.d.ts +12 -0
  114. package/dist/editor/settings/panels/JavaScriptToolAgentPanel.js +46 -0
  115. package/dist/editor/settings/panels/JavaScriptToolAgentPanel.js.map +1 -0
  116. package/dist/editor/settings/panels/JavaScriptToolConfigPanel.d.ts +9 -0
  117. package/dist/editor/settings/panels/JavaScriptToolConfigPanel.js +34 -0
  118. package/dist/editor/settings/panels/JavaScriptToolConfigPanel.js.map +1 -0
  119. package/dist/editor/settings/panels/JavaScriptToolsPanel.d.ts +2 -0
  120. package/dist/editor/settings/panels/JavaScriptToolsPanel.js +285 -0
  121. package/dist/editor/settings/panels/JavaScriptToolsPanel.js.map +1 -0
  122. package/dist/editor/settings/panels/ModelConfigPanel.d.ts +2 -1
  123. package/dist/editor/settings/panels/ModelConfigPanel.js +88 -7
  124. package/dist/editor/settings/panels/ModelConfigPanel.js.map +1 -1
  125. package/dist/editor/settings/panels/ModelsPanel.js +129 -70
  126. package/dist/editor/settings/panels/ModelsPanel.js.map +1 -1
  127. package/dist/editor/settings/panels/ProjectTemplateAgentPanel.d.ts +1 -4
  128. package/dist/editor/settings/panels/ProjectTemplateAgentPanel.js +3 -3
  129. package/dist/editor/settings/panels/ProjectTemplateAgentPanel.js.map +1 -1
  130. package/dist/editor/settings/panels/ProjectTemplatesPanel.js +78 -22
  131. package/dist/editor/settings/panels/ProjectTemplatesPanel.js.map +1 -1
  132. package/dist/editor/settings/panels/ProvidersPanel.d.ts +1 -1
  133. package/dist/editor/settings/panels/ProvidersPanel.js +40 -55
  134. package/dist/editor/settings/panels/ProvidersPanel.js.map +1 -1
  135. package/dist/editor/settings/panels/index.d.ts +1 -0
  136. package/dist/editor/settings/panels/index.js +1 -0
  137. package/dist/editor/settings/panels/index.js.map +1 -1
  138. package/dist/editor/settings/status/coreStatusChecks.js +28 -17
  139. package/dist/editor/settings/status/coreStatusChecks.js.map +1 -1
  140. package/dist/editor/sidebar/ComponentPalette.js +2 -1
  141. package/dist/editor/sidebar/ComponentPalette.js.map +1 -1
  142. package/dist/editor/sidebar/ComponentTree.js +9 -9
  143. package/dist/editor/sidebar/ComponentTree.js.map +1 -1
  144. package/dist/editor/sidebar/EditHistory.js +3 -38
  145. package/dist/editor/sidebar/EditHistory.js.map +1 -1
  146. package/dist/editor/sidebar/MainContentTree.js +1 -1
  147. package/dist/editor/sidebar/MainContentTree.js.map +1 -1
  148. package/dist/editor/sidebar/NavigationPanelItem.js +2 -5
  149. package/dist/editor/sidebar/NavigationPanelItem.js.map +1 -1
  150. package/dist/editor/tree-indicators/GutterColumns.d.ts +3 -1
  151. package/dist/editor/tree-indicators/GutterColumns.js +4 -3
  152. package/dist/editor/tree-indicators/GutterColumns.js.map +1 -1
  153. package/dist/editor/tree-indicators/types.d.ts +1 -0
  154. package/dist/editor/views/CompareView.js +3 -1
  155. package/dist/editor/views/CompareView.js.map +1 -1
  156. package/dist/editor/views/EditorSlot.js +2 -2
  157. package/dist/editor/views/EditorSlot.js.map +1 -1
  158. package/dist/editor/views/ParheliaView.js +5 -6
  159. package/dist/editor/views/ParheliaView.js.map +1 -1
  160. package/dist/editor/views/SingleEditView.js +2 -0
  161. package/dist/editor/views/SingleEditView.js.map +1 -1
  162. package/dist/editor/views/editorSlotContext.js +35 -6
  163. package/dist/editor/views/editorSlotContext.js.map +1 -1
  164. package/dist/index.d.ts +4 -1
  165. package/dist/index.js +1 -0
  166. package/dist/index.js.map +1 -1
  167. package/dist/lib/sanitize.d.ts +10 -0
  168. package/dist/lib/sanitize.js +40 -0
  169. package/dist/lib/sanitize.js.map +1 -0
  170. package/dist/revision.d.ts +2 -2
  171. package/dist/revision.js +2 -2
  172. package/dist/setup/services/setupWizardService.d.ts +28 -0
  173. package/dist/setup/services/setupWizardService.js +34 -0
  174. package/dist/setup/services/setupWizardService.js.map +1 -1
  175. package/dist/setup/wizard/steps/AddModelDialog.js +9 -1
  176. package/dist/setup/wizard/steps/AddModelDialog.js.map +1 -1
  177. package/dist/setup/wizard/steps/ImportModelDialog.js +3 -1
  178. package/dist/setup/wizard/steps/ImportModelDialog.js.map +1 -1
  179. package/dist/splash-screen/NewPage.js +24 -24
  180. package/dist/splash-screen/NewPage.js.map +1 -1
  181. package/dist/task-board/TaskBoardWorkspace.js +29 -10
  182. package/dist/task-board/TaskBoardWorkspace.js.map +1 -1
  183. package/dist/task-board/components/ItemCollectionEditorDialog.js +5 -12
  184. package/dist/task-board/components/ItemCollectionEditorDialog.js.map +1 -1
  185. package/dist/task-board/components/ProjectAgentsPanel.js +1 -1
  186. package/dist/task-board/components/ProjectAgentsPanel.js.map +1 -1
  187. package/dist/task-board/components/ProjectOverviewContent.js +2 -2
  188. package/dist/task-board/components/ProjectOverviewContent.js.map +1 -1
  189. package/dist/task-board/components/ProjectPropertiesPanel.js +1 -1
  190. package/dist/task-board/components/ProjectPropertiesPanel.js.map +1 -1
  191. package/dist/task-board/components/TaskDetailPanel.js +1 -1
  192. package/dist/task-board/components/TaskDetailPanel.js.map +1 -1
  193. package/dist/task-board/components/TaskboardPersistentLogPanel.js +3 -1
  194. package/dist/task-board/components/TaskboardPersistentLogPanel.js.map +1 -1
  195. package/dist/task-board/taskAgentLink.js +1 -3
  196. package/dist/task-board/taskAgentLink.js.map +1 -1
  197. package/dist/task-board/views/DependencyGraphView.js +19 -1
  198. package/dist/task-board/views/DependencyGraphView.js.map +1 -1
  199. package/dist/tour/Tour.js +10 -4
  200. package/dist/tour/Tour.js.map +1 -1
  201. package/dist/tour/default-tour.js +51 -11
  202. package/dist/tour/default-tour.js.map +1 -1
  203. package/dist/types.d.ts +2 -0
  204. package/package.json +4 -1
  205. package/dist/editor/ComponentInfo.d.ts +0 -4
  206. package/dist/editor/ComponentInfo.js +0 -41
  207. package/dist/editor/ComponentInfo.js.map +0 -1
@@ -0,0 +1,9 @@
1
+ import React from "react";
2
+ type JavaScriptToolConfigPanelProps = {
3
+ itemId: string;
4
+ title?: string;
5
+ refreshToken?: number;
6
+ actions?: React.ReactNode;
7
+ };
8
+ export declare function JavaScriptToolConfigPanel({ itemId, title, refreshToken, actions, }: JavaScriptToolConfigPanelProps): import("react/jsx-runtime").JSX.Element;
9
+ export default JavaScriptToolConfigPanel;
@@ -0,0 +1,34 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Braces, FileCode2, PlayCircle, ShieldAlert } from "lucide-react";
3
+ import { GroupedFieldConfigPanel, } from "./GroupedFieldConfigPanel";
4
+ const FIELD_GROUPS = [
5
+ {
6
+ title: "Identity",
7
+ description: "Explain when agents should use it, what it returns, and when relevant how the script accesses vars or calls other tools.",
8
+ icon: _jsx(FileCode2, { className: "h-4 w-4", strokeWidth: 1.5 }),
9
+ fieldNames: [["Description"]],
10
+ },
11
+ {
12
+ title: "Signature",
13
+ description: "JSON schema exposed to agents as the callable method signature.",
14
+ icon: _jsx(Braces, { className: "h-4 w-4", strokeWidth: 1.5 }),
15
+ fieldNames: [["Schema"]],
16
+ },
17
+ {
18
+ title: "Runtime",
19
+ description: "Hidden JavaScript source that executes when the tool is called.",
20
+ icon: _jsx(PlayCircle, { className: "h-4 w-4", strokeWidth: 1.5 }),
21
+ fieldNames: [["Script"]],
22
+ },
23
+ {
24
+ title: "Approval",
25
+ description: "Optional approval logic evaluated before execution in supervised mode.",
26
+ icon: _jsx(ShieldAlert, { className: "h-4 w-4", strokeWidth: 1.5 }),
27
+ fieldNames: [["Approval Script"]],
28
+ },
29
+ ];
30
+ export function JavaScriptToolConfigPanel({ itemId, title, refreshToken = 0, actions, }) {
31
+ return (_jsx(GroupedFieldConfigPanel, { itemId: itemId, title: title, refreshToken: refreshToken, actions: actions, fieldGroups: FIELD_GROUPS, headerIcon: _jsx(FileCode2, { className: "h-4 w-4", strokeWidth: 1.5 }), loadErrorTitle: "Unable to load JavaScript tool", emptyMessage: "No editable JavaScript tool fields were found for this item.", fallbackTitle: "JavaScript Tool", supplementalContent: _jsx("div", { className: "rounded-lg border border-blue-200 bg-blue-50 px-4 py-3 text-xs text-blue-900", children: "Normal agents only see the tool name, description, and schema. The script source and approval script stay hidden from them." }), footerLeadingText: "For item name changes, insert options, and all fields use the " }));
32
+ }
33
+ export default JavaScriptToolConfigPanel;
34
+ //# sourceMappingURL=JavaScriptToolConfigPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JavaScriptToolConfigPanel.js","sourceRoot":"","sources":["../../../../src/editor/settings/panels/JavaScriptToolConfigPanel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EACL,uBAAuB,GAExB,MAAM,2BAA2B,CAAC;AASnC,MAAM,YAAY,GAA2B;IAC3C;QACE,KAAK,EAAE,UAAU;QACjB,WAAW,EACT,0HAA0H;QAC5H,IAAI,EAAE,KAAC,SAAS,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,GAAG,GAAI;QACzD,UAAU,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC;KAC9B;IACD;QACE,KAAK,EAAE,WAAW;QAClB,WAAW,EAAE,iEAAiE;QAC9E,IAAI,EAAE,KAAC,MAAM,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,GAAG,GAAI;QACtD,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;KACzB;IACD;QACE,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,iEAAiE;QAC9E,IAAI,EAAE,KAAC,UAAU,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,GAAG,GAAI;QAC1D,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;KACzB;IACD;QACE,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,wEAAwE;QACrF,IAAI,EAAE,KAAC,WAAW,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,GAAG,GAAI;QAC3D,UAAU,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC;KAClC;CACF,CAAC;AAEF,MAAM,UAAU,yBAAyB,CAAC,EACxC,MAAM,EACN,KAAK,EACL,YAAY,GAAG,CAAC,EAChB,OAAO,GACwB;IAC/B,OAAO,CACL,KAAC,uBAAuB,IACtB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,YAAY,EACzB,UAAU,EAAE,KAAC,SAAS,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,GAAG,GAAI,EAC/D,cAAc,EAAC,gCAAgC,EAC/C,YAAY,EAAC,8DAA8D,EAC3E,aAAa,EAAC,iBAAiB,EAC/B,mBAAmB,EACjB,cAAK,SAAS,EAAC,8EAA8E,4IAGvF,EAER,iBAAiB,EAAC,gEAAgE,GAClF,CACH,CAAC;AACJ,CAAC;AAED,eAAe,yBAAyB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function JavaScriptToolsPanel(): import("react/jsx-runtime").JSX.Element;
2
+ export default JavaScriptToolsPanel;
@@ -0,0 +1,285 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useMemo, useRef, useState, } from "react";
3
+ import { FileCode2, Plus, RefreshCw, Search, ShieldAlert, Trash2 } from "lucide-react";
4
+ import { toast } from "sonner";
5
+ import { Button } from "../../../components/ui/button";
6
+ import { Input } from "../../../components/ui/input";
7
+ import { cn } from "../../../lib/utils";
8
+ import { useEditContext } from "../../client/editContext";
9
+ import { Splitter } from "../../ui/Splitter";
10
+ import { updateAgentContext } from "../../services/agentService";
11
+ import { setupWizardService, } from "../../../setup/services/setupWizardService";
12
+ import { JavaScriptToolConfigPanel } from "./JavaScriptToolConfigPanel";
13
+ import { JavaScriptToolAgentPanel } from "./JavaScriptToolAgentPanel";
14
+ import { CreateJavaScriptToolDialog } from "./CreateJavaScriptToolDialog";
15
+ const JAVA_SCRIPT_TOOL_ROOT_PATHS = [
16
+ "/sitecore/system/parhelia/settings/ai tools/scripts",
17
+ ];
18
+ const JAVA_SCRIPT_TOOL_EXTERNAL_REFRESH_DEBOUNCE_MS = 350;
19
+ function isJavaScriptToolItemChange(changes, selectedToolId) {
20
+ const normalizedSelectedToolId = selectedToolId?.toLowerCase() ?? null;
21
+ return changes.some((change) => {
22
+ const itemId = change.item?.id?.trim().toLowerCase();
23
+ if (normalizedSelectedToolId && itemId === normalizedSelectedToolId) {
24
+ return false;
25
+ }
26
+ const path = change.item?.path?.trim().toLowerCase();
27
+ if (path &&
28
+ JAVA_SCRIPT_TOOL_ROOT_PATHS.some((root) => path.startsWith(root))) {
29
+ return true;
30
+ }
31
+ return false;
32
+ });
33
+ }
34
+ function buildJavaScriptToolAgentContext(toolId) {
35
+ return {
36
+ activeWorkspace: "settings",
37
+ currentItemId: toolId,
38
+ additionalData: {
39
+ activeWorkspace: "settings",
40
+ javaScriptToolEditor: true,
41
+ javaScriptToolId: toolId,
42
+ },
43
+ };
44
+ }
45
+ export function JavaScriptToolsPanel() {
46
+ const editContext = useEditContext();
47
+ const [state, setState] = useState("loading");
48
+ const [tools, setTools] = useState([]);
49
+ const [error, setError] = useState(null);
50
+ const [searchQuery, setSearchQuery] = useState("");
51
+ const [selectedToolId, setSelectedToolId] = useState(null);
52
+ const [showCreateDialog, setShowCreateDialog] = useState(false);
53
+ const [deleting, setDeleting] = useState(false);
54
+ const [agentId, setAgentId] = useState(null);
55
+ const [agentLoading, setAgentLoading] = useState(false);
56
+ const [agentResetting, setAgentResetting] = useState(false);
57
+ const [agentError, setAgentError] = useState(null);
58
+ const selectedToolIdRef = useRef(null);
59
+ const loadToolsRef = useRef(null);
60
+ const externalRefreshTimeoutRef = useRef(null);
61
+ useEffect(() => {
62
+ selectedToolIdRef.current = selectedToolId;
63
+ }, [selectedToolId]);
64
+ const filteredTools = useMemo(() => {
65
+ const query = searchQuery.trim().toLowerCase();
66
+ if (!query) {
67
+ return tools;
68
+ }
69
+ return tools.filter((tool) => {
70
+ return (tool.name.toLowerCase().includes(query) ||
71
+ tool.path.toLowerCase().includes(query) ||
72
+ (tool.description ?? "").toLowerCase().includes(query));
73
+ });
74
+ }, [searchQuery, tools]);
75
+ const selectedTool = useMemo(() => tools.find((tool) => tool.id === selectedToolId) ?? null, [selectedToolId, tools]);
76
+ const loadTools = useCallback(async (preferredToolId) => {
77
+ try {
78
+ setState("loading");
79
+ setError(null);
80
+ const loadedTools = await setupWizardService.getJavaScriptTools();
81
+ setTools(loadedTools);
82
+ const resolvedSelection = loadedTools.find((tool) => tool.id === preferredToolId)?.id ??
83
+ loadedTools.find((tool) => tool.id === selectedToolIdRef.current)?.id ??
84
+ null;
85
+ setSelectedToolId(resolvedSelection);
86
+ setState("success");
87
+ }
88
+ catch (loadError) {
89
+ setState("error");
90
+ setError(loadError instanceof Error
91
+ ? loadError.message
92
+ : "Failed to load JavaScript tools");
93
+ setTools([]);
94
+ setSelectedToolId(null);
95
+ }
96
+ }, []);
97
+ loadToolsRef.current = loadTools;
98
+ useEffect(() => {
99
+ void loadTools();
100
+ }, [loadTools]);
101
+ const syncAgentContext = useCallback(async (nextAgentId, toolId) => {
102
+ try {
103
+ await updateAgentContext(nextAgentId, buildJavaScriptToolAgentContext(toolId));
104
+ }
105
+ catch (contextError) {
106
+ setAgentError(contextError instanceof Error
107
+ ? `Failed to update JavaScript tool assistant context: ${contextError.message}`
108
+ : "Failed to update JavaScript tool assistant context");
109
+ }
110
+ }, []);
111
+ const selectedToolIdentity = selectedTool?.id ?? null;
112
+ useEffect(() => {
113
+ let cancelled = false;
114
+ if (!selectedToolIdentity) {
115
+ setAgentId(null);
116
+ setAgentLoading(false);
117
+ setAgentError(null);
118
+ return () => {
119
+ cancelled = true;
120
+ };
121
+ }
122
+ setAgentLoading(true);
123
+ setAgentId(null);
124
+ setAgentError(null);
125
+ void setupWizardService
126
+ .getJavaScriptToolAgent(selectedToolIdentity)
127
+ .then((session) => {
128
+ if (cancelled)
129
+ return;
130
+ setAgentId(session.agentId);
131
+ setAgentLoading(false);
132
+ })
133
+ .catch((loadError) => {
134
+ if (cancelled)
135
+ return;
136
+ setAgentId(null);
137
+ setAgentLoading(false);
138
+ setAgentError(loadError instanceof Error
139
+ ? loadError.message
140
+ : "Failed to load JavaScript tool assistant");
141
+ });
142
+ return () => {
143
+ cancelled = true;
144
+ };
145
+ }, [selectedToolIdentity]);
146
+ useEffect(() => {
147
+ if (!agentId || agentLoading || !selectedToolIdentity)
148
+ return;
149
+ void syncAgentContext(agentId, selectedToolIdentity);
150
+ }, [agentId, agentLoading, selectedToolIdentity, syncAgentContext]);
151
+ const queueExternalRefresh = useCallback(() => {
152
+ if (externalRefreshTimeoutRef.current !== null) {
153
+ window.clearTimeout(externalRefreshTimeoutRef.current);
154
+ }
155
+ externalRefreshTimeoutRef.current = window.setTimeout(() => {
156
+ externalRefreshTimeoutRef.current = null;
157
+ void loadToolsRef.current?.(selectedToolIdRef.current);
158
+ }, JAVA_SCRIPT_TOOL_EXTERNAL_REFRESH_DEBOUNCE_MS);
159
+ }, []);
160
+ useEffect(() => {
161
+ if (!editContext?.itemsRepository) {
162
+ return;
163
+ }
164
+ return editContext.itemsRepository.subscribeItemsChanged((changes) => {
165
+ if (!isJavaScriptToolItemChange(changes, selectedToolIdRef.current)) {
166
+ return;
167
+ }
168
+ queueExternalRefresh();
169
+ });
170
+ }, [editContext, queueExternalRefresh]);
171
+ useEffect(() => {
172
+ return () => {
173
+ if (externalRefreshTimeoutRef.current !== null) {
174
+ window.clearTimeout(externalRefreshTimeoutRef.current);
175
+ }
176
+ };
177
+ }, []);
178
+ const handleDeleteSelectedTool = useCallback(async () => {
179
+ if (!selectedTool)
180
+ return;
181
+ if (!editContext?.confirm) {
182
+ return;
183
+ }
184
+ editContext.confirm({
185
+ header: "Delete JavaScript Tool",
186
+ message: `Delete JavaScript tool '${selectedTool.name}'? This cannot be undone.`,
187
+ acceptLabel: "Delete",
188
+ showCancel: true,
189
+ accept: async () => {
190
+ try {
191
+ setDeleting(true);
192
+ await setupWizardService.deleteJavaScriptTool(selectedTool.id);
193
+ toast.success(`Deleted '${selectedTool.name}'`);
194
+ await loadTools();
195
+ }
196
+ catch (deleteError) {
197
+ const message = deleteError instanceof Error
198
+ ? deleteError.message
199
+ : "Failed to delete JavaScript tool";
200
+ toast.error(message);
201
+ }
202
+ finally {
203
+ setDeleting(false);
204
+ }
205
+ },
206
+ });
207
+ }, [editContext, loadTools, selectedTool]);
208
+ const handleResetAssistant = useCallback(async () => {
209
+ if (!selectedTool)
210
+ return;
211
+ try {
212
+ setAgentResetting(true);
213
+ setAgentError(null);
214
+ const session = await setupWizardService.resetJavaScriptToolAgent(selectedTool.id);
215
+ setAgentId(session.agentId);
216
+ await syncAgentContext(session.agentId, selectedTool.id);
217
+ }
218
+ catch (resetError) {
219
+ const message = resetError instanceof Error
220
+ ? resetError.message
221
+ : "Failed to restart the JavaScript tool assistant";
222
+ setAgentError(message);
223
+ toast.error(message);
224
+ }
225
+ finally {
226
+ setAgentResetting(false);
227
+ }
228
+ }, [selectedTool, syncAgentContext]);
229
+ const handleCreated = useCallback(async (toolId) => {
230
+ await loadTools(toolId);
231
+ toast.success("JavaScript tool created");
232
+ }, [loadTools]);
233
+ const toolsListContent = (_jsx("div", { className: "h-full overflow-auto p-4", children: _jsxs("div", { className: "flex min-h-[320px] flex-col overflow-hidden rounded-lg border border-gray-200 bg-white xl:min-h-0", children: [_jsxs("div", { className: "space-y-4 border-b border-gray-100 px-4 py-4", children: [_jsx("div", { className: "flex items-center justify-end gap-3", children: _jsxs("div", { className: "flex items-center gap-1", children: [_jsxs(Button, { size: "sm", onClick: () => setShowCreateDialog(true), disabled: state === "loading", children: [_jsx(Plus, { className: "h-4 w-4", strokeWidth: 1.5 }), "Add"] }), _jsx(Button, { size: "sm", variant: "ghost", onClick: () => void loadTools(selectedToolIdRef.current), disabled: state === "loading", children: _jsx(RefreshCw, { className: cn("h-4 w-4", state === "loading" && "animate-spin"), strokeWidth: 1.5 }) })] }) }), _jsxs("div", { className: "rounded border border-blue-200 bg-blue-50 px-3 py-2 text-xs text-blue-900", children: ["Custom JavaScript tools are stored under", _jsx("code", { className: "mx-1 rounded bg-blue-100 px-1 py-0.5 text-[11px]", children: "/sitecore/system/Parhelia/Settings/Ai Tools/Scripts" }), "and can be assigned like any other tool."] }), _jsxs("div", { className: "relative", children: [_jsx(Search, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-gray-400", strokeWidth: 1.5 }), _jsx(Input, { type: "text", placeholder: "Search JavaScript tools...", value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), className: "pl-9" })] }), error ? (_jsx("div", { className: "rounded border border-red-200 bg-red-50 p-2 text-xs whitespace-pre-wrap text-red-700", children: error })) : null] }), _jsx("div", { className: "min-h-0 flex-1 overflow-y-auto", children: filteredTools.length === 0 ? (_jsxs("div", { className: "flex h-full flex-col items-center justify-center px-6 py-12 text-center", children: [_jsx(FileCode2, { className: "mb-4 h-10 w-10 text-gray-300", strokeWidth: 1.25 }), _jsx("p", { className: "text-sm font-medium text-gray-600", children: tools.length === 0
234
+ ? "No JavaScript tools yet"
235
+ : "No matching JavaScript tools" }), _jsx("p", { className: "mt-1 text-xs text-gray-500", children: tools.length === 0
236
+ ? "Create a custom JavaScript tool to expose a hidden script behind a normal tool signature."
237
+ : "Try a different search term." })] })) : (_jsx("div", { className: "space-y-3 p-3", children: filteredTools.map((tool) => {
238
+ const isSelected = tool.id === selectedToolId;
239
+ return (_jsxs("button", { type: "button", onClick: () => setSelectedToolId(tool.id), className: cn("w-full rounded-lg border p-4 text-left transition-shadow hover:shadow-sm", isSelected
240
+ ? "border-blue-400 bg-blue-50"
241
+ : "border-gray-200 bg-white"), children: [_jsxs("div", { className: "flex items-start justify-between gap-3", children: [_jsxs("div", { className: "min-w-0", children: [_jsx("div", { className: "truncate text-sm font-medium text-gray-900", children: tool.name }), _jsx("div", { className: cn("truncate text-[11px]", isSelected ? "text-blue-700" : "text-gray-500"), children: tool.path })] }), tool.needsConfiguration ? (_jsx("span", { className: cn("shrink-0 rounded-full px-2 py-0.5 text-[10px] font-medium", isSelected
242
+ ? "bg-blue-100 text-blue-800"
243
+ : "bg-amber-100 text-amber-800"), children: "Needs setup" })) : null] }), tool.description ? (_jsx("p", { className: cn("line-clamp-2 text-xs", isSelected ? "text-blue-900" : "text-gray-600"), children: tool.description })) : (_jsx("p", { className: cn("text-xs italic", isSelected ? "text-blue-700" : "text-gray-500"), children: "No description yet" }))] }, tool.id));
244
+ }) })) })] }) }));
245
+ const detailsContent = (_jsx("div", { className: "h-full overflow-auto p-4", children: _jsx("div", { className: "flex min-h-[360px] flex-col overflow-hidden rounded-lg border border-gray-200 bg-white xl:min-h-0", children: selectedTool ? (_jsx("div", { className: "min-h-0 flex-1", children: _jsx(JavaScriptToolConfigPanel, { itemId: selectedTool.id, title: selectedTool.name, actions: _jsxs(Button, { variant: "outline", size: "sm", onClick: () => void handleDeleteSelectedTool(), disabled: deleting, title: "Delete selected JavaScript tool", children: [deleting ? (_jsx(RefreshCw, { className: "h-4 w-4 animate-spin", strokeWidth: 1.5 })) : (_jsx(Trash2, { className: "h-4 w-4", strokeWidth: 1.5 })), "Delete Tool"] }) }) })) : (_jsxs("div", { className: "flex h-full min-h-[360px] flex-col items-center justify-center gap-3 p-8 text-center xl:min-h-0", children: [_jsx(FileCode2, { className: "h-10 w-10 text-gray-300", strokeWidth: 1.25 }), _jsxs("div", { className: "space-y-1", children: [_jsx("div", { className: "text-sm font-medium text-gray-700", children: "Select a JavaScript tool" }), _jsx("div", { className: "text-xs text-gray-500", children: "Choose a tool from the list to edit its schema, script, and approval logic." })] })] })) }) }));
246
+ const agentContent = selectedTool ? (_jsx("div", { className: "h-full overflow-auto p-4", children: _jsx("div", { className: "flex min-h-[360px] flex-col overflow-hidden rounded-lg border border-gray-200 bg-white xl:min-h-0", children: _jsx("div", { className: "min-h-0 flex-1", children: _jsx(JavaScriptToolAgentPanel, { toolName: selectedTool.name, agentId: agentId, loading: agentLoading, resetting: agentResetting, error: agentError, onStartOver: handleResetAssistant, headerStart: selectedTool.hasApprovalScript ? (_jsx("div", { className: "rounded-full bg-violet-100 p-1 text-violet-700", children: _jsx(ShieldAlert, { className: "h-3.5 w-3.5", strokeWidth: 1.5 }) })) : null }) }) }) })) : null;
247
+ const panels = selectedTool
248
+ ? [
249
+ {
250
+ name: "javascript-tools-list",
251
+ defaultSize: 320,
252
+ content: toolsListContent,
253
+ className: "overflow-hidden",
254
+ },
255
+ {
256
+ name: "javascript-tools-details",
257
+ defaultSize: 520,
258
+ content: detailsContent,
259
+ className: "overflow-hidden",
260
+ },
261
+ {
262
+ name: "javascript-tools-agent",
263
+ defaultSize: 560,
264
+ content: agentContent,
265
+ className: "overflow-hidden",
266
+ },
267
+ ]
268
+ : [
269
+ {
270
+ name: "javascript-tools-list",
271
+ defaultSize: 320,
272
+ content: toolsListContent,
273
+ className: "overflow-hidden",
274
+ },
275
+ {
276
+ name: "javascript-tools-details",
277
+ defaultSize: 520,
278
+ content: detailsContent,
279
+ className: "overflow-hidden",
280
+ },
281
+ ];
282
+ return (_jsxs(_Fragment, { children: [_jsx(Splitter, { panels: panels, localStorageKey: "javascript-tools-panel-splitter-v1", direction: "horizontal", className: "h-full", splitterClassName: "bg-gray-200 hover:bg-gray-300 w-[6px]" }), _jsx(CreateJavaScriptToolDialog, { open: showCreateDialog, onOpenChange: setShowCreateDialog, onCreated: handleCreated })] }));
283
+ }
284
+ export default JavaScriptToolsPanel;
285
+ //# sourceMappingURL=JavaScriptToolsPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JavaScriptToolsPanel.js","sourceRoot":"","sources":["../../../../src/editor/settings/panels/JavaScriptToolsPanel.tsx"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ type ModelConfigPanelProps = {
5
5
  onClose?: () => void;
6
6
  actions?: React.ReactNode;
7
7
  refreshToken?: number;
8
+ onModelRenamed?: () => void | Promise<void>;
8
9
  };
9
- export declare function ModelConfigPanel({ itemId, title, onClose, actions, refreshToken, }: ModelConfigPanelProps): import("react/jsx-runtime").JSX.Element;
10
+ export declare function ModelConfigPanel({ itemId, title, onClose, actions, refreshToken, onModelRenamed, }: ModelConfigPanelProps): import("react/jsx-runtime").JSX.Element;
10
11
  export default ModelConfigPanel;
@@ -1,6 +1,81 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { Box, Cpu, DollarSign, Image as ImageIcon, Sparkles, } from "lucide-react";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useMemo, useState } from "react";
3
+ import { Box, Cpu, DollarSign, Image as ImageIcon, RefreshCw, Save, Sparkles, } from "lucide-react";
4
+ import { Button } from "../../../components/ui/button";
5
+ import { Input } from "../../../components/ui/input";
6
+ import { useEditContext } from "../../client/editContext";
3
7
  import { GroupedFieldConfigPanel, } from "./GroupedFieldConfigPanel";
8
+ function ModelInternalNameSection({ itemId, refreshToken = 0, onSaved, }) {
9
+ const editContext = useEditContext();
10
+ const itemDescriptor = useMemo(() => ({
11
+ id: itemId,
12
+ language: editContext?.item?.language ??
13
+ editContext?.currentItemDescriptor?.language ??
14
+ "en",
15
+ version: 0,
16
+ }), [
17
+ editContext?.currentItemDescriptor?.language,
18
+ editContext?.item?.language,
19
+ itemId,
20
+ ]);
21
+ const [value, setValue] = useState("");
22
+ const [initialValue, setInitialValue] = useState("");
23
+ const [loading, setLoading] = useState(true);
24
+ const [saving, setSaving] = useState(false);
25
+ const [error, setError] = useState(null);
26
+ useEffect(() => {
27
+ let cancelled = false;
28
+ const load = async () => {
29
+ if (!editContext)
30
+ return;
31
+ try {
32
+ setLoading(true);
33
+ setError(null);
34
+ const item = await editContext.itemsRepository.getItem(itemDescriptor);
35
+ if (cancelled || !item)
36
+ return;
37
+ setValue(item.name || "");
38
+ setInitialValue(item.name || "");
39
+ }
40
+ catch (e) {
41
+ if (!cancelled) {
42
+ setError(e instanceof Error ? e.message : "Failed to load item name.");
43
+ }
44
+ }
45
+ finally {
46
+ if (!cancelled) {
47
+ setLoading(false);
48
+ }
49
+ }
50
+ };
51
+ void load();
52
+ return () => {
53
+ cancelled = true;
54
+ };
55
+ }, [editContext, itemDescriptor, refreshToken]);
56
+ const handleSave = useCallback(async () => {
57
+ const nextValue = value.trim();
58
+ if (!editContext || !nextValue || nextValue === initialValue) {
59
+ return;
60
+ }
61
+ try {
62
+ setSaving(true);
63
+ setError(null);
64
+ await editContext.operations.renameItem(itemDescriptor, nextValue);
65
+ setInitialValue(nextValue);
66
+ setValue(nextValue);
67
+ await onSaved?.();
68
+ }
69
+ catch (e) {
70
+ setError(e instanceof Error ? e.message : "Failed to rename item.");
71
+ }
72
+ finally {
73
+ setSaving(false);
74
+ }
75
+ }, [editContext, initialValue, itemDescriptor, onSaved, value]);
76
+ const isDirty = value.trim().length > 0 && value.trim() !== initialValue;
77
+ return (_jsxs("div", { className: "overflow-hidden rounded-lg border border-gray-200 bg-white shadow-sm", children: [_jsxs("div", { className: "flex items-center gap-2.5 border-b border-gray-100 px-4 py-3", children: [_jsx("span", { className: "flex h-6 w-6 items-center justify-center rounded-md bg-gray-100 text-gray-500", children: _jsx(Box, { className: "h-4 w-4", strokeWidth: 1.5 }) }), _jsxs("div", { children: [_jsx("h3", { className: "text-xs font-semibold tracking-wide text-gray-800", children: "Internal Name" }), _jsx("p", { className: "text-[11px] leading-tight text-gray-400", children: "Sitecore item name used internally. Separate from the provider model ID." })] })] }), _jsxs("div", { className: "space-y-3 px-4 py-4", children: [_jsx(Input, { value: value, onChange: (e) => setValue(e.target.value), placeholder: "Enter internal item name", disabled: loading || saving }), error && _jsx("p", { className: "text-xs text-red-600", children: error }), _jsx("div", { className: "flex justify-end", children: _jsxs(Button, { size: "sm", onClick: () => void handleSave(), disabled: loading || saving || !isDirty, children: [saving ? (_jsx(RefreshCw, { className: "mr-1 h-4 w-4 animate-spin", strokeWidth: 1.5 })) : (_jsx(Save, { className: "mr-1 h-4 w-4", strokeWidth: 1.5 })), "Save"] }) })] })] }));
78
+ }
4
79
  const FIELD_GROUPS = [
5
80
  {
6
81
  title: "Model",
@@ -36,16 +111,22 @@ const FIELD_GROUPS = [
36
111
  },
37
112
  {
38
113
  title: "Image pricing",
39
- description: "Costs for image models.",
114
+ description: "USD per million tokens for image models.",
40
115
  icon: _jsx(ImageIcon, { className: "h-4 w-4", strokeWidth: 1.5 }),
41
116
  fieldNames: [
42
- ["Image Token Cost"],
43
- ["Provider Pricing JSON"],
117
+ ["Output Image Token Cost Per Million", "Image Token Cost"],
118
+ ["Input Image Token Cost Per Million"],
119
+ ["Input Text Token Cost Per Million"],
44
120
  ],
45
121
  },
46
122
  ];
47
- export function ModelConfigPanel({ itemId, title, onClose, actions, refreshToken = 0, }) {
48
- return (_jsx(GroupedFieldConfigPanel, { itemId: itemId, title: title, onClose: onClose, actions: actions, refreshToken: refreshToken, fieldGroups: FIELD_GROUPS, headerIcon: _jsx(Sparkles, { className: "h-4 w-4", strokeWidth: 1.5 }), loadErrorTitle: "Unable to load model", emptyMessage: "No editable settings were found for this model.", fallbackTitle: "AI Model", footerLeadingText: "For all template fields and sections use the " }));
123
+ export function ModelConfigPanel({ itemId, title, onClose, actions, refreshToken = 0, onModelRenamed, }) {
124
+ const [localRefreshToken, setLocalRefreshToken] = useState(0);
125
+ const handleModelRenamed = useCallback(async () => {
126
+ setLocalRefreshToken((current) => current + 1);
127
+ await onModelRenamed?.();
128
+ }, [onModelRenamed]);
129
+ return (_jsx(GroupedFieldConfigPanel, { itemId: itemId, title: title, onClose: onClose, actions: actions, supplementalContent: _jsx(ModelInternalNameSection, { itemId: itemId, refreshToken: localRefreshToken, onSaved: handleModelRenamed }), refreshToken: refreshToken + localRefreshToken, fieldGroups: FIELD_GROUPS, headerIcon: _jsx(Sparkles, { className: "h-4 w-4", strokeWidth: 1.5 }), loadErrorTitle: "Unable to load model", emptyMessage: "No editable settings were found for this model.", fallbackTitle: "AI Model", footerLeadingText: "For all template fields and sections use the " }));
49
130
  }
50
131
  export default ModelConfigPanel;
51
132
  //# sourceMappingURL=ModelConfigPanel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ModelConfigPanel.js","sourceRoot":"","sources":["../../../../src/editor/settings/panels/ModelConfigPanel.tsx"],"names":[],"mappings":";AACA,OAAO,EACL,GAAG,EACH,GAAG,EACH,UAAU,EACV,KAAK,IAAI,SAAS,EAClB,QAAQ,GACT,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,uBAAuB,GAExB,MAAM,2BAA2B,CAAC;AAUnC,MAAM,YAAY,GAA2B;IAC3C;QACE,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,oCAAoC;QACjD,IAAI,EAAE,KAAC,GAAG,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,GAAG,GAAI;QACnD,UAAU,EAAE;YACV,CAAC,YAAY,CAAC;YACd,CAAC,UAAU,CAAC;YACZ,CAAC,WAAW,CAAC;YACb,CAAC,uBAAuB,CAAC;SAC1B;KACF;IACD;QACE,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,qCAAqC;QAClD,IAAI,EAAE,KAAC,GAAG,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,GAAG,GAAI;QACnD,UAAU,EAAE;YACV,CAAC,kBAAkB,CAAC;YACpB,CAAC,qBAAqB,CAAC;YACvB,CAAC,2BAA2B,CAAC;SAC9B;KACF;IACD;QACE,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,+CAA+C;QAC5D,IAAI,EAAE,KAAC,UAAU,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,GAAG,GAAI;QAC1D,UAAU,EAAE;YACV,CAAC,+BAA+B,CAAC;YACjC,CAAC,gCAAgC,CAAC;YAClC,CAAC,sCAAsC,CAAC;YACxC,CAAC,qCAAqC,CAAC;SACxC;KACF;IACD;QACE,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,yBAAyB;QACtC,IAAI,EAAE,KAAC,SAAS,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,GAAG,GAAI;QACzD,UAAU,EAAE;YACV,CAAC,kBAAkB,CAAC;YACpB,CAAC,uBAAuB,CAAC;SAC1B;KACF;CACF,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,EAC/B,MAAM,EACN,KAAK,EACL,OAAO,EACP,OAAO,EACP,YAAY,GAAG,CAAC,GACM;IACtB,OAAO,CACL,KAAC,uBAAuB,IACtB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,YAAY,EACzB,UAAU,EAAE,KAAC,QAAQ,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,GAAG,GAAI,EAC9D,cAAc,EAAC,sBAAsB,EACrC,YAAY,EAAC,iDAAiD,EAC9D,aAAa,EAAC,UAAU,EACxB,iBAAiB,EAAC,+CAA+C,GACjE,CACH,CAAC;AACJ,CAAC;AAED,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"ModelConfigPanel.js","sourceRoot":"","sources":["../../../../src/editor/settings/panels/ModelConfigPanel.tsx"],"names":[],"mappings":"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"}