@parhelia/core 0.1.12368 → 0.1.12390

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 (225) hide show
  1. package/dist/agents-view/AgentsView.js +1 -1
  2. package/dist/agents-view/AgentsView.js.map +1 -1
  3. package/dist/components/ui/LanguageSelector.js +1 -3
  4. package/dist/components/ui/LanguageSelector.js.map +1 -1
  5. package/dist/components/ui/dialog.js +1 -1
  6. package/dist/components/ui/dialog.js.map +1 -1
  7. package/dist/config/config.js +53 -16
  8. package/dist/config/config.js.map +1 -1
  9. package/dist/config/notificationRoutes.js +10 -0
  10. package/dist/config/notificationRoutes.js.map +1 -1
  11. package/dist/config/types/workspace.d.ts +6 -0
  12. package/dist/config/types.d.ts +2 -5
  13. package/dist/editor/Editor.js +11 -4
  14. package/dist/editor/Editor.js.map +1 -1
  15. package/dist/editor/ai/AgentCostDisplay.d.ts +1 -0
  16. package/dist/editor/ai/AgentCostDisplay.js +1 -1
  17. package/dist/editor/ai/AgentCostDisplay.js.map +1 -1
  18. package/dist/editor/ai/AgentTerminal.js +144 -36
  19. package/dist/editor/ai/AgentTerminal.js.map +1 -1
  20. package/dist/editor/ai/AgentTerminalStatusBar.d.ts +2 -0
  21. package/dist/editor/ai/AgentTerminalStatusBar.js +22 -37
  22. package/dist/editor/ai/AgentTerminalStatusBar.js.map +1 -1
  23. package/dist/editor/ai/AiResponseMessage.js +0 -1
  24. package/dist/editor/ai/AiResponseMessage.js.map +1 -1
  25. package/dist/editor/ai/ContentInspectorPopover.d.ts +17 -0
  26. package/dist/editor/ai/ContentInspectorPopover.js +136 -0
  27. package/dist/editor/ai/ContentInspectorPopover.js.map +1 -0
  28. package/dist/editor/ai/ContextInfoBar.js +55 -2
  29. package/dist/editor/ai/ContextInfoBar.js.map +1 -1
  30. package/dist/editor/ai/InlineAiDialog.js +1 -7
  31. package/dist/editor/ai/InlineAiDialog.js.map +1 -1
  32. package/dist/editor/ai/ToolCallDisplay.d.ts +4 -0
  33. package/dist/editor/ai/ToolCallDisplay.js +43 -8
  34. package/dist/editor/ai/ToolCallDisplay.js.map +1 -1
  35. package/dist/editor/ai/dialogs/AgentDialogHandler.js +46 -22
  36. package/dist/editor/ai/dialogs/AgentDialogHandler.js.map +1 -1
  37. package/dist/editor/client/EditorShell.js +69 -26
  38. package/dist/editor/client/EditorShell.js.map +1 -1
  39. package/dist/editor/client/editContext.d.ts +3 -2
  40. package/dist/editor/client/hooks/useQuota.d.ts +2 -1
  41. package/dist/editor/client/hooks/useQuota.js.map +1 -1
  42. package/dist/editor/client/hooks/useSocketMessageHandler.js +28 -0
  43. package/dist/editor/client/hooks/useSocketMessageHandler.js.map +1 -1
  44. package/dist/editor/client/operations.d.ts +1 -0
  45. package/dist/editor/client/operations.js +67 -15
  46. package/dist/editor/client/operations.js.map +1 -1
  47. package/dist/editor/client/waitForEditOperationTerminal.d.ts +11 -0
  48. package/dist/editor/client/waitForEditOperationTerminal.js +40 -0
  49. package/dist/editor/client/waitForEditOperationTerminal.js.map +1 -0
  50. package/dist/editor/commands/commands.d.ts +11 -1
  51. package/dist/editor/commands/commands.js +12 -1
  52. package/dist/editor/commands/commands.js.map +1 -1
  53. package/dist/editor/commands/customCommandConverter.d.ts +8 -1
  54. package/dist/editor/commands/customCommandConverter.js +33 -4
  55. package/dist/editor/commands/customCommandConverter.js.map +1 -1
  56. package/dist/editor/commands/handlers/uiActionHandlers.d.ts +6 -0
  57. package/dist/editor/commands/handlers/uiActionHandlers.js +84 -0
  58. package/dist/editor/commands/handlers/uiActionHandlers.js.map +1 -0
  59. package/dist/editor/commands/itemCommands.js +6 -2
  60. package/dist/editor/commands/itemCommands.js.map +1 -1
  61. package/dist/editor/commands/keyboardCommands.d.ts +10 -0
  62. package/dist/editor/commands/keyboardCommands.js +142 -0
  63. package/dist/editor/commands/keyboardCommands.js.map +1 -0
  64. package/dist/editor/commands/undo.d.ts +9 -15
  65. package/dist/editor/commands/undo.js +24 -0
  66. package/dist/editor/commands/undo.js.map +1 -1
  67. package/dist/editor/menubar/PageSelector.js +1 -3
  68. package/dist/editor/menubar/PageSelector.js.map +1 -1
  69. package/dist/editor/menubar/VersionSelector.js +1 -3
  70. package/dist/editor/menubar/VersionSelector.js.map +1 -1
  71. package/dist/editor/menubar/toolbar-sections/CustomCommandsToolbar.js +7 -36
  72. package/dist/editor/menubar/toolbar-sections/CustomCommandsToolbar.js.map +1 -1
  73. package/dist/editor/notifications/notificationRoutes.js +1 -0
  74. package/dist/editor/notifications/notificationRoutes.js.map +1 -1
  75. package/dist/editor/page-editor-chrome/InlineEditor.js +53 -36
  76. package/dist/editor/page-editor-chrome/InlineEditor.js.map +1 -1
  77. package/dist/editor/page-viewer/PageViewer.js +60 -6
  78. package/dist/editor/page-viewer/PageViewer.js.map +1 -1
  79. package/dist/editor/reviews/Comment.js +12 -10
  80. package/dist/editor/reviews/Comment.js.map +1 -1
  81. package/dist/editor/reviews/CommentDisplayPopover.js +1 -3
  82. package/dist/editor/reviews/CommentDisplayPopover.js.map +1 -1
  83. package/dist/editor/reviews/PreviewInfo.js +1 -4
  84. package/dist/editor/reviews/PreviewInfo.js.map +1 -1
  85. package/dist/editor/reviews/reviewCommands.js +4 -1
  86. package/dist/editor/reviews/reviewCommands.js.map +1 -1
  87. package/dist/editor/reviews/useReviews.d.ts +2 -2
  88. package/dist/editor/reviews/useReviews.js +12 -30
  89. package/dist/editor/reviews/useReviews.js.map +1 -1
  90. package/dist/editor/services/agentService.d.ts +26 -0
  91. package/dist/editor/services/agentService.js +41 -0
  92. package/dist/editor/services/agentService.js.map +1 -1
  93. package/dist/editor/services/aiService.d.ts +7 -1
  94. package/dist/editor/services/aiService.js +13 -1
  95. package/dist/editor/services/aiService.js.map +1 -1
  96. package/dist/editor/services/notificationService.d.ts +1 -0
  97. package/dist/editor/services/notificationService.js +1 -0
  98. package/dist/editor/services/notificationService.js.map +1 -1
  99. package/dist/editor/services/reviewsService.d.ts +2 -5
  100. package/dist/editor/services/reviewsService.js +0 -10
  101. package/dist/editor/services/reviewsService.js.map +1 -1
  102. package/dist/editor/services/systemService.d.ts +2 -1
  103. package/dist/editor/services/systemService.js +3 -0
  104. package/dist/editor/services/systemService.js.map +1 -1
  105. package/dist/editor/settings/QuotaInfo.js +15 -7
  106. package/dist/editor/settings/QuotaInfo.js.map +1 -1
  107. package/dist/editor/settings/index/useIndexStatus.js +1 -1
  108. package/dist/editor/settings/index/useIndexStatus.js.map +1 -1
  109. package/dist/editor/settings/panels/AgentProfileConfigPanel.d.ts +10 -0
  110. package/dist/editor/settings/panels/AgentProfileConfigPanel.js +61 -0
  111. package/dist/editor/settings/panels/AgentProfileConfigPanel.js.map +1 -0
  112. package/dist/editor/settings/panels/AgentsPanel.d.ts +0 -4
  113. package/dist/editor/settings/panels/AgentsPanel.js +101 -109
  114. package/dist/editor/settings/panels/AgentsPanel.js.map +1 -1
  115. package/dist/editor/settings/panels/CreateAgentProfileDialog.d.ts +7 -0
  116. package/dist/editor/settings/panels/CreateAgentProfileDialog.js +48 -0
  117. package/dist/editor/settings/panels/CreateAgentProfileDialog.js.map +1 -0
  118. package/dist/editor/settings/panels/GroupedFieldConfigPanel.d.ts +33 -0
  119. package/dist/editor/settings/panels/GroupedFieldConfigPanel.js +91 -0
  120. package/dist/editor/settings/panels/GroupedFieldConfigPanel.js.map +1 -0
  121. package/dist/editor/settings/panels/ModelConfigPanel.d.ts +10 -0
  122. package/dist/editor/settings/panels/ModelConfigPanel.js +51 -0
  123. package/dist/editor/settings/panels/ModelConfigPanel.js.map +1 -0
  124. package/dist/editor/settings/panels/ModelsPanel.js +201 -70
  125. package/dist/editor/settings/panels/ModelsPanel.js.map +1 -1
  126. package/dist/editor/settings/panels/ProjectTemplateAgentPanel.d.ts +10 -0
  127. package/dist/editor/settings/panels/ProjectTemplateAgentPanel.js +46 -0
  128. package/dist/editor/settings/panels/ProjectTemplateAgentPanel.js.map +1 -0
  129. package/dist/editor/settings/panels/ProjectTemplatesPanel.d.ts +2 -0
  130. package/dist/editor/settings/panels/ProjectTemplatesPanel.js +1340 -0
  131. package/dist/editor/settings/panels/ProjectTemplatesPanel.js.map +1 -0
  132. package/dist/editor/settings/panels/ProviderConfigPanel.d.ts +10 -0
  133. package/dist/editor/settings/panels/ProviderConfigPanel.js +32 -0
  134. package/dist/editor/settings/panels/ProviderConfigPanel.js.map +1 -0
  135. package/dist/editor/settings/panels/ProvidersPanel.js +46 -4
  136. package/dist/editor/settings/panels/ProvidersPanel.js.map +1 -1
  137. package/dist/editor/settings/panels/SearchConfigPanel.js +3 -3
  138. package/dist/editor/settings/panels/SearchConfigPanel.js.map +1 -1
  139. package/dist/editor/settings/panels/index.d.ts +1 -2
  140. package/dist/editor/settings/panels/index.js +1 -2
  141. package/dist/editor/settings/panels/index.js.map +1 -1
  142. package/dist/editor/ui/ItemNameDialogNew.js +15 -9
  143. package/dist/editor/ui/ItemNameDialogNew.js.map +1 -1
  144. package/dist/editor/utils/keyboardNavigation.d.ts +6 -20
  145. package/dist/editor/utils/keyboardNavigation.js +48 -139
  146. package/dist/editor/utils/keyboardNavigation.js.map +1 -1
  147. package/dist/revision.d.ts +2 -2
  148. package/dist/revision.js +2 -2
  149. package/dist/setup/services/setupWizardService.d.ts +8 -10
  150. package/dist/setup/services/setupWizardService.js +4 -17
  151. package/dist/setup/services/setupWizardService.js.map +1 -1
  152. package/dist/splash-screen/ModernSplashScreen.js +100 -18
  153. package/dist/splash-screen/ModernSplashScreen.js.map +1 -1
  154. package/dist/splash-screen/ParheliaAssistantChat.js +3 -22
  155. package/dist/splash-screen/ParheliaAssistantChat.js.map +1 -1
  156. package/dist/task-board/TaskBoardWorkspace.js +70 -3
  157. package/dist/task-board/TaskBoardWorkspace.js.map +1 -1
  158. package/dist/task-board/components/AssignAgentDialog.js +9 -4
  159. package/dist/task-board/components/AssignAgentDialog.js.map +1 -1
  160. package/dist/task-board/components/CreateProjectDialog.js +32 -34
  161. package/dist/task-board/components/CreateProjectDialog.js.map +1 -1
  162. package/dist/task-board/components/CreateTaskDialog.d.ts +2 -0
  163. package/dist/task-board/components/CreateTaskDialog.js +35 -11
  164. package/dist/task-board/components/CreateTaskDialog.js.map +1 -1
  165. package/dist/task-board/components/ProjectPropertiesPanel.js +4 -1
  166. package/dist/task-board/components/ProjectPropertiesPanel.js.map +1 -1
  167. package/dist/task-board/components/TaskAgentPanel.js +13 -4
  168. package/dist/task-board/components/TaskAgentPanel.js.map +1 -1
  169. package/dist/task-board/components/TaskAssigneePicker.d.ts +2 -2
  170. package/dist/task-board/components/TaskAssigneePicker.js +12 -4
  171. package/dist/task-board/components/TaskAssigneePicker.js.map +1 -1
  172. package/dist/task-board/components/TaskBoardProjectListSidebar.js.map +1 -1
  173. package/dist/task-board/components/TaskCard.js +2 -2
  174. package/dist/task-board/components/TaskCard.js.map +1 -1
  175. package/dist/task-board/components/TaskDetailPanel.js +2 -2
  176. package/dist/task-board/components/TaskDetailPanel.js.map +1 -1
  177. package/dist/task-board/components/TaskRow.js +2 -2
  178. package/dist/task-board/components/TaskRow.js.map +1 -1
  179. package/dist/task-board/components/WizardCommunicationCenter.js +10 -4
  180. package/dist/task-board/components/WizardCommunicationCenter.js.map +1 -1
  181. package/dist/task-board/services/taskService.d.ts +11 -2
  182. package/dist/task-board/services/taskService.js +20 -2
  183. package/dist/task-board/services/taskService.js.map +1 -1
  184. package/dist/task-board/types.d.ts +52 -7
  185. package/dist/task-board/views/DependencyGraphView.d.ts +31 -4
  186. package/dist/task-board/views/DependencyGraphView.js +383 -64
  187. package/dist/task-board/views/DependencyGraphView.js.map +1 -1
  188. package/dist/types.d.ts +23 -15
  189. package/package.json +7 -7
  190. package/dist/editor/settings/Setup.d.ts +0 -1
  191. package/dist/editor/settings/Setup.js +0 -211
  192. package/dist/editor/settings/Setup.js.map +0 -1
  193. package/dist/editor/settings/panels/DatabasePanel.d.ts +0 -6
  194. package/dist/editor/settings/panels/DatabasePanel.js +0 -50
  195. package/dist/editor/settings/panels/DatabasePanel.js.map +0 -1
  196. package/dist/editor/settings/setup-steps/AiSetupStep/EmbeddingsModelSection.d.ts +0 -2
  197. package/dist/editor/settings/setup-steps/AiSetupStep/EmbeddingsModelSection.js +0 -195
  198. package/dist/editor/settings/setup-steps/AiSetupStep/EmbeddingsModelSection.js.map +0 -1
  199. package/dist/editor/settings/setup-steps/AiSetupStep/index.d.ts +0 -2
  200. package/dist/editor/settings/setup-steps/AiSetupStep/index.js +0 -21
  201. package/dist/editor/settings/setup-steps/AiSetupStep/index.js.map +0 -1
  202. package/dist/editor/settings/setup-steps/AiSetupStep/provider/ProviderSection.d.ts +0 -1
  203. package/dist/editor/settings/setup-steps/AiSetupStep/provider/ProviderSection.js +0 -233
  204. package/dist/editor/settings/setup-steps/AiSetupStep/provider/ProviderSection.js.map +0 -1
  205. package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersList.d.ts +0 -15
  206. package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersList.js +0 -14
  207. package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersList.js.map +0 -1
  208. package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersSection.d.ts +0 -1
  209. package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersSection.js +0 -94
  210. package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersSection.js.map +0 -1
  211. package/dist/editor/settings/setup-steps/AiSetupStep/types.d.ts +0 -1
  212. package/dist/editor/settings/setup-steps/AiSetupStep/types.js +0 -2
  213. package/dist/editor/settings/setup-steps/AiSetupStep/types.js.map +0 -1
  214. package/dist/editor/settings/setup-steps/AiSetupStep/utils.d.ts +0 -5
  215. package/dist/editor/settings/setup-steps/AiSetupStep/utils.js +0 -44
  216. package/dist/editor/settings/setup-steps/AiSetupStep/utils.js.map +0 -1
  217. package/dist/editor/settings/setup-steps/IndexSetupStep.d.ts +0 -2
  218. package/dist/editor/settings/setup-steps/IndexSetupStep.js +0 -36
  219. package/dist/editor/settings/setup-steps/IndexSetupStep.js.map +0 -1
  220. package/dist/editor/settings/setup-steps/SettingsSetupStep.d.ts +0 -2
  221. package/dist/editor/settings/setup-steps/SettingsSetupStep.js +0 -111
  222. package/dist/editor/settings/setup-steps/SettingsSetupStep.js.map +0 -1
  223. package/dist/editor/settings/setup-steps/SetupOverview.d.ts +0 -14
  224. package/dist/editor/settings/setup-steps/SetupOverview.js +0 -38
  225. package/dist/editor/settings/setup-steps/SetupOverview.js.map +0 -1
@@ -1,195 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import React from "react";
3
- import { Button } from "../../../../components/ui/button";
4
- import { AlertCircle, CheckCircle, RefreshCw } from "lucide-react";
5
- import { useEditContext } from "../../../client/editContext";
6
- import { getChildren } from "../../../services/contentService";
7
- import { findByName, resolvePathUnderContent } from "./utils";
8
- // Sitecore IDs and constants used by AI models/providers
9
- const AI_MODELS_CONTAINER_TEMPLATE_ID = "e5f6a7b8-9c0d-1e2f-3a4b-5c6d7e8f9a0b";
10
- const AI_MODEL_TEMPLATE_ID = "d2e3f4a5-4b5c-5c6d-bf0b-3e4f5a6b7c8e";
11
- const MODEL_NAME_FIELD_ID = "f1e2d3c4-5b6a-7980-8e9f-1a2b3c4d5e6f";
12
- const MODEL_PROVIDER_FIELD_ID = "cbade708-ce95-4f54-81b7-308ea61a76a6";
13
- const EDITOR_SETTINGS_EMBEDDINGS_MODEL_FIELD_ID = "08d0579d-3bf2-4777-981f-3f0856da948e"; // Embeddings Model (Droptree)
14
- const DEFAULT_EMBEDDINGS_MODEL_NAME = "text-embedding-3-large";
15
- export function EmbeddingsModelSection() {
16
- const editContext = useEditContext();
17
- const [state, setState] = React.useState("checking");
18
- const [error, setError] = React.useState(null);
19
- const [isBusy, setIsBusy] = React.useState(false);
20
- const [currentModelName, setCurrentModelName] = React.useState(null);
21
- const userLang = editContext?.item?.language || "en";
22
- const statusIcon = React.useCallback((s) => {
23
- if (s === "success")
24
- return _jsx(CheckCircle, { className: "h-4 w-4 text-green-600", strokeWidth: 1 });
25
- if (s === "error")
26
- return _jsx(AlertCircle, { className: "h-4 w-4 text-red-600", strokeWidth: 1 });
27
- return (_jsx(RefreshCw, { className: "h-4 w-4 animate-spin text-amber-600", strokeWidth: 1 }));
28
- }, []);
29
- const checkStatus = React.useCallback(async () => {
30
- try {
31
- setState("checking");
32
- setError(null);
33
- setCurrentModelName(null);
34
- const settingsItem = await resolvePathUnderContent(editContext?.sessionId, userLang, ["Settings", "Parhelia"]);
35
- if (!settingsItem) {
36
- setState("error");
37
- setError("Parhelia settings item not found. Create it first.");
38
- return;
39
- }
40
- // Read the Embeddings Model droptree field
41
- const field = await editContext.itemsRepository.getField({
42
- item: { id: settingsItem.id, language: userLang, version: 0 },
43
- fieldId: EDITOR_SETTINGS_EMBEDDINGS_MODEL_FIELD_ID,
44
- });
45
- const raw = (field?.rawValue || "").trim();
46
- if (!raw) {
47
- setState("error");
48
- return;
49
- }
50
- // Normalize ID braces and load the model item to get its display name
51
- const modelId = raw.replace(/^[{(]+|[})]+$/g, "");
52
- const model = await editContext.itemsRepository.getItem({
53
- id: `{${modelId}}`,
54
- language: userLang,
55
- version: 0,
56
- });
57
- if (!model) {
58
- setState("error");
59
- setError("Embeddings Model points to a missing item. Please fix to re-create and assign.");
60
- return;
61
- }
62
- setCurrentModelName(model.name);
63
- setState("success");
64
- }
65
- catch (e) {
66
- setState("error");
67
- setError(e?.message || "Failed to check embeddings model");
68
- }
69
- }, [editContext, userLang]);
70
- React.useEffect(() => {
71
- checkStatus();
72
- }, [checkStatus]);
73
- const ensureEmbeddingsModel = React.useCallback(async () => {
74
- if (!editContext)
75
- return;
76
- try {
77
- setIsBusy(true);
78
- setError(null);
79
- const settingsItem = await resolvePathUnderContent(editContext.sessionId, userLang, ["Settings", "Parhelia"]);
80
- if (!settingsItem)
81
- throw new Error("Parhelia settings item not found. Create it first.");
82
- // Load children under /Settings/Parhelia
83
- const editorChildren = (await getChildren(settingsItem.id, editContext.sessionId, [], false, userLang, "path"));
84
- // Find providers container and choose OpenAI or Azure OpenAI provider
85
- const providersContainer = findByName(editorChildren, "Ai Providers");
86
- if (!providersContainer) {
87
- throw new Error("No AI providers found. Please add an OpenAI or Azure OpenAI provider first.");
88
- }
89
- const providerChildren = (await getChildren(providersContainer.id, editContext.sessionId, [], false, userLang, "path"));
90
- const openAi = findByName(providerChildren, "OpenAI");
91
- const azureOpenAi = findByName(providerChildren, "Azure OpenAI");
92
- const selectedProvider = openAi || azureOpenAi;
93
- if (!selectedProvider) {
94
- throw new Error("No OpenAI or Azure OpenAI provider exists. Add one in 'Provider' section.");
95
- }
96
- // Ensure Ai Models container exists
97
- let modelsContainer = findByName(editorChildren, "Ai Models");
98
- if (!modelsContainer) {
99
- const createdModels = await editContext.operations.createItem(settingsItem, AI_MODELS_CONTAINER_TEMPLATE_ID, "Ai Models");
100
- if (!createdModels)
101
- throw new Error("Failed to create 'Ai Models' container");
102
- modelsContainer = {
103
- id: createdModels.id,
104
- name: "Ai Models",
105
- displayName: "Ai Models",
106
- thumbUrl: "",
107
- previewUrl: "",
108
- templateId: "",
109
- icon: "",
110
- hasChildren: false,
111
- isComponent: false,
112
- language: userLang,
113
- version: 0,
114
- hasLayout: false,
115
- };
116
- }
117
- // Find or create the "text-embedding-3-large" model
118
- const modelChildren = (await getChildren(modelsContainer.id, editContext.sessionId, [], false, userLang, "path"));
119
- let modelNode = findByName(modelChildren, DEFAULT_EMBEDDINGS_MODEL_NAME);
120
- let modelDescriptor = null;
121
- if (modelNode) {
122
- modelDescriptor = {
123
- id: modelNode.id,
124
- language: userLang,
125
- version: 0,
126
- };
127
- }
128
- else {
129
- const createdModel = await editContext.operations.createItem({
130
- id: modelsContainer.id,
131
- language: userLang,
132
- version: 0,
133
- }, AI_MODEL_TEMPLATE_ID, DEFAULT_EMBEDDINGS_MODEL_NAME);
134
- if (!createdModel)
135
- throw new Error(`Failed to create model '${DEFAULT_EMBEDDINGS_MODEL_NAME}'`);
136
- modelDescriptor = createdModel;
137
- // Set Model Name field
138
- await editContext.operations.editField({
139
- field: {
140
- fieldId: MODEL_NAME_FIELD_ID,
141
- item: {
142
- id: modelDescriptor.id,
143
- language: userLang,
144
- version: 0,
145
- },
146
- },
147
- value: DEFAULT_EMBEDDINGS_MODEL_NAME,
148
- rawValue: DEFAULT_EMBEDDINGS_MODEL_NAME,
149
- refresh: "delayed",
150
- });
151
- }
152
- // Link model to the selected provider
153
- const providerGuid = `{${selectedProvider.id
154
- .replace(/[{}()]/g, "")
155
- .toUpperCase()}}`;
156
- await editContext.operations.editField({
157
- field: {
158
- fieldId: MODEL_PROVIDER_FIELD_ID,
159
- item: { id: modelDescriptor.id, language: userLang, version: 0 },
160
- },
161
- rawValue: providerGuid,
162
- refresh: "delayed",
163
- });
164
- // Assign model to Parhelia settings' Embeddings Model field
165
- const modelGuid = `{${modelDescriptor.id
166
- .replace(/[{}()]/g, "")
167
- .toUpperCase()}}`;
168
- await editContext.operations.editField({
169
- field: {
170
- fieldId: EDITOR_SETTINGS_EMBEDDINGS_MODEL_FIELD_ID,
171
- item: { id: settingsItem.id, language: userLang, version: 0 },
172
- },
173
- rawValue: modelGuid,
174
- refresh: "immediate",
175
- });
176
- editContext.requestRefresh?.("immediate");
177
- editContext.showToast?.(`Embeddings model set to '${DEFAULT_EMBEDDINGS_MODEL_NAME}'`);
178
- await checkStatus();
179
- }
180
- catch (e) {
181
- setError(e?.message || "Failed to ensure embeddings model");
182
- setState("error");
183
- }
184
- finally {
185
- setIsBusy(false);
186
- }
187
- }, [editContext, userLang, checkStatus]);
188
- return (_jsxs("div", { className: "mt-3", children: [_jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsxs("div", { className: "flex items-center gap-2", children: [statusIcon(state), _jsx("span", { className: "text-sm text-gray-700", children: state === "success"
189
- ? `Embeddings model: ${currentModelName}`
190
- : state === "error"
191
- ? "Embeddings model not assigned"
192
- : "Checking embeddings model..." })] }), state !== "success" && (_jsxs(Button, { size: "sm", onClick: ensureEmbeddingsModel, disabled: isBusy, children: [isBusy ? (_jsx(RefreshCw, { strokeWidth: 1, className: "h-4 w-4 animate-spin" })) : (_jsx(CheckCircle, { strokeWidth: 1, className: "h-4 w-4" })), "Fix"] }))] }), error && (_jsx("div", { className: "mt-2 rounded border border-yellow-200 bg-yellow-50 p-2 text-xs whitespace-pre-wrap text-yellow-800", children: error }))] }));
193
- }
194
- export default EmbeddingsModelSection;
195
- //# sourceMappingURL=EmbeddingsModelSection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EmbeddingsModelSection.js","sourceRoot":"","sources":["../../../../../src/editor/settings/setup-steps/AiSetupStep/EmbeddingsModelSection.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function AiSetupStep(): import("react/jsx-runtime").JSX.Element;
2
- export default AiSetupStep;
@@ -1,21 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState } from "react";
3
- import { Card } from "../../../../components/ui/card";
4
- import { useEditContext } from "../../../client/editContext";
5
- import { SparklesIcon } from "lucide-react";
6
- import { RequiredContainersSection } from "./required-containers/RequiredContainersSection";
7
- import { ProviderSection } from "./provider/ProviderSection";
8
- export function AiSetupStep() {
9
- const editContext = useEditContext();
10
- const [aiState, setAiState] = useState("idle");
11
- const userLang = editContext?.item?.language || "en";
12
- // IDs for tool templates/fields
13
- const AI_TOOLS_TEMPLATE_ID = "7e3f9d9d-8e84-4e57-b12e-6e9c99d4fd11"; // container
14
- const AI_TOOL_TEMPLATE_ID = "a2e8a0d9-7b1f-4d1a-a2d8-8f3ea6d6f0b1"; // item template
15
- const FIELD_FUNCTION_NAME_ID = "3d9f2b1a-9d44-4d26-8a1b-92f0fb4d3a2c";
16
- const FIELD_LABEL_ID = "5a19f5a5-1d21-4b6a-9f83-6f3fc0b34b2e";
17
- const FIELD_DESCRIPTION_ID = "6b2e4b8e-8a9f-4d8f-9f6e-1a2b3c4d5e6f";
18
- return (_jsxs(Card, { className: "w-full", icon: _jsx(SparklesIcon, { strokeWidth: 1, className: "h-5 w-5" }), title: "AI setup", description: "Add an AI provider (OpenAI, Azure OpenAI, or OpenRouter).", children: [_jsx(RequiredContainersSection, {}), _jsx(ProviderSection, {})] }));
19
- }
20
- export default AiSetupStep;
21
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/editor/settings/setup-steps/AiSetupStep/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,iDAAiD,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAG7D,MAAM,UAAU,WAAW;IACzB,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAY,MAAM,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,WAAW,EAAE,IAAI,EAAE,QAAQ,IAAI,IAAI,CAAC;IAErD,gCAAgC;IAChC,MAAM,oBAAoB,GAAG,sCAAsC,CAAC,CAAC,YAAY;IACjF,MAAM,mBAAmB,GAAG,sCAAsC,CAAC,CAAC,gBAAgB;IACpF,MAAM,sBAAsB,GAAG,sCAAsC,CAAC;IACtE,MAAM,cAAc,GAAG,sCAAsC,CAAC;IAC9D,MAAM,oBAAoB,GAAG,sCAAsC,CAAC;IAEpE,OAAO,CACL,MAAC,IAAI,IACH,SAAS,EAAC,QAAQ,EAClB,IAAI,EAAE,KAAC,YAAY,IAAC,WAAW,EAAE,CAAC,EAAE,SAAS,EAAC,SAAS,GAAG,EAC1D,KAAK,EAAC,UAAU,EAChB,WAAW,EAAC,2DAA2D,aAEvE,KAAC,yBAAyB,KAAG,EAE7B,KAAC,eAAe,KAAG,IACd,CACR,CAAC;AACJ,CAAC;AAED,eAAe,WAAW,CAAC"}
@@ -1 +0,0 @@
1
- export declare function ProviderSection(): import("react/jsx-runtime").JSX.Element;
@@ -1,233 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import React from "react";
3
- import { Select } from "../../../../../components/ui/select";
4
- import { Input } from "../../../../../components/ui/input";
5
- import { Button } from "../../../../../components/ui/button";
6
- import { CheckCircle, RefreshCw } from "lucide-react";
7
- import { useEditContext } from "../../../../client/editContext";
8
- import { getChildren } from "../../../../services/contentService";
9
- import { findByName, resolvePathUnderContent } from "../utils";
10
- export function ProviderSection() {
11
- const editContext = useEditContext();
12
- const [aiProvider, setAiProvider] = React.useState("");
13
- const [apiKey, setApiKey] = React.useState("");
14
- const [aiBusy, setAiBusy] = React.useState(false);
15
- const [aiError, setAiError] = React.useState(null);
16
- const [providers, setProviders] = React.useState([]);
17
- const [loadingProviders, setLoadingProviders] = React.useState(false);
18
- const [providersError, setProvidersError] = React.useState(null);
19
- const lastLoadAtRef = React.useRef(0);
20
- const isLoadingRef = React.useRef(false);
21
- const userLang = editContext?.item?.language || "en";
22
- const sessionId = editContext?.sessionId;
23
- const aiOptions = React.useMemo(() => [
24
- { value: "openai", label: "OpenAI" },
25
- { value: "azure-openai", label: "Azure OpenAI" },
26
- { value: "openrouter", label: "OpenRouter" },
27
- ], []);
28
- const loadProviders = React.useCallback(async (options) => {
29
- if (!sessionId)
30
- return;
31
- try {
32
- const now = Date.now();
33
- const MIN_INTERVAL_MS = 2000;
34
- if (!options?.force) {
35
- if (isLoadingRef.current)
36
- return;
37
- if (now - lastLoadAtRef.current < MIN_INTERVAL_MS)
38
- return;
39
- }
40
- isLoadingRef.current = true;
41
- lastLoadAtRef.current = now;
42
- setLoadingProviders(true);
43
- setProvidersError(null);
44
- const settingsItem = await resolvePathUnderContent(sessionId, userLang, ["Settings", "Editor"]);
45
- if (!settingsItem) {
46
- setProviders([]);
47
- return;
48
- }
49
- const children = (await getChildren(settingsItem.id, sessionId, [], false, userLang, "path"));
50
- const aiProvidersParent = findByName(children, "Ai Providers");
51
- if (!aiProvidersParent) {
52
- setProviders([]);
53
- return;
54
- }
55
- const providerChildren = (await getChildren(aiProvidersParent.id, sessionId, [], false, userLang, "path"));
56
- setProviders(providerChildren || []);
57
- }
58
- catch (e) {
59
- setProvidersError(e?.message || "Failed to load AI providers");
60
- }
61
- finally {
62
- isLoadingRef.current = false;
63
- setLoadingProviders(false);
64
- }
65
- }, [sessionId, userLang]);
66
- const createAiProvider = React.useCallback(async () => {
67
- if (!aiProvider || !editContext)
68
- return;
69
- try {
70
- setAiBusy(true);
71
- setAiError(null);
72
- const settingsItem = await resolvePathUnderContent(editContext.sessionId, userLang, ["Settings", "Editor"]);
73
- if (!settingsItem)
74
- throw new Error("Editor settings item not found. Create it first.");
75
- const children = (await getChildren(settingsItem.id, editContext.sessionId, [], false, userLang, "path"));
76
- let aiProvidersParent = findByName(children, "Ai Providers");
77
- if (!aiProvidersParent) {
78
- const aiProvidersTemplateId = "4592f2e0-06e4-470e-9820-7fd4ea148e00";
79
- const createdContainer = await editContext.operations.createItem(settingsItem, aiProvidersTemplateId, "Ai Providers");
80
- if (!createdContainer)
81
- throw new Error("Failed to create 'Ai Providers' container");
82
- aiProvidersParent = {
83
- id: createdContainer.id,
84
- name: "Ai Providers",
85
- thumbUrl: "",
86
- previewUrl: "",
87
- templateId: "",
88
- icon: "",
89
- hasChildren: false,
90
- isComponent: false,
91
- displayName: "Ai Providers",
92
- language: userLang,
93
- version: 0,
94
- hasLayout: false,
95
- };
96
- }
97
- const providerTemplateId = "a6358b92-a9ea-4dd8-b4e1-7d6d3a3b9c40";
98
- const providerName = aiProvider === "openai"
99
- ? "OpenAI"
100
- : aiProvider === "azure-openai"
101
- ? "Azure OpenAI"
102
- : "Open Router";
103
- // Find or create provider
104
- let providerItem = null;
105
- const providerChildren = (await getChildren(aiProvidersParent.id, editContext.sessionId, [], false, userLang, "path"));
106
- const existingProvider = findByName(providerChildren, providerName);
107
- if (existingProvider) {
108
- providerItem = {
109
- id: existingProvider.id,
110
- language: userLang,
111
- version: 0,
112
- };
113
- }
114
- else {
115
- const created = await editContext.operations.createItem({
116
- id: aiProvidersParent.id,
117
- language: userLang,
118
- version: 0,
119
- }, providerTemplateId, providerName);
120
- if (!created)
121
- throw new Error("Failed to create AI provider");
122
- providerItem = created;
123
- }
124
- // Set API key if provided
125
- if (apiKey && providerItem) {
126
- const apiKeyFieldId = "db07ae53-459a-4314-89b3-ab2721df2b4f";
127
- await editContext.operations.editField({
128
- field: {
129
- fieldId: apiKeyFieldId,
130
- item: {
131
- id: providerItem.id,
132
- language: userLang,
133
- version: 0,
134
- },
135
- },
136
- value: apiKey,
137
- rawValue: apiKey,
138
- refresh: "delayed",
139
- });
140
- }
141
- // Ensure Ai Models container exists
142
- let aiModelsParent = findByName(children, "Ai Models");
143
- if (!aiModelsParent) {
144
- const aiModelsTemplateId = "e5f6a7b8-9c0d-1e2f-3a4b-5c6d7e8f9a0b";
145
- const createdModels = await editContext.operations.createItem(settingsItem, aiModelsTemplateId, "Ai Models");
146
- if (!createdModels)
147
- throw new Error("Failed to create 'Ai Models' container");
148
- aiModelsParent = {
149
- id: createdModels.id,
150
- name: "Ai Models",
151
- thumbUrl: "",
152
- previewUrl: "",
153
- templateId: "",
154
- icon: "",
155
- hasChildren: false,
156
- isComponent: false,
157
- displayName: "Ai Models",
158
- language: userLang,
159
- version: 0,
160
- hasLayout: false,
161
- };
162
- }
163
- // Create default models if missing and link to endpoint
164
- const modelsToEnsure = ["gpt-5", "gpt5-high", "image-1"];
165
- const modelTemplateId = "d2e3f4a5-4b5c-5c6d-bf0b-3e4f5a6b7c8e";
166
- const modelNameFieldId = "f1e2d3c4-5b6a-7980-8e9f-1a2b3c4d5e6f";
167
- const modelProviderFieldId = "cbade708-ce95-4f54-81b7-308ea61a76a6";
168
- const modelChildren = (await getChildren(aiModelsParent.id, editContext.sessionId, [], false, userLang, "path"));
169
- for (const modelName of modelsToEnsure) {
170
- let modelNode = findByName(modelChildren, modelName);
171
- if (!modelNode) {
172
- const createdModel = await editContext.operations.createItem({
173
- id: aiModelsParent.id,
174
- language: userLang,
175
- version: 0,
176
- }, modelTemplateId, modelName);
177
- if (!createdModel)
178
- throw new Error(`Failed to create model '${modelName}'`);
179
- modelNode = {
180
- id: createdModel.id,
181
- name: modelName,
182
- displayName: modelName,
183
- thumbUrl: "",
184
- previewUrl: "",
185
- templateId: "",
186
- icon: "",
187
- hasChildren: false,
188
- isComponent: false,
189
- language: userLang,
190
- version: 0,
191
- hasLayout: false,
192
- };
193
- await editContext.operations.editField({
194
- field: {
195
- fieldId: modelNameFieldId,
196
- item: { id: modelNode.id, language: userLang, version: 0 },
197
- },
198
- value: modelName,
199
- rawValue: modelName,
200
- refresh: "delayed",
201
- });
202
- const providerGuid = `{${providerItem.id
203
- .replace(/[{}()]/g, "")
204
- .toUpperCase()}}`;
205
- await editContext.operations.editField({
206
- field: {
207
- fieldId: modelProviderFieldId,
208
- item: { id: modelNode.id, language: userLang, version: 0 },
209
- },
210
- rawValue: providerGuid,
211
- refresh: "delayed",
212
- });
213
- }
214
- }
215
- editContext.requestRefresh?.("immediate");
216
- editContext.showToast?.(`Added '${providerName}' AI provider successfully`);
217
- await loadProviders({ force: true });
218
- setAiProvider("");
219
- setApiKey("");
220
- }
221
- catch (e) {
222
- setAiError(e?.message || "Failed to add AI provider");
223
- }
224
- finally {
225
- setAiBusy(false);
226
- }
227
- }, [aiProvider, editContext, userLang, apiKey, loadProviders]);
228
- React.useEffect(() => {
229
- loadProviders({ force: true });
230
- }, [loadProviders]);
231
- return (_jsxs(_Fragment, { children: [_jsx("div", { className: "flex items-center justify-between gap-2", children: _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(CheckCircle, { strokeWidth: 1, className: "h-4 w-4 text-green-600" }), _jsx("span", { className: "text-sm text-gray-700", children: "Select provider and add provider" })] }) }), _jsxs("div", { className: "mt-3", children: [_jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsx("span", { className: "text-xs text-gray-600", children: "Existing providers" }), _jsxs(Button, { size: "sm", disabled: loadingProviders, onClick: () => loadProviders({ force: true }), children: [loadingProviders ? (_jsx(RefreshCw, { strokeWidth: 1, className: "h-4 w-4 animate-spin" })) : (_jsx(RefreshCw, { strokeWidth: 1, className: "h-4 w-4" })), "Refresh"] })] }), _jsxs("div", { className: "mt-2", children: [providersError && (_jsx("div", { className: "rounded border border-red-200 bg-red-50 p-2 text-xs whitespace-pre-wrap text-red-700", children: providersError })), !providersError && (_jsx(_Fragment, { children: loadingProviders ? (_jsxs("div", { className: "flex items-center gap-2 text-xs text-gray-500", children: [_jsx(RefreshCw, { strokeWidth: 1, className: "h-4 w-4 animate-spin" }), "Loading providers\u2026"] })) : providers.length > 0 ? (_jsx("ul", { className: "list-disc pl-5 text-xs text-gray-700", children: providers.map((ep) => (_jsx("li", { children: ep.displayName || ep.name }, ep.id))) })) : (_jsx("div", { className: "text-xs text-gray-500", children: "No AI providers found." })) }))] })] }), _jsxs("div", { className: "mt-3 flex flex-col items-stretch gap-2", children: [_jsx(Select, { value: aiProvider, onValueChange: setAiProvider, options: aiOptions, placeholder: "Choose provider" }), aiProvider && (_jsx(Input, { type: "password", name: "ai-provider-api-key", autoComplete: "new-password", autoCapitalize: "none", spellCheck: false, placeholder: "API key", value: apiKey, onChange: (e) => setApiKey(e.target.value) })), _jsxs(Button, { size: "sm", disabled: !aiProvider || !apiKey || aiBusy, onClick: createAiProvider, children: [aiBusy ? (_jsx(RefreshCw, { strokeWidth: 1, className: "h-4 w-4 animate-spin" })) : (_jsx(CheckCircle, { strokeWidth: 1, className: "h-4 w-4" })), "Add provider"] })] }), aiError && (_jsx("div", { className: "mt-2 rounded border border-red-200 bg-red-50 p-2 text-xs whitespace-pre-wrap text-red-700", children: aiError }))] }));
232
- }
233
- //# sourceMappingURL=ProviderSection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProviderSection.js","sourceRoot":"","sources":["../../../../../../src/editor/settings/setup-steps/AiSetupStep/provider/ProviderSection.tsx"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- import type { StepState } from "../types";
2
- interface RequiredContainerDef {
3
- name: string;
4
- templateId: string;
5
- }
6
- interface RequiredContainersListProps {
7
- requiredContainers: RequiredContainerDef[];
8
- containerStates: Record<string, StepState>;
9
- busyMap: Record<string, boolean>;
10
- canFix: boolean;
11
- containersError: string | null;
12
- onFixContainer: (name: string, templateId: string) => void;
13
- }
14
- export declare function RequiredContainersList(props: RequiredContainersListProps): import("react/jsx-runtime").JSX.Element;
15
- export {};
@@ -1,14 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { Button } from "../../../../../components/ui/button";
3
- import { AlertCircle, CheckCircle, RefreshCw } from "lucide-react";
4
- export function RequiredContainersList(props) {
5
- const { requiredContainers, containerStates, busyMap, canFix, containersError, onFixContainer, } = props;
6
- return (_jsxs(_Fragment, { children: [_jsx("div", { className: "flex flex-col gap-2", children: requiredContainers
7
- .filter((rc) => containerStates[rc.name] === "error")
8
- .map((rc) => (_jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsxs("div", { className: "flex items-center gap-2", children: [containerStates[rc.name] === "checking" ? (_jsx(RefreshCw, { strokeWidth: 1, className: "h-4 w-4 animate-spin text-amber-600" })) : containerStates[rc.name] === "success" ? (_jsx(CheckCircle, { strokeWidth: 1, className: "h-4 w-4 text-green-600" })) : (_jsx(AlertCircle, { strokeWidth: 1, className: "h-4 w-4 text-red-600" })), _jsx("span", { className: "text-sm text-gray-700", children: containerStates[rc.name] === "checking"
9
- ? `Checking ${rc.name}...`
10
- : containerStates[rc.name] === "success"
11
- ? `${rc.name} present`
12
- : `${rc.name} missing` })] }), containerStates[rc.name] !== "success" && (_jsxs(Button, { size: "sm", onClick: () => onFixContainer(rc.name, rc.templateId), disabled: !canFix || !!busyMap[rc.name], children: [busyMap[rc.name] ? (_jsx(RefreshCw, { strokeWidth: 1, className: "h-4 w-4 animate-spin" })) : (_jsx(CheckCircle, { strokeWidth: 1, className: "h-4 w-4" })), "Fix"] }))] }, rc.name))) }), containersError && (_jsx("div", { className: "mt-2 rounded border border-yellow-200 bg-yellow-50 p-2 text-xs whitespace-pre-wrap text-yellow-800", children: containersError }))] }));
13
- }
14
- //# sourceMappingURL=RequiredContainersList.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RequiredContainersList.js","sourceRoot":"","sources":["../../../../../../src/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersList.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAiBnE,MAAM,UAAU,sBAAsB,CAAC,KAAkC;IACvE,MAAM,EACJ,kBAAkB,EAClB,eAAe,EACf,OAAO,EACP,MAAM,EACN,eAAe,EACf,cAAc,GACf,GAAG,KAAK,CAAC;IAEV,OAAO,CACL,8BACE,cAAK,SAAS,EAAC,qBAAqB,YACjC,kBAAkB;qBAChB,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC;qBACpD,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CACX,eAEE,SAAS,EAAC,yCAAyC,aAEnD,eAAK,SAAS,EAAC,yBAAyB,aACrC,eAAe,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CACzC,KAAC,SAAS,IACR,WAAW,EAAE,CAAC,EACd,SAAS,EAAC,qCAAqC,GAC/C,CACH,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAC3C,KAAC,WAAW,IACV,WAAW,EAAE,CAAC,EACd,SAAS,EAAC,wBAAwB,GAClC,CACH,CAAC,CAAC,CAAC,CACF,KAAC,WAAW,IACV,WAAW,EAAE,CAAC,EACd,SAAS,EAAC,sBAAsB,GAChC,CACH,EACD,eAAM,SAAS,EAAC,uBAAuB,YACpC,eAAe,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,UAAU;wCACtC,CAAC,CAAC,YAAY,EAAE,CAAC,IAAI,KAAK;wCAC1B,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,SAAS;4CACtC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,UAAU;4CACtB,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,UAAU,GACrB,IACH,EACL,eAAe,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,CACzC,MAAC,MAAM,IACL,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,EACrD,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,aAEtC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAClB,KAAC,SAAS,IACR,WAAW,EAAE,CAAC,EACd,SAAS,EAAC,sBAAsB,GAChC,CACH,CAAC,CAAC,CAAC,CACF,KAAC,WAAW,IAAC,WAAW,EAAE,CAAC,EAAE,SAAS,EAAC,SAAS,GAAG,CACpD,WAEM,CACV,KA5CI,EAAE,CAAC,IAAI,CA6CR,CACP,CAAC,GACA,EACL,eAAe,IAAI,CAClB,cAAK,SAAS,EAAC,oGAAoG,YAChH,eAAe,GACZ,CACP,IACA,CACJ,CAAC;AACJ,CAAC"}
@@ -1 +0,0 @@
1
- export declare function RequiredContainersSection(): import("react/jsx-runtime").JSX.Element;
@@ -1,94 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import React from "react";
3
- import { useEditContext } from "../../../../client/editContext";
4
- import { getChildren } from "../../../../services/contentService";
5
- import { RequiredContainersList } from "./RequiredContainersList";
6
- import { findByName, resolvePathUnderContent } from "../utils";
7
- export function RequiredContainersSection() {
8
- const editContext = useEditContext();
9
- const userLang = editContext?.item?.language || "en";
10
- const requiredContainers = React.useMemo(() => [
11
- { name: "Ai Models", templateId: "e5f6a7b8-9c0d-1e2f-3a4b-5c6d7e8f9a0b" },
12
- {
13
- name: "Ai Providers",
14
- templateId: "4592f2e0-06e4-470e-9820-7fd4ea148e00",
15
- },
16
- {
17
- name: "Ai Profiles",
18
- templateId: "4298ab78-2aaa-4d5f-bb3a-0bd321b86063",
19
- },
20
- {
21
- name: "Content Schemas",
22
- templateId: "5214a52b-6c45-4671-97f2-703fe24e3d09",
23
- },
24
- { name: "Ai Quotas", templateId: "7a08ff28-70ed-459b-a7f2-db2a78d88f46" },
25
- {
26
- name: "AI Generators",
27
- templateId: "9430a3e9-7397-4598-9a55-2b263c927497",
28
- },
29
- { name: "AI Tools", templateId: "7e3f9d9d-8e84-4e57-b12e-6e9c99d4fd11" },
30
- ], []);
31
- const [parheliaSettingsItem, setParheliaSettingsItem] = React.useState(null);
32
- const [containersError, setContainersError] = React.useState(null);
33
- const [containerStates, setContainerStates] = React.useState({});
34
- const [busyMap, setBusyMap] = React.useState({});
35
- const checkRequiredContainers = React.useCallback(async () => {
36
- try {
37
- setContainersError(null);
38
- const initialStates = {};
39
- for (const rc of requiredContainers)
40
- initialStates[rc.name] = "checking";
41
- setContainerStates(initialStates);
42
- const settingsItem = await resolvePathUnderContent(editContext?.sessionId, userLang, ["Settings", "Parhelia"]);
43
- if (!settingsItem) {
44
- setParheliaSettingsItem(null);
45
- const errorMsg = "Parhelia settings item not found. Create it first.";
46
- setContainersError(errorMsg);
47
- const errorStates = {};
48
- for (const rc of requiredContainers)
49
- errorStates[rc.name] = "error";
50
- setContainerStates(errorStates);
51
- return;
52
- }
53
- setParheliaSettingsItem(settingsItem);
54
- const children = (await getChildren(settingsItem.id, editContext.sessionId, [], false, userLang, "path"));
55
- const states = {};
56
- for (const rc of requiredContainers) {
57
- const exists = !!findByName(children, rc.name);
58
- states[rc.name] = exists ? "success" : "error";
59
- }
60
- setContainerStates(states);
61
- }
62
- catch (e) {
63
- setContainersError(e?.message || "Failed to check AI containers");
64
- const errorStates = {};
65
- for (const rc of requiredContainers)
66
- errorStates[rc.name] = "error";
67
- setContainerStates(errorStates);
68
- }
69
- }, [editContext, requiredContainers, userLang]);
70
- React.useEffect(() => {
71
- checkRequiredContainers();
72
- }, [checkRequiredContainers]);
73
- const createContainer = React.useCallback(async (name, templateId) => {
74
- if (!parheliaSettingsItem || !editContext)
75
- return;
76
- try {
77
- setBusyMap((s) => ({ ...s, [name]: true }));
78
- setContainersError(null);
79
- const created = await editContext.operations.createItem(parheliaSettingsItem, templateId, name);
80
- if (!created)
81
- throw new Error(`Failed to create '${name}'`);
82
- setContainerStates((s) => ({ ...s, [name]: "success" }));
83
- }
84
- catch (e) {
85
- setContainersError(e?.message || `Failed to create '${name}'`);
86
- setContainerStates((s) => ({ ...s, [name]: "error" }));
87
- }
88
- finally {
89
- setBusyMap((s) => ({ ...s, [name]: false }));
90
- }
91
- }, [parheliaSettingsItem, editContext]);
92
- return (_jsx(RequiredContainersList, { requiredContainers: requiredContainers, containerStates: containerStates, busyMap: busyMap, canFix: !!parheliaSettingsItem, containersError: containersError, onFixContainer: createContainer }));
93
- }
94
- //# sourceMappingURL=RequiredContainersSection.js.map