@parhelia/core 0.1.11151 → 0.1.11180

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 (224) hide show
  1. package/dist/agents-view/AgentsInbox.d.ts +2 -1
  2. package/dist/agents-view/AgentsInbox.js +2 -2
  3. package/dist/agents-view/AgentsInbox.js.map +1 -1
  4. package/dist/agents-view/AgentsView.js +30 -1
  5. package/dist/agents-view/AgentsView.js.map +1 -1
  6. package/dist/components/ui/card.d.ts +1 -1
  7. package/dist/components/ui/card.js +1 -1
  8. package/dist/components/ui/card.js.map +1 -1
  9. package/dist/components/ui/paste-button.d.ts +1 -1
  10. package/dist/components/ui/paste-button.js +79 -22
  11. package/dist/components/ui/paste-button.js.map +1 -1
  12. package/dist/config/config.js +83 -51
  13. package/dist/config/config.js.map +1 -1
  14. package/dist/config/types.d.ts +29 -4
  15. package/dist/editor/ContentTree.js +92 -22
  16. package/dist/editor/ContentTree.js.map +1 -1
  17. package/dist/editor/FieldActionsOverlay.d.ts +1 -0
  18. package/dist/editor/FieldActionsOverlay.js +17 -1
  19. package/dist/editor/FieldActionsOverlay.js.map +1 -1
  20. package/dist/editor/FieldListField.js +1 -1
  21. package/dist/editor/FieldListField.js.map +1 -1
  22. package/dist/editor/LinkEditorDialog.js +33 -24
  23. package/dist/editor/LinkEditorDialog.js.map +1 -1
  24. package/dist/editor/MainLayout.js +2 -2
  25. package/dist/editor/MainLayout.js.map +1 -1
  26. package/dist/editor/PictureEditor.js +1 -1
  27. package/dist/editor/PictureEditor.js.map +1 -1
  28. package/dist/editor/ai/AgentTerminal.js +63 -26
  29. package/dist/editor/ai/AgentTerminal.js.map +1 -1
  30. package/dist/editor/ai/Agents.js +7 -2
  31. package/dist/editor/ai/Agents.js.map +1 -1
  32. package/dist/editor/client/EditorShell.js +178 -79
  33. package/dist/editor/client/EditorShell.js.map +1 -1
  34. package/dist/editor/client/OperationDialogContent.d.ts +13 -0
  35. package/dist/editor/client/OperationDialogContent.js +13 -0
  36. package/dist/editor/client/OperationDialogContent.js.map +1 -0
  37. package/dist/editor/client/editContext.d.ts +2 -0
  38. package/dist/editor/client/editContext.js.map +1 -1
  39. package/dist/editor/client/hooks/useGlobalEditorKeyDown.js +5 -2
  40. package/dist/editor/client/hooks/useGlobalEditorKeyDown.js.map +1 -1
  41. package/dist/editor/client/hooks/useQuota.d.ts +4 -0
  42. package/dist/editor/client/hooks/useQuota.js.map +1 -1
  43. package/dist/editor/client/hooks/useSocketMessageHandler.d.ts +2 -2
  44. package/dist/editor/client/hooks/useSocketMessageHandler.js +5 -7
  45. package/dist/editor/client/hooks/useSocketMessageHandler.js.map +1 -1
  46. package/dist/editor/client/operations.d.ts +1 -0
  47. package/dist/editor/client/operations.js +332 -8
  48. package/dist/editor/client/operations.js.map +1 -1
  49. package/dist/editor/client/ui/EditorChrome.js +1 -1
  50. package/dist/editor/client/ui/EditorChrome.js.map +1 -1
  51. package/dist/editor/commands/itemCommands.d.ts +0 -1
  52. package/dist/editor/commands/itemCommands.js +1 -16
  53. package/dist/editor/commands/itemCommands.js.map +1 -1
  54. package/dist/editor/commands/undo.js +6 -2
  55. package/dist/editor/commands/undo.js.map +1 -1
  56. package/dist/editor/menubar/toolbar-sections/ViewportControls.js +1 -1
  57. package/dist/editor/menubar/toolbar-sections/ViewportControls.js.map +1 -1
  58. package/dist/editor/page-editor-chrome/FieldActionIndicator.js +56 -2
  59. package/dist/editor/page-editor-chrome/FieldActionIndicator.js.map +1 -1
  60. package/dist/editor/page-editor-chrome/FrameMenu.js +5 -4
  61. package/dist/editor/page-editor-chrome/FrameMenu.js.map +1 -1
  62. package/dist/editor/page-editor-chrome/PlaceholderDropZones.js +5 -1
  63. package/dist/editor/page-editor-chrome/PlaceholderDropZones.js.map +1 -1
  64. package/dist/editor/page-viewer/PageViewerFrame.js +118 -13
  65. package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
  66. package/dist/editor/reviews/CreateReviewDialog.js +1 -1
  67. package/dist/editor/reviews/CreateReviewDialog.js.map +1 -1
  68. package/dist/editor/reviews/DecisionsMatrix.js +1 -1
  69. package/dist/editor/reviews/DecisionsMatrix.js.map +1 -1
  70. package/dist/editor/reviews/ReviewsList.js +1 -1
  71. package/dist/editor/reviews/ReviewsList.js.map +1 -1
  72. package/dist/editor/services/editService.d.ts +20 -3
  73. package/dist/editor/services/editService.js +17 -17
  74. package/dist/editor/services/editService.js.map +1 -1
  75. package/dist/editor/services/indexService.d.ts +4 -1
  76. package/dist/editor/services/indexService.js +12 -0
  77. package/dist/editor/services/indexService.js.map +1 -1
  78. package/dist/editor/services/serviceHelper.js +1 -0
  79. package/dist/editor/services/serviceHelper.js.map +1 -1
  80. package/dist/editor/settings/About.d.ts +1 -0
  81. package/dist/editor/settings/About.js +9 -0
  82. package/dist/editor/settings/About.js.map +1 -0
  83. package/dist/editor/settings/AllAgentsPanel.d.ts +5 -0
  84. package/dist/editor/settings/AllAgentsPanel.js +126 -0
  85. package/dist/editor/settings/AllAgentsPanel.js.map +1 -0
  86. package/dist/editor/settings/IndexOverview.d.ts +1 -0
  87. package/dist/editor/settings/IndexOverview.js +471 -0
  88. package/dist/editor/settings/IndexOverview.js.map +1 -0
  89. package/dist/editor/settings/Info.d.ts +1 -0
  90. package/dist/editor/settings/Info.js +11 -0
  91. package/dist/editor/settings/Info.js.map +1 -0
  92. package/dist/editor/settings/LatestFeedback.d.ts +1 -0
  93. package/dist/editor/settings/LatestFeedback.js +136 -0
  94. package/dist/editor/settings/LatestFeedback.js.map +1 -0
  95. package/dist/editor/settings/QuotaInfo.d.ts +1 -0
  96. package/dist/editor/settings/QuotaInfo.js +102 -0
  97. package/dist/editor/settings/QuotaInfo.js.map +1 -0
  98. package/dist/editor/settings/SettingsMenu.d.ts +1 -0
  99. package/dist/editor/settings/SettingsMenu.js +74 -0
  100. package/dist/editor/settings/SettingsMenu.js.map +1 -0
  101. package/dist/editor/settings/SettingsView.d.ts +1 -0
  102. package/dist/editor/settings/SettingsView.js +85 -0
  103. package/dist/editor/settings/SettingsView.js.map +1 -0
  104. package/dist/editor/settings/Setup.d.ts +1 -0
  105. package/dist/editor/settings/Setup.js +211 -0
  106. package/dist/editor/settings/Setup.js.map +1 -0
  107. package/dist/editor/settings/Status.d.ts +1 -0
  108. package/dist/editor/settings/Status.js +85 -0
  109. package/dist/editor/settings/Status.js.map +1 -0
  110. package/dist/editor/settings/WebSocketMessages.d.ts +1 -0
  111. package/dist/editor/settings/WebSocketMessages.js +71 -0
  112. package/dist/editor/settings/WebSocketMessages.js.map +1 -0
  113. package/dist/editor/settings/panels/AgentsPanel.d.ts +6 -0
  114. package/dist/editor/settings/panels/AgentsPanel.js +186 -0
  115. package/dist/editor/settings/panels/AgentsPanel.js.map +1 -0
  116. package/dist/editor/settings/panels/DatabasePanel.d.ts +6 -0
  117. package/dist/editor/settings/panels/DatabasePanel.js +50 -0
  118. package/dist/editor/settings/panels/DatabasePanel.js.map +1 -0
  119. package/dist/editor/settings/panels/ItemConfigPanel.d.ts +13 -0
  120. package/dist/editor/settings/panels/ItemConfigPanel.js +52 -0
  121. package/dist/editor/settings/panels/ItemConfigPanel.js.map +1 -0
  122. package/dist/editor/settings/panels/ModelsPanel.d.ts +6 -0
  123. package/dist/editor/settings/panels/ModelsPanel.js +269 -0
  124. package/dist/editor/settings/panels/ModelsPanel.js.map +1 -0
  125. package/dist/editor/settings/panels/ProvidersPanel.d.ts +6 -0
  126. package/dist/editor/settings/panels/ProvidersPanel.js +206 -0
  127. package/dist/editor/settings/panels/ProvidersPanel.js.map +1 -0
  128. package/dist/editor/settings/panels/SearchConfigPanel.d.ts +6 -0
  129. package/dist/editor/settings/panels/SearchConfigPanel.js +134 -0
  130. package/dist/editor/settings/panels/SearchConfigPanel.js.map +1 -0
  131. package/dist/editor/settings/panels/SettingsPanel.d.ts +6 -0
  132. package/dist/editor/settings/panels/SettingsPanel.js +39 -0
  133. package/dist/editor/settings/panels/SettingsPanel.js.map +1 -0
  134. package/dist/editor/settings/panels/StatusPanel.d.ts +6 -0
  135. package/dist/editor/settings/panels/StatusPanel.js +141 -0
  136. package/dist/editor/settings/panels/StatusPanel.js.map +1 -0
  137. package/dist/editor/settings/panels/ToolsPanel.d.ts +6 -0
  138. package/dist/editor/settings/panels/ToolsPanel.js +192 -0
  139. package/dist/editor/settings/panels/ToolsPanel.js.map +1 -0
  140. package/dist/editor/settings/panels/index.d.ts +14 -0
  141. package/dist/editor/settings/panels/index.js +15 -0
  142. package/dist/editor/settings/panels/index.js.map +1 -0
  143. package/dist/editor/settings/panels/useSidebarEditor.d.ts +15 -0
  144. package/dist/editor/settings/panels/useSidebarEditor.js +24 -0
  145. package/dist/editor/settings/panels/useSidebarEditor.js.map +1 -0
  146. package/dist/editor/settings/setup-steps/AiSetupStep/EmbeddingsModelSection.d.ts +2 -0
  147. package/dist/editor/settings/setup-steps/AiSetupStep/EmbeddingsModelSection.js +195 -0
  148. package/dist/editor/settings/setup-steps/AiSetupStep/EmbeddingsModelSection.js.map +1 -0
  149. package/dist/editor/settings/setup-steps/AiSetupStep/index.d.ts +2 -0
  150. package/dist/editor/settings/setup-steps/AiSetupStep/index.js +22 -0
  151. package/dist/editor/settings/setup-steps/AiSetupStep/index.js.map +1 -0
  152. package/dist/editor/settings/setup-steps/AiSetupStep/provider/ProviderSection.d.ts +1 -0
  153. package/dist/editor/settings/setup-steps/AiSetupStep/provider/ProviderSection.js +233 -0
  154. package/dist/editor/settings/setup-steps/AiSetupStep/provider/ProviderSection.js.map +1 -0
  155. package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersList.d.ts +15 -0
  156. package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersList.js +14 -0
  157. package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersList.js.map +1 -0
  158. package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersSection.d.ts +1 -0
  159. package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersSection.js +94 -0
  160. package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersSection.js.map +1 -0
  161. package/dist/editor/settings/setup-steps/AiSetupStep/tools/GenerateToolsSection.d.ts +1 -0
  162. package/dist/editor/settings/setup-steps/AiSetupStep/tools/GenerateToolsSection.js +367 -0
  163. package/dist/editor/settings/setup-steps/AiSetupStep/tools/GenerateToolsSection.js.map +1 -0
  164. package/dist/editor/settings/setup-steps/AiSetupStep/types.d.ts +1 -0
  165. package/dist/editor/settings/setup-steps/AiSetupStep/types.js +2 -0
  166. package/dist/editor/settings/setup-steps/AiSetupStep/types.js.map +1 -0
  167. package/dist/editor/settings/setup-steps/AiSetupStep/utils.d.ts +5 -0
  168. package/dist/editor/settings/setup-steps/AiSetupStep/utils.js +44 -0
  169. package/dist/editor/settings/setup-steps/AiSetupStep/utils.js.map +1 -0
  170. package/dist/editor/settings/setup-steps/IndexSetupStep.d.ts +2 -0
  171. package/dist/editor/settings/setup-steps/IndexSetupStep.js +36 -0
  172. package/dist/editor/settings/setup-steps/IndexSetupStep.js.map +1 -0
  173. package/dist/editor/settings/setup-steps/SettingsSetupStep.d.ts +2 -0
  174. package/dist/editor/settings/setup-steps/SettingsSetupStep.js +111 -0
  175. package/dist/editor/settings/setup-steps/SettingsSetupStep.js.map +1 -0
  176. package/dist/editor/settings/setup-steps/SetupOverview.d.ts +14 -0
  177. package/dist/editor/settings/setup-steps/SetupOverview.js +38 -0
  178. package/dist/editor/settings/setup-steps/SetupOverview.js.map +1 -0
  179. package/dist/editor/settings/status/coreStatusChecks.d.ts +25 -0
  180. package/dist/editor/settings/status/coreStatusChecks.js +231 -0
  181. package/dist/editor/settings/status/coreStatusChecks.js.map +1 -0
  182. package/dist/editor/settings/status/index.d.ts +3 -0
  183. package/dist/editor/settings/status/index.js +3 -0
  184. package/dist/editor/settings/status/index.js.map +1 -0
  185. package/dist/editor/settings/status/useStartupChecks.d.ts +17 -0
  186. package/dist/editor/settings/status/useStartupChecks.js +54 -0
  187. package/dist/editor/settings/status/useStartupChecks.js.map +1 -0
  188. package/dist/editor/sidebar/EditHistory.js +18 -14
  189. package/dist/editor/sidebar/EditHistory.js.map +1 -1
  190. package/dist/editor/sidebar/MainContentTree.js +0 -1
  191. package/dist/editor/sidebar/MainContentTree.js.map +1 -1
  192. package/dist/editor/sidebar/OperationItem.js +4 -3
  193. package/dist/editor/sidebar/OperationItem.js.map +1 -1
  194. package/dist/editor/ui/PerfectTree.js +1 -1
  195. package/dist/editor/ui/PerfectTree.js.map +1 -1
  196. package/dist/editor/ui/Section.js +3 -3
  197. package/dist/editor/ui/Section.js.map +1 -1
  198. package/dist/editor/ui/SimpleMenu.js +13 -4
  199. package/dist/editor/ui/SimpleMenu.js.map +1 -1
  200. package/dist/editor/ui/SimpleToolbar.js +1 -1
  201. package/dist/editor/ui/SimpleToolbar.js.map +1 -1
  202. package/dist/editor/utils/keyboardNavigation.js +89 -27
  203. package/dist/editor/utils/keyboardNavigation.js.map +1 -1
  204. package/dist/revision.d.ts +2 -2
  205. package/dist/revision.js +2 -2
  206. package/dist/setup/SetupWizardPage.js +2 -2
  207. package/dist/setup/SetupWizardPage.js.map +1 -1
  208. package/dist/setup/services/setupWizardService.d.ts +132 -12
  209. package/dist/setup/services/setupWizardService.js +82 -6
  210. package/dist/setup/services/setupWizardService.js.map +1 -1
  211. package/dist/setup/wizard/index.d.ts +5 -4
  212. package/dist/setup/wizard/index.js +6 -4
  213. package/dist/setup/wizard/index.js.map +1 -1
  214. package/dist/setup/wizard/steps/AddModelDialog.d.ts +10 -0
  215. package/dist/setup/wizard/steps/AddModelDialog.js +119 -0
  216. package/dist/setup/wizard/steps/AddModelDialog.js.map +1 -0
  217. package/dist/setup/wizard/steps/ImportModelDialog.d.ts +10 -0
  218. package/dist/setup/wizard/steps/ImportModelDialog.js +351 -0
  219. package/dist/setup/wizard/steps/ImportModelDialog.js.map +1 -0
  220. package/dist/splash-screen/ModernSplashScreen.js +1 -1
  221. package/dist/splash-screen/ModernSplashScreen.js.map +1 -1
  222. package/dist/styles.css +183 -10
  223. package/dist/types.d.ts +36 -1
  224. package/package.json +4 -4
