diff --git a/backend/app/api/endpoints/sessions.py b/backend/app/api/endpoints/sessions.py index 3dee5085..80543347 100644 --- a/backend/app/api/endpoints/sessions.py +++ b/backend/app/api/endpoints/sessions.py @@ -196,6 +196,7 @@ async def start_session( new_session = Session( tree_id=tree.id, user_id=current_user.id, + account_id=current_user.account_id, tree_snapshot=tree_snapshot, path_taken=[], decisions=[], @@ -693,6 +694,7 @@ async def prepare_session( new_session = Session( tree_id=tree.id, user_id=data.assigned_to_id or current_user.id, + account_id=current_user.account_id, tree_snapshot=tree_snapshot, path_taken=[], decisions=[], @@ -770,6 +772,7 @@ async def batch_launch_sessions( session = Session( tree_id=tree.id, user_id=current_user.id, + account_id=current_user.account_id, tree_snapshot=tree_snapshot, path_taken=[], decisions=[], diff --git a/frontend/src/components/assistant/TaskLane.tsx b/frontend/src/components/assistant/TaskLane.tsx index 81d36a23..c3d9458e 100644 --- a/frontend/src/components/assistant/TaskLane.tsx +++ b/frontend/src/components/assistant/TaskLane.tsx @@ -57,6 +57,7 @@ function loadTaskState(sessionId: string): TaskResponse[] | null { } catch { return null } } +// eslint-disable-next-line react-refresh/only-export-components export function clearTaskState(sessionId: string) { try { sessionStorage.removeItem(`${TASK_LANE_STORAGE_KEY}:${sessionId}`) } catch { /* ignore */ } } diff --git a/frontend/src/components/dashboard/TeamSummary.tsx b/frontend/src/components/dashboard/TeamSummary.tsx index b0557de4..b7b19836 100644 --- a/frontend/src/components/dashboard/TeamSummary.tsx +++ b/frontend/src/components/dashboard/TeamSummary.tsx @@ -9,10 +9,10 @@ export function TeamSummary() { const { isAccountOwner } = usePermissions() const navigate = useNavigate() const [escalationCount, setEscalationCount] = useState(0) - const [loading, setLoading] = useState(true) + const [loading, setLoading] = useState(!!isAccountOwner) useEffect(() => { - if (!isAccountOwner) { setLoading(false); return } + if (!isAccountOwner) return aiSessionsApi.getEscalationQueue() .then((esc) => setEscalationCount(esc.length)) .catch(() => {}) diff --git a/frontend/src/components/script-editor/ScriptBodyEditor.tsx b/frontend/src/components/script-editor/ScriptBodyEditor.tsx index 03a651ba..c967f424 100644 --- a/frontend/src/components/script-editor/ScriptBodyEditor.tsx +++ b/frontend/src/components/script-editor/ScriptBodyEditor.tsx @@ -1,4 +1,4 @@ -import { useCallback, useRef } from 'react' +import { useCallback, useEffect, useRef } from 'react' import Editor, { type BeforeMount } from '@monaco-editor/react' import { resolutionFlowTheme, THEME_ID } from '@/components/tree-editor/code-mode/resolutionFlowTheme' import { Spinner } from '@/components/common/Spinner' @@ -11,7 +11,9 @@ interface Props { export function ScriptBodyEditor({ value, onChange, disabled }: Props) { const lastValueRef = useRef(value) - lastValueRef.current = value + useEffect(() => { + lastValueRef.current = value + }, [value]) const handleBeforeMount: BeforeMount = useCallback((monaco) => { // Register our dark theme if not already defined