@parhelia/core 0.1.12322 → 0.1.12325

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.
@@ -1,2 +1,2 @@
1
- export declare const version = "0.1.12322";
2
- export declare const buildDate = "2026-03-12 14:05:15";
1
+ export declare const version = "0.1.12325";
2
+ export declare const buildDate = "2026-03-12 14:32:48";
package/dist/revision.js CHANGED
@@ -1,3 +1,3 @@
1
- export const version = "0.1.12322";
2
- export const buildDate = "2026-03-12 14:05:15";
1
+ export const version = "0.1.12325";
2
+ export const buildDate = "2026-03-12 14:32:48";
3
3
  //# sourceMappingURL=revision.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@parhelia/core",
3
- "version": "0.1.12322",
3
+ "version": "0.1.12325",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -1,5 +0,0 @@
1
- /**
2
- * HelpTerminalPanel - renders as a panel integrated into MainLayout's Splitter.
3
- * This component is shown when editContext.showHelpTerminal is true.
4
- */
5
- export declare function HelpTerminalPanel(): import("react/jsx-runtime").JSX.Element;
@@ -1,166 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState, useEffect, useCallback, useMemo } from "react";
3
- import { X, Loader2, MessageCircleQuestion, ArrowLeft } from "lucide-react";
4
- import { useEditContext } from "../client/editContext";
5
- import { AgentTerminal } from "./AgentTerminal";
6
- import { loadAiProfiles, loadHelpTopics } from "../services/aiService";
7
- import { ManualBrowser } from "../menubar/toolbar-sections/ManualBrowser";
8
- import { SimpleTabs } from "../ui/SimpleTabs";
9
- import { FilterInput, highlightMatch } from "../../components/FilterInput";
10
- import { cn } from "../../lib/utils";
11
- const HELP_AGENT_PROFILE = "Help";
12
- const TAB_IDS = ["ask", "manual"];
13
- /**
14
- * HelpTerminalPanel - renders as a panel integrated into MainLayout's Splitter.
15
- * This component is shown when editContext.showHelpTerminal is true.
16
- */
17
- export function HelpTerminalPanel() {
18
- const editContext = useEditContext();
19
- const [availableProfiles, setAvailableProfiles] = useState([]);
20
- const [loadingProfiles, setLoadingProfiles] = useState(false);
21
- const [agent, setAgent] = useState(null);
22
- const [initialMetadata, setInitialMetadata] = useState(undefined);
23
- // Topics browser state
24
- const [topics, setTopics] = useState([]);
25
- const [loadingTopics, setLoadingTopics] = useState(false);
26
- const [topicsError, setTopicsError] = useState(null);
27
- const [searchQuery, setSearchQuery] = useState("");
28
- const [selectedTopic, setSelectedTopic] = useState(null);
29
- const [customQuestion, setCustomQuestion] = useState("");
30
- // Get the active tab from context, defaulting to "ask"
31
- const activeTabType = editContext?.helpTerminalActiveTab || "ask";
32
- const activeTabIndex = TAB_IDS.indexOf(activeTabType);
33
- const setActiveTabIndex = useCallback((index) => {
34
- const tabType = TAB_IDS[index];
35
- if (tabType) {
36
- editContext?.setHelpTerminalActiveTab(tabType);
37
- }
38
- }, [editContext]);
39
- // Define tabs for SimpleTabs component
40
- const tabs = useMemo(() => [
41
- { id: "ask", label: "Ask", content: null },
42
- { id: "manual", label: "Manual", content: null },
43
- ], []);
44
- // Load help topics when component mounts
45
- useEffect(() => {
46
- setLoadingTopics(true);
47
- setTopicsError(null);
48
- loadHelpTopics()
49
- .then((data) => {
50
- setTopics(data);
51
- })
52
- .catch((err) => {
53
- console.error("Failed to load help topics:", err);
54
- setTopicsError("Failed to load help topics");
55
- })
56
- .finally(() => {
57
- setLoadingTopics(false);
58
- });
59
- }, []);
60
- // Filter topics based on search query
61
- const filteredTopics = useMemo(() => {
62
- if (!searchQuery.trim()) {
63
- return topics;
64
- }
65
- const query = searchQuery.toLowerCase();
66
- return topics.filter((topic) => {
67
- const titleMatch = topic.title?.toLowerCase().includes(query);
68
- const descriptionMatch = topic.description?.toLowerCase().includes(query);
69
- return titleMatch || descriptionMatch;
70
- });
71
- }, [topics, searchQuery]);
72
- // Load profiles when component mounts
73
- useEffect(() => {
74
- let cancelled = false;
75
- (async () => {
76
- try {
77
- setLoadingProfiles(true);
78
- const profiles = await loadAiProfiles(editContext?.currentItemDescriptor);
79
- if (cancelled)
80
- return;
81
- setAvailableProfiles(profiles || []);
82
- }
83
- catch (e) {
84
- console.error("Failed to load AI profiles", e);
85
- }
86
- finally {
87
- if (!cancelled)
88
- setLoadingProfiles(false);
89
- }
90
- })();
91
- return () => {
92
- cancelled = true;
93
- };
94
- }, [editContext?.currentItemDescriptor?.id]);
95
- // Get initial prompt and profile name from editContext
96
- const initialPrompt = editContext?.helpTerminalInitialPrompt;
97
- const profileName = editContext?.helpTerminalProfileName || HELP_AGENT_PROFILE;
98
- // Determine the effective initial prompt (from context or selected topic)
99
- const effectiveInitialPrompt = initialPrompt || selectedTopic?.prompt;
100
- // Check if we should show the agent (has initial prompt from context or selected topic)
101
- const showAgent = !!initialPrompt || !!selectedTopic;
102
- // Create agent when profiles are loaded and we have a prompt
103
- useEffect(() => {
104
- if (agent || availableProfiles.length === 0 || !showAgent)
105
- return;
106
- const profile = availableProfiles.find((p) => p.name === profileName || p.id === profileName) || availableProfiles.find((p) => p.name === HELP_AGENT_PROFILE);
107
- const finalProfileName = profile?.name || profileName;
108
- const newAgent = {
109
- status: "new",
110
- id: crypto.randomUUID(),
111
- name: profile?.agentName || profile?.displayTitle || finalProfileName,
112
- updatedDate: new Date().toISOString(),
113
- userId: "",
114
- profileId: profile?.id,
115
- profileName: finalProfileName,
116
- profileSvgIcon: profile?.svgIcon,
117
- };
118
- // Build metadata with profile info and initial prompt
119
- const metadata = {
120
- profile: finalProfileName,
121
- additionalData: {
122
- profileId: profile?.id,
123
- profileName: finalProfileName,
124
- ...(effectiveInitialPrompt && { initialPrompt: effectiveInitialPrompt }),
125
- },
126
- };
127
- setAgent(newAgent);
128
- setInitialMetadata(metadata);
129
- }, [agent, availableProfiles, profileName, effectiveInitialPrompt, showAgent]);
130
- const handleClose = useCallback(() => {
131
- editContext?.setShowHelpTerminal(false);
132
- }, [editContext]);
133
- const handleTopicClick = useCallback((topic) => {
134
- setSelectedTopic(topic);
135
- }, []);
136
- const handleCustomQuestionSubmit = useCallback(() => {
137
- if (!customQuestion.trim())
138
- return;
139
- const customTopic = {
140
- id: "custom-" + Date.now(),
141
- title: "Custom Question",
142
- description: customQuestion,
143
- prompt: customQuestion,
144
- };
145
- setSelectedTopic(customTopic);
146
- setCustomQuestion("");
147
- }, [customQuestion]);
148
- const handleBackToTopics = useCallback(() => {
149
- setSelectedTopic(null);
150
- setAgent(null);
151
- setInitialMetadata(undefined);
152
- setSearchQuery("");
153
- }, []);
154
- return (_jsxs("div", { className: "flex h-full flex-col bg-white", children: [_jsxs("div", { className: "flex shrink-0 items-center justify-between border-b border-gray-200 bg-gray-50 pl-2 pr-2 pt-2", children: [_jsx(SimpleTabs, { tabs: tabs, activeTab: activeTabIndex, setActiveTab: setActiveTabIndex, hideContent: true, className: "justify-start" }), _jsx("button", { onClick: handleClose, className: "rounded p-1 text-gray-400 transition-colors hover:bg-gray-200 hover:text-gray-600", "aria-label": "Close", children: _jsx(X, { size: 16, strokeWidth: 1.5 }) })] }), _jsxs("div", { className: "flex-1 overflow-hidden", children: [_jsx("div", { className: cn("h-full", activeTabType !== "ask" && "hidden"), children: showAgent ? (
155
- // Show agent terminal with back button
156
- _jsxs("div", { className: "flex h-full flex-col", children: [selectedTopic && (_jsx("div", { className: "shrink-0 border-b border-gray-100 px-3 py-2", children: _jsxs("button", { onClick: handleBackToTopics, className: "flex items-center gap-1.5 text-xs text-gray-500 hover:text-gray-700 transition-colors", children: [_jsx(ArrowLeft, { className: "h-3.5 w-3.5" }), "Back to topics"] }) })), _jsx("div", { className: "flex-1 overflow-hidden", children: agent ? (_jsx(AgentTerminal, { agentStub: agent, initialMetadata: initialMetadata, profiles: availableProfiles, isActive: activeTabType === "ask", compact: false, simpleMode: true, hideGreeting: false, initialPrompt: effectiveInitialPrompt })) : (_jsx("div", { className: "flex h-full flex-col items-center justify-center", children: _jsx("div", { className: "text-sm text-gray-500", children: "Loading agent..." }) })) })] })) : (
157
- // Show topics browser
158
- _jsxs("div", { className: "flex h-full flex-col", children: [_jsx("div", { className: "shrink-0 border-b border-gray-100 px-4 py-3", children: _jsx("h3", { className: "text-sm font-semibold text-gray-900", children: "How can we help?" }) }), _jsxs("div", { className: "shrink-0 border-b border-gray-100 bg-blue-50/50 px-4 py-3", children: [_jsx("div", { className: "flex items-center justify-between mb-2", children: _jsxs("h4", { className: "text-xs font-semibold text-blue-900 flex items-center gap-1.5", children: [_jsx(MessageCircleQuestion, { className: "h-3.5 w-3.5" }), "Ask a question"] }) }), _jsxs("div", { className: "flex gap-2", children: [_jsx("div", { className: "flex-1", children: _jsx("input", { type: "text", value: customQuestion, onChange: (e) => setCustomQuestion(e.target.value), onKeyDown: (e) => {
159
- if (e.key === "Enter" && customQuestion.trim()) {
160
- handleCustomQuestionSubmit();
161
- }
162
- }, placeholder: "How do I...", className: "h-8 w-full rounded border border-gray-200 bg-white px-2.5 text-xs focus:border-blue-500 focus:outline-none" }) }), _jsx("button", { onClick: handleCustomQuestionSubmit, disabled: !customQuestion.trim(), className: cn("rounded px-3 py-1 text-xs font-medium transition-colors", customQuestion.trim()
163
- ? "bg-blue-600 text-white hover:bg-blue-700"
164
- : "bg-gray-200 text-gray-400 cursor-not-allowed"), children: "Ask" })] })] }), _jsx("div", { className: "shrink-0 border-b border-gray-100 bg-gray-50 px-4 py-2", children: _jsx("p", { className: "text-xs text-gray-500", children: "Or browse common topics" }) }), _jsx("div", { className: "shrink-0 px-4 py-2", children: _jsx(FilterInput, { value: searchQuery, onChange: setSearchQuery, placeholder: "Filter topics...", size: "sm" }) }), _jsxs("div", { className: "flex-1 overflow-y-auto", children: [loadingTopics && (_jsx("div", { className: "flex items-center justify-center py-8", children: _jsx(Loader2, { className: "h-5 w-5 animate-spin text-gray-400" }) })), topicsError && (_jsx("div", { className: "px-4 py-8 text-center text-sm text-red-500", children: topicsError })), !loadingTopics && !topicsError && topics.length === 0 && (_jsx("div", { className: "px-4 py-8 text-center text-sm text-gray-500", children: "No help topics available" })), !loadingTopics && !topicsError && topics.length > 0 && filteredTopics.length === 0 && searchQuery && (_jsx("div", { className: "px-4 py-8 text-center text-sm text-gray-500", children: "No help topics match your search" })), !loadingTopics && !topicsError && filteredTopics.length > 0 && (_jsx("div", { className: "py-2", children: filteredTopics.map((topic) => (_jsxs("button", { onClick: () => handleTopicClick(topic), className: cn("flex w-full items-start gap-3 px-4 py-2.5 text-left transition-colors", "hover:bg-gray-50 focus:bg-gray-50 focus:outline-none"), children: [_jsx(MessageCircleQuestion, { className: "mt-0.5 h-4 w-4 shrink-0 text-gray-400", strokeWidth: 1.5 }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("div", { className: "text-sm font-medium text-gray-900", children: highlightMatch(topic.title || "", searchQuery) }), topic.description && (_jsx("div", { className: "mt-0.5 text-xs text-gray-500 line-clamp-2", children: highlightMatch(topic.description, searchQuery) }))] })] }, topic.id))) }))] })] })) }), _jsx("div", { className: cn("h-full", activeTabType !== "manual" && "hidden"), children: _jsx(ManualBrowser, {}) })] })] }));
165
- }
166
- //# sourceMappingURL=HelpTerminal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HelpTerminal.js","sourceRoot":"","sources":["../../../src/editor/ai/HelpTerminal.tsx"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Settings panel that displays all non-closed agents across all users
3
- * Admin-only feature for monitoring and managing agents
4
- */
5
- export declare function AllAgentsPanel(): import("react/jsx-runtime").JSX.Element;
@@ -1,139 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState, useEffect } from "react";
3
- import { getAllAgents, closeAgent, deleteAgent, } from "../services/agentService";
4
- import { getAgentStatusConfig } from "../ai/AgentStatusBadge";
5
- import { cn } from "../../lib/utils";
6
- import { Trash, X, RefreshCw } from "lucide-react";
7
- import { SimpleIconButton } from "../ui/SimpleIconButton";
8
- import { useEditContext } from "../client/editContext";
9
- import { Spinner } from "../ui/Spinner";
10
- /**
11
- * Settings panel that displays all non-closed agents across all users
12
- * Admin-only feature for monitoring and managing agents
13
- */
14
- export function AllAgentsPanel() {
15
- const [agents, setAgents] = useState([]);
16
- const [loading, setLoading] = useState(true);
17
- const [error, setError] = useState(null);
18
- const [refreshing, setRefreshing] = useState(false);
19
- const [searchTerm, setSearchTerm] = useState("");
20
- const editContext = useEditContext();
21
- const loadAgents = async () => {
22
- try {
23
- setError(null);
24
- const result = await getAllAgents(1000);
25
- setAgents(result);
26
- }
27
- catch (err) {
28
- console.error("Failed to load agents:", err);
29
- setError(err?.message ||
30
- "Failed to load agents. Check if you have admin permissions.");
31
- }
32
- finally {
33
- setLoading(false);
34
- setRefreshing(false);
35
- }
36
- };
37
- useEffect(() => {
38
- loadAgents();
39
- }, []);
40
- const handleRefresh = async () => {
41
- setRefreshing(true);
42
- await loadAgents();
43
- };
44
- const handleCloseAgent = async (agentId, agentName) => {
45
- editContext?.confirm({
46
- header: "Close Agent",
47
- message: `Are you sure you want to close agent "${agentName}"? This will stop its execution if running.`,
48
- acceptLabel: "Close Agent",
49
- accept: async () => {
50
- try {
51
- await closeAgent(agentId);
52
- // Remove from list or reload
53
- setAgents((prev) => prev.filter((a) => a.id !== agentId));
54
- }
55
- catch (err) {
56
- console.error("Failed to close agent:", err);
57
- alert(`Failed to close agent: ${err?.message || "Unknown error"}`);
58
- }
59
- },
60
- showCancel: true,
61
- });
62
- };
63
- const handleDeleteAgent = async (agentId, agentName, event) => {
64
- event.stopPropagation();
65
- editContext?.confirm({
66
- header: "Delete Agent",
67
- message: `Are you sure you want to permanently delete agent "${agentName}"?`,
68
- acceptLabel: "Delete",
69
- accept: async () => {
70
- try {
71
- await deleteAgent(agentId);
72
- setAgents((prev) => prev.filter((a) => a.id !== agentId));
73
- }
74
- catch (err) {
75
- console.error("Failed to delete agent:", err);
76
- alert(`Failed to delete agent: ${err?.message || "Unknown error"}`);
77
- }
78
- },
79
- showCancel: true,
80
- });
81
- };
82
- const formatDateTime = (dateString) => {
83
- try {
84
- const date = new Date(dateString);
85
- return date.toLocaleString();
86
- }
87
- catch {
88
- return dateString;
89
- }
90
- };
91
- const filteredAgents = agents.filter((agent) => {
92
- if (!searchTerm.trim())
93
- return true;
94
- const search = searchTerm.toLowerCase();
95
- return (agent.name.toLowerCase().includes(search) ||
96
- agent.userId?.toLowerCase().includes(search) ||
97
- agent.id.toLowerCase().includes(search));
98
- });
99
- // Group agents by status
100
- const groupedAgents = filteredAgents.reduce((acc, agent) => {
101
- const statusConfig = getAgentStatusConfig(agent);
102
- const statusLabel = statusConfig.label.replace("Status: ", "");
103
- if (!acc[statusLabel]) {
104
- acc[statusLabel] = [];
105
- }
106
- acc[statusLabel].push(agent);
107
- return acc;
108
- }, {});
109
- // Sort groups by priority
110
- const statusOrder = [
111
- "Waiting for Approval",
112
- "Running",
113
- "Error",
114
- "New",
115
- "Completed",
116
- ];
117
- const sortedGroups = Object.entries(groupedAgents).sort(([a], [b]) => {
118
- const indexA = statusOrder.indexOf(a);
119
- const indexB = statusOrder.indexOf(b);
120
- if (indexA === -1)
121
- return 1;
122
- if (indexB === -1)
123
- return -1;
124
- return indexA - indexB;
125
- });
126
- if (loading) {
127
- return (_jsxs("div", { className: "flex h-full items-center justify-center gap-2", children: [_jsx(Spinner, { size: "sm" }), _jsx("div", { className: "text-sm text-gray-500", children: "Loading agents..." })] }));
128
- }
129
- if (error) {
130
- return (_jsx("div", { className: "flex h-full items-center justify-center", children: _jsxs("div", { className: "max-w-md text-center", children: [_jsx("div", { className: "mb-4 text-sm text-red-600", children: error }), _jsx("button", { onClick: handleRefresh, className: "rounded bg-blue-500 px-4 py-2 text-xs text-white hover:bg-blue-600", children: "Retry" })] }) }));
131
- }
132
- return (_jsxs("div", { className: "flex h-full flex-col", children: [_jsxs("div", { className: "border-b border-gray-200 bg-white p-4", children: [_jsxs("div", { className: "mb-3 flex items-center justify-between", children: [_jsx("div", { children: _jsxs("p", { className: "text-xs text-gray-500", children: ["Showing ", filteredAgents.length, " non-closed agent", filteredAgents.length !== 1 ? "s" : "", " across all users"] }) }), _jsx(SimpleIconButton, { onClick: handleRefresh, icon: _jsx(RefreshCw, { className: cn("size-4", refreshing && "animate-spin"), strokeWidth: 1.5 }), label: "Refresh", disabled: refreshing, className: "text-gray-600 hover:text-gray-800" })] }), _jsx("input", { type: "text", placeholder: "Search by name, user, or agent ID...", value: searchTerm, onChange: (e) => setSearchTerm(e.target.value), className: "w-full rounded border border-gray-200 px-3 py-2 text-sm focus:border-blue-500 focus:outline-none" })] }), _jsx("div", { className: "flex-1 overflow-auto", children: filteredAgents.length === 0 ? (_jsx("div", { className: "flex h-full items-center justify-center text-sm text-gray-500", children: searchTerm.trim()
133
- ? "No agents match your search"
134
- : "No non-closed agents found" })) : (_jsx("div", { className: "space-y-6 p-4", children: sortedGroups.map(([statusLabel, groupAgents]) => (_jsxs("div", { children: [_jsxs("h3", { className: "mb-2 text-xs font-semibold tracking-wide text-gray-500 uppercase", children: [statusLabel, " (", groupAgents.length, ")"] }), _jsx("div", { className: "space-y-2", children: groupAgents.map((agent) => {
135
- const statusConfig = getAgentStatusConfig(agent);
136
- return (_jsx("div", { className: "rounded-lg border border-gray-200 bg-white p-3 shadow-sm transition-shadow hover:shadow-md", children: _jsxs("div", { className: "flex items-start justify-between", children: [_jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "mb-1 flex items-center gap-2", children: [_jsx("div", { className: cn("h-2 w-2 flex-shrink-0 rounded-full", statusConfig.color, statusConfig.shouldPulse && "animate-pulse"), title: statusConfig.label }), _jsx("h4", { className: "truncate font-medium text-gray-900", children: agent.name })] }), _jsxs("div", { className: "space-y-1 text-xs text-gray-600", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "font-medium", children: "User:" }), _jsx("span", { children: agent.userId || "Unknown" })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "font-medium", children: "ID:" }), _jsx("span", { className: "font-mono text-xs", children: agent.id })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "font-medium", children: "Updated:" }), _jsx("span", { children: formatDateTime(agent.updatedDate) })] }), agent.totalCost > 0 && (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "font-medium", children: "Cost:" }), _jsxs("span", { children: ["$", agent.totalCost.toFixed(4)] })] }))] })] }), _jsxs("div", { className: "ml-3 flex gap-1", children: [_jsx(SimpleIconButton, { onClick: () => handleCloseAgent(agent.id, agent.name), icon: _jsx(X, { className: "size-3", strokeWidth: 1.5 }), label: "Close Agent", className: "text-gray-600 opacity-60 hover:text-gray-800 hover:opacity-100" }), _jsx(SimpleIconButton, { onClick: (e) => handleDeleteAgent(agent.id, agent.name, e), icon: _jsx(Trash, { className: "size-3", strokeWidth: 1.5 }), label: "Delete Agent", className: "text-red-600 opacity-60 hover:text-red-700 hover:opacity-100" })] })] }) }, agent.id));
137
- }) })] }, statusLabel))) })) })] }));
138
- }
139
- //# sourceMappingURL=AllAgentsPanel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AllAgentsPanel.js","sourceRoot":"","sources":["../../../src/editor/settings/AllAgentsPanel.tsx"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export declare function LatestFeedback(): import("react/jsx-runtime").JSX.Element;
@@ -1,136 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useCallback, useEffect, useState } from "react";
3
- import { useEditContext } from "../client/editContext";
4
- import { getLatestComments } from "../services/reviewsService";
5
- import { getLatestSuggestedEdits } from "../services/suggestedEditsService";
6
- import { Lightbulb, MessageSquare } from "lucide-react";
7
- import { LanguageSelector } from "../../components/ui/LanguageSelector";
8
- export function LatestFeedback() {
9
- const editContext = useEditContext();
10
- const [items, setItems] = useState([]);
11
- const [isLoading, setIsLoading] = useState(false);
12
- const [error, setError] = useState(null);
13
- const [selectedLanguage, setSelectedLanguage] = useState(undefined);
14
- // Cutoff is now computed server-side. Keep memo in case we later want client hints.
15
- const sinceIso = null;
16
- const load = useCallback(async () => {
17
- let cancelled = false;
18
- setIsLoading(true);
19
- setError(null);
20
- try {
21
- const take = 50;
22
- const [cRes, sRes] = await Promise.all([
23
- getLatestComments(take, selectedLanguage),
24
- getLatestSuggestedEdits(take, selectedLanguage),
25
- ]);
26
- const comments = (cRes.data || []).map((c) => ({
27
- ...c,
28
- kind: "comment",
29
- }));
30
- const suggestions = (sRes.data || []).map((s) => ({
31
- ...s,
32
- kind: "suggestion",
33
- }));
34
- const merged = [...comments, ...suggestions].sort((a, b) => {
35
- const ad = new Date(a.created || 0).getTime();
36
- const bd = new Date(b.created || 0).getTime();
37
- return bd - ad;
38
- });
39
- const latest = merged.slice(0, 50);
40
- if (!cancelled)
41
- setItems(latest);
42
- }
43
- catch (e) {
44
- if (!cancelled)
45
- setError(e?.message || "Failed to load latest items");
46
- }
47
- finally {
48
- if (!cancelled)
49
- setIsLoading(false);
50
- }
51
- return () => {
52
- cancelled = true;
53
- };
54
- }, [sinceIso, selectedLanguage]);
55
- useEffect(() => {
56
- let disposed;
57
- (async () => {
58
- disposed = await load();
59
- })();
60
- return () => {
61
- try {
62
- disposed?.();
63
- }
64
- catch { }
65
- };
66
- }, [load]);
67
- useEffect(() => {
68
- const typesToRefresh = new Set([
69
- "comment-updated",
70
- "comment-deleted",
71
- "suggested-edit-updated",
72
- "suggested-edit-deleted",
73
- ]);
74
- const dispose = editContext?.addSocketMessageListener?.((message) => {
75
- try {
76
- if (typesToRefresh.has(message?.type)) {
77
- void load();
78
- }
79
- }
80
- catch { }
81
- });
82
- return () => {
83
- try {
84
- dispose?.();
85
- }
86
- catch { }
87
- };
88
- }, [editContext?.addSocketMessageListener, load]);
89
- // Items are server-side filtered by language when selected
90
- const onOpenItem = async (item) => {
91
- try {
92
- const mainId = item.kind === "comment" ? item.mainItemId : item.mainItemId;
93
- const lang = item.kind === "comment" ? item.language : item.mainItemLanguage;
94
- const ver = item.kind === "comment" ? item.version : item.mainItemVersion;
95
- await editContext?.loadItem({ id: mainId, language: lang, version: ver });
96
- editContext?.setSelectedComment(item.kind === "comment" ? item : undefined);
97
- if (item.kind === "comment") {
98
- editContext?.setScrollIntoView(item.itemId);
99
- }
100
- editContext?.openSidebar("feedback");
101
- }
102
- catch { }
103
- };
104
- const Row = ({ item }) => {
105
- const isComment = item.kind === "comment";
106
- const created = item.created
107
- ? new Date(item.created)
108
- : undefined;
109
- const dateText = created
110
- ? `${created.toLocaleDateString()} ${created.toLocaleTimeString()}`
111
- : "";
112
- const comment = isComment ? item : undefined;
113
- const pageName = isComment
114
- ? comment?.mainItemName ||
115
- (comment?.relatedItems || []).find((ri) => ri.itemId === comment?.mainItemId)?.itemName
116
- : item.mainItemName;
117
- const componentName = isComment
118
- ? comment?.itemName
119
- : item.itemName;
120
- const fieldName = isComment ? comment?.fieldName : undefined;
121
- const user = item.authorDisplayName || item.author || "";
122
- const label = isComment ? "Comment" : "Suggestion";
123
- return (_jsx("button", { className: "w-full cursor-pointer rounded p-1 text-left hover:bg-gray-100", onClick: () => onOpenItem(item), children: _jsxs("div", { className: "flex items-center justify-between gap-2 text-xs", children: [_jsxs("div", { className: "flex items-center gap-2 truncate", children: [_jsx("span", { className: "inline-flex items-center justify-center rounded py-0.5 text-gray-700", "aria-label": label, title: label, children: isComment ? (_jsx(MessageSquare, { className: "h-3.5 w-3.5", strokeWidth: 1 })) : (_jsx(Lightbulb, { className: "h-3.5 w-3.5", strokeWidth: 1 })) }), _jsx("div", { className: "flex items-center", children: [
124
- pageName,
125
- componentName,
126
- fieldName ||
127
- (item.kind === "suggestion" ? item.fieldId : undefined),
128
- ]
129
- .filter((x) => !!x && x.length > 0)
130
- .map((seg, idx, arr) => (_jsxs("span", { className: "truncate", children: [idx > 0 && (_jsx("span", { className: "mx-1 text-gray-400", children: ">" })), _jsx("span", { className: idx === 0
131
- ? "font-medium text-gray-900"
132
- : "text-gray-500", children: seg })] }, idx))) }), user && _jsxs("span", { className: "text-gray-500", children: [" \u00B7 ", user] })] }), _jsx("div", { className: "shrink-0 text-[10px] text-gray-500", children: dateText })] }) }));
133
- };
134
- return (_jsxs("div", { className: "h-full overflow-auto p-2", children: [_jsxs("div", { className: "mb-2 flex items-center gap-2", children: [_jsx(LanguageSelector, { selectedLanguage: selectedLanguage, onLanguageSelected: (language) => setSelectedLanguage(language.languageCode), showAllLanguages: true }), selectedLanguage && (_jsx("button", { className: "text-xs text-gray-600 hover:underline", onClick: () => setSelectedLanguage(undefined), children: "Clear" }))] }), isLoading && _jsx("div", { className: "p-2 text-xs text-gray-500", children: "Loading\u2026" }), error && _jsx("div", { className: "p-2 text-xs text-red-600", children: error }), !isLoading && !error && items.length === 0 && (_jsx("div", { className: "p-2 text-xs text-gray-500", children: "No recent activity" })), _jsx("div", { className: "divide-y", children: items.map((it) => (_jsx(Row, { item: it }, `${it.kind}-${it.id}`))) })] }));
135
- }
136
- //# sourceMappingURL=LatestFeedback.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LatestFeedback.js","sourceRoot":"","sources":["../../../src/editor/settings/LatestFeedback.tsx"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export declare function LeftToolbar(): import("react/jsx-runtime").JSX.Element;
@@ -1,12 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { cn } from "../../lib/utils";
3
- import { useEditContext } from "../client/editContext";
4
- import { NavigationSidebar } from "./NavigationSidebar";
5
- export function LeftToolbar() {
6
- const editContext = useEditContext();
7
- const showLabels = editContext?.userInfo.preferences?.showLabels ?? editContext?.userInfo.preferences?.showViewNames ?? false;
8
- return (_jsx("div", { className: cn("border-gray-200 bg-gray-50/50 flex items-center gap-1.5 border-r p-1.5", editContext?.isMobile
9
- ? "scrollbar-hide flex-row overflow-x-auto"
10
- : `flex-col ${showLabels ? "w-16" : "w-9"}`), children: _jsx(NavigationSidebar, {}) }));
11
- }
12
- //# sourceMappingURL=LeftToolbar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LeftToolbar.js","sourceRoot":"","sources":["../../../src/editor/sidebar/LeftToolbar.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,UAAU,WAAW;IACzB,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,UAAU,GACd,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,UAAU,IAAI,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,aAAa,IAAI,KAAK,CAAC;IAC7G,OAAO,CACL,cACE,SAAS,EAAE,EAAE,CACX,wEAAwE,EACxE,WAAW,EAAE,QAAQ;YACnB,CAAC,CAAC,yCAAyC;YAC3C,CAAC,CAAC,YAAY,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAC9C,YAED,KAAC,iBAAiB,KAAG,GACjB,CACP,CAAC;AACJ,CAAC"}
@@ -1,4 +0,0 @@
1
- import React from "react";
2
- declare function NavigationSidebarComponent(): import("react/jsx-runtime").JSX.Element;
3
- export declare const NavigationSidebar: React.MemoExoticComponent<typeof NavigationSidebarComponent>;
4
- export {};