@@ -0,0 +1,211 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState, useMemo, useEffect } from "react";
3
+ import { useEditContext } from "../client/editContext";
4
+ import { DatabasePanel } from "./panels/DatabasePanel";
5
+ import { AiSetupStep } from "./setup-steps/AiSetupStep";
6
+ import { IndexSetupStep } from "./setup-steps/IndexSetupStep";
7
+ import { ProvidersPanel } from "./panels/ProvidersPanel";
8
+ import { ModelsPanel } from "./panels/ModelsPanel";
9
+ import { AgentsPanel } from "./panels/AgentsPanel";
10
+ import { SearchConfigPanel } from "./panels/SearchConfigPanel";
11
+ import { SetupOverview } from "./setup-steps/SetupOverview";
12
+ import { Button } from "../../components/ui/button";
13
+ import { Database, Server, Brain, Bot, Sparkles, Search, Languages, ArrowLeft, Settings, } from "lucide-react";
14
+ export function Setup() {
15
+ const editContext = useEditContext();
16
+ const configuredSteps = editContext?.configuration?.setup?.steps;
17
+ const steps = useMemo(() => {
18
+ if (configuredSteps && configuredSteps.length > 0)
19
+ return configuredSteps;
20
+ return [
21
+ DatabasePanel,
22
+ ProvidersPanel,
23
+ ModelsPanel,
24
+ AgentsPanel,
25
+ AiSetupStep,
26
+ SearchConfigPanel,
27
+ IndexSetupStep,
28
+ ];
29
+ }, [configuredSteps]);
30
+ // Initialize from URL hash if present, otherwise null (overview)
31
+ const [currentStepId, setCurrentStepId] = useState(() => {
32
+ if (typeof window !== "undefined") {
33
+ const hash = window.location.hash.replace("#", "");
34
+ return hash || null;
35
+ }
36
+ return null;
37
+ });
38
+ // Sync URL hash with current step
39
+ useEffect(() => {
40
+ if (typeof window !== "undefined") {
41
+ if (currentStepId) {
42
+ window.history.pushState({ step: currentStepId }, "", `#${currentStepId}`);
43
+ }
44
+ else {
45
+ window.history.pushState({ step: null }, "", window.location.pathname + window.location.search);
46
+ }
47
+ }
48
+ }, [currentStepId]);
49
+ // Handle browser back/forward buttons and hash changes
50
+ useEffect(() => {
51
+ const handleHashChange = () => {
52
+ const hash = window.location.hash.replace("#", "");
53
+ setCurrentStepId(hash || null);
54
+ };
55
+ window.addEventListener("popstate", handleHashChange);
56
+ window.addEventListener("hashchange", handleHashChange);
57
+ return () => {
58
+ window.removeEventListener("popstate", handleHashChange);
59
+ window.removeEventListener("hashchange", handleHashChange);
60
+ };
61
+ }, []);
62
+ // Prevent global keyboard navigation handler from interfering with ALT+LEFT/ALT+RIGHT
63
+ // when we're in the Setup view
64
+ useEffect(() => {
65
+ const handleKeyDown = (event) => {
66
+ // Only handle ALT+LEFT/ALT+RIGHT when we're in Setup view
67
+ if (event.altKey &&
68
+ (event.key === "ArrowLeft" || event.key === "ArrowRight")) {
69
+ // Stop propagation to prevent the global keyboard navigation handler
70
+ // from intercepting this and causing double navigation
71
+ event.stopPropagation();
72
+ // Don't prevent default - let the browser handle it naturally
73
+ // This allows the browser's back/forward to work correctly
74
+ }
75
+ };
76
+ // Use capture phase to intercept before other handlers
77
+ window.addEventListener("keydown", handleKeyDown, true);
78
+ return () => window.removeEventListener("keydown", handleKeyDown, true);
79
+ }, []);
80
+ // Map steps to overview format
81
+ const stepMap = useMemo(() => {
82
+ const map = new Map();
83
+ // Core steps
84
+ map.set("database", DatabasePanel);
85
+ map.set("providers", ProvidersPanel);
86
+ map.set("models", ModelsPanel);
87
+ map.set("agents", AgentsPanel);
88
+ map.set("tools", AiSetupStep);
89
+ map.set("search", SearchConfigPanel);
90
+ map.set("index", IndexSetupStep);
91
+ // Check for LocalizationSetupStep in configured steps
92
+ if (configuredSteps) {
93
+ const LocalizationStep = configuredSteps.find((step) => step &&
94
+ typeof step === "function" &&
95
+ (step.name === "LocalizationSetupStep" ||
96
+ step.displayName === "LocalizationSetupStep" ||
97
+ step.toString().includes("LocalizationSetupStep")));
98
+ if (LocalizationStep) {
99
+ map.set("localization", LocalizationStep);
100
+ }
101
+ }
102
+ return map;
103
+ }, [configuredSteps]);
104
+ const overviewSteps = useMemo(() => {
105
+ const links = [
106
+ {
107
+ id: "database",
108
+ title: "Database Setup",
109
+ description: "Verify that all database migrations ran successfully",
110
+ icon: _jsx(Database, { strokeWidth: 1.5, className: "h-5 w-5" }),
111
+ component: DatabasePanel,
112
+ },
113
+ {
114
+ id: "providers",
115
+ title: "AI Providers",
116
+ description: "Configure AI providers (OpenAI, Azure OpenAI, OpenRouter)",
117
+ icon: _jsx(Server, { strokeWidth: 1.5, className: "h-5 w-5" }),
118
+ component: ProvidersPanel,
119
+ },
120
+ {
121
+ id: "models",
122
+ title: "AI Models",
123
+ description: "Install and configure AI models for chat and other tasks",
124
+ icon: _jsx(Brain, { strokeWidth: 1.5, className: "h-5 w-5" }),
125
+ component: ModelsPanel,
126
+ },
127
+ {
128
+ id: "agents",
129
+ title: "AI Agent Profiles",
130
+ description: "Install and configure AI agent profiles",
131
+ icon: _jsx(Bot, { strokeWidth: 1.5, className: "h-5 w-5" }),
132
+ component: AgentsPanel,
133
+ },
134
+ {
135
+ id: "tools",
136
+ title: "AI Tools Setup",
137
+ description: "Fix missing AI tools by ensuring required containers exist and generating tool items",
138
+ icon: _jsx(Sparkles, { strokeWidth: 1.5, className: "h-5 w-5" }),
139
+ component: AiSetupStep,
140
+ },
141
+ {
142
+ id: "search",
143
+ title: "Search Index Configuration",
144
+ description: "Configure search index and embeddings models",
145
+ icon: _jsx(Search, { strokeWidth: 1.5, className: "h-5 w-5" }),
146
+ component: SearchConfigPanel,
147
+ },
148
+ ];
149
+ // Add localization step if it exists in configured steps
150
+ // Check by component name or displayName
151
+ if (configuredSteps) {
152
+ const LocalizationStep = configuredSteps.find((step) => step &&
153
+ typeof step === "function" &&
154
+ (step.name === "LocalizationSetupStep" ||
155
+ step.displayName === "LocalizationSetupStep" ||
156
+ step.toString().includes("LocalizationSetupStep")));
157
+ if (LocalizationStep) {
158
+ links.push({
159
+ id: "localization",
160
+ title: "Localization Setup",
161
+ description: "Configure translation services and localization settings",
162
+ icon: _jsx(Languages, { strokeWidth: 1.5, className: "h-5 w-5" }),
163
+ component: LocalizationStep,
164
+ });
165
+ }
166
+ }
167
+ // Add settings step at the end
168
+ links.push({
169
+ id: "settings",
170
+ title: "Parhelia System Settings",
171
+ description: "Open and edit the Parhelia system settings item",
172
+ icon: _jsx(Settings, { strokeWidth: 1.5, className: "h-5 w-5" }),
173
+ component: DatabasePanel, // Dummy component, handled specially in handleNavigateToStep
174
+ });
175
+ return links;
176
+ }, [configuredSteps]);
177
+ const handleNavigateToStep = async (stepId) => {
178
+ // Special handling for settings step - navigate to item instead of showing step
179
+ if (stepId === "settings" && editContext) {
180
+ try {
181
+ const item = await editContext.loadItem("/sitecore/system/Parhelia/Settings");
182
+ if (item) {
183
+ editContext.switchView("content-tree");
184
+ }
185
+ else {
186
+ console.warn("Failed to load Parhelia settings item: item is undefined");
187
+ }
188
+ }
189
+ catch (error) {
190
+ console.error("Failed to load Parhelia settings item:", error);
191
+ }
192
+ return;
193
+ }
194
+ setCurrentStepId(stepId);
195
+ };
196
+ const handleBackToOverview = () => {
197
+ setCurrentStepId(null);
198
+ };
199
+ // Show individual step
200
+ if (currentStepId) {
201
+ const StepComponent = stepMap.get(currentStepId);
202
+ if (!StepComponent) {
203
+ return (_jsx("div", { className: "flex h-full items-center justify-center", children: _jsxs("div", { className: "text-center", children: [_jsx("p", { className: "text-gray-600", children: "Step not found" }), _jsx(Button, { onClick: handleBackToOverview, className: "mt-4", children: "Back to Overview" })] }) }));
204
+ }
205
+ return (_jsxs("div", { className: "flex h-full flex-col", children: [_jsx("div", { className: "flex items-start justify-between border-b border-gray-200 bg-white px-4 py-3", children: _jsxs("div", { className: "flex items-start gap-3", children: [_jsxs(Button, { variant: "outline", size: "sm", onClick: handleBackToOverview, className: "mt-0.5", children: [_jsx(ArrowLeft, { className: "mr-2 h-4 w-4" }), "Back to Overview"] }), _jsxs("div", { className: "flex flex-col", children: [_jsx("h2", { className: "text-2xl font-semibold text-gray-900", children: overviewSteps.find((s) => s.id === currentStepId)?.title ||
206
+ "Setup Step" }), overviewSteps.find((s) => s.id === currentStepId)?.description && (_jsx("p", { className: "text-sm text-gray-500", children: overviewSteps.find((s) => s.id === currentStepId)?.description }))] })] }) }), _jsx("div", { className: "flex-1 overflow-auto p-4", children: _jsx("div", { className: "mx-auto max-w-4xl", children: _jsx(StepComponent, {}) }) })] }));
207
+ }
208
+ // Show overview
209
+ return (_jsx(SetupOverview, { steps: overviewSteps, onNavigateToStep: handleNavigateToStep }));
210
+ }
211
+ //# sourceMappingURL=Setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Setup.js","sourceRoot":"","sources":["../../../src/editor/settings/Setup.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function Status(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,85 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useEffect, useState } from "react";
3
+ import { usePathname, useSearchParams } from "next/navigation";
4
+ import { useEditContext } from "../client/editContext";
5
+ import { SimpleMenu } from "../ui/SimpleMenu";
6
+ import { Splitter } from "../ui/Splitter";
7
+ import { Info } from "lucide-react";
8
+ export function Status() {
9
+ const editContext = useEditContext();
10
+ const config = editContext?.configuration;
11
+ const searchParams = useSearchParams();
12
+ const urlActiveItemKey = searchParams.get("ccpanel");
13
+ // Get the first available panel as default
14
+ const defaultActiveItemKey = config?.settings.groups?.flatMap((x) => x.panels)?.[0]?.id;
15
+ const [activeItemKey, setActiveItemKey] = useState(urlActiveItemKey || defaultActiveItemKey || null);
16
+ const pathname = usePathname();
17
+ const updateUrl = (key) => {
18
+ if (urlActiveItemKey === key)
19
+ return;
20
+ const current = new URLSearchParams(Array.from(searchParams.entries()));
21
+ if (key) {
22
+ current.set("ccpanel", key);
23
+ // Ensure view=settings is set when navigating within Settings
24
+ if (!current.has("view")) {
25
+ current.set("view", "settings");
26
+ }
27
+ }
28
+ else {
29
+ current.delete("ccpanel");
30
+ }
31
+ // Use window.history.pushState directly to avoid page reloads in static export mode
32
+ // This matches the pattern used in EditorShell.tsx
33
+ const newUrl = `${pathname}?${current.toString()}`;
34
+ window.history.pushState(null, "", newUrl);
35
+ };
36
+ // Keep active item in sync with URL param changes (e.g., programmatic navigation)
37
+ useEffect(() => {
38
+ if (urlActiveItemKey && urlActiveItemKey !== activeItemKey) {
39
+ setActiveItemKey(urlActiveItemKey);
40
+ }
41
+ }, [urlActiveItemKey]);
42
+ // Set default active item when config loads and no active item is set
43
+ useEffect(() => {
44
+ if (!activeItemKey && defaultActiveItemKey) {
45
+ setActiveItemKey(defaultActiveItemKey);
46
+ }
47
+ }, [defaultActiveItemKey, activeItemKey]);
48
+ const items = config?.settings.groups.map((group) => {
49
+ return {
50
+ id: group.title,
51
+ label: group.title,
52
+ icon: group.icon,
53
+ items: group.panels.map((panel) => ({
54
+ id: panel.id,
55
+ label: panel.title,
56
+ icon: panel.icon,
57
+ })) || [],
58
+ };
59
+ });
60
+ // Find the currently selected panel content
61
+ const selectedPanel = config?.settings.groups
62
+ ?.flatMap((x) => x.panels)
63
+ ?.find((item) => item.id === activeItemKey);
64
+ if (!items) {
65
+ return (_jsx("div", { className: "flex h-full flex-col items-center justify-center", children: "Loading..." }));
66
+ }
67
+ const panels = [
68
+ {
69
+ name: "menu",
70
+ defaultSize: 300,
71
+ content: (_jsx("div", { className: "h-full border-r border-gray-200", children: _jsx(SimpleMenu, { items: items, activeItemKey: activeItemKey, onItemClick: (item) => {
72
+ setActiveItemKey(item.id);
73
+ // Only update URL when user explicitly clicks on an item
74
+ updateUrl(item.id);
75
+ } }) })),
76
+ },
77
+ {
78
+ name: "content",
79
+ defaultSize: "auto",
80
+ content: (_jsx("div", { className: "absolute inset-0 flex flex-col bg-white select-text", children: selectedPanel ? (_jsxs(_Fragment, { children: [_jsxs("div", { className: "bg-theme-secondary flex flex-col gap-3 border-b border-gray-200 px-6 py-4", children: [_jsxs("div", { className: "flex items-center gap-3", children: [selectedPanel.icon ? (_jsx("span", { className: "text-gray-500 [&_svg]:h-5 [&_svg]:w-5", children: selectedPanel.icon })) : null, _jsx("h2", { className: "text-2xl font-semibold text-gray-900", children: selectedPanel.title })] }), selectedPanel.subtitle && (_jsx("p", { className: "text-sm text-gray-500", children: selectedPanel.subtitle }))] }), _jsx("div", { className: "flex-1 overflow-auto", children: selectedPanel.content })] })) : (_jsxs("div", { className: "flex h-full flex-col items-center justify-center text-gray-500", children: [_jsx(Info, { className: "mb-4 h-10 w-10" }), _jsx("p", { children: "Select a panel from the menu to view its content" })] })) })),
81
+ },
82
+ ];
83
+ return (_jsx("div", { className: "h-full", children: _jsx(Splitter, { panels: panels, localStorageKey: "settings-splitter" }) }));
84
+ }
85
+ //# sourceMappingURL=Status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Status.js","sourceRoot":"","sources":["../../../src/editor/settings/Status.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function WebSocketMessages(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,71 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState, useEffect, useRef } from "react";
3
+ import { formatTime } from "../utils";
4
+ import { useEditContext } from "../client/editContext";
5
+ import { MessageSquare, ChevronUp, ChevronDown } from "lucide-react";
6
+ export function WebSocketMessages() {
7
+ const editContext = useEditContext();
8
+ const [expandedMessages, setExpandedMessages] = useState(new Set());
9
+ const [autoScroll, setAutoScroll] = useState(true);
10
+ const messagesEndRef = useRef(null);
11
+ const containerRef = useRef(null);
12
+ // Get messages from central store
13
+ const messages = editContext?.webSocketMessages || [];
14
+ // Auto-scroll to bottom when new messages arrive
15
+ useEffect(() => {
16
+ if (autoScroll && messagesEndRef.current) {
17
+ messagesEndRef.current.scrollIntoView({ behavior: "smooth" });
18
+ }
19
+ }, [messages, autoScroll]);
20
+ const toggleExpanded = (messageId) => {
21
+ setExpandedMessages((prev) => {
22
+ const newSet = new Set(prev);
23
+ if (newSet.has(messageId)) {
24
+ newSet.delete(messageId);
25
+ }
26
+ else {
27
+ newSet.add(messageId);
28
+ }
29
+ return newSet;
30
+ });
31
+ };
32
+ const formatTimestamp = (isoString) => {
33
+ const date = new Date(isoString);
34
+ const base = formatTime(date);
35
+ return base + "." + date.getMilliseconds().toString().padStart(3, "0");
36
+ };
37
+ const getMessageTypeColor = (type) => {
38
+ const colors = {
39
+ "active-sessions": "bg-blue-100 text-blue-800",
40
+ "item-deleted": "bg-red-100 text-red-800",
41
+ "item-changed": "bg-yellow-100 text-yellow-800",
42
+ "item-version-added": "bg-green-100 text-green-800",
43
+ "load-item": "bg-teal-100 text-teal-800",
44
+ "edit-operation": "bg-purple-100 text-purple-800",
45
+ "executing-field-action": "bg-orange-100 text-orange-800",
46
+ "comment-updated": "bg-cyan-100 text-cyan-800",
47
+ "comment-deleted": "bg-red-100 text-red-800",
48
+ "suggested-edit-updated": "bg-indigo-100 text-indigo-800",
49
+ "suggested-edit-deleted": "bg-red-100 text-red-800",
50
+ "update-quota": "bg-gray-100 text-gray-800",
51
+ "agent:run:closed": "bg-red-100 text-red-800",
52
+ "agent:run:start": "bg-green-100 text-green-800",
53
+ "agent:name:updated": "bg-blue-100 text-blue-800",
54
+ };
55
+ return colors[type] || "bg-gray-100 text-gray-800";
56
+ };
57
+ const clearMessages = () => {
58
+ editContext?.clearWebSocketMessages();
59
+ };
60
+ const handleScroll = () => {
61
+ if (!containerRef.current)
62
+ return;
63
+ const { scrollTop, scrollHeight, clientHeight } = containerRef.current;
64
+ const isAtBottom = scrollHeight - scrollTop <= clientHeight + 10;
65
+ setAutoScroll(isAtBottom);
66
+ };
67
+ return (_jsxs("div", { className: "flex h-full flex-col", children: [_jsxs("div", { className: "flex items-center justify-between border-b border-gray-200 p-4", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(MessageSquare, { className: "h-5 w-5" }), _jsx("span", { className: "rounded bg-gray-100 px-2 py-1 text-sm text-gray-800", children: messages.length })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsxs("label", { className: "flex items-center gap-1 text-sm", children: [_jsx("input", { type: "checkbox", checked: autoScroll, onChange: (e) => setAutoScroll(e.target.checked), className: "rounded" }), "Auto-scroll"] }), _jsx("button", { onClick: clearMessages, className: "rounded bg-red-500 px-3 py-1 text-sm text-white hover:bg-red-600", children: "Clear" })] })] }), _jsxs("div", { ref: containerRef, className: "flex-1 space-y-2 overflow-y-auto p-4", onScroll: handleScroll, children: [messages.length === 0 ? (_jsx("div", { className: "py-8 text-center text-gray-500", children: "No WebSocket messages received yet" })) : (messages.map((message) => (_jsxs("div", { className: "rounded-lg border border-gray-200", children: [_jsxs("div", { className: "flex cursor-pointer items-center justify-between p-3 hover:bg-gray-50", onClick: () => toggleExpanded(message.id), children: [_jsxs("div", { className: "flex min-w-0 flex-1 items-center gap-3", children: [_jsx("span", { className: "font-mono text-xs text-gray-500", children: formatTimestamp(message.timestamp) }), _jsx("span", { className: `rounded px-2 py-1 text-xs font-medium ${getMessageTypeColor(message.type)}`, children: message.type }), _jsx("span", { className: "truncate text-sm text-gray-600", children: typeof message.payload === "object"
68
+ ? Object.keys(message.payload).join(", ")
69
+ : String(message.payload) })] }), expandedMessages.has(message.id) ? (_jsx(ChevronUp, { className: "h-4 w-4 text-gray-400" })) : (_jsx(ChevronDown, { className: "h-4 w-4 text-gray-400" }))] }), expandedMessages.has(message.id) && (_jsx("div", { className: "border-t border-gray-200 bg-gray-50 p-3", children: _jsx("pre", { className: "overflow-x-auto font-mono text-xs break-words whitespace-pre-wrap", children: message.rawMessage }) }))] }, message.id)))), _jsx("div", { ref: messagesEndRef })] })] }));
70
+ }
71
+ //# sourceMappingURL=WebSocketMessages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebSocketMessages.js","sourceRoot":"","sources":["../../../src/editor/settings/WebSocketMessages.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Settings panel for AI Agent Profiles configuration.
3
+ * Install and configure AI agent profiles.
4
+ */
5
+ export declare function AgentsPanel(): import("react/jsx-runtime").JSX.Element;
6
+ export default AgentsPanel;
@@ -0,0 +1,186 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useState, useEffect, useMemo } from "react";
3
+ import { Button } from "../../../components/ui/button";
4
+ import { setupWizardService, } from "../../../setup/services/setupWizardService";
5
+ import { CheckCircle, AlertCircle, RefreshCw, Download, Settings, Bot, Shield, RotateCcw, } from "lucide-react";
6
+ import { Splitter } from "../../ui/Splitter";
7
+ import { ItemConfigPanel } from "./ItemConfigPanel";
8
+ /**
9
+ * Reset to Defaults action button for the agent config panel.
10
+ */
11
+ function AgentResetDefaultsAction({ agentKey, disabled, onReset, }) {
12
+ const [resetting, setResetting] = useState(false);
13
+ const handleReset = useCallback(async () => {
14
+ try {
15
+ setResetting(true);
16
+ await setupWizardService.resetAgent({ agentKey });
17
+ onReset();
18
+ }
19
+ catch {
20
+ // Error handling is managed by the parent
21
+ }
22
+ finally {
23
+ setResetting(false);
24
+ }
25
+ }, [agentKey, onReset]);
26
+ return (_jsx(Button, { variant: "outline", size: "sm", onClick: handleReset, disabled: disabled || resetting, children: resetting ? (_jsxs(_Fragment, { children: [_jsx(RefreshCw, { className: "h-3.5 w-3.5 animate-spin", strokeWidth: 1.5 }), "Resetting..."] })) : (_jsxs(_Fragment, { children: [_jsx(RotateCcw, { className: "h-3.5 w-3.5", strokeWidth: 1.5 }), "Reset to Defaults"] })) }));
27
+ }
28
+ /**
29
+ * Settings panel for AI Agent Profiles configuration.
30
+ * Install and configure AI agent profiles.
31
+ */
32
+ export function AgentsPanel() {
33
+ const [state, setState] = useState("loading");
34
+ const [sourceAgents, setSourceAgents] = useState([]);
35
+ const [error, setError] = useState(null);
36
+ const [installing, setInstalling] = useState(null);
37
+ // Sidebar editor state - stores the installed agent ID, name, and key
38
+ const [selectedAgent, setSelectedAgent] = useState(null);
39
+ const handleOpenConfig = useCallback((installedId, agentName, agentKey) => {
40
+ setSelectedAgent({ id: installedId, name: agentName, key: agentKey });
41
+ }, []);
42
+ const handleCloseConfig = useCallback(() => {
43
+ setSelectedAgent(null);
44
+ }, []);
45
+ const loadData = useCallback(async () => {
46
+ try {
47
+ setState("loading");
48
+ setError(null);
49
+ const agents = await setupWizardService.getSourceAgents();
50
+ setSourceAgents(agents);
51
+ setState("success");
52
+ }
53
+ catch (e) {
54
+ setState("error");
55
+ setError(e?.message || "Failed to load agents");
56
+ }
57
+ }, []);
58
+ useEffect(() => {
59
+ loadData();
60
+ }, [loadData]);
61
+ // Get the status of a source agent - now based on source agent's own status
62
+ const getAgentStatus = useCallback((sourceAgent) => {
63
+ // Source agents now have status set by backend based on whether they're installed
64
+ if (sourceAgent.status === "Installed")
65
+ return "installed";
66
+ return "available";
67
+ }, []);
68
+ // Get the installed agent ID for a source agent
69
+ // The backend now returns the installed agent's ID in the source agent when status is "Installed"
70
+ const getInstalledAgentId = useCallback((sourceAgent) => {
71
+ if (sourceAgent.status === "Installed") {
72
+ return sourceAgent.id;
73
+ }
74
+ return undefined;
75
+ }, []);
76
+ // Install a single agent from source
77
+ const handleInstall = useCallback(async (agent) => {
78
+ try {
79
+ setInstalling(agent.key);
80
+ setError(null);
81
+ await setupWizardService.copyAgents({
82
+ sourceAgentKeys: [agent.key],
83
+ });
84
+ await loadData();
85
+ }
86
+ catch (e) {
87
+ setError(e?.message || "Failed to install agent");
88
+ }
89
+ finally {
90
+ setInstalling(null);
91
+ }
92
+ }, [loadData]);
93
+ // Install all available agents
94
+ const handleInstallAll = useCallback(async () => {
95
+ const availableAgents = sourceAgents.filter((agent) => getAgentStatus(agent) === "available");
96
+ if (availableAgents.length === 0)
97
+ return;
98
+ try {
99
+ setInstalling("all");
100
+ setError(null);
101
+ await setupWizardService.copyAgents({
102
+ sourceAgentKeys: availableAgents.map((a) => a.key),
103
+ });
104
+ await loadData();
105
+ }
106
+ catch (e) {
107
+ setError(e?.message || "Failed to install agents");
108
+ }
109
+ finally {
110
+ setInstalling(null);
111
+ }
112
+ }, [sourceAgents, getAgentStatus, loadData]);
113
+ // Count agents by status
114
+ const statusCounts = useMemo(() => {
115
+ let available = 0;
116
+ let installed = 0;
117
+ let needsConfig = 0;
118
+ sourceAgents.forEach((agent) => {
119
+ const status = getAgentStatus(agent);
120
+ if (status === "available") {
121
+ available++;
122
+ }
123
+ else if (status === "installed") {
124
+ installed++;
125
+ if (agent.needsConfiguration) {
126
+ needsConfig++;
127
+ }
128
+ }
129
+ });
130
+ return { available, installed, needsConfig };
131
+ }, [sourceAgents, getAgentStatus]);
132
+ const statusIcon = (stepState) => {
133
+ if (stepState === "success")
134
+ return _jsx(CheckCircle, { className: "h-4 w-4 text-green-600", strokeWidth: 1 });
135
+ if (stepState === "error")
136
+ return _jsx(AlertCircle, { className: "h-4 w-4 text-red-600", strokeWidth: 1 });
137
+ return (_jsx(RefreshCw, { className: "h-4 w-4 animate-spin text-amber-600", strokeWidth: 1 }));
138
+ };
139
+ const getStatusBadge = (status, needsConfig) => {
140
+ if (status === "installed") {
141
+ if (needsConfig) {
142
+ return (_jsx("span", { className: "rounded bg-orange-100 px-2 py-0.5 text-xs font-medium text-orange-700", children: "Needs Config" }));
143
+ }
144
+ return (_jsx("span", { className: "rounded bg-green-100 px-2 py-0.5 text-xs font-medium text-green-700", children: "Installed" }));
145
+ }
146
+ return (_jsx("span", { className: "rounded bg-blue-100 px-2 py-0.5 text-xs font-medium text-blue-700", children: "Available" }));
147
+ };
148
+ // Build the agents list content
149
+ const agentsListContent = (_jsx("div", { className: "h-full overflow-auto p-4", children: _jsx("div", { className: "mx-auto", children: _jsxs("div", { className: "flex h-full flex-col overflow-hidden", children: [_jsxs("div", { className: "shrink-0 space-y-4 pb-4", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("div", { className: "flex items-center gap-2", children: [statusIcon(state), _jsxs("span", { className: "text-sm text-gray-700", children: [statusCounts.installed, " installed", statusCounts.needsConfig > 0 && (_jsxs("span", { className: "ml-1 text-orange-600", children: ["(", statusCounts.needsConfig, " need config)"] })), statusCounts.available > 0 && (_jsxs("span", { className: "ml-1 text-gray-500", children: ["\u2022 ", statusCounts.available, " available"] }))] })] }), _jsxs("div", { className: "flex gap-2", children: [statusCounts.available > 0 && (_jsxs(Button, { size: "sm", variant: "outline", onClick: handleInstallAll, disabled: installing !== null, children: [installing === "all" ? (_jsx(RefreshCw, { className: "mr-1 h-4 w-4 animate-spin" })) : (_jsx(Download, { className: "mr-1 h-4 w-4", strokeWidth: 1 })), "Install All (", statusCounts.available, ")"] })), _jsx(Button, { size: "sm", variant: "ghost", onClick: loadData, disabled: state === "loading", children: _jsx(RefreshCw, { className: `h-4 w-4 ${state === "loading" ? "animate-spin" : ""}`, strokeWidth: 1 }) })] })] }), error && (_jsx("div", { className: "rounded border border-red-200 bg-red-50 p-2 text-xs whitespace-pre-wrap text-red-700", children: error }))] }), _jsx("div", { className: "min-h-0 flex-1 overflow-y-auto", children: sourceAgents.length === 0 && state === "success" ? (_jsxs("div", { className: "flex flex-col items-center justify-center py-12 text-center", children: [_jsx(Bot, { className: "mb-4 h-12 w-12 text-gray-300", strokeWidth: 1 }), _jsx("p", { className: "text-sm text-gray-500", children: "No sample agents available" }), _jsx("p", { className: "text-xs text-gray-400", children: "Sample agents will appear here when configured" })] })) : (_jsx("div", { className: "space-y-3", children: sourceAgents.map((agent) => {
150
+ const status = getAgentStatus(agent);
151
+ const installedId = getInstalledAgentId(agent);
152
+ const isInstalling = installing === agent.key;
153
+ const isProcessing = isInstalling || installing === "all";
154
+ const isSelected = selectedAgent?.id === installedId;
155
+ return (_jsxs("div", { className: `flex items-start gap-3 rounded-lg border p-4 transition-shadow hover:shadow-sm ${isSelected
156
+ ? "border-blue-400 bg-blue-50"
157
+ : "border-gray-200 bg-white"}`, children: [_jsx("div", { className: "flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-gray-100", children: _jsx(Bot, { className: "h-5 w-5 text-gray-600", strokeWidth: 1.5 }) }), _jsx("div", { className: "min-w-0 flex-1", children: _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("h4", { className: "font-medium text-gray-900", children: agent.name }), agent.isMandatory && (_jsxs("span", { className: "flex items-center gap-1 rounded bg-purple-100 px-1.5 py-0.5 text-xs font-medium text-purple-700", title: "This agent is required for core functionality", children: [_jsx(Shield, { className: "h-3 w-3", strokeWidth: 1.5 }), "Required"] })), getStatusBadge(status, agent.needsConfiguration)] }) }), _jsxs("div", { className: "flex shrink-0 items-center gap-2", children: [status === "available" && (_jsxs(Button, { size: "sm", onClick: () => handleInstall(agent), disabled: isProcessing, children: [isInstalling ? (_jsx(RefreshCw, { className: "mr-1 h-4 w-4 animate-spin" })) : (_jsx(Download, { className: "mr-1 h-4 w-4", strokeWidth: 1 })), "Install"] })), status === "installed" && installedId && (_jsxs(Button, { size: "sm", variant: isSelected ? "default" : "ghost", onClick: () => handleOpenConfig(installedId, agent.name, agent.key), className: "shrink-0", children: [_jsx(Settings, { className: "h-4 w-4", strokeWidth: 1.5 }), "Configure"] }))] })] }, agent.key));
158
+ }) })) })] }) }) }));
159
+ // Build splitter panels - only show config panel when an agent is selected
160
+ const panels = selectedAgent?.id
161
+ ? [
162
+ {
163
+ name: "agents-list",
164
+ defaultSize: "auto",
165
+ content: agentsListContent,
166
+ className: "overflow-hidden",
167
+ },
168
+ {
169
+ name: "agent-config",
170
+ defaultSize: 400,
171
+ content: (_jsx(ItemConfigPanel, { itemId: selectedAgent.id, title: `Configure: ${selectedAgent.name || "Agent"}`, onClose: handleCloseConfig, actions: _jsx(AgentResetDefaultsAction, { agentKey: selectedAgent.key, onReset: loadData }) }, selectedAgent.id)),
172
+ className: "overflow-hidden",
173
+ },
174
+ ]
175
+ : [
176
+ {
177
+ name: "agents-list",
178
+ defaultSize: "auto",
179
+ content: agentsListContent,
180
+ className: "overflow-hidden",
181
+ },
182
+ ];
183
+ return (_jsx(Splitter, { panels: panels, localStorageKey: "agents-panel-splitter", direction: "horizontal", className: "h-full" }));
184
+ }
185
+ export default AgentsPanel;
186
+ //# sourceMappingURL=AgentsPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentsPanel.js","sourceRoot":"","sources":["../../../../src/editor/settings/panels/AgentsPanel.tsx"],"names":[],"mappings":"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"}