@parhelia/core 0.2.12782 → 0.2.12786

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 (126) hide show
  1. package/dist/editor/ai/AgentImageCopyButton.d.ts +6 -0
  2. package/dist/editor/ai/AgentImageCopyButton.js +93 -0
  3. package/dist/editor/ai/AgentImageCopyButton.js.map +1 -0
  4. package/dist/editor/ai/terminal/components/EditFieldToolCallContent.d.ts +24 -0
  5. package/dist/editor/ai/terminal/components/EditFieldToolCallContent.js +97 -0
  6. package/dist/editor/ai/terminal/components/EditFieldToolCallContent.js.map +1 -0
  7. package/dist/editor/ai/terminal/components/ValueDiff.d.ts +15 -0
  8. package/dist/editor/ai/terminal/components/ValueDiff.js +21 -0
  9. package/dist/editor/ai/terminal/components/ValueDiff.js.map +1 -0
  10. package/dist/editor/ai/terminal/components/agentThinkingStyles.d.ts +1 -0
  11. package/dist/editor/ai/terminal/components/agentThinkingStyles.js +2 -0
  12. package/dist/editor/ai/terminal/components/agentThinkingStyles.js.map +1 -0
  13. package/dist/editor/ai/terminal/components/toolCallContentRenderers.d.ts +15 -0
  14. package/dist/editor/ai/terminal/components/toolCallContentRenderers.js +12 -0
  15. package/dist/editor/ai/terminal/components/toolCallContentRenderers.js.map +1 -0
  16. package/dist/editor/bridge/protocol.d.ts +17 -0
  17. package/dist/editor/bridge/protocol.js.map +1 -1
  18. package/dist/editor/client/editContext.d.ts +10 -0
  19. package/dist/editor/client/editContext.js.map +1 -1
  20. package/dist/editor/client/hooks/activeSessionSnapshots.d.ts +2 -0
  21. package/dist/editor/client/hooks/activeSessionSnapshots.js +43 -0
  22. package/dist/editor/client/hooks/activeSessionSnapshots.js.map +1 -0
  23. package/dist/editor/client/hooks/operationRefreshDeduplication.d.ts +22 -0
  24. package/dist/editor/client/hooks/operationRefreshDeduplication.js +45 -0
  25. package/dist/editor/client/hooks/operationRefreshDeduplication.js.map +1 -0
  26. package/dist/editor/client/hooks/socketMessageRetention.d.ts +7 -0
  27. package/dist/editor/client/hooks/socketMessageRetention.js +11 -0
  28. package/dist/editor/client/hooks/socketMessageRetention.js.map +1 -0
  29. package/dist/editor/client/hooks/useClientInfoRegistration.d.ts +13 -0
  30. package/dist/editor/client/hooks/useClientInfoRegistration.js +38 -0
  31. package/dist/editor/client/hooks/useClientInfoRegistration.js.map +1 -0
  32. package/dist/editor/client/undoTargetResolution.d.ts +28 -0
  33. package/dist/editor/client/undoTargetResolution.js +69 -0
  34. package/dist/editor/client/undoTargetResolution.js.map +1 -0
  35. package/dist/editor/field-types/richtext/utils/conversion.d.ts +2 -1
  36. package/dist/editor/field-types/richtext/utils/conversion.js +3 -1
  37. package/dist/editor/field-types/richtext/utils/conversion.js.map +1 -1
  38. package/dist/editor/field-types/singleLineTextValue.d.ts +3 -0
  39. package/dist/editor/field-types/singleLineTextValue.js +9 -0
  40. package/dist/editor/field-types/singleLineTextValue.js.map +1 -0
  41. package/dist/editor/insertOptionCompatibility.d.ts +7 -0
  42. package/dist/editor/insertOptionCompatibility.js +15 -0
  43. package/dist/editor/insertOptionCompatibility.js.map +1 -0
  44. package/dist/editor/media-selector/mediaItemDrag.d.ts +28 -0
  45. package/dist/editor/media-selector/mediaItemDrag.js +42 -0
  46. package/dist/editor/media-selector/mediaItemDrag.js.map +1 -0
  47. package/dist/editor/menubar/toolbar-sections/PreviewModeControl.d.ts +1 -0
  48. package/dist/editor/menubar/toolbar-sections/PreviewModeControl.js +14 -0
  49. package/dist/editor/menubar/toolbar-sections/PreviewModeControl.js.map +1 -0
  50. package/dist/editor/menubar/toolbar-sections/RefreshPageControl.d.ts +7 -0
  51. package/dist/editor/menubar/toolbar-sections/RefreshPageControl.js +44 -0
  52. package/dist/editor/menubar/toolbar-sections/RefreshPageControl.js.map +1 -0
  53. package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.js +26 -12
  54. package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.js.map +1 -1
  55. package/dist/editor/page-editor-chrome/InlineFieldHistoryButton.d.ts +58 -0
  56. package/dist/editor/page-editor-chrome/InlineFieldHistoryButton.js +731 -0
  57. package/dist/editor/page-editor-chrome/InlineFieldHistoryButton.js.map +1 -0
  58. package/dist/editor/page-editor-chrome/bridgeLinkValue.d.ts +10 -0
  59. package/dist/editor/page-editor-chrome/bridgeLinkValue.js +55 -0
  60. package/dist/editor/page-editor-chrome/bridgeLinkValue.js.map +1 -0
  61. package/dist/editor/page-viewer/bridgeInlineAiSelection.d.ts +17 -0
  62. package/dist/editor/page-viewer/bridgeInlineAiSelection.js +80 -0
  63. package/dist/editor/page-viewer/bridgeInlineAiSelection.js.map +1 -0
  64. package/dist/editor/page-viewer/bridgeInlineEditCommit.d.ts +18 -0
  65. package/dist/editor/page-viewer/bridgeInlineEditCommit.js +24 -0
  66. package/dist/editor/page-viewer/bridgeInlineEditCommit.js.map +1 -0
  67. package/dist/editor/page-viewer/bridgeItemChangeTarget.d.ts +9 -0
  68. package/dist/editor/page-viewer/bridgeItemChangeTarget.js +38 -0
  69. package/dist/editor/page-viewer/bridgeItemChangeTarget.js.map +1 -0
  70. package/dist/editor/page-viewer/bridgePointerDragRelease.d.ts +31 -0
  71. package/dist/editor/page-viewer/bridgePointerDragRelease.js +32 -0
  72. package/dist/editor/page-viewer/bridgePointerDragRelease.js.map +1 -0
  73. package/dist/editor/page-viewer/fullscreenPagePath.d.ts +1 -0
  74. package/dist/editor/page-viewer/fullscreenPagePath.js +11 -0
  75. package/dist/editor/page-viewer/fullscreenPagePath.js.map +1 -0
  76. package/dist/editor/page-viewer/internalLinkNavigation.d.ts +9 -0
  77. package/dist/editor/page-viewer/internalLinkNavigation.js +104 -0
  78. package/dist/editor/page-viewer/internalLinkNavigation.js.map +1 -0
  79. package/dist/editor/reviews/FeedbackFilters.d.ts +16 -0
  80. package/dist/editor/reviews/FeedbackFilters.js +45 -0
  81. package/dist/editor/reviews/FeedbackFilters.js.map +1 -0
  82. package/dist/editor/reviews/commentState.d.ts +4 -0
  83. package/dist/editor/reviews/commentState.js +15 -0
  84. package/dist/editor/reviews/commentState.js.map +1 -0
  85. package/dist/editor/settings/index/IndexGenerationsSection.d.ts +8 -0
  86. package/dist/editor/settings/index/IndexGenerationsSection.js +93 -0
  87. package/dist/editor/settings/index/IndexGenerationsSection.js.map +1 -0
  88. package/dist/editor/settings/panels/MemoriesPanel.d.ts +16 -0
  89. package/dist/editor/settings/panels/MemoriesPanel.js +292 -0
  90. package/dist/editor/settings/panels/MemoriesPanel.js.map +1 -0
  91. package/dist/editor/settings/panels/MemoryEntryDialog.d.ts +45 -0
  92. package/dist/editor/settings/panels/MemoryEntryDialog.js +167 -0
  93. package/dist/editor/settings/panels/MemoryEntryDialog.js.map +1 -0
  94. package/dist/editor/settings/panels/RenderingHostsPanel.d.ts +2 -0
  95. package/dist/editor/settings/panels/RenderingHostsPanel.js +63 -0
  96. package/dist/editor/settings/panels/RenderingHostsPanel.js.map +1 -0
  97. package/dist/editor/settings/panels/projectTemplateDuplication.d.ts +5 -0
  98. package/dist/editor/settings/panels/projectTemplateDuplication.js +57 -0
  99. package/dist/editor/settings/panels/projectTemplateDuplication.js.map +1 -0
  100. package/dist/editor/sidebar/WorkboxFilters.d.ts +11 -0
  101. package/dist/editor/sidebar/WorkboxFilters.js +61 -0
  102. package/dist/editor/sidebar/WorkboxFilters.js.map +1 -0
  103. package/dist/editor/version-diff/versionDiffGeometryKeys.d.ts +10 -0
  104. package/dist/editor/version-diff/versionDiffGeometryKeys.js +16 -0
  105. package/dist/editor/version-diff/versionDiffGeometryKeys.js.map +1 -0
  106. package/dist/revision.d.ts +2 -2
  107. package/dist/revision.js +2 -2
  108. package/package.json +1 -1
  109. package/dist/editor/ai/terminal/components/AgentEditHistoryButton.d.ts +0 -5
  110. package/dist/editor/ai/terminal/components/AgentEditHistoryButton.js +0 -12
  111. package/dist/editor/ai/terminal/components/AgentEditHistoryButton.js.map +0 -1
  112. package/dist/editor/ai/terminal/components/AgentThinkingDots.d.ts +0 -5
  113. package/dist/editor/ai/terminal/components/AgentThinkingDots.js +0 -9
  114. package/dist/editor/ai/terminal/components/AgentThinkingDots.js.map +0 -1
  115. package/dist/editor/reviews/CommentsAndFeedback.d.ts +0 -8
  116. package/dist/editor/reviews/CommentsAndFeedback.js +0 -17
  117. package/dist/editor/reviews/CommentsAndFeedback.js.map +0 -1
  118. package/dist/editor/reviews/CreateReviewDetailsStep.d.ts +0 -53
  119. package/dist/editor/reviews/CreateReviewDetailsStep.js +0 -77
  120. package/dist/editor/reviews/CreateReviewDetailsStep.js.map +0 -1
  121. package/dist/splash-screen/ParheliaAssistantChat.d.ts +0 -8
  122. package/dist/splash-screen/ParheliaAssistantChat.js +0 -507
  123. package/dist/splash-screen/ParheliaAssistantChat.js.map +0 -1
  124. package/dist/splash-screen/SplashScreenAgentContext.d.ts +0 -28
  125. package/dist/splash-screen/SplashScreenAgentContext.js +0 -51
  126. package/dist/splash-screen/SplashScreenAgentContext.js.map +0 -1
@@ -1,507 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
- import { useState, useEffect, useCallback, startTransition, useRef, } from "react";
4
- import { flushSync } from "react-dom";
5
- import { Loader2, RotateCcw, History, ArrowRight, X, Paperclip, FileText, Image as ImageIcon, } from "lucide-react";
6
- import { CloseButton } from "../components/ui/close-button";
7
- import { useEditContext } from "../editor/client/editContext";
8
- import { loadAiProfiles } from "../editor/services/aiService";
9
- import { AGENT_DOCUMENT_UPLOADED_EVENT, AGENT_DOCUMENTS_CHANGED_EVENT, closeAgent, deleteDocument, getAgentDocuments, getAgentsGrouped, uploadDocument, } from "../editor/services/agentService";
10
- import { AgentTerminal } from "../editor/ai/AgentTerminal";
11
- import { useSplashScreenAgent } from "./SplashScreenAgentContext";
12
- import { ParheliaIconWhite } from "../editor/ui/ParheliaIconWhite";
13
- import { cn } from "../lib/utils";
14
- import { Button } from "../components/ui/button";
15
- import { getSamplePrompts } from "../editor/services/systemService";
16
- const SUGGESTED_PROMPTS = [
17
- {
18
- title: "Draft a blog post",
19
- description: "Write a 500-word post about digital marketing trends.",
20
- prompt: "Can you help me draft a 500-word blog post about the latest trends in digital marketing for 2025?",
21
- },
22
- {
23
- title: "Analyze my page",
24
- description: "Give me feedback on the SEO of my current page.",
25
- prompt: "Please analyze my current page and give me feedback on how I can improve its SEO and readability.",
26
- },
27
- {
28
- title: "Generate ideas",
29
- description: "Suggest 5 creative topics for my next newsletter.",
30
- prompt: "Suggest 5 creative and engaging topics for my next monthly customer newsletter.",
31
- },
32
- {
33
- title: "Fix tone of voice",
34
- description: "Make this text sound more professional and welcoming.",
35
- prompt: "I have some text that I want to sound more professional and welcoming. Can you help me rewrite it?",
36
- },
37
- ];
38
- export const ParheliaAssistantChat = ({ className, externalAgent, }) => {
39
- const editContext = useEditContext();
40
- // Agent/terminal/input state is held in SplashScreenAgentProvider so it
41
- // survives ModernSplashScreen unmount when the user switches workspaces.
42
- const { agent, setAgent, agentKey, setAgentKey, isTerminalVisible, setIsTerminalVisible, initialPrompt, setInitialPrompt, initialPromptDelivered, setInitialPromptDelivered, attachedDocs, setAttachedDocs, inputValue, setInputValue, } = useSplashScreenAgent();
43
- const [profile, setProfile] = useState(null);
44
- const [profiles, setProfiles] = useState([]);
45
- const [isLoading, setIsLoading] = useState(true);
46
- const [recentAgents, setRecentAgents] = useState([]);
47
- const [hasLoadedRecentAgents, setHasLoadedRecentAgents] = useState(false);
48
- const [isLoadingRecentAgents, setIsLoadingRecentAgents] = useState(false);
49
- const [samplePrompts, setSamplePrompts] = useState(SUGGESTED_PROMPTS);
50
- const inputRef = useRef(null);
51
- const fileInputRef = useRef(null);
52
- const [isUploading, setIsUploading] = useState(false);
53
- const [uploadError, setUploadError] = useState(null);
54
- const [isDragOver, setIsDragOver] = useState(false);
55
- // Create a new agent
56
- const createNewAgent = useCallback((selectedProfile) => {
57
- const agentDisplayName = selectedProfile.agentName || "Parhelia";
58
- const agentId = crypto.randomUUID();
59
- const newAgent = {
60
- status: "new",
61
- id: agentId,
62
- name: agentDisplayName,
63
- updatedDate: new Date().toISOString(),
64
- userId: "",
65
- profileId: selectedProfile.id,
66
- profileName: selectedProfile.name,
67
- };
68
- setAttachedDocs([]);
69
- setAgent(newAgent);
70
- return newAgent;
71
- }, [setAgent, setAttachedDocs]);
72
- // Track current agent in a ref so loadData can decide whether to skip
73
- // creating a fresh draft on remount without depending on `agent` directly
74
- // (which would re-run loadData on every agent update).
75
- const agentRef = useRef(agent);
76
- useEffect(() => {
77
- agentRef.current = agent;
78
- }, [agent]);
79
- const loadRecentAgents = useCallback(async (selectedProfile, options) => {
80
- if (!options?.force && (hasLoadedRecentAgents || isLoadingRecentAgents)) {
81
- return;
82
- }
83
- setIsLoadingRecentAgents(true);
84
- try {
85
- const response = await getAgentsGrouped();
86
- const allAgents = [...response.activeAgents];
87
- response.closedAgentsByProfile.forEach((group) => {
88
- allAgents.push(...group.agents);
89
- });
90
- const parheliaAgents = allAgents.filter((item) => item.profileId === selectedProfile.id);
91
- setRecentAgents(parheliaAgents.slice(0, 5));
92
- setHasLoadedRecentAgents(true);
93
- }
94
- catch (err) {
95
- console.error("Failed to load recent agents:", err);
96
- }
97
- finally {
98
- setIsLoadingRecentAgents(false);
99
- }
100
- }, [hasLoadedRecentAgents, isLoadingRecentAgents]);
101
- // Function to load profiles and initialize a draft agent
102
- const loadData = useCallback(async () => {
103
- try {
104
- setIsLoading(true);
105
- // Fetch sample prompts
106
- getSamplePrompts().then((res) => {
107
- if (res.data && res.data.length > 0) {
108
- setSamplePrompts(res.data);
109
- }
110
- });
111
- const profileList = await loadAiProfiles();
112
- if (!profileList || profileList.length === 0) {
113
- setIsLoading(false);
114
- return;
115
- }
116
- // Try to find Parhelia profile with multiple strategies
117
- let assistantProfile;
118
- // Strategy 1: Look for exact ID match
119
- assistantProfile = profileList.find((p) => p.id === "7d45ab97-f253-4915-8b32-f9e8c762c5e9");
120
- // Strategy 2: Look for exact name match (case-insensitive)
121
- if (!assistantProfile) {
122
- assistantProfile = profileList.find((p) => p.name.toLowerCase() === "parhelia");
123
- }
124
- // Strategy 3: Look for profile containing "parhelia" in name or displayTitle
125
- if (!assistantProfile) {
126
- assistantProfile = profileList.find((p) => p.name.toLowerCase().includes("parhelia") ||
127
- p.displayTitle?.toLowerCase().includes("parhelia"));
128
- }
129
- // Strategy 4: Fallback to first available profile
130
- const selectedProfile = assistantProfile || profileList[0];
131
- if (selectedProfile) {
132
- setProfile(selectedProfile);
133
- setProfiles(profileList);
134
- setRecentAgents([]);
135
- setHasLoadedRecentAgents(false);
136
- // Only create a fresh draft agent if the persistent splash state
137
- // doesn't already hold one for this profile (e.g. user switched
138
- // workspaces away and back while an agent is running).
139
- const existing = agentRef.current;
140
- if (!existing || existing.profileId !== selectedProfile.id) {
141
- createNewAgent(selectedProfile);
142
- }
143
- }
144
- else {
145
- console.error("ParheliaAssistantChat: Could not select a profile from the available profiles.");
146
- }
147
- }
148
- catch (err) {
149
- console.error("Failed to load AI profile:", err);
150
- }
151
- finally {
152
- setIsLoading(false);
153
- }
154
- }, [createNewAgent]);
155
- // Load AI profiles and data on mount
156
- useEffect(() => {
157
- loadData();
158
- }, [loadData]);
159
- // Listen for agent profile changes via websocket
160
- useEffect(() => {
161
- if (!editContext?.addSocketMessageListener)
162
- return;
163
- const removeListener = editContext.addSocketMessageListener((message) => {
164
- if (message.type === "agent-profiles-changed") {
165
- loadData();
166
- }
167
- });
168
- return () => {
169
- removeListener();
170
- };
171
- }, [editContext?.addSocketMessageListener, loadData]);
172
- // Handle external agent selection
173
- useEffect(() => {
174
- if (externalAgent) {
175
- setAgent(externalAgent);
176
- setAgentKey((prev) => prev + 1);
177
- setInitialPrompt(undefined);
178
- setInitialPromptDelivered(true);
179
- setIsTerminalVisible(true);
180
- }
181
- }, [externalAgent]);
182
- // Mark the initial prompt as delivered after the first render that
183
- // exposes it to AgentTerminal. AgentTerminal captures the prompt in a
184
- // closure when its auto-send effect runs (children-first effect order),
185
- // so flipping this flag immediately after that is safe and prevents a
186
- // workspace-switch remount from re-passing the same prompt.
187
- useEffect(() => {
188
- if (isTerminalVisible &&
189
- initialPrompt !== undefined &&
190
- initialPrompt !== "" &&
191
- !initialPromptDelivered) {
192
- setInitialPromptDelivered(true);
193
- }
194
- }, [
195
- isTerminalVisible,
196
- initialPrompt,
197
- initialPromptDelivered,
198
- setInitialPromptDelivered,
199
- ]);
200
- // Handle revealing the terminal
201
- const handleRevealTerminal = useCallback(() => {
202
- if (typeof document !== "undefined" &&
203
- document.startViewTransition) {
204
- document.startViewTransition(() => {
205
- flushSync(() => {
206
- setIsTerminalVisible(true);
207
- });
208
- });
209
- }
210
- else {
211
- startTransition(() => {
212
- setIsTerminalVisible(true);
213
- });
214
- }
215
- }, []);
216
- // Handle starting a conversation with a prompt
217
- const handleStartWithPrompt = useCallback((prompt) => {
218
- if (!profile || isUploading)
219
- return;
220
- const performUpdate = () => {
221
- // Clear any previous state first
222
- setInitialPrompt(undefined);
223
- setInitialPromptDelivered(false);
224
- // Keep the current draft when splash attachments were uploaded to it.
225
- if (attachedDocs.length === 0) {
226
- createNewAgent(profile);
227
- }
228
- setInitialPrompt(prompt);
229
- setAgentKey((prev) => prev + 1);
230
- setIsTerminalVisible(true);
231
- };
232
- if (typeof document !== "undefined" &&
233
- document.startViewTransition) {
234
- document.startViewTransition(() => {
235
- flushSync(() => {
236
- performUpdate();
237
- });
238
- });
239
- }
240
- else {
241
- performUpdate();
242
- }
243
- }, [profile, isUploading, attachedDocs.length, createNewAgent]);
244
- const uploadFiles = useCallback(async (files) => {
245
- if (!agent || !profile?.enableDocumentUpload || !files)
246
- return;
247
- const list = Array.from(files);
248
- if (list.length === 0)
249
- return;
250
- const maxBytes = (profile.maxDocumentSizeMB ?? 10) * 1024 * 1024;
251
- setUploadError(null);
252
- setIsUploading(true);
253
- try {
254
- for (const file of list) {
255
- if (file.size > maxBytes) {
256
- setUploadError(`"${file.name}" exceeds ${profile.maxDocumentSizeMB ?? 10} MB`);
257
- continue;
258
- }
259
- const result = await uploadDocument(agent.id, file, profile.id);
260
- if (!result.success) {
261
- setUploadError(result.error || `Failed to upload "${file.name}"`);
262
- }
263
- }
264
- }
265
- finally {
266
- setIsUploading(false);
267
- }
268
- }, [agent, profile]);
269
- // Sync attached docs from server when the active agent changes.
270
- useEffect(() => {
271
- if (!agent?.id || !profile?.enableDocumentUpload) {
272
- setAttachedDocs([]);
273
- return;
274
- }
275
- let cancelled = false;
276
- void getAgentDocuments(agent.id).then((res) => {
277
- if (cancelled)
278
- return;
279
- if (res.success && res.documents)
280
- setAttachedDocs(res.documents);
281
- });
282
- return () => {
283
- cancelled = true;
284
- };
285
- }, [agent?.id, profile?.enableDocumentUpload]);
286
- // Listen for upload/change events to keep chips in sync.
287
- useEffect(() => {
288
- if (!agent?.id)
289
- return;
290
- const handleUploaded = (event) => {
291
- const detail = event.detail;
292
- if (!detail || detail.agentId !== agent.id)
293
- return;
294
- setAttachedDocs((prev) => {
295
- const existing = prev.findIndex((d) => d.id === detail.document.id);
296
- if (existing === -1)
297
- return [detail.document, ...prev];
298
- const next = [...prev];
299
- next[existing] = detail.document;
300
- return next;
301
- });
302
- };
303
- const handleChanged = (event) => {
304
- const detail = event.detail;
305
- if (!detail || detail.agentId !== agent.id)
306
- return;
307
- void getAgentDocuments(agent.id).then((res) => {
308
- if (res.success && res.documents)
309
- setAttachedDocs(res.documents);
310
- });
311
- };
312
- window.addEventListener(AGENT_DOCUMENT_UPLOADED_EVENT, handleUploaded);
313
- window.addEventListener(AGENT_DOCUMENTS_CHANGED_EVENT, handleChanged);
314
- return () => {
315
- window.removeEventListener(AGENT_DOCUMENT_UPLOADED_EVENT, handleUploaded);
316
- window.removeEventListener(AGENT_DOCUMENTS_CHANGED_EVENT, handleChanged);
317
- };
318
- }, [agent?.id]);
319
- const handleRemoveAttachment = useCallback(async (documentId) => {
320
- setUploadError(null);
321
- const result = await deleteDocument(documentId);
322
- if (result.success) {
323
- setAttachedDocs((prev) => prev.filter((d) => d.id !== documentId));
324
- }
325
- else {
326
- setUploadError(result.error || "Failed to remove attachment");
327
- }
328
- }, []);
329
- const handleInputPaste = useCallback((e) => {
330
- if (!profile?.enableDocumentUpload)
331
- return;
332
- const items = e.clipboardData?.items;
333
- if (!items)
334
- return;
335
- const files = [];
336
- for (let i = 0; i < items.length; i++) {
337
- const item = items[i];
338
- if (!item)
339
- continue;
340
- if (item.type.indexOf("image") !== -1 || item.kind === "file") {
341
- const file = item.getAsFile();
342
- if (!file)
343
- continue;
344
- if (file.name === "image.png" && item.type.indexOf("image") !== -1) {
345
- const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
346
- const extension = item.type.split("/")[1] || "png";
347
- files.push(new File([file], `pasted-image-${timestamp}.${extension}`, {
348
- type: file.type,
349
- }));
350
- }
351
- else {
352
- files.push(file);
353
- }
354
- }
355
- }
356
- if (files.length > 0) {
357
- e.preventDefault();
358
- void uploadFiles(files);
359
- }
360
- }, [profile, uploadFiles]);
361
- const handleDragOver = useCallback((e) => {
362
- if (!profile?.enableDocumentUpload)
363
- return;
364
- e.preventDefault();
365
- e.stopPropagation();
366
- if (!isDragOver)
367
- setIsDragOver(true);
368
- }, [profile, isDragOver]);
369
- const handleDragLeave = useCallback((e) => {
370
- e.preventDefault();
371
- e.stopPropagation();
372
- setIsDragOver(false);
373
- }, []);
374
- const handleDrop = useCallback((e) => {
375
- if (!profile?.enableDocumentUpload)
376
- return;
377
- e.preventDefault();
378
- e.stopPropagation();
379
- setIsDragOver(false);
380
- if (e.dataTransfer.files && e.dataTransfer.files.length > 0) {
381
- void uploadFiles(e.dataTransfer.files);
382
- }
383
- }, [profile, uploadFiles]);
384
- // Handle submit from smart input
385
- const handleSubmitInput = (e) => {
386
- e?.preventDefault();
387
- if (!inputValue.trim() || isUploading)
388
- return;
389
- handleStartWithPrompt(inputValue);
390
- setInputValue("");
391
- };
392
- // Handle start over
393
- const handleStartOver = useCallback(async () => {
394
- if (!profile || !agent)
395
- return;
396
- try {
397
- // Close the current agent first
398
- await closeAgent(agent.id);
399
- }
400
- catch (error) {
401
- console.error("Failed to close agent:", error);
402
- }
403
- const performUpdate = () => {
404
- // Create new agent and force re-render
405
- createNewAgent(profile);
406
- setAgentKey((prev) => prev + 1);
407
- setInitialPrompt(undefined);
408
- setInitialPromptDelivered(false);
409
- };
410
- if (typeof document !== "undefined" &&
411
- document.startViewTransition) {
412
- document.startViewTransition(() => {
413
- flushSync(() => {
414
- performUpdate();
415
- });
416
- });
417
- }
418
- else {
419
- performUpdate();
420
- }
421
- }, [profile, agent, createNewAgent]);
422
- // Handle agent updates from AgentTerminal (e.g., name changes)
423
- const handleAgentUpdate = useCallback((updates) => {
424
- setAgent((prev) => (prev ? { ...prev, ...updates } : prev));
425
- }, []);
426
- // Handle close
427
- const handleClose = useCallback(async () => {
428
- if (!profile)
429
- return;
430
- const performUpdate = () => {
431
- setIsTerminalVisible(false);
432
- setInitialPrompt(undefined);
433
- setInitialPromptDelivered(false);
434
- createNewAgent(profile);
435
- setAgentKey((prev) => prev + 1);
436
- };
437
- void loadRecentAgents(profile, { force: true });
438
- if (typeof document !== "undefined" &&
439
- document.startViewTransition) {
440
- document.startViewTransition(() => {
441
- flushSync(() => {
442
- performUpdate();
443
- });
444
- });
445
- }
446
- else {
447
- performUpdate();
448
- }
449
- }, [createNewAgent, loadRecentAgents, profile]);
450
- if (isLoading) {
451
- return (_jsx("div", { className: cn("flex items-center justify-center rounded-2xl border border-white/10 bg-white/3 p-12 shadow-xl", className), children: _jsx(Loader2, { strokeWidth: 1, className: "text-highlight-100 h-6 w-6 animate-spin" }) }));
452
- }
453
- const renderAttachments = (variant) => {
454
- if (!profile?.enableDocumentUpload)
455
- return null;
456
- if (attachedDocs.length === 0 && !uploadError && !isUploading)
457
- return null;
458
- return (_jsxs("div", { className: cn("flex flex-col gap-2", variant === "overview"
459
- ? "-mt-4"
460
- : "border-b border-white/10 bg-white/5 px-5 py-3"), children: [(attachedDocs.length > 0 || isUploading) && (_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [attachedDocs.map((doc) => {
461
- const isImage = doc.contentType?.startsWith("image/") ||
462
- /\.(png|jpe?g|gif|webp)$/i.test(doc.fileName);
463
- return (_jsxs("div", { className: "group text-neutral-grey-50 flex max-w-[260px] items-center gap-2 rounded-full border border-white/10 bg-white/5 py-1.5 pr-1.5 pl-3 text-xs", children: [isImage ? (_jsx(ImageIcon, { className: "text-highlight-100 h-3.5 w-3.5 shrink-0", strokeWidth: 1 })) : (_jsx(FileText, { className: "text-highlight-100 h-3.5 w-3.5 shrink-0", strokeWidth: 1 })), _jsx("span", { className: "truncate", title: doc.fileName, children: doc.fileName }), _jsx("button", { type: "button", onClick: () => handleRemoveAttachment(doc.id), "aria-label": `Remove ${doc.fileName}`, className: "text-neutral-grey-50 flex h-5 w-5 items-center justify-center rounded-full transition-colors hover:bg-white/10 hover:text-white", children: _jsx(X, { className: "h-3 w-3", strokeWidth: 1 }) })] }, doc.id));
464
- }), isUploading && (_jsxs("span", { className: "text-neutral-grey-50 flex items-center gap-1.5 text-xs", children: [_jsx(Loader2, { strokeWidth: 1, className: "h-3 w-3 animate-spin" }), "Uploading..."] })), variant === "terminal" && (_jsxs("button", { type: "button", onClick: () => fileInputRef.current?.click(), disabled: isUploading, className: "text-neutral-grey-50 hover:border-highlight-100/40 flex items-center gap-1.5 rounded-full border border-dashed border-white/15 px-3 py-1.5 text-xs transition-colors hover:text-white disabled:opacity-50", children: [_jsx(Paperclip, { className: "h-3 w-3", strokeWidth: 1 }), "Attach"] }))] })), uploadError && (_jsx("p", { className: "text-feedback-red text-xs", children: uploadError }))] }));
465
- };
466
- if (!agent || !profile) {
467
- return (_jsx("div", { className: cn("flex items-center justify-center rounded-2xl border border-white/10 bg-white/3 p-12 shadow-xl", className), children: _jsx("p", { className: "text-neutral-grey-50 text-sm", children: "Assistant unavailable. Please try again later." }) }));
468
- }
469
- return (_jsxs("div", { className: cn("flex flex-col overflow-hidden transition-all duration-300", !isTerminalVisible ? "rounded-2xl" : "rounded-xl shadow-2xl", className), style: { viewTransitionName: "assistant-chat-container" }, children: [profile.enableDocumentUpload && (_jsx("input", { ref: fileInputRef, type: "file", multiple: true, className: "hidden", onChange: (e) => {
470
- void uploadFiles(e.target.files);
471
- e.target.value = "";
472
- }, accept: ".txt,.md,.pdf,.docx,.xlsx,.pptx,.csv,.json,.xml,.cs,.js,.ts,.tsx,.jsx,.py,.java,.cpp,.c,.h,.hpp,.cshtml,.razor,.vb,.php,.rb,.go,.rs,.swift,.kt,.scala,.sql,.sh,.ps1,.bat,.yaml,.yml,.png,.jpg,.jpeg,.gif,.webp" })), !isTerminalVisible && (_jsxs("div", { className: "flex flex-col gap-8", children: [_jsx("div", { className: "group relative", style: { viewTransitionName: "assistant-chat-box" }, onDragOver: handleDragOver, onDragEnter: handleDragOver, onDragLeave: handleDragLeave, onDrop: handleDrop, children: _jsxs("form", { onSubmit: handleSubmitInput, className: "relative flex items-center", children: [_jsx("div", { className: "absolute left-5", children: _jsx(ParheliaIconWhite, { size: 24 }) }), _jsx("input", { ref: inputRef, type: "text", placeholder: "Ask Parhelia anything...", value: inputValue, onChange: (e) => setInputValue(e.target.value), onPaste: handleInputPaste, onFocus: () => {
473
- void loadRecentAgents(profile);
474
- }, style: { viewTransitionName: "assistant-chat-input" }, className: cn("placeholder:text-neutral-grey-50 h-16 w-full rounded-2xl border bg-white/5 text-lg text-white shadow-2xl transition-all duration-300 focus:bg-white/8 focus:shadow-[0_0_30px_-5px_color-mix(in_srgb,var(--color-highlight-100)_30%,transparent)] focus:outline-none", profile.enableDocumentUpload ? "pr-28 pl-14" : "pr-16 pl-14", isDragOver
475
- ? "border-highlight-100/60 bg-highlight-100/10"
476
- : "focus:border-highlight-100/40 border-white/10") }), profile.enableDocumentUpload && (_jsx("button", { type: "button", onClick: () => fileInputRef.current?.click(), disabled: isUploading, "aria-label": "Attach documents", title: "Attach documents", className: "text-neutral-grey-50 absolute right-14 flex h-10 w-10 items-center justify-center rounded-xl transition-colors hover:bg-white/10 hover:text-white disabled:opacity-50", children: isUploading ? (_jsx(Loader2, { strokeWidth: 1, className: "h-5 w-5 animate-spin" })) : (_jsx(Paperclip, { className: "h-5 w-5", strokeWidth: 1 })) })), _jsx("button", { type: "submit", disabled: !inputValue.trim() || isUploading, className: "bg-highlight-100 hover:bg-highlight-100 disabled:text-neutral-grey-50 absolute right-3 flex h-10 w-10 items-center justify-center rounded-xl text-white shadow-lg transition-colors disabled:bg-white/5", children: _jsx(ArrowRight, { className: "h-5 w-5", strokeWidth: 1 }) })] }) }), renderAttachments("overview"), _jsx("div", { className: "grid grid-cols-1 gap-4 md:grid-cols-2", children: samplePrompts.map((item, idx) => (_jsxs("button", { onClick: () => handleStartWithPrompt(item.prompt), className: "group flex flex-col items-start rounded-xl border border-white/10 bg-white/3 p-5 text-left transition-all hover:bg-white/[0.07]", children: [_jsx("span", { className: "text-neutral-grey-15 group-hover:text-highlight-100 text-sm font-medium transition-colors", children: item.title }), _jsx("span", { className: "text-neutral-grey-50 mt-1 line-clamp-1 text-xs", children: item.description })] }, idx))) }), (isLoadingRecentAgents ||
477
- !hasLoadedRecentAgents ||
478
- recentAgents.length > 0) && (_jsxs("div", { className: "flex flex-col gap-3", children: [_jsxs("div", { className: "text-neutral-grey-50 flex items-center gap-2 px-1 text-[10px] font-bold tracking-[0.2em]", children: [_jsx(History, { strokeWidth: 1, className: "h-3 w-3" }), "Recent Parhelia Conversations"] }), !hasLoadedRecentAgents && !isLoadingRecentAgents && (_jsx("button", { onClick: () => {
479
- void loadRecentAgents(profile);
480
- }, className: "text-neutral-grey-50 hover:border-highlight-100/30 hover:text-neutral-grey-15 w-fit rounded-full border border-white/10 bg-white/5 px-3 py-1.5 text-xs transition-all hover:bg-white/10", children: "Load recent conversations" })), isLoadingRecentAgents && (_jsxs("div", { className: "text-neutral-grey-50 flex items-center gap-2 px-1 text-xs", children: [_jsx(Loader2, { strokeWidth: 1, className: "h-3.5 w-3.5 animate-spin" }), "Loading recent conversations..."] })), recentAgents.length > 0 && (_jsxs("div", { className: "flex flex-wrap gap-2", children: [recentAgents.slice(0, 3).map((ra) => (_jsx("button", { onClick: () => {
481
- setAgent(ra);
482
- setIsTerminalVisible(true);
483
- setAgentKey((prev) => prev + 1);
484
- setInitialPrompt(undefined);
485
- setInitialPromptDelivered(true);
486
- }, className: "text-neutral-grey-50 hover:border-highlight-100/30 max-w-[200px] truncate overflow-hidden rounded-full border border-white/10 bg-white/5 px-3 py-1.5 text-xs whitespace-nowrap transition-all hover:bg-white/10", children: ra.name }, ra.id))), recentAgents.length > 3 && (_jsx("button", { onClick: () => {
487
- editContext?.switchWorkspace("agents");
488
- }, className: "text-highlight-100 hover:text-highlight-100 rounded-full px-3 py-1.5 text-xs font-medium transition-colors", children: "View All Agents" }))] }))] }))] })), isTerminalVisible && (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex items-center justify-between border-b border-white/10 bg-white/5 px-5 py-3.5", style: { viewTransitionName: "assistant-chat-box" }, children: [_jsxs("div", { className: "flex min-w-0 flex-1 items-center gap-3", children: [_jsx("div", { className: "flex h-9 w-9 shrink-0 items-center justify-center rounded-xl border border-white/5 bg-white/5 shadow-inner", children: _jsx(ParheliaIconWhite, { size: 22 }) }), _jsxs("div", { className: "flex min-w-0 flex-1 flex-col", children: [_jsx("span", { className: "text-highlight-100/80 truncate text-[10px] font-bold tracking-[0.2em]", children: agent.description || "Parhelia AI" }), _jsx("span", { className: "text-neutral-grey-5 text-sm font-medium tracking-tight", children: agent.name || profile.agentName || "Assistant" })] })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsxs(Button, { variant: "ghost", size: "sm", onClick: handleStartOver, className: "text-neutral-grey-50 h-9 gap-2 rounded-xl px-4 text-xs font-medium transition-all hover:bg-white/10 hover:text-white", children: [_jsx(RotateCcw, { className: "h-4 w-4", strokeWidth: 1 }), "New Chat"] }), _jsx("div", { className: "mx-1 h-5 w-px bg-white/10" }), _jsx(CloseButton, { onClick: handleClose, className: "text-neutral-grey-50 hover:text-neutral-grey-15 hover:bg-white/10", label: "Close" })] })] }), renderAttachments("terminal"), (() => {
489
- // Only pass the initial prompt the first time the terminal is
490
- // mounted for this prompt. After delivery, a workspace-switch
491
- // remount re-mounts AgentTerminal with a fresh initialPromptSentRef
492
- // — without this guard it would auto-submit the same prompt again
493
- // before getAgent finishes loading history, producing a duplicate.
494
- const promptForTerminal = initialPromptDelivered
495
- ? undefined
496
- : initialPrompt;
497
- return (_jsx("div", { className: "bg-neutral-grey-5/95 flex-1 overflow-hidden", "data-testid": "splash-agent-terminal", "data-agent-id": agent.id, children: _jsx("div", { className: "animate-view-slide-in h-[650px]", children: _jsx(AgentTerminal, { agentStub: agent, initialMetadata: {
498
- profile: profile.name,
499
- additionalData: {
500
- profileId: profile.id,
501
- profileName: profile.name,
502
- initialPrompt: promptForTerminal,
503
- },
504
- }, profiles: profiles, isActive: true, compact: true, hideContext: true, hideBottomControls: true, showStatusBar: true, showAgentConfigControls: true, hideGreeting: true, className: "h-full", initialPrompt: promptForTerminal, onAgentUpdate: handleAgentUpdate }) }, agentKey) }));
505
- })()] }))] }));
506
- };
507
- //# sourceMappingURL=ParheliaAssistantChat.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ParheliaAssistantChat.js","sourceRoot":"","sources":["../../src/splash-screen/ParheliaAssistantChat.tsx"],"names":[],"mappings":"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"}
@@ -1,28 +0,0 @@
1
- import React from "react";
2
- import { Agent, AgentDocument } from "../editor/services/agentService";
3
- interface SplashScreenAgentContextValue {
4
- agent: Agent | null;
5
- setAgent: React.Dispatch<React.SetStateAction<Agent | null>>;
6
- agentKey: number;
7
- setAgentKey: React.Dispatch<React.SetStateAction<number>>;
8
- isTerminalVisible: boolean;
9
- setIsTerminalVisible: React.Dispatch<React.SetStateAction<boolean>>;
10
- initialPrompt: string | undefined;
11
- setInitialPrompt: React.Dispatch<React.SetStateAction<string | undefined>>;
12
- initialPromptDelivered: boolean;
13
- setInitialPromptDelivered: React.Dispatch<React.SetStateAction<boolean>>;
14
- attachedDocs: AgentDocument[];
15
- setAttachedDocs: React.Dispatch<React.SetStateAction<AgentDocument[]>>;
16
- inputValue: string;
17
- setInputValue: React.Dispatch<React.SetStateAction<string>>;
18
- }
19
- /**
20
- * Holds the splash screen's chat/agent UI state above the workspace switching
21
- * boundary. ModernSplashScreen is unmounted when the user switches workspaces;
22
- * without this provider, a running agent's UI state would reset on return.
23
- */
24
- export declare function SplashScreenAgentProvider({ children, }: {
25
- children: React.ReactNode;
26
- }): React.JSX.Element;
27
- export declare function useSplashScreenAgent(): SplashScreenAgentContextValue;
28
- export {};
@@ -1,51 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx } from "react/jsx-runtime";
3
- import { createContext, useContext, useMemo, useState } from "react";
4
- const SplashScreenAgentContext = createContext(null);
5
- /**
6
- * Holds the splash screen's chat/agent UI state above the workspace switching
7
- * boundary. ModernSplashScreen is unmounted when the user switches workspaces;
8
- * without this provider, a running agent's UI state would reset on return.
9
- */
10
- export function SplashScreenAgentProvider({ children, }) {
11
- const [agent, setAgent] = useState(null);
12
- const [agentKey, setAgentKey] = useState(0);
13
- const [isTerminalVisible, setIsTerminalVisible] = useState(false);
14
- const [initialPrompt, setInitialPrompt] = useState(undefined);
15
- const [initialPromptDelivered, setInitialPromptDelivered] = useState(false);
16
- const [attachedDocs, setAttachedDocs] = useState([]);
17
- const [inputValue, setInputValue] = useState("");
18
- const value = useMemo(() => ({
19
- agent,
20
- setAgent,
21
- agentKey,
22
- setAgentKey,
23
- isTerminalVisible,
24
- setIsTerminalVisible,
25
- initialPrompt,
26
- setInitialPrompt,
27
- initialPromptDelivered,
28
- setInitialPromptDelivered,
29
- attachedDocs,
30
- setAttachedDocs,
31
- inputValue,
32
- setInputValue,
33
- }), [
34
- agent,
35
- agentKey,
36
- isTerminalVisible,
37
- initialPrompt,
38
- initialPromptDelivered,
39
- attachedDocs,
40
- inputValue,
41
- ]);
42
- return (_jsx(SplashScreenAgentContext.Provider, { value: value, children: children }));
43
- }
44
- export function useSplashScreenAgent() {
45
- const ctx = useContext(SplashScreenAgentContext);
46
- if (!ctx) {
47
- throw new Error("useSplashScreenAgent must be used within SplashScreenAgentProvider");
48
- }
49
- return ctx;
50
- }
51
- //# sourceMappingURL=SplashScreenAgentContext.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SplashScreenAgentContext.js","sourceRoot":"","sources":["../../src/splash-screen/SplashScreenAgentContext.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAc,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAwB5E,MAAM,wBAAwB,GAC5B,aAAa,CAAuC,IAAI,CAAC,CAAC;AAE5D;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,EACxC,QAAQ,GAGT;IACC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAe,IAAI,CAAC,CAAC;IACvD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5C,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClE,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAChD,SAAS,CACV,CAAC;IACF,MAAM,CAAC,sBAAsB,EAAE,yBAAyB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5E,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAkB,EAAE,CAAC,CAAC;IACtE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEjD,MAAM,KAAK,GAAG,OAAO,CACnB,GAAG,EAAE,CAAC,CAAC;QACL,KAAK;QACL,QAAQ;QACR,QAAQ;QACR,WAAW;QACX,iBAAiB;QACjB,oBAAoB;QACpB,aAAa;QACb,gBAAgB;QAChB,sBAAsB;QACtB,yBAAyB;QACzB,YAAY;QACZ,eAAe;QACf,UAAU;QACV,aAAa;KACd,CAAC,EACF;QACE,KAAK;QACL,QAAQ;QACR,iBAAiB;QACjB,aAAa;QACb,sBAAsB;QACtB,YAAY;QACZ,UAAU;KACX,CACF,CAAC;IAEF,OAAO,CACL,KAAC,wBAAwB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAC5C,QAAQ,GACyB,CACrC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,MAAM,GAAG,GAAG,UAAU,CAAC,wBAAwB,CAAC,CAAC;IACjD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}