summaryrefslogtreecommitdiff
path: root/frontend
diff options
context:
space:
mode:
authorblackhao <13851610112@163.com>2025-12-10 21:54:08 -0600
committerblackhao <13851610112@163.com>2025-12-10 21:54:08 -0600
commit0c76ea3db76c9908e770b56fb94bf0a92a0d116f (patch)
treeaf0c4345c538def0a506d84876074a2f48058aec /frontend
parentb51af40db8ae73216789472903298589bb54df2b (diff)
fix: resolve all TypeScript errors for production build
Diffstat (limited to 'frontend')
-rw-r--r--frontend/src/components/LeftSidebar.tsx9
-rw-r--r--frontend/src/components/Sidebar.tsx11
-rw-r--r--frontend/src/components/nodes/LLMNode.tsx6
-rw-r--r--frontend/src/store/flowStore.ts16
4 files changed, 20 insertions, 22 deletions
diff --git a/frontend/src/components/LeftSidebar.tsx b/frontend/src/components/LeftSidebar.tsx
index d929dcc..4a0ac7b 100644
--- a/frontend/src/components/LeftSidebar.tsx
+++ b/frontend/src/components/LeftSidebar.tsx
@@ -17,7 +17,6 @@ const LeftSidebar: React.FC<LeftSidebarProps> = ({ isOpen, onToggle }) => {
const {
archivedNodes,
removeFromArchive,
- createNodeFromArchive,
theme,
files,
uploadingFileIds,
@@ -37,7 +36,6 @@ const LeftSidebar: React.FC<LeftSidebarProps> = ({ isOpen, onToggle }) => {
renameProjectItem,
deleteProjectItem,
setCurrentBlueprintPath,
- serializeBlueprint,
clearBlueprint
} = useFlowStore();
const { user, logout } = useAuthStore();
@@ -50,8 +48,11 @@ const LeftSidebar: React.FC<LeftSidebarProps> = ({ isOpen, onToggle }) => {
const [dragItem, setDragItem] = useState<FSItem | null>(null);
const [showSaveStatus, setShowSaveStatus] = useState(false);
const [expanded, setExpanded] = useState<Set<string>>(() => new Set(['.']));
- const [fileProvider, setFileProvider] = useState<'local' | 'openai' | 'google'>('local');
- const [openaiPurpose, setOpenaiPurpose] = useState<string>('user_data');
+ const [fileProvider, _setFileProvider] = useState<'local' | 'openai' | 'google'>('local');
+ const [openaiPurpose, _setOpenaiPurpose] = useState<string>('user_data');
+ // Suppress unused warnings - these may be used in future
+ void _setFileProvider;
+ void _setOpenaiPurpose;
const [fileSearch, setFileSearch] = useState('');
// User Settings Modal State
diff --git a/frontend/src/components/Sidebar.tsx b/frontend/src/components/Sidebar.tsx
index 61a5f02..e517693 100644
--- a/frontend/src/components/Sidebar.tsx
+++ b/frontend/src/components/Sidebar.tsx
@@ -2,9 +2,10 @@ import React, { useState, useEffect, useRef, useMemo } from 'react';
import { useReactFlow } from 'reactflow';
import useFlowStore from '../store/flowStore';
import { useAuthStore } from '../store/authStore';
-import type { NodeData, Trace, Message, MergedTrace, MergeStrategy, FileMeta } from '../store/flowStore';
+import type { NodeData, Trace, Message, MergedTrace, MergeStrategy } from '../store/flowStore';
+import type { Edge } from 'reactflow';
import ReactMarkdown from 'react-markdown';
-import { Play, Settings, Info, Save, ChevronLeft, ChevronRight, Maximize2, Edit3, X, Check, FileText, MessageCircle, Send, GripVertical, GitMerge, Trash2, AlertCircle, Loader2, Navigation, Upload, Search, Link, LogOut } from 'lucide-react';
+import { Play, Settings, Info, ChevronLeft, ChevronRight, Maximize2, Edit3, X, Check, FileText, MessageCircle, Send, GripVertical, GitMerge, Trash2, AlertCircle, Loader2, Navigation, Upload, Search, Link } from 'lucide-react';
interface SidebarProps {
isOpen: boolean;
@@ -15,12 +16,12 @@ interface SidebarProps {
const Sidebar: React.FC<SidebarProps> = ({ isOpen, onToggle, onInteract }) => {
const {
nodes, edges, selectedNodeId, updateNodeData, getActiveContext, addNode, setSelectedNode,
- isTraceComplete, createQuickChatNode, theme,
+ isTraceComplete, theme,
createMergedTrace, updateMergedTrace, deleteMergedTrace, computeMergedMessages,
files, uploadFile, refreshFiles, addFileScope, removeFileScope, currentBlueprintPath,
saveCurrentBlueprint
} = useFlowStore();
- const { getAuthHeader, user, logout } = useAuthStore();
+ const { getAuthHeader } = useAuthStore();
const { setCenter, getViewport } = useReactFlow();
const isDark = theme === 'dark';
const [activeTab, setActiveTab] = useState<'interact' | 'settings' | 'debug'>('interact');
@@ -529,7 +530,7 @@ const Sidebar: React.FC<SidebarProps> = ({ isOpen, onToggle, onInteract }) => {
};
// Check if a trace has downstream nodes from the current selected node
- const traceHasDownstream = (trace: Trace): boolean => {
+ const traceHasDownstream = (_trace: Trace): boolean => {
if (!selectedNode) return false;
// Find edges going out from selectedNode that are part of this trace
diff --git a/frontend/src/components/nodes/LLMNode.tsx b/frontend/src/components/nodes/LLMNode.tsx
index d2e1293..8cbf0e9 100644
--- a/frontend/src/components/nodes/LLMNode.tsx
+++ b/frontend/src/components/nodes/LLMNode.tsx
@@ -1,11 +1,11 @@
import { useEffect, useState } from 'react';
import { Handle, Position, type NodeProps, useUpdateNodeInternals, useEdges } from 'reactflow';
-import type { NodeData, MergedTrace } from '../../store/flowStore';
+import type { NodeData, MergedTrace, Trace } from '../../store/flowStore';
import { Loader2, MessageSquare } from 'lucide-react';
import useFlowStore from '../../store/flowStore';
const LLMNode = ({ id, data, selected }: NodeProps<NodeData>) => {
- const { theme, nodes } = useFlowStore();
+ const { theme } = useFlowStore();
const [showPreview, setShowPreview] = useState(false);
const updateNodeInternals = useUpdateNodeInternals();
const edges = useEdges();
@@ -241,7 +241,7 @@ const LLMNode = ({ id, data, selected }: NodeProps<NodeData>) => {
let backgroundStyle = trace.color;
if (trace.isMerged && trace.mergedColors && trace.mergedColors.length > 0) {
const colors = trace.mergedColors;
- const gradientStops = colors.map((color, idx) =>
+ const gradientStops = colors.map((color: string, idx: number) =>
`${color} ${(idx / colors.length) * 100}%, ${color} ${((idx + 1) / colors.length) * 100}%`
).join(', ');
backgroundStyle = `linear-gradient(45deg, ${gradientStops})`;
diff --git a/frontend/src/store/flowStore.ts b/frontend/src/store/flowStore.ts
index 3492ffe..3d4930b 100644
--- a/frontend/src/store/flowStore.ts
+++ b/frontend/src/store/flowStore.ts
@@ -10,9 +10,7 @@ import {
type NodeChange,
type OnNodesChange,
type OnEdgesChange,
- type OnConnect,
- getIncomers,
- getOutgoers
+ type OnConnect
} from 'reactflow';
// --- Project / Blueprint types ---
@@ -392,7 +390,7 @@ const useFlowStore = create<FlowState>((set, get) => {
const nodesPerLevel: Map<number, number> = new Map();
while (queue.length > 0) {
- const { id, level, index } = queue.shift()!;
+ const { id, level } = queue.shift()!;
// Count nodes at this level
const currentCount = nodesPerLevel.get(level) || 0;
@@ -569,7 +567,6 @@ const useFlowStore = create<FlowState>((set, get) => {
const newInputHandles: Map<string, number> = new Map();
for (let i = 0; i < pathEdges.length; i++) {
- const originalEdge = pathEdges[i];
const fromNodeId = pathNodes[i];
const toNodeId = pathNodes[i + 1];
@@ -1362,7 +1359,7 @@ const useFlowStore = create<FlowState>((set, get) => {
}
// Check that ALL nodes in the trace have both user and assistant messages
- for (const [nodeId, data] of nodeMessages) {
+ for (const [_nodeId, data] of nodeMessages) {
if (!data.hasUser || !data.hasAssistant) {
return false; // This node is incomplete
}
@@ -1382,13 +1379,13 @@ const useFlowStore = create<FlowState>((set, get) => {
// Create a new node for quick chat, with proper connection
createQuickChatNode: (
fromNodeId: string,
- trace: Trace | null,
+ _trace: Trace | null,
userPrompt: string,
response: string,
model: string,
config: Partial<NodeData>
) => {
- const { nodes, edges, addNode, updateNodeData } = get();
+ const { nodes, addNode, updateNodeData } = get();
const fromNode = nodes.find(n => n.id === fromNodeId);
if (!fromNode) return '';
@@ -1997,7 +1994,6 @@ const useFlowStore = create<FlowState>((set, get) => {
// Also track Edge updates (Color AND SourceHandle)
const updatedEdges = [...edges];
- let edgesChanged = false;
// Iterate
sortedNodes.forEach(nodeId => {
@@ -2140,7 +2136,7 @@ const useFlowStore = create<FlowState>((set, get) => {
colors: finalColors
}
};
- edgesChanged = true;
+ // Edge was updated
}
}
}