@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.
- package/dist/agents-view/AgentCard.js +2 -1
- package/dist/agents-view/AgentCard.js.map +1 -1
- package/dist/agents-view/AgentsView.js +2 -1
- package/dist/agents-view/AgentsView.js.map +1 -1
- package/dist/agents-view/AgentsWorkspaceView.js +12 -5
- package/dist/agents-view/AgentsWorkspaceView.js.map +1 -1
- package/dist/agents-view/ProfileAgentsGroup.js +2 -1
- package/dist/agents-view/ProfileAgentsGroup.js.map +1 -1
- package/dist/components/ui/input.js +1 -1
- package/dist/components/ui/input.js.map +1 -1
- package/dist/components/ui/tabs.d.ts +1 -1
- package/dist/components/ui/tabs.js +4 -11
- package/dist/components/ui/tabs.js.map +1 -1
- package/dist/config/config.js +33 -8
- package/dist/config/config.js.map +1 -1
- package/dist/config/types.d.ts +7 -0
- package/dist/config/types.js.map +1 -1
- package/dist/editor/FieldHistory.js +49 -31
- package/dist/editor/FieldHistory.js.map +1 -1
- package/dist/editor/ai/AgentDocumentList.js +32 -14
- package/dist/editor/ai/AgentDocumentList.js.map +1 -1
- package/dist/editor/ai/AgentGreeting.js +3 -2
- package/dist/editor/ai/AgentGreeting.js.map +1 -1
- package/dist/editor/ai/AgentProfileSelector.js +2 -1
- package/dist/editor/ai/AgentProfileSelector.js.map +1 -1
- package/dist/editor/ai/AgentTerminal.js +544 -169
- package/dist/editor/ai/AgentTerminal.js.map +1 -1
- package/dist/editor/ai/Agents.js +26 -26
- package/dist/editor/ai/Agents.js.map +1 -1
- package/dist/editor/ai/AiResponseMessage.js +3 -4
- package/dist/editor/ai/AiResponseMessage.js.map +1 -1
- package/dist/editor/ai/GuidanceOverlay.js +17 -11
- package/dist/editor/ai/GuidanceOverlay.js.map +1 -1
- package/dist/editor/ai/InlineAiDialog.js +3 -2
- package/dist/editor/ai/InlineAiDialog.js.map +1 -1
- package/dist/editor/ai/MediaImage.js +40 -8
- package/dist/editor/ai/MediaImage.js.map +1 -1
- package/dist/editor/ai/SpawnedAgentsPanel.js +10 -12
- package/dist/editor/ai/SpawnedAgentsPanel.js.map +1 -1
- package/dist/editor/ai/ToolCallDisplay.js +4 -1
- package/dist/editor/ai/ToolCallDisplay.js.map +1 -1
- package/dist/editor/ai/agentDiagnostics.js +1 -3
- package/dist/editor/ai/agentDiagnostics.js.map +1 -1
- package/dist/editor/ai/dialogs/AgentDialogHandler.d.ts +1 -8
- package/dist/editor/ai/dialogs/AgentDialogHandler.js +89 -12
- package/dist/editor/ai/dialogs/AgentDialogHandler.js.map +1 -1
- package/dist/editor/ai/dialogs/agentDialogTypes.d.ts +62 -0
- package/dist/editor/ai/dialogs/agentDialogTypes.js +2 -0
- package/dist/editor/ai/dialogs/agentDialogTypes.js.map +1 -1
- package/dist/editor/ai/dialogs/browserBoundCapture.d.ts +29 -0
- package/dist/editor/ai/dialogs/browserBoundCapture.js +117 -0
- package/dist/editor/ai/dialogs/browserBoundCapture.js.map +1 -0
- package/dist/editor/ai/dialogs/capturePageDom.d.ts +3 -0
- package/dist/editor/ai/dialogs/capturePageDom.js +64 -0
- package/dist/editor/ai/dialogs/capturePageDom.js.map +1 -0
- package/dist/editor/ai/dialogs/capturePageScreenshot.d.ts +3 -0
- package/dist/editor/ai/dialogs/capturePageScreenshot.js +446 -0
- package/dist/editor/ai/dialogs/capturePageScreenshot.js.map +1 -0
- package/dist/editor/ai/useAgentStatus.js +11 -0
- package/dist/editor/ai/useAgentStatus.js.map +1 -1
- package/dist/editor/client/EditorShell.js +39 -41
- package/dist/editor/client/EditorShell.js.map +1 -1
- package/dist/editor/client/editContext.d.ts +5 -1
- package/dist/editor/client/editContext.js.map +1 -1
- package/dist/editor/client/hooks/useEditorWebSocket.js +56 -44
- package/dist/editor/client/hooks/useEditorWebSocket.js.map +1 -1
- package/dist/editor/client/itemsRepository.js +10 -6
- package/dist/editor/client/itemsRepository.js.map +1 -1
- package/dist/editor/client/pageModelBuilder.js +1 -1
- package/dist/editor/client/pageModelBuilder.js.map +1 -1
- package/dist/editor/commands/componentCommands.js +3 -49
- package/dist/editor/commands/componentCommands.js.map +1 -1
- package/dist/editor/commands/customCommandConverter.js +2 -1
- package/dist/editor/commands/customCommandConverter.js.map +1 -1
- package/dist/editor/commands/handlers/agentHandler.js +2 -1
- package/dist/editor/commands/handlers/agentHandler.js.map +1 -1
- package/dist/editor/page-editor-chrome/FrameMenu.js +1 -1
- package/dist/editor/page-editor-chrome/FrameMenu.js.map +1 -1
- package/dist/editor/page-editor-chrome/PlaceholderDropZone.js +11 -11
- package/dist/editor/page-editor-chrome/PlaceholderDropZone.js.map +1 -1
- package/dist/editor/page-viewer/PageViewerFrame.js +21 -8
- package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
- package/dist/editor/page-viewer/pageModelSkeletonBuilder.js +107 -49
- package/dist/editor/page-viewer/pageModelSkeletonBuilder.js.map +1 -1
- package/dist/editor/page-viewer/pageViewContext.d.ts +1 -0
- package/dist/editor/page-viewer/pageViewContext.js +51 -14
- package/dist/editor/page-viewer/pageViewContext.js.map +1 -1
- package/dist/editor/reviews/CreateReviewDialog.js +1 -1
- package/dist/editor/reviews/CreateReviewDialog.js.map +1 -1
- package/dist/editor/reviews/DiffView.js +7 -14
- package/dist/editor/reviews/DiffView.js.map +1 -1
- package/dist/editor/reviews/useMultiReview.js +2 -2
- package/dist/editor/reviews/useMultiReview.js.map +1 -1
- package/dist/editor/services/agentService.d.ts +31 -1
- package/dist/editor/services/agentService.js +107 -72
- package/dist/editor/services/agentService.js.map +1 -1
- package/dist/editor/services/aiService.d.ts +3 -1
- package/dist/editor/services/aiService.js.map +1 -1
- package/dist/editor/services/indexService.js +1 -1
- package/dist/editor/services/indexService.js.map +1 -1
- package/dist/editor/settings/SettingsView.js +18 -16
- package/dist/editor/settings/SettingsView.js.map +1 -1
- package/dist/editor/settings/Status.js +5 -4
- package/dist/editor/settings/Status.js.map +1 -1
- package/dist/editor/settings/index/useIndexStatus.js +19 -21
- package/dist/editor/settings/index/useIndexStatus.js.map +1 -1
- package/dist/editor/settings/panels/CreateJavaScriptToolDialog.d.ts +7 -0
- package/dist/editor/settings/panels/CreateJavaScriptToolDialog.js +48 -0
- package/dist/editor/settings/panels/CreateJavaScriptToolDialog.js.map +1 -0
- package/dist/editor/settings/panels/GroupedFieldConfigPanel.d.ts +2 -1
- package/dist/editor/settings/panels/GroupedFieldConfigPanel.js +2 -2
- package/dist/editor/settings/panels/GroupedFieldConfigPanel.js.map +1 -1
- package/dist/editor/settings/panels/JavaScriptToolAgentPanel.d.ts +12 -0
- package/dist/editor/settings/panels/JavaScriptToolAgentPanel.js +46 -0
- package/dist/editor/settings/panels/JavaScriptToolAgentPanel.js.map +1 -0
- package/dist/editor/settings/panels/JavaScriptToolConfigPanel.d.ts +9 -0
- package/dist/editor/settings/panels/JavaScriptToolConfigPanel.js +34 -0
- package/dist/editor/settings/panels/JavaScriptToolConfigPanel.js.map +1 -0
- package/dist/editor/settings/panels/JavaScriptToolsPanel.d.ts +2 -0
- package/dist/editor/settings/panels/JavaScriptToolsPanel.js +285 -0
- package/dist/editor/settings/panels/JavaScriptToolsPanel.js.map +1 -0
- package/dist/editor/settings/panels/ModelConfigPanel.d.ts +2 -1
- package/dist/editor/settings/panels/ModelConfigPanel.js +88 -7
- package/dist/editor/settings/panels/ModelConfigPanel.js.map +1 -1
- package/dist/editor/settings/panels/ModelsPanel.js +129 -70
- package/dist/editor/settings/panels/ModelsPanel.js.map +1 -1
- package/dist/editor/settings/panels/ProjectTemplateAgentPanel.d.ts +1 -4
- package/dist/editor/settings/panels/ProjectTemplateAgentPanel.js +3 -3
- package/dist/editor/settings/panels/ProjectTemplateAgentPanel.js.map +1 -1
- package/dist/editor/settings/panels/ProjectTemplatesPanel.js +78 -22
- package/dist/editor/settings/panels/ProjectTemplatesPanel.js.map +1 -1
- package/dist/editor/settings/panels/ProvidersPanel.d.ts +1 -1
- package/dist/editor/settings/panels/ProvidersPanel.js +40 -55
- package/dist/editor/settings/panels/ProvidersPanel.js.map +1 -1
- package/dist/editor/settings/panels/index.d.ts +1 -0
- package/dist/editor/settings/panels/index.js +1 -0
- package/dist/editor/settings/panels/index.js.map +1 -1
- package/dist/editor/settings/status/coreStatusChecks.js +28 -17
- package/dist/editor/settings/status/coreStatusChecks.js.map +1 -1
- package/dist/editor/sidebar/ComponentPalette.js +2 -1
- package/dist/editor/sidebar/ComponentPalette.js.map +1 -1
- package/dist/editor/sidebar/ComponentTree.js +9 -9
- package/dist/editor/sidebar/ComponentTree.js.map +1 -1
- package/dist/editor/sidebar/EditHistory.js +3 -38
- package/dist/editor/sidebar/EditHistory.js.map +1 -1
- package/dist/editor/sidebar/MainContentTree.js +1 -1
- package/dist/editor/sidebar/MainContentTree.js.map +1 -1
- package/dist/editor/sidebar/NavigationPanelItem.js +2 -5
- package/dist/editor/sidebar/NavigationPanelItem.js.map +1 -1
- package/dist/editor/tree-indicators/GutterColumns.d.ts +3 -1
- package/dist/editor/tree-indicators/GutterColumns.js +4 -3
- package/dist/editor/tree-indicators/GutterColumns.js.map +1 -1
- package/dist/editor/tree-indicators/types.d.ts +1 -0
- package/dist/editor/views/CompareView.js +3 -1
- package/dist/editor/views/CompareView.js.map +1 -1
- package/dist/editor/views/EditorSlot.js +2 -2
- package/dist/editor/views/EditorSlot.js.map +1 -1
- package/dist/editor/views/ParheliaView.js +5 -6
- package/dist/editor/views/ParheliaView.js.map +1 -1
- package/dist/editor/views/SingleEditView.js +2 -0
- package/dist/editor/views/SingleEditView.js.map +1 -1
- package/dist/editor/views/editorSlotContext.js +35 -6
- package/dist/editor/views/editorSlotContext.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/sanitize.d.ts +10 -0
- package/dist/lib/sanitize.js +40 -0
- package/dist/lib/sanitize.js.map +1 -0
- package/dist/revision.d.ts +2 -2
- package/dist/revision.js +2 -2
- package/dist/setup/services/setupWizardService.d.ts +28 -0
- package/dist/setup/services/setupWizardService.js +34 -0
- package/dist/setup/services/setupWizardService.js.map +1 -1
- package/dist/setup/wizard/steps/AddModelDialog.js +9 -1
- package/dist/setup/wizard/steps/AddModelDialog.js.map +1 -1
- package/dist/setup/wizard/steps/ImportModelDialog.js +3 -1
- package/dist/setup/wizard/steps/ImportModelDialog.js.map +1 -1
- package/dist/splash-screen/NewPage.js +24 -24
- package/dist/splash-screen/NewPage.js.map +1 -1
- package/dist/task-board/TaskBoardWorkspace.js +29 -10
- package/dist/task-board/TaskBoardWorkspace.js.map +1 -1
- package/dist/task-board/components/ItemCollectionEditorDialog.js +5 -12
- package/dist/task-board/components/ItemCollectionEditorDialog.js.map +1 -1
- package/dist/task-board/components/ProjectAgentsPanel.js +1 -1
- package/dist/task-board/components/ProjectAgentsPanel.js.map +1 -1
- package/dist/task-board/components/ProjectOverviewContent.js +2 -2
- package/dist/task-board/components/ProjectOverviewContent.js.map +1 -1
- package/dist/task-board/components/ProjectPropertiesPanel.js +1 -1
- package/dist/task-board/components/ProjectPropertiesPanel.js.map +1 -1
- package/dist/task-board/components/TaskDetailPanel.js +1 -1
- package/dist/task-board/components/TaskDetailPanel.js.map +1 -1
- package/dist/task-board/components/TaskboardPersistentLogPanel.js +3 -1
- package/dist/task-board/components/TaskboardPersistentLogPanel.js.map +1 -1
- package/dist/task-board/taskAgentLink.js +1 -3
- package/dist/task-board/taskAgentLink.js.map +1 -1
- package/dist/task-board/views/DependencyGraphView.js +19 -1
- package/dist/task-board/views/DependencyGraphView.js.map +1 -1
- package/dist/tour/Tour.js +10 -4
- package/dist/tour/Tour.js.map +1 -1
- package/dist/tour/default-tour.js +51 -11
- package/dist/tour/default-tour.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/package.json +4 -1
- package/dist/editor/ComponentInfo.d.ts +0 -4
- package/dist/editor/ComponentInfo.js +0 -41
- 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,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 {
|
|
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: "
|
|
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
|
-
["
|
|
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
|
-
|
|
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":";
|
|
1
|
+
{"version":3,"file":"ModelConfigPanel.js","sourceRoot":"","sources":["../../../../src/editor/settings/panels/ModelConfigPanel.tsx"],"names":[],"mappings":"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"}
|