@ottocode/web-sdk 0.1.287 → 0.1.289

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 (30) hide show
  1. package/dist/components/browser/BrowserPanelToggle.d.ts +2 -0
  2. package/dist/components/browser/BrowserPanelToggle.d.ts.map +1 -0
  3. package/dist/components/browser/BrowserViewerPanel.d.ts +35 -0
  4. package/dist/components/browser/BrowserViewerPanel.d.ts.map +1 -0
  5. package/dist/components/browser/index.d.ts +3 -0
  6. package/dist/components/browser/index.d.ts.map +1 -0
  7. package/dist/components/common/FileTypeIcon.d.ts +14 -0
  8. package/dist/components/common/FileTypeIcon.d.ts.map +1 -0
  9. package/dist/components/index.d.ts +3 -0
  10. package/dist/components/index.d.ts.map +1 -1
  11. package/dist/components/index.js +3516 -2426
  12. package/dist/components/index.js.map +14 -8
  13. package/dist/components/messages/renderers/LoadToolsRenderer.d.ts +3 -0
  14. package/dist/components/messages/renderers/LoadToolsRenderer.d.ts.map +1 -0
  15. package/dist/components/messages/renderers/SimulatorRenderer.d.ts +3 -0
  16. package/dist/components/messages/renderers/SimulatorRenderer.d.ts.map +1 -0
  17. package/dist/components/messages/renderers/index.d.ts.map +1 -1
  18. package/dist/components/workspace/ViewerTabs.d.ts.map +1 -1
  19. package/dist/hooks/index.js +144 -11
  20. package/dist/hooks/index.js.map +4 -4
  21. package/dist/hooks/useSessionStream.d.ts.map +1 -1
  22. package/dist/hooks/useSimulator.d.ts +20 -0
  23. package/dist/hooks/useSimulator.d.ts.map +1 -0
  24. package/dist/index.js +3554 -2464
  25. package/dist/index.js.map +14 -8
  26. package/dist/stores/index.js +116 -11
  27. package/dist/stores/index.js.map +3 -3
  28. package/dist/stores/viewerTabsStore.d.ts +19 -0
  29. package/dist/stores/viewerTabsStore.d.ts.map +1 -1
  30. package/package.json +3 -3
@@ -28,11 +28,11 @@
28
28
  "import { create } from 'zustand';\nimport { useGitStore } from './gitStore';\nimport { useSessionFilesStore } from './sessionFilesStore';\nimport { useResearchStore } from './researchStore';\nimport { useSettingsStore } from './settingsStore';\nimport { useTunnelStore } from './tunnelStore';\nimport { useMCPStore } from './mcpStore';\nimport { useSkillsStore } from './skillsStore';\nimport { useViewerTabsStore } from './viewerTabsStore';\n\ninterface FileBrowserState {\n\tisExpanded: boolean;\n\tselectedFile: string | null;\n\tisViewerOpen: boolean;\n\texpandedDirs: Set<string>;\n\n\ttoggleSidebar: () => void;\n\texpandSidebar: () => void;\n\tcollapseSidebar: () => void;\n\topenFile: (path: string) => void;\n\trevealFile: (path: string) => void;\n\tcloseViewer: () => void;\n\ttoggleDir: (path: string) => void;\n}\n\nfunction getAncestorDirs(path: string): string[] {\n\tconst normalizedPath = path.replace(/\\\\/g, '/').replace(/^\\.\\//, '');\n\tconst parts = normalizedPath.split('/').filter(Boolean);\n\treturn parts\n\t\t.slice(0, -1)\n\t\t.map((_, index) => parts.slice(0, index + 1).join('/'));\n}\n\nfunction revealFileState(state: FileBrowserState, path: string) {\n\tconst expandedDirs = new Set(state.expandedDirs);\n\tfor (const dir of getAncestorDirs(path)) {\n\t\texpandedDirs.add(dir);\n\t}\n\n\treturn {\n\t\tselectedFile: path,\n\t\texpandedDirs,\n\t};\n}\n\nexport const useFileBrowserStore = create<FileBrowserState>((set) => ({\n\tisExpanded: false,\n\tselectedFile: null,\n\tisViewerOpen: false,\n\texpandedDirs: new Set<string>(),\n\n\ttoggleSidebar: () => {\n\t\tset((state) => {\n\t\t\tconst newExpanded = !state.isExpanded;\n\t\t\tif (newExpanded) {\n\t\t\t\tuseGitStore.getState().collapseSidebar();\n\t\t\t\tuseSessionFilesStore.getState().collapseSidebar();\n\t\t\t\tuseResearchStore.getState().collapseSidebar();\n\t\t\t\tuseSettingsStore.getState().collapseSidebar();\n\t\t\t\tuseTunnelStore.getState().collapseSidebar();\n\t\t\t\tuseMCPStore.getState().collapseSidebar();\n\t\t\t\tuseSkillsStore.getState().collapseSidebar();\n\t\t\t}\n\t\t\treturn { isExpanded: newExpanded };\n\t\t});\n\t},\n\texpandSidebar: () => {\n\t\tuseGitStore.getState().collapseSidebar();\n\t\tuseSessionFilesStore.getState().collapseSidebar();\n\t\tuseResearchStore.getState().collapseSidebar();\n\t\tuseSettingsStore.getState().collapseSidebar();\n\t\tuseTunnelStore.getState().collapseSidebar();\n\t\tuseMCPStore.getState().collapseSidebar();\n\t\tuseSkillsStore.getState().collapseSidebar();\n\t\tset({ isExpanded: true });\n\t},\n\tcollapseSidebar: () =>\n\t\tset({\n\t\t\tisExpanded: false,\n\t\t\tisViewerOpen: false,\n\t\t\tselectedFile: null,\n\t\t}),\n\topenFile: (path) => {\n\t\tuseViewerTabsStore.getState().openFileTab(path);\n\t\tset((state) => ({\n\t\t\t...revealFileState(state, path),\n\t\t\tisViewerOpen: true,\n\t\t}));\n\t},\n\trevealFile: (path) => set((state) => revealFileState(state, path)),\n\tcloseViewer: () =>\n\t\tset({\n\t\t\tisViewerOpen: false,\n\t\t\tselectedFile: null,\n\t\t}),\n\ttoggleDir: (path) =>\n\t\tset((state) => {\n\t\t\tconst next = new Set(state.expandedDirs);\n\t\t\tif (next.has(path)) {\n\t\t\t\tnext.delete(path);\n\t\t\t} else {\n\t\t\t\tnext.add(path);\n\t\t\t}\n\t\t\treturn { expandedDirs: next };\n\t\t}),\n}));\n",
29
29
  "import { create } from 'zustand';\nimport { useGitStore } from './gitStore';\nimport { useSessionFilesStore } from './sessionFilesStore';\nimport { useResearchStore } from './researchStore';\nimport { useSettingsStore } from './settingsStore';\nimport { useTunnelStore } from './tunnelStore';\nimport { useFileBrowserStore } from './fileBrowserStore';\nimport { useSkillsStore } from './skillsStore';\n\nexport type MCPScope = 'global' | 'project';\n\nexport interface MCPServerInfo {\n\tname: string;\n\ttransport: string;\n\tcommand?: string;\n\targs: string[];\n\turl?: string;\n\tdisabled: boolean;\n\tconnected: boolean;\n\ttools: string[];\n\tauthRequired: boolean;\n\tauthenticated: boolean;\n\tscope: MCPScope;\n\tauthType?: string;\n}\n\nexport interface CopilotDeviceInfo {\n\tsessionId: string;\n\tuserCode: string;\n\tverificationUri: string;\n\tinterval: number;\n\tserverName: string;\n}\n\ninterface MCPState {\n\tisExpanded: boolean;\n\tservers: MCPServerInfo[];\n\tloading: Set<string>;\n\tauthUrls: Map<string, string>;\n\tcopilotDevice: CopilotDeviceInfo | null;\n\n\ttoggleSidebar: () => void;\n\texpandSidebar: () => void;\n\tcollapseSidebar: () => void;\n\tsetServers: (servers: MCPServerInfo[]) => void;\n\tsetLoading: (name: string, loading: boolean) => void;\n\tupdateServer: (name: string, updates: Partial<MCPServerInfo>) => void;\n\tsetAuthUrl: (name: string, url: string | null) => void;\n\tsetCopilotDevice: (info: CopilotDeviceInfo | null) => void;\n}\n\nexport const useMCPStore = create<MCPState>((set) => ({\n\tisExpanded: false,\n\tservers: [],\n\tloading: new Set(),\n\tauthUrls: new Map(),\n\tcopilotDevice: null,\n\n\ttoggleSidebar: () => {\n\t\tset((state) => {\n\t\t\tconst newExpanded = !state.isExpanded;\n\t\t\tif (newExpanded) {\n\t\t\t\tuseGitStore.getState().collapseSidebar();\n\t\t\t\tuseSessionFilesStore.getState().collapseSidebar();\n\t\t\t\tuseResearchStore.getState().collapseSidebar();\n\t\t\t\tuseSettingsStore.getState().collapseSidebar();\n\t\t\t\tuseTunnelStore.getState().collapseSidebar();\n\t\t\t\tuseFileBrowserStore.getState().collapseSidebar();\n\t\t\t\tuseSkillsStore.getState().collapseSidebar();\n\t\t\t}\n\t\t\treturn { isExpanded: newExpanded };\n\t\t});\n\t},\n\n\texpandSidebar: () => {\n\t\tuseGitStore.getState().collapseSidebar();\n\t\tuseSessionFilesStore.getState().collapseSidebar();\n\t\tuseResearchStore.getState().collapseSidebar();\n\t\tuseSettingsStore.getState().collapseSidebar();\n\t\tuseTunnelStore.getState().collapseSidebar();\n\t\tuseFileBrowserStore.getState().collapseSidebar();\n\t\tuseSkillsStore.getState().collapseSidebar();\n\t\tset({ isExpanded: true });\n\t},\n\n\tcollapseSidebar: () => set({ isExpanded: false }),\n\n\tsetServers: (servers) => set({ servers }),\n\n\tsetLoading: (name, loading) =>\n\t\tset((state) => {\n\t\t\tconst next = new Set(state.loading);\n\t\t\tif (loading) next.add(name);\n\t\t\telse next.delete(name);\n\t\t\treturn { loading: next };\n\t\t}),\n\n\tupdateServer: (name, updates) =>\n\t\tset((state) => ({\n\t\t\tservers: state.servers.map((s) =>\n\t\t\t\ts.name === name ? { ...s, ...updates } : s,\n\t\t\t),\n\t\t})),\n\n\tsetAuthUrl: (name, url) =>\n\t\tset((state) => {\n\t\t\tconst next = new Map(state.authUrls);\n\t\t\tif (url) next.set(name, url);\n\t\t\telse next.delete(name);\n\t\t\treturn { authUrls: next };\n\t\t}),\n\n\tsetCopilotDevice: (info) => set({ copilotDevice: info }),\n}));\n",
30
30
  "import { create } from 'zustand';\nimport { useGitStore } from './gitStore';\nimport { useSessionFilesStore } from './sessionFilesStore';\nimport { useResearchStore } from './researchStore';\nimport { useSettingsStore } from './settingsStore';\nimport { useTunnelStore } from './tunnelStore';\nimport { useFileBrowserStore } from './fileBrowserStore';\nimport { useMCPStore } from './mcpStore';\nimport { useViewerTabsStore } from './viewerTabsStore';\n\nexport interface SkillInfo {\n\tname: string;\n\tdescription: string;\n\tscope: string;\n\tpath: string;\n\tenabled?: boolean;\n}\n\ninterface SkillsState {\n\tisExpanded: boolean;\n\tskills: SkillInfo[];\n\tglobalEnabled: boolean;\n\ttotalCount: number;\n\tenabledCount: number;\n\tselectedSkill: string | null;\n\n\tisViewerOpen: boolean;\n\tviewingFile: string | null;\n\n\ttoggleSidebar: () => void;\n\texpandSidebar: () => void;\n\tcollapseSidebar: () => void;\n\tsetSkills: (skills: SkillInfo[]) => void;\n\tsetSkillsConfig: (input: {\n\t\tskills: SkillInfo[];\n\t\tglobalEnabled: boolean;\n\t\ttotalCount: number;\n\t\tenabledCount: number;\n\t}) => void;\n\tselectSkill: (name: string | null) => void;\n\topenViewer: (file: string | null) => void;\n\tcloseViewer: () => void;\n}\n\nexport const useSkillsStore = create<SkillsState>((set, get) => ({\n\tisExpanded: false,\n\tskills: [],\n\tglobalEnabled: true,\n\ttotalCount: 0,\n\tenabledCount: 0,\n\tselectedSkill: null,\n\tisViewerOpen: false,\n\tviewingFile: null,\n\n\ttoggleSidebar: () => {\n\t\tset((state) => {\n\t\t\tconst newExpanded = !state.isExpanded;\n\t\t\tif (newExpanded) {\n\t\t\t\tuseGitStore.getState().collapseSidebar();\n\t\t\t\tuseSessionFilesStore.getState().collapseSidebar();\n\t\t\t\tuseResearchStore.getState().collapseSidebar();\n\t\t\t\tuseSettingsStore.getState().collapseSidebar();\n\t\t\t\tuseTunnelStore.getState().collapseSidebar();\n\t\t\t\tuseFileBrowserStore.getState().collapseSidebar();\n\t\t\t\tuseMCPStore.getState().collapseSidebar();\n\t\t\t}\n\t\t\treturn { isExpanded: newExpanded };\n\t\t});\n\t},\n\n\texpandSidebar: () => {\n\t\tuseGitStore.getState().collapseSidebar();\n\t\tuseSessionFilesStore.getState().collapseSidebar();\n\t\tuseResearchStore.getState().collapseSidebar();\n\t\tuseSettingsStore.getState().collapseSidebar();\n\t\tuseTunnelStore.getState().collapseSidebar();\n\t\tuseFileBrowserStore.getState().collapseSidebar();\n\t\tuseMCPStore.getState().collapseSidebar();\n\t\tset({ isExpanded: true });\n\t},\n\n\tcollapseSidebar: () => set({ isExpanded: false }),\n\n\tsetSkills: (skills) => set({ skills }),\n\tsetSkillsConfig: ({ skills, globalEnabled, totalCount, enabledCount }) =>\n\t\tset({ skills, globalEnabled, totalCount, enabledCount }),\n\n\tselectSkill: (name) =>\n\t\tset({ selectedSkill: name, isViewerOpen: false, viewingFile: null }),\n\n\topenViewer: (file) => {\n\t\tconst selectedSkill = get().selectedSkill;\n\t\tif (selectedSkill) {\n\t\t\tuseViewerTabsStore.getState().openSkillFileTab(selectedSkill, file);\n\t\t}\n\t\tset({ isViewerOpen: true, viewingFile: file });\n\t},\n\n\tcloseViewer: () => set({ isViewerOpen: false, viewingFile: null }),\n}));\n",
31
- "import { create } from 'zustand';\nimport type { SessionFileOperation } from '../types/api';\n\nexport interface ToolActivityHighlight {\n\tstartLine?: number;\n\tendLine?: number;\n\treason: 'read' | 'write' | 'apply_patch';\n\tcallId?: string;\n\tstatus: 'streaming' | 'success' | 'error';\n}\n\nexport interface ToolActivityAnnotation {\n\tid: string;\n\treason: 'write' | 'apply_patch';\n\tcallId?: string;\n\tstatus: 'streaming' | 'success' | 'error';\n\tlineTones: Array<[number, 'add' | 'remove']>;\n\tcreatedAt: number;\n}\n\nexport interface ToolChangeCount {\n\tadditions: number;\n\tremovals: number;\n}\n\nexport interface ToolPreviewTabInput {\n\tpath: string;\n\ttoolName: 'write' | 'apply_patch';\n\tcallId?: string;\n\tcontent?: string;\n\tbaseContent?: string;\n\tpatch?: string;\n\tchangedLines?: number[];\n\tpreviewContent?: string;\n\tresultContent?: string;\n\tpreviewLineTones?: Array<[number, 'add' | 'remove']>;\n\tpreviewFirstLine?: number;\n\tpreviewLatestLine?: number;\n\tchangeCount?: ToolChangeCount;\n\tstatus: 'streaming' | 'success' | 'error';\n\terror?: string;\n}\n\nexport type ToolPatchPreview = Omit<\n\tToolPreviewTabInput,\n\t'toolName' | 'content'\n> & {\n\ttoolName: 'apply_patch';\n};\n\nexport type ToolWritePreview = Omit<\n\tToolPreviewTabInput,\n\t| 'toolName'\n\t| 'baseContent'\n\t| 'patch'\n\t| 'changedLines'\n\t| 'previewContent'\n\t| 'resultContent'\n\t| 'previewLineTones'\n\t| 'previewFirstLine'\n\t| 'previewLatestLine'\n> & {\n\ttoolName: 'write';\n};\n\nexport type ViewerTab =\n\t| {\n\t\t\tid: string;\n\t\t\ttype: 'git-diff';\n\t\t\ttitle: string;\n\t\t\tpath: string;\n\t\t\tstaged: boolean;\n\t }\n\t| {\n\t\t\tid: string;\n\t\t\ttype: 'session-file-diff';\n\t\t\ttitle: string;\n\t\t\tpath: string;\n\t\t\toperations: SessionFileOperation[];\n\t\t\tselectedOperationIndex: number;\n\t }\n\t| {\n\t\t\tid: string;\n\t\t\ttype: 'file';\n\t\t\ttitle: string;\n\t\t\tpath: string;\n\t\t\thighlight?: ToolActivityHighlight;\n\t\t\tannotations?: ToolActivityAnnotation[];\n\t\t\tpatchPreview?: ToolPatchPreview;\n\t\t\twritePreview?: ToolWritePreview;\n\t }\n\t| {\n\t\t\tid: string;\n\t\t\ttype: 'tool-preview';\n\t\t\ttitle: string;\n\t\t\tpath: string;\n\t\t\ttoolName: 'write' | 'apply_patch';\n\t\t\tcallId?: string;\n\t\t\tcontent?: string;\n\t\t\tbaseContent?: string;\n\t\t\tpatch?: string;\n\t\t\tchangedLines?: number[];\n\t\t\tpreviewContent?: string;\n\t\t\tresultContent?: string;\n\t\t\tpreviewLineTones?: Array<[number, 'add' | 'remove']>;\n\t\t\tpreviewFirstLine?: number;\n\t\t\tpreviewLatestLine?: number;\n\t\t\tchangeCount?: ToolChangeCount;\n\t\t\tstatus: 'streaming' | 'success' | 'error';\n\t\t\terror?: string;\n\t }\n\t| {\n\t\t\tid: string;\n\t\t\ttype: 'skill-file';\n\t\t\ttitle: string;\n\t\t\tskill: string;\n\t\t\tfile: string | null;\n\t };\n\ninterface ViewerTabsState {\n\ttabs: ViewerTab[];\n\tactiveTabId: string | null;\n\tfollowToolActivity: boolean;\n\ttoggleFollowToolActivity: () => void;\n\tsetFollowToolActivity: (enabled: boolean) => void;\n\topenGitDiffTab: (path: string, staged: boolean) => void;\n\topenSessionFileDiffTab: (\n\t\tpath: string,\n\t\toperations: SessionFileOperation[],\n\t) => void;\n\topenFileTab: (path: string) => void;\n\topenToolReadTab: (path: string, highlight: ToolActivityHighlight) => void;\n\topenToolPreviewTab: (preview: ToolPreviewTabInput) => void;\n\topenSkillFileTab: (skill: string, file: string | null) => void;\n\tsetActiveTab: (id: string) => void;\n\tcloseTab: (id: string) => void;\n\tupdateSessionFileOperationIndex: (id: string, index: number) => void;\n\tcloseAllTabs: () => void;\n}\n\nfunction titleFromPath(path: string): string {\n\treturn path.split('/').pop() || path;\n}\n\nfunction normalizeViewerPath(path: string): string {\n\treturn path\n\t\t.trim()\n\t\t.replace(/^a\\//, '')\n\t\t.replace(/^b\\//, '')\n\t\t.replace(/^\\.\\//, '')\n\t\t.replace(/\\/+/g, '/')\n\t\t.replace(/\\/+$/, '');\n}\n\nfunction viewerPathsMatch(left: string, right: string): boolean {\n\tconst normalizedLeft = normalizeViewerPath(left);\n\tconst normalizedRight = normalizeViewerPath(right);\n\treturn (\n\t\tnormalizedLeft === normalizedRight ||\n\t\tnormalizedLeft.endsWith(`/${normalizedRight}`) ||\n\t\tnormalizedRight.endsWith(`/${normalizedLeft}`)\n\t);\n}\n\nfunction fileTabId(path: string): string {\n\treturn `file:${normalizeViewerPath(path)}`;\n}\n\nfunction upsertTab(tabs: ViewerTab[], tab: ViewerTab): ViewerTab[] {\n\tconst existingIndex = tabs.findIndex((item) => item.id === tab.id);\n\tif (existingIndex === -1) {\n\t\treturn [...tabs, tab];\n\t}\n\n\tconst next = [...tabs];\n\tnext[existingIndex] = tab;\n\treturn next;\n}\n\nfunction isSamePatchCall(\n\texisting: Pick<ToolPatchPreview, 'callId' | 'patch' | 'status'> | undefined,\n\tpreview: Pick<ToolPreviewTabInput, 'callId' | 'patch' | 'status'>,\n): boolean {\n\tif (!existing) return false;\n\tif (preview.callId || existing.callId) {\n\t\treturn Boolean(preview.callId && existing.callId === preview.callId);\n\t}\n\tif (preview.status === 'streaming' && existing.status !== 'streaming') {\n\t\treturn false;\n\t}\n\tif (!preview.patch || !existing.patch) return existing.status === 'streaming';\n\treturn (\n\t\tpreview.patch === existing.patch ||\n\t\tpreview.patch.startsWith(existing.patch) ||\n\t\texisting.patch.startsWith(preview.patch)\n\t);\n}\n\nfunction mergeChangedLines(\n\texisting: number[] | undefined,\n\tincoming: number[] | undefined,\n): number[] | undefined {\n\tif (!existing?.length) return incoming;\n\tif (!incoming?.length) return existing;\n\treturn [...new Set([...existing, ...incoming])].sort((a, b) => a - b);\n}\n\nfunction countContentLines(content: string): number {\n\treturn content.length === 0 ? 1 : content.split('\\n').length;\n}\n\nfunction annotationId(\n\tpreview: ToolPreviewTabInput,\n\ttargetPath: string,\n): string {\n\treturn `${preview.toolName}:${preview.callId ?? `${normalizeViewerPath(targetPath)}:${preview.patch ?? preview.content ?? ''}`}`;\n}\n\nfunction buildAnnotation(\n\tpreview: ToolPreviewTabInput,\n\ttargetPath: string,\n\texisting?: ToolActivityAnnotation,\n): ToolActivityAnnotation | undefined {\n\tif (preview.status === 'error') return existing;\n\tconst id = annotationId(preview, targetPath);\n\tif (preview.toolName === 'write') {\n\t\tconst content = preview.content;\n\t\tif (content === undefined) return existing;\n\t\treturn {\n\t\t\tid,\n\t\t\treason: 'write',\n\t\t\tcallId: preview.callId,\n\t\t\tstatus: preview.status,\n\t\t\tlineTones: Array.from(\n\t\t\t\t{ length: countContentLines(content) },\n\t\t\t\t(_, index) => [index + 1, 'add' as const],\n\t\t\t),\n\t\t\tcreatedAt: existing?.createdAt ?? Date.now(),\n\t\t};\n\t}\n\n\tconst lineTones: Array<[number, 'add' | 'remove']> | undefined = preview\n\t\t.previewLineTones?.length\n\t\t? preview.previewLineTones\n\t\t: preview.changedLines?.length\n\t\t\t? preview.changedLines.map((line) => [line, 'add'])\n\t\t\t: existing?.lineTones;\n\tif (!lineTones?.length) return existing;\n\treturn {\n\t\tid,\n\t\treason: 'apply_patch',\n\t\tcallId: preview.callId,\n\t\tstatus: preview.status,\n\t\tlineTones,\n\t\tcreatedAt: existing?.createdAt ?? Date.now(),\n\t};\n}\n\nfunction upsertAnnotation(\n\tannotations: ToolActivityAnnotation[] | undefined,\n\tannotation: ToolActivityAnnotation | undefined,\n): ToolActivityAnnotation[] | undefined {\n\tif (!annotation) return annotations;\n\tconst existing = annotations ?? [];\n\tconst index = existing.findIndex((item) => item.id === annotation.id);\n\tif (index === -1) return [...existing, annotation];\n\tconst next = [...existing];\n\tnext[index] = annotation;\n\treturn next;\n}\n\nexport const useViewerTabsStore = create<ViewerTabsState>((set) => ({\n\ttabs: [],\n\tactiveTabId: null,\n\tfollowToolActivity: false,\n\n\ttoggleFollowToolActivity: () =>\n\t\tset((state) => ({ followToolActivity: !state.followToolActivity })),\n\n\tsetFollowToolActivity: (enabled) => set({ followToolActivity: enabled }),\n\n\topenGitDiffTab: (path, staged) => {\n\t\tconst id = `git-diff:${staged ? 'staged' : 'unstaged'}:${path}`;\n\t\tset((state) => ({\n\t\t\ttabs: upsertTab(state.tabs, {\n\t\t\t\tid,\n\t\t\t\ttype: 'git-diff',\n\t\t\t\ttitle: titleFromPath(path),\n\t\t\t\tpath,\n\t\t\t\tstaged,\n\t\t\t}),\n\t\t\tactiveTabId: id,\n\t\t}));\n\t},\n\n\topenSessionFileDiffTab: (path, operations) => {\n\t\tconst id = `session-file-diff:${path}`;\n\t\tset((state) => ({\n\t\t\ttabs: upsertTab(state.tabs, {\n\t\t\t\tid,\n\t\t\t\ttype: 'session-file-diff',\n\t\t\t\ttitle: titleFromPath(path),\n\t\t\t\tpath,\n\t\t\t\toperations,\n\t\t\t\tselectedOperationIndex: Math.max(0, operations.length - 1),\n\t\t\t}),\n\t\t\tactiveTabId: id,\n\t\t}));\n\t},\n\n\topenFileTab: (path) => {\n\t\tconst id = fileTabId(path);\n\t\tset((state) => {\n\t\t\tconst matchingFileTabs = state.tabs.filter(\n\t\t\t\t(tab): tab is Extract<ViewerTab, { type: 'file' }> =>\n\t\t\t\t\ttab.type === 'file' && viewerPathsMatch(tab.path, path),\n\t\t\t);\n\t\t\tconst existingFile =\n\t\t\t\tmatchingFileTabs.find((tab) => tab.id === state.activeTabId) ??\n\t\t\t\tmatchingFileTabs[0];\n\t\t\tconst targetId = existingFile?.id ?? id;\n\t\t\tconst targetPath = existingFile?.path ?? path;\n\t\t\tconst tabs = state.tabs.filter(\n\t\t\t\t(tab) =>\n\t\t\t\t\t!(\n\t\t\t\t\t\t(tab.type === 'tool-preview' || tab.type === 'file') &&\n\t\t\t\t\t\ttab.id !== targetId &&\n\t\t\t\t\t\tviewerPathsMatch(tab.path, path)\n\t\t\t\t\t),\n\t\t\t);\n\t\t\treturn {\n\t\t\t\ttabs: upsertTab(tabs, {\n\t\t\t\t\tid: targetId,\n\t\t\t\t\ttype: 'file',\n\t\t\t\t\ttitle: existingFile?.title ?? titleFromPath(targetPath),\n\t\t\t\t\tpath: targetPath,\n\t\t\t\t\thighlight: existingFile?.highlight,\n\t\t\t\t\tannotations: existingFile?.annotations,\n\t\t\t\t\tpatchPreview: existingFile?.patchPreview,\n\t\t\t\t\twritePreview: existingFile?.writePreview,\n\t\t\t\t}),\n\t\t\t\tactiveTabId: targetId,\n\t\t\t};\n\t\t});\n\t},\n\n\topenToolReadTab: (path, highlight) => {\n\t\tconst id = fileTabId(path);\n\t\tset((state) => {\n\t\t\tconst matchingFileTabs = state.tabs.filter(\n\t\t\t\t(tab): tab is Extract<ViewerTab, { type: 'file' }> =>\n\t\t\t\t\ttab.type === 'file' && viewerPathsMatch(tab.path, path),\n\t\t\t);\n\t\t\tconst existingFile =\n\t\t\t\tmatchingFileTabs.find((tab) => tab.id === state.activeTabId) ??\n\t\t\t\tmatchingFileTabs[0];\n\t\t\tconst targetId = existingFile?.id ?? id;\n\t\t\tconst targetPath = existingFile?.path ?? path;\n\t\t\tconst tabs = state.tabs.filter(\n\t\t\t\t(tab) =>\n\t\t\t\t\t!(\n\t\t\t\t\t\t(tab.type === 'tool-preview' || tab.type === 'file') &&\n\t\t\t\t\t\ttab.id !== targetId &&\n\t\t\t\t\t\tviewerPathsMatch(tab.path, path)\n\t\t\t\t\t),\n\t\t\t);\n\t\t\treturn {\n\t\t\t\ttabs: upsertTab(tabs, {\n\t\t\t\t\tid: targetId,\n\t\t\t\t\ttype: 'file',\n\t\t\t\t\ttitle: existingFile?.title ?? titleFromPath(targetPath),\n\t\t\t\t\tpath: targetPath,\n\t\t\t\t\thighlight,\n\t\t\t\t\tannotations: existingFile?.annotations,\n\t\t\t\t\tpatchPreview: undefined,\n\t\t\t\t\twritePreview: undefined,\n\t\t\t\t}),\n\t\t\t\tactiveTabId: targetId,\n\t\t\t};\n\t\t});\n\t},\n\n\topenToolPreviewTab: (preview) => {\n\t\tconst id = fileTabId(preview.path);\n\t\tset((state) => {\n\t\t\tconst matchingFileTabs = state.tabs.filter(\n\t\t\t\t(tab): tab is Extract<ViewerTab, { type: 'file' }> =>\n\t\t\t\t\ttab.type === 'file' && viewerPathsMatch(tab.path, preview.path),\n\t\t\t);\n\t\t\tconst existingFile =\n\t\t\t\tmatchingFileTabs.find((tab) => tab.id === state.activeTabId) ??\n\t\t\t\tmatchingFileTabs[0];\n\t\t\tconst targetId = existingFile?.id ?? id;\n\t\t\tconst targetPath = existingFile?.path ?? preview.path;\n\t\t\tconst existing = state.tabs.find(\n\t\t\t\t(tab): tab is Extract<ViewerTab, { type: 'tool-preview' }> =>\n\t\t\t\t\ttab.type === 'tool-preview' &&\n\t\t\t\t\tviewerPathsMatch(tab.path, preview.path),\n\t\t\t);\n\t\t\tconst tabs = state.tabs.filter(\n\t\t\t\t(tab) =>\n\t\t\t\t\t!(\n\t\t\t\t\t\t(tab.type === 'tool-preview' || tab.type === 'file') &&\n\t\t\t\t\t\ttab.id !== targetId &&\n\t\t\t\t\t\t(viewerPathsMatch(tab.path, preview.path) ||\n\t\t\t\t\t\t\tBoolean(\n\t\t\t\t\t\t\t\tpreview.callId &&\n\t\t\t\t\t\t\t\t\t'toolName' in tab &&\n\t\t\t\t\t\t\t\t\ttab.callId === preview.callId,\n\t\t\t\t\t\t\t))\n\t\t\t\t\t),\n\t\t\t);\n\t\t\tif (preview.toolName === 'apply_patch') {\n\t\t\t\tconst existingPatchPreview =\n\t\t\t\t\texistingFile?.patchPreview ??\n\t\t\t\t\t(existing?.toolName === 'apply_patch' ? existing : undefined);\n\t\t\t\tconst samePatchCall = isSamePatchCall(existingPatchPreview, preview);\n\t\t\t\tconst baseContent =\n\t\t\t\t\tpreview.baseContent ??\n\t\t\t\t\t(samePatchCall\n\t\t\t\t\t\t? existingPatchPreview?.baseContent\n\t\t\t\t\t\t: (existingPatchPreview?.resultContent ??\n\t\t\t\t\t\t\texistingPatchPreview?.baseContent));\n\t\t\t\tconst changedLines = samePatchCall\n\t\t\t\t\t? (preview.changedLines ?? existingPatchPreview?.changedLines)\n\t\t\t\t\t: mergeChangedLines(\n\t\t\t\t\t\t\texistingPatchPreview?.changedLines,\n\t\t\t\t\t\t\tpreview.changedLines,\n\t\t\t\t\t\t);\n\t\t\t\tconst annotationPreview = {\n\t\t\t\t\t...preview,\n\t\t\t\t\tchangedLines: preview.changedLines,\n\t\t\t\t};\n\t\t\t\tconst existingAnnotation = existingFile?.annotations?.find(\n\t\t\t\t\t(annotation) =>\n\t\t\t\t\t\tannotation.id === annotationId(annotationPreview, targetPath),\n\t\t\t\t);\n\t\t\t\tconst annotations = upsertAnnotation(\n\t\t\t\t\texistingFile?.annotations,\n\t\t\t\t\tbuildAnnotation(annotationPreview, targetPath, existingAnnotation),\n\t\t\t\t);\n\t\t\t\treturn {\n\t\t\t\t\ttabs: upsertTab(tabs, {\n\t\t\t\t\t\tid: targetId,\n\t\t\t\t\t\ttype: 'file',\n\t\t\t\t\t\ttitle: existingFile?.title ?? titleFromPath(targetPath),\n\t\t\t\t\t\tpath: targetPath,\n\t\t\t\t\t\thighlight: undefined,\n\t\t\t\t\t\tannotations,\n\t\t\t\t\t\twritePreview: undefined,\n\t\t\t\t\t\tpatchPreview: {\n\t\t\t\t\t\t\tpath: targetPath,\n\t\t\t\t\t\t\ttoolName: 'apply_patch',\n\t\t\t\t\t\t\tcallId: preview.callId ?? existingPatchPreview?.callId,\n\t\t\t\t\t\t\tbaseContent,\n\t\t\t\t\t\t\tpatch: preview.patch ?? existingPatchPreview?.patch,\n\t\t\t\t\t\t\tchangedLines,\n\t\t\t\t\t\t\tpreviewContent:\n\t\t\t\t\t\t\t\tpreview.previewContent ??\n\t\t\t\t\t\t\t\t(samePatchCall\n\t\t\t\t\t\t\t\t\t? existingPatchPreview?.previewContent\n\t\t\t\t\t\t\t\t\t: undefined),\n\t\t\t\t\t\t\tresultContent:\n\t\t\t\t\t\t\t\tpreview.resultContent ??\n\t\t\t\t\t\t\t\t(samePatchCall\n\t\t\t\t\t\t\t\t\t? existingPatchPreview?.resultContent\n\t\t\t\t\t\t\t\t\t: undefined),\n\t\t\t\t\t\t\tpreviewLineTones:\n\t\t\t\t\t\t\t\tpreview.previewLineTones ??\n\t\t\t\t\t\t\t\t(samePatchCall\n\t\t\t\t\t\t\t\t\t? existingPatchPreview?.previewLineTones\n\t\t\t\t\t\t\t\t\t: undefined),\n\t\t\t\t\t\t\tpreviewFirstLine:\n\t\t\t\t\t\t\t\tpreview.previewFirstLine ??\n\t\t\t\t\t\t\t\t(samePatchCall\n\t\t\t\t\t\t\t\t\t? existingPatchPreview?.previewFirstLine\n\t\t\t\t\t\t\t\t\t: undefined),\n\t\t\t\t\t\t\tpreviewLatestLine:\n\t\t\t\t\t\t\t\tpreview.previewLatestLine ??\n\t\t\t\t\t\t\t\t(samePatchCall\n\t\t\t\t\t\t\t\t\t? existingPatchPreview?.previewLatestLine\n\t\t\t\t\t\t\t\t\t: undefined),\n\t\t\t\t\t\t\tstatus: preview.status,\n\t\t\t\t\t\t\terror: preview.error ?? existingPatchPreview?.error,\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t\tactiveTabId: targetId,\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (existingFile) {\n\t\t\t\tconst existingWritePreview = existingFile.writePreview;\n\t\t\t\tconst existingAnnotation = existingFile.annotations?.find(\n\t\t\t\t\t(annotation) => annotation.id === annotationId(preview, targetPath),\n\t\t\t\t);\n\t\t\t\tconst annotations = upsertAnnotation(\n\t\t\t\t\texistingFile.annotations,\n\t\t\t\t\tbuildAnnotation(preview, targetPath, existingAnnotation),\n\t\t\t\t);\n\t\t\t\treturn {\n\t\t\t\t\ttabs: upsertTab(tabs, {\n\t\t\t\t\t\t...existingFile,\n\t\t\t\t\t\thighlight: undefined,\n\t\t\t\t\t\tannotations,\n\t\t\t\t\t\tpatchPreview: undefined,\n\t\t\t\t\t\twritePreview: {\n\t\t\t\t\t\t\tpath: targetPath,\n\t\t\t\t\t\t\ttoolName: 'write',\n\t\t\t\t\t\t\tcallId: preview.callId ?? existingWritePreview?.callId,\n\t\t\t\t\t\t\tcontent: preview.content ?? existingWritePreview?.content,\n\t\t\t\t\t\t\tchangeCount:\n\t\t\t\t\t\t\t\tpreview.changeCount ?? existingWritePreview?.changeCount,\n\t\t\t\t\t\t\tstatus: preview.status,\n\t\t\t\t\t\t\terror: preview.error ?? existingWritePreview?.error,\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t\tactiveTabId: targetId,\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst existingWrite =\n\t\t\t\texisting?.toolName === 'write' ? existing : undefined;\n\t\t\tconst annotation = buildAnnotation(preview, preview.path);\n\t\t\treturn {\n\t\t\t\ttabs: upsertTab(tabs, {\n\t\t\t\t\tid,\n\t\t\t\t\ttype: 'file',\n\t\t\t\t\ttitle: titleFromPath(preview.path),\n\t\t\t\t\tpath: preview.path,\n\t\t\t\t\thighlight: undefined,\n\t\t\t\t\tannotations: annotation ? [annotation] : undefined,\n\t\t\t\t\tpatchPreview: undefined,\n\t\t\t\t\twritePreview: {\n\t\t\t\t\t\tpath: preview.path,\n\t\t\t\t\t\ttoolName: 'write',\n\t\t\t\t\t\tcallId: preview.callId,\n\t\t\t\t\t\tcontent: preview.content ?? existingWrite?.content,\n\t\t\t\t\t\tchangeCount: preview.changeCount ?? existingWrite?.changeCount,\n\t\t\t\t\t\tstatus: preview.status,\n\t\t\t\t\t\terror: preview.error ?? existingWrite?.error,\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t\tactiveTabId: id,\n\t\t\t};\n\t\t});\n\t},\n\n\topenSkillFileTab: (skill, file) => {\n\t\tconst displayFile = file ?? 'SKILL.md';\n\t\tconst id = `skill-file:${skill}:${displayFile}`;\n\t\tset((state) => ({\n\t\t\ttabs: upsertTab(state.tabs, {\n\t\t\t\tid,\n\t\t\t\ttype: 'skill-file',\n\t\t\t\ttitle: titleFromPath(displayFile),\n\t\t\t\tskill,\n\t\t\t\tfile,\n\t\t\t}),\n\t\t\tactiveTabId: id,\n\t\t}));\n\t},\n\n\tsetActiveTab: (id) => set({ activeTabId: id }),\n\n\tcloseTab: (id) =>\n\t\tset((state) => {\n\t\t\tconst closingIndex = state.tabs.findIndex((tab) => tab.id === id);\n\t\t\tconst tabs = state.tabs.filter((tab) => tab.id !== id);\n\t\t\tlet activeTabId = state.activeTabId;\n\n\t\t\tif (state.activeTabId === id) {\n\t\t\t\tactiveTabId =\n\t\t\t\t\ttabs[closingIndex]?.id ?? tabs[closingIndex - 1]?.id ?? null;\n\t\t\t}\n\n\t\t\treturn { tabs, activeTabId };\n\t\t}),\n\n\tupdateSessionFileOperationIndex: (id, index) =>\n\t\tset((state) => ({\n\t\t\ttabs: state.tabs.map((tab) =>\n\t\t\t\ttab.id === id && tab.type === 'session-file-diff'\n\t\t\t\t\t? { ...tab, selectedOperationIndex: index }\n\t\t\t\t\t: tab,\n\t\t\t),\n\t\t})),\n\n\tcloseAllTabs: () => set({ tabs: [], activeTabId: null }),\n}));\n",
31
+ "import { create } from 'zustand';\nimport type { SessionFileOperation } from '../types/api';\n\nexport interface ToolActivityHighlight {\n\tstartLine?: number;\n\tendLine?: number;\n\treason: 'read' | 'write' | 'apply_patch';\n\tcallId?: string;\n\tstatus: 'streaming' | 'success' | 'error';\n}\n\nexport interface ToolActivityAnnotation {\n\tid: string;\n\treason: 'write' | 'apply_patch';\n\tcallId?: string;\n\tstatus: 'streaming' | 'success' | 'error';\n\tlineTones: Array<[number, 'add' | 'remove']>;\n\tcreatedAt: number;\n}\n\nexport interface ToolChangeCount {\n\tadditions: number;\n\tremovals: number;\n}\n\nexport interface ToolPreviewTabInput {\n\tpath: string;\n\ttoolName: 'write' | 'apply_patch';\n\tcallId?: string;\n\tcontent?: string;\n\tbaseContent?: string;\n\tpatch?: string;\n\tchangedLines?: number[];\n\tpreviewContent?: string;\n\tresultContent?: string;\n\tpreviewLineTones?: Array<[number, 'add' | 'remove']>;\n\tpreviewFirstLine?: number;\n\tpreviewLatestLine?: number;\n\tchangeCount?: ToolChangeCount;\n\tstatus: 'streaming' | 'success' | 'error';\n\terror?: string;\n}\n\nexport type ToolPatchPreview = Omit<\n\tToolPreviewTabInput,\n\t'toolName' | 'content'\n> & {\n\ttoolName: 'apply_patch';\n};\n\nexport type ToolWritePreview = Omit<\n\tToolPreviewTabInput,\n\t| 'toolName'\n\t| 'baseContent'\n\t| 'patch'\n\t| 'changedLines'\n\t| 'previewContent'\n\t| 'resultContent'\n\t| 'previewLineTones'\n\t| 'previewFirstLine'\n\t| 'previewLatestLine'\n> & {\n\ttoolName: 'write';\n};\n\nexport type ViewerTab =\n\t| {\n\t\t\tid: string;\n\t\t\ttype: 'git-diff';\n\t\t\ttitle: string;\n\t\t\tpath: string;\n\t\t\tstaged: boolean;\n\t }\n\t| {\n\t\t\tid: string;\n\t\t\ttype: 'session-file-diff';\n\t\t\ttitle: string;\n\t\t\tpath: string;\n\t\t\toperations: SessionFileOperation[];\n\t\t\tselectedOperationIndex: number;\n\t }\n\t| {\n\t\t\tid: string;\n\t\t\ttype: 'file';\n\t\t\ttitle: string;\n\t\t\tpath: string;\n\t\t\thighlight?: ToolActivityHighlight;\n\t\t\tannotations?: ToolActivityAnnotation[];\n\t\t\tpatchPreview?: ToolPatchPreview;\n\t\t\twritePreview?: ToolWritePreview;\n\t }\n\t| {\n\t\t\tid: string;\n\t\t\ttype: 'tool-preview';\n\t\t\ttitle: string;\n\t\t\tpath: string;\n\t\t\ttoolName: 'write' | 'apply_patch';\n\t\t\tcallId?: string;\n\t\t\tcontent?: string;\n\t\t\tbaseContent?: string;\n\t\t\tpatch?: string;\n\t\t\tchangedLines?: number[];\n\t\t\tpreviewContent?: string;\n\t\t\tresultContent?: string;\n\t\t\tpreviewLineTones?: Array<[number, 'add' | 'remove']>;\n\t\t\tpreviewFirstLine?: number;\n\t\t\tpreviewLatestLine?: number;\n\t\t\tchangeCount?: ToolChangeCount;\n\t\t\tstatus: 'streaming' | 'success' | 'error';\n\t\t\terror?: string;\n\t }\n\t| {\n\t\t\tid: string;\n\t\t\ttype: 'skill-file';\n\t\t\ttitle: string;\n\t\t\tskill: string;\n\t\t\tfile: string | null;\n\t }\n\t| {\n\t\t\tid: string;\n\t\t\ttype: 'browser';\n\t\t\ttitle: string;\n\t\t\turl: string;\n\t\t\tkind: 'browser' | 'simulator';\n\t\t\treloadKey: number;\n\t };\n\nexport type ViewerMode = 'work' | 'preview';\n\ninterface ViewerTabsState {\n\ttabs: ViewerTab[];\n\tactiveTabId: string | null;\n\tactiveMode: ViewerMode;\n\tactiveWorkTabId: string | null;\n\tactivePreviewTabId: string | null;\n\tfollowToolActivity: boolean;\n\ttoggleFollowToolActivity: () => void;\n\tsetFollowToolActivity: (enabled: boolean) => void;\n\tsetViewerMode: (mode: ViewerMode) => void;\n\topenGitDiffTab: (path: string, staged: boolean) => void;\n\topenSessionFileDiffTab: (\n\t\tpath: string,\n\t\toperations: SessionFileOperation[],\n\t) => void;\n\topenFileTab: (path: string) => void;\n\topenToolReadTab: (path: string, highlight: ToolActivityHighlight) => void;\n\topenToolPreviewTab: (preview: ToolPreviewTabInput) => void;\n\topenSkillFileTab: (skill: string, file: string | null) => void;\n\topenBrowserTab: (\n\t\turl?: string,\n\t\toptions?: {\n\t\t\tkind?: 'browser' | 'simulator';\n\t\t\ttitle?: string;\n\t\t\tnewTab?: boolean;\n\t\t},\n\t) => void;\n\tupdateBrowserTabUrl: (id: string, url: string) => void;\n\treloadBrowserTab: (id: string) => void;\n\tsetActiveTab: (id: string) => void;\n\tcloseTab: (id: string) => void;\n\tupdateSessionFileOperationIndex: (id: string, index: number) => void;\n\tcloseAllTabs: () => void;\n}\n\nfunction titleFromPath(path: string): string {\n\treturn path.split('/').pop() || path;\n}\n\nfunction normalizeViewerPath(path: string): string {\n\treturn path\n\t\t.trim()\n\t\t.replace(/^a\\//, '')\n\t\t.replace(/^b\\//, '')\n\t\t.replace(/^\\.\\//, '')\n\t\t.replace(/\\/+/g, '/')\n\t\t.replace(/\\/+$/, '');\n}\n\nfunction viewerPathsMatch(left: string, right: string): boolean {\n\tconst normalizedLeft = normalizeViewerPath(left);\n\tconst normalizedRight = normalizeViewerPath(right);\n\treturn (\n\t\tnormalizedLeft === normalizedRight ||\n\t\tnormalizedLeft.endsWith(`/${normalizedRight}`) ||\n\t\tnormalizedRight.endsWith(`/${normalizedLeft}`)\n\t);\n}\n\nfunction fileTabId(path: string): string {\n\treturn `file:${normalizeViewerPath(path)}`;\n}\n\nfunction browserTabId(kind: 'browser' | 'simulator'): string {\n\treturn `browser:${kind}`;\n}\n\nfunction newBrowserTabId(): string {\n\treturn `browser:browser:${Date.now()}:${Math.random().toString(36).slice(2)}`;\n}\n\nfunction modeForTab(tab: ViewerTab): ViewerMode {\n\treturn tab.type === 'browser' ? 'preview' : 'work';\n}\n\nfunction findFallbackTabId(\n\ttabs: ViewerTab[],\n\tmode: ViewerMode,\n\tclosingIndex: number,\n): string | null {\n\tconst next = tabs.slice(closingIndex).find((tab) => modeForTab(tab) === mode);\n\tif (next) return next.id;\n\tconst previous = [...tabs]\n\t\t.slice(0, closingIndex)\n\t\t.reverse()\n\t\t.find((tab) => modeForTab(tab) === mode);\n\treturn previous?.id ?? null;\n}\n\nfunction activeIdForWorkUpdate(\n\tstate: ViewerTabsState,\n\ttargetId: string,\n): string {\n\treturn state.activeMode === 'preview' && state.activePreviewTabId\n\t\t? state.activePreviewTabId\n\t\t: targetId;\n}\n\nfunction upsertTab(tabs: ViewerTab[], tab: ViewerTab): ViewerTab[] {\n\tconst existingIndex = tabs.findIndex((item) => item.id === tab.id);\n\tif (existingIndex === -1) {\n\t\treturn [...tabs, tab];\n\t}\n\n\tconst next = [...tabs];\n\tnext[existingIndex] = tab;\n\treturn next;\n}\n\nfunction isSamePatchCall(\n\texisting: Pick<ToolPatchPreview, 'callId' | 'patch' | 'status'> | undefined,\n\tpreview: Pick<ToolPreviewTabInput, 'callId' | 'patch' | 'status'>,\n): boolean {\n\tif (!existing) return false;\n\tif (preview.callId || existing.callId) {\n\t\treturn Boolean(preview.callId && existing.callId === preview.callId);\n\t}\n\tif (preview.status === 'streaming' && existing.status !== 'streaming') {\n\t\treturn false;\n\t}\n\tif (!preview.patch || !existing.patch) return existing.status === 'streaming';\n\treturn (\n\t\tpreview.patch === existing.patch ||\n\t\tpreview.patch.startsWith(existing.patch) ||\n\t\texisting.patch.startsWith(preview.patch)\n\t);\n}\n\nfunction mergeChangedLines(\n\texisting: number[] | undefined,\n\tincoming: number[] | undefined,\n): number[] | undefined {\n\tif (!existing?.length) return incoming;\n\tif (!incoming?.length) return existing;\n\treturn [...new Set([...existing, ...incoming])].sort((a, b) => a - b);\n}\n\nfunction countContentLines(content: string): number {\n\treturn content.length === 0 ? 1 : content.split('\\n').length;\n}\n\nfunction annotationId(\n\tpreview: ToolPreviewTabInput,\n\ttargetPath: string,\n): string {\n\treturn `${preview.toolName}:${preview.callId ?? `${normalizeViewerPath(targetPath)}:${preview.patch ?? preview.content ?? ''}`}`;\n}\n\nfunction buildAnnotation(\n\tpreview: ToolPreviewTabInput,\n\ttargetPath: string,\n\texisting?: ToolActivityAnnotation,\n): ToolActivityAnnotation | undefined {\n\tif (preview.status === 'error') return existing;\n\tconst id = annotationId(preview, targetPath);\n\tif (preview.toolName === 'write') {\n\t\tconst content = preview.content;\n\t\tif (content === undefined) return existing;\n\t\treturn {\n\t\t\tid,\n\t\t\treason: 'write',\n\t\t\tcallId: preview.callId,\n\t\t\tstatus: preview.status,\n\t\t\tlineTones: Array.from(\n\t\t\t\t{ length: countContentLines(content) },\n\t\t\t\t(_, index) => [index + 1, 'add' as const],\n\t\t\t),\n\t\t\tcreatedAt: existing?.createdAt ?? Date.now(),\n\t\t};\n\t}\n\n\tconst lineTones: Array<[number, 'add' | 'remove']> | undefined = preview\n\t\t.previewLineTones?.length\n\t\t? preview.previewLineTones\n\t\t: preview.changedLines?.length\n\t\t\t? preview.changedLines.map((line) => [line, 'add'])\n\t\t\t: existing?.lineTones;\n\tif (!lineTones?.length) return existing;\n\treturn {\n\t\tid,\n\t\treason: 'apply_patch',\n\t\tcallId: preview.callId,\n\t\tstatus: preview.status,\n\t\tlineTones,\n\t\tcreatedAt: existing?.createdAt ?? Date.now(),\n\t};\n}\n\nfunction upsertAnnotation(\n\tannotations: ToolActivityAnnotation[] | undefined,\n\tannotation: ToolActivityAnnotation | undefined,\n): ToolActivityAnnotation[] | undefined {\n\tif (!annotation) return annotations;\n\tconst existing = annotations ?? [];\n\tconst index = existing.findIndex((item) => item.id === annotation.id);\n\tif (index === -1) return [...existing, annotation];\n\tconst next = [...existing];\n\tnext[index] = annotation;\n\treturn next;\n}\n\nexport const useViewerTabsStore = create<ViewerTabsState>((set) => ({\n\ttabs: [],\n\tactiveTabId: null,\n\tactiveMode: 'work',\n\tactiveWorkTabId: null,\n\tactivePreviewTabId: null,\n\tfollowToolActivity: false,\n\n\ttoggleFollowToolActivity: () =>\n\t\tset((state) => ({ followToolActivity: !state.followToolActivity })),\n\n\tsetFollowToolActivity: (enabled) => set({ followToolActivity: enabled }),\n\n\tsetViewerMode: (mode) =>\n\t\tset((state) => {\n\t\t\tconst activeTabId =\n\t\t\t\tmode === 'preview' ? state.activePreviewTabId : state.activeWorkTabId;\n\t\t\treturn {\n\t\t\t\tactiveMode: mode,\n\t\t\t\tactiveTabId: activeTabId ?? null,\n\t\t\t};\n\t\t}),\n\n\topenGitDiffTab: (path, staged) => {\n\t\tconst id = `git-diff:${staged ? 'staged' : 'unstaged'}:${path}`;\n\t\tset((state) => ({\n\t\t\ttabs: upsertTab(state.tabs, {\n\t\t\t\tid,\n\t\t\t\ttype: 'git-diff',\n\t\t\t\ttitle: titleFromPath(path),\n\t\t\t\tpath,\n\t\t\t\tstaged,\n\t\t\t}),\n\t\t\tactiveMode: 'work',\n\t\t\tactiveWorkTabId: id,\n\t\t\tactiveTabId: id,\n\t\t}));\n\t},\n\n\topenSessionFileDiffTab: (path, operations) => {\n\t\tconst id = `session-file-diff:${path}`;\n\t\tset((state) => ({\n\t\t\ttabs: upsertTab(state.tabs, {\n\t\t\t\tid,\n\t\t\t\ttype: 'session-file-diff',\n\t\t\t\ttitle: titleFromPath(path),\n\t\t\t\tpath,\n\t\t\t\toperations,\n\t\t\t\tselectedOperationIndex: Math.max(0, operations.length - 1),\n\t\t\t}),\n\t\t\tactiveMode: 'work',\n\t\t\tactiveWorkTabId: id,\n\t\t\tactiveTabId: id,\n\t\t}));\n\t},\n\n\topenFileTab: (path) => {\n\t\tconst id = fileTabId(path);\n\t\tset((state) => {\n\t\t\tconst matchingFileTabs = state.tabs.filter(\n\t\t\t\t(tab): tab is Extract<ViewerTab, { type: 'file' }> =>\n\t\t\t\t\ttab.type === 'file' && viewerPathsMatch(tab.path, path),\n\t\t\t);\n\t\t\tconst existingFile =\n\t\t\t\tmatchingFileTabs.find((tab) => tab.id === state.activeTabId) ??\n\t\t\t\tmatchingFileTabs[0];\n\t\t\tconst targetId = existingFile?.id ?? id;\n\t\t\tconst targetPath = existingFile?.path ?? path;\n\t\t\tconst tabs = state.tabs.filter(\n\t\t\t\t(tab) =>\n\t\t\t\t\t!(\n\t\t\t\t\t\t(tab.type === 'tool-preview' || tab.type === 'file') &&\n\t\t\t\t\t\ttab.id !== targetId &&\n\t\t\t\t\t\tviewerPathsMatch(tab.path, path)\n\t\t\t\t\t),\n\t\t\t);\n\t\t\treturn {\n\t\t\t\ttabs: upsertTab(tabs, {\n\t\t\t\t\tid: targetId,\n\t\t\t\t\ttype: 'file',\n\t\t\t\t\ttitle: existingFile?.title ?? titleFromPath(targetPath),\n\t\t\t\t\tpath: targetPath,\n\t\t\t\t\thighlight: existingFile?.highlight,\n\t\t\t\t\tannotations: existingFile?.annotations,\n\t\t\t\t\tpatchPreview: existingFile?.patchPreview,\n\t\t\t\t\twritePreview: existingFile?.writePreview,\n\t\t\t\t}),\n\t\t\t\tactiveMode: 'work',\n\t\t\t\tactiveWorkTabId: targetId,\n\t\t\t\tactiveTabId: targetId,\n\t\t\t};\n\t\t});\n\t},\n\n\topenToolReadTab: (path, highlight) => {\n\t\tconst id = fileTabId(path);\n\t\tset((state) => {\n\t\t\tconst matchingFileTabs = state.tabs.filter(\n\t\t\t\t(tab): tab is Extract<ViewerTab, { type: 'file' }> =>\n\t\t\t\t\ttab.type === 'file' && viewerPathsMatch(tab.path, path),\n\t\t\t);\n\t\t\tconst existingFile =\n\t\t\t\tmatchingFileTabs.find((tab) => tab.id === state.activeTabId) ??\n\t\t\t\tmatchingFileTabs[0];\n\t\t\tconst targetId = existingFile?.id ?? id;\n\t\t\tconst targetPath = existingFile?.path ?? path;\n\t\t\tconst tabs = state.tabs.filter(\n\t\t\t\t(tab) =>\n\t\t\t\t\t!(\n\t\t\t\t\t\t(tab.type === 'tool-preview' || tab.type === 'file') &&\n\t\t\t\t\t\ttab.id !== targetId &&\n\t\t\t\t\t\tviewerPathsMatch(tab.path, path)\n\t\t\t\t\t),\n\t\t\t);\n\t\t\treturn {\n\t\t\t\ttabs: upsertTab(tabs, {\n\t\t\t\t\tid: targetId,\n\t\t\t\t\ttype: 'file',\n\t\t\t\t\ttitle: existingFile?.title ?? titleFromPath(targetPath),\n\t\t\t\t\tpath: targetPath,\n\t\t\t\t\thighlight,\n\t\t\t\t\tannotations: existingFile?.annotations,\n\t\t\t\t\tpatchPreview: undefined,\n\t\t\t\t\twritePreview: undefined,\n\t\t\t\t}),\n\t\t\t\tactiveWorkTabId: targetId,\n\t\t\t\tactiveTabId: activeIdForWorkUpdate(state, targetId),\n\t\t\t};\n\t\t});\n\t},\n\n\topenToolPreviewTab: (preview) => {\n\t\tconst id = fileTabId(preview.path);\n\t\tset((state) => {\n\t\t\tconst matchingFileTabs = state.tabs.filter(\n\t\t\t\t(tab): tab is Extract<ViewerTab, { type: 'file' }> =>\n\t\t\t\t\ttab.type === 'file' && viewerPathsMatch(tab.path, preview.path),\n\t\t\t);\n\t\t\tconst existingFile =\n\t\t\t\tmatchingFileTabs.find((tab) => tab.id === state.activeTabId) ??\n\t\t\t\tmatchingFileTabs[0];\n\t\t\tconst targetId = existingFile?.id ?? id;\n\t\t\tconst targetPath = existingFile?.path ?? preview.path;\n\t\t\tconst existing = state.tabs.find(\n\t\t\t\t(tab): tab is Extract<ViewerTab, { type: 'tool-preview' }> =>\n\t\t\t\t\ttab.type === 'tool-preview' &&\n\t\t\t\t\tviewerPathsMatch(tab.path, preview.path),\n\t\t\t);\n\t\t\tconst tabs = state.tabs.filter(\n\t\t\t\t(tab) =>\n\t\t\t\t\t!(\n\t\t\t\t\t\t(tab.type === 'tool-preview' || tab.type === 'file') &&\n\t\t\t\t\t\ttab.id !== targetId &&\n\t\t\t\t\t\t(viewerPathsMatch(tab.path, preview.path) ||\n\t\t\t\t\t\t\tBoolean(\n\t\t\t\t\t\t\t\tpreview.callId &&\n\t\t\t\t\t\t\t\t\t'toolName' in tab &&\n\t\t\t\t\t\t\t\t\ttab.callId === preview.callId,\n\t\t\t\t\t\t\t))\n\t\t\t\t\t),\n\t\t\t);\n\t\t\tif (preview.toolName === 'apply_patch') {\n\t\t\t\tconst existingPatchPreview =\n\t\t\t\t\texistingFile?.patchPreview ??\n\t\t\t\t\t(existing?.toolName === 'apply_patch' ? existing : undefined);\n\t\t\t\tconst samePatchCall = isSamePatchCall(existingPatchPreview, preview);\n\t\t\t\tconst baseContent =\n\t\t\t\t\tpreview.baseContent ??\n\t\t\t\t\t(samePatchCall\n\t\t\t\t\t\t? existingPatchPreview?.baseContent\n\t\t\t\t\t\t: (existingPatchPreview?.resultContent ??\n\t\t\t\t\t\t\texistingPatchPreview?.baseContent));\n\t\t\t\tconst changedLines = samePatchCall\n\t\t\t\t\t? (preview.changedLines ?? existingPatchPreview?.changedLines)\n\t\t\t\t\t: mergeChangedLines(\n\t\t\t\t\t\t\texistingPatchPreview?.changedLines,\n\t\t\t\t\t\t\tpreview.changedLines,\n\t\t\t\t\t\t);\n\t\t\t\tconst annotationPreview = {\n\t\t\t\t\t...preview,\n\t\t\t\t\tchangedLines: preview.changedLines,\n\t\t\t\t};\n\t\t\t\tconst existingAnnotation = existingFile?.annotations?.find(\n\t\t\t\t\t(annotation) =>\n\t\t\t\t\t\tannotation.id === annotationId(annotationPreview, targetPath),\n\t\t\t\t);\n\t\t\t\tconst annotations = upsertAnnotation(\n\t\t\t\t\texistingFile?.annotations,\n\t\t\t\t\tbuildAnnotation(annotationPreview, targetPath, existingAnnotation),\n\t\t\t\t);\n\t\t\t\treturn {\n\t\t\t\t\ttabs: upsertTab(tabs, {\n\t\t\t\t\t\tid: targetId,\n\t\t\t\t\t\ttype: 'file',\n\t\t\t\t\t\ttitle: existingFile?.title ?? titleFromPath(targetPath),\n\t\t\t\t\t\tpath: targetPath,\n\t\t\t\t\t\thighlight: undefined,\n\t\t\t\t\t\tannotations,\n\t\t\t\t\t\twritePreview: undefined,\n\t\t\t\t\t\tpatchPreview: {\n\t\t\t\t\t\t\tpath: targetPath,\n\t\t\t\t\t\t\ttoolName: 'apply_patch',\n\t\t\t\t\t\t\tcallId: preview.callId ?? existingPatchPreview?.callId,\n\t\t\t\t\t\t\tbaseContent,\n\t\t\t\t\t\t\tpatch: preview.patch ?? existingPatchPreview?.patch,\n\t\t\t\t\t\t\tchangedLines,\n\t\t\t\t\t\t\tpreviewContent:\n\t\t\t\t\t\t\t\tpreview.previewContent ??\n\t\t\t\t\t\t\t\t(samePatchCall\n\t\t\t\t\t\t\t\t\t? existingPatchPreview?.previewContent\n\t\t\t\t\t\t\t\t\t: undefined),\n\t\t\t\t\t\t\tresultContent:\n\t\t\t\t\t\t\t\tpreview.resultContent ??\n\t\t\t\t\t\t\t\t(samePatchCall\n\t\t\t\t\t\t\t\t\t? existingPatchPreview?.resultContent\n\t\t\t\t\t\t\t\t\t: undefined),\n\t\t\t\t\t\t\tpreviewLineTones:\n\t\t\t\t\t\t\t\tpreview.previewLineTones ??\n\t\t\t\t\t\t\t\t(samePatchCall\n\t\t\t\t\t\t\t\t\t? existingPatchPreview?.previewLineTones\n\t\t\t\t\t\t\t\t\t: undefined),\n\t\t\t\t\t\t\tpreviewFirstLine:\n\t\t\t\t\t\t\t\tpreview.previewFirstLine ??\n\t\t\t\t\t\t\t\t(samePatchCall\n\t\t\t\t\t\t\t\t\t? existingPatchPreview?.previewFirstLine\n\t\t\t\t\t\t\t\t\t: undefined),\n\t\t\t\t\t\t\tpreviewLatestLine:\n\t\t\t\t\t\t\t\tpreview.previewLatestLine ??\n\t\t\t\t\t\t\t\t(samePatchCall\n\t\t\t\t\t\t\t\t\t? existingPatchPreview?.previewLatestLine\n\t\t\t\t\t\t\t\t\t: undefined),\n\t\t\t\t\t\t\tstatus: preview.status,\n\t\t\t\t\t\t\terror: preview.error ?? existingPatchPreview?.error,\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t\tactiveWorkTabId: targetId,\n\t\t\t\t\tactiveTabId: activeIdForWorkUpdate(state, targetId),\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (existingFile) {\n\t\t\t\tconst existingWritePreview = existingFile.writePreview;\n\t\t\t\tconst existingAnnotation = existingFile.annotations?.find(\n\t\t\t\t\t(annotation) => annotation.id === annotationId(preview, targetPath),\n\t\t\t\t);\n\t\t\t\tconst annotations = upsertAnnotation(\n\t\t\t\t\texistingFile.annotations,\n\t\t\t\t\tbuildAnnotation(preview, targetPath, existingAnnotation),\n\t\t\t\t);\n\t\t\t\treturn {\n\t\t\t\t\ttabs: upsertTab(tabs, {\n\t\t\t\t\t\t...existingFile,\n\t\t\t\t\t\thighlight: undefined,\n\t\t\t\t\t\tannotations,\n\t\t\t\t\t\tpatchPreview: undefined,\n\t\t\t\t\t\twritePreview: {\n\t\t\t\t\t\t\tpath: targetPath,\n\t\t\t\t\t\t\ttoolName: 'write',\n\t\t\t\t\t\t\tcallId: preview.callId ?? existingWritePreview?.callId,\n\t\t\t\t\t\t\tcontent: preview.content ?? existingWritePreview?.content,\n\t\t\t\t\t\t\tchangeCount:\n\t\t\t\t\t\t\t\tpreview.changeCount ?? existingWritePreview?.changeCount,\n\t\t\t\t\t\t\tstatus: preview.status,\n\t\t\t\t\t\t\terror: preview.error ?? existingWritePreview?.error,\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t\tactiveWorkTabId: targetId,\n\t\t\t\t\tactiveTabId: activeIdForWorkUpdate(state, targetId),\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst existingWrite =\n\t\t\t\texisting?.toolName === 'write' ? existing : undefined;\n\t\t\tconst annotation = buildAnnotation(preview, preview.path);\n\t\t\treturn {\n\t\t\t\ttabs: upsertTab(tabs, {\n\t\t\t\t\tid,\n\t\t\t\t\ttype: 'file',\n\t\t\t\t\ttitle: titleFromPath(preview.path),\n\t\t\t\t\tpath: preview.path,\n\t\t\t\t\thighlight: undefined,\n\t\t\t\t\tannotations: annotation ? [annotation] : undefined,\n\t\t\t\t\tpatchPreview: undefined,\n\t\t\t\t\twritePreview: {\n\t\t\t\t\t\tpath: preview.path,\n\t\t\t\t\t\ttoolName: 'write',\n\t\t\t\t\t\tcallId: preview.callId,\n\t\t\t\t\t\tcontent: preview.content ?? existingWrite?.content,\n\t\t\t\t\t\tchangeCount: preview.changeCount ?? existingWrite?.changeCount,\n\t\t\t\t\t\tstatus: preview.status,\n\t\t\t\t\t\terror: preview.error ?? existingWrite?.error,\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t\tactiveWorkTabId: id,\n\t\t\t\tactiveTabId: activeIdForWorkUpdate(state, id),\n\t\t\t};\n\t\t});\n\t},\n\n\topenSkillFileTab: (skill, file) => {\n\t\tconst displayFile = file ?? 'SKILL.md';\n\t\tconst id = `skill-file:${skill}:${displayFile}`;\n\t\tset((state) => ({\n\t\t\ttabs: upsertTab(state.tabs, {\n\t\t\t\tid,\n\t\t\t\ttype: 'skill-file',\n\t\t\t\ttitle: titleFromPath(displayFile),\n\t\t\t\tskill,\n\t\t\t\tfile,\n\t\t\t}),\n\t\t\tactiveMode: 'work',\n\t\t\tactiveWorkTabId: id,\n\t\t\tactiveTabId: id,\n\t\t}));\n\t},\n\n\topenBrowserTab: (url = '', options = {}) => {\n\t\tconst kind = options.kind ?? 'browser';\n\t\tset((state) => {\n\t\t\tconst shouldCreate = kind === 'browser' && options.newTab === true;\n\t\t\tconst id = shouldCreate ? newBrowserTabId() : browserTabId(kind);\n\t\t\tconst existing = state.tabs.find(\n\t\t\t\t(tab): tab is Extract<ViewerTab, { type: 'browser' }> =>\n\t\t\t\t\t!shouldCreate && tab.type === 'browser' && tab.id === id,\n\t\t\t);\n\t\t\treturn {\n\t\t\t\ttabs: upsertTab(state.tabs, {\n\t\t\t\t\tid,\n\t\t\t\t\ttype: 'browser',\n\t\t\t\t\ttitle: options.title ?? existing?.title ?? 'Browser',\n\t\t\t\t\turl: url || existing?.url || '',\n\t\t\t\t\tkind,\n\t\t\t\t\treloadKey: existing?.reloadKey ?? 0,\n\t\t\t\t}),\n\t\t\t\tactiveMode: 'preview',\n\t\t\t\tactivePreviewTabId: id,\n\t\t\t\tactiveTabId: id,\n\t\t\t};\n\t\t});\n\t},\n\n\tupdateBrowserTabUrl: (id, url) =>\n\t\tset((state) => ({\n\t\t\ttabs: state.tabs.map((tab) =>\n\t\t\t\ttab.id === id && tab.type === 'browser'\n\t\t\t\t\t? {\n\t\t\t\t\t\t\t...tab,\n\t\t\t\t\t\t\turl,\n\t\t\t\t\t\t\ttitle: tab.kind === 'simulator' ? 'Simulator' : 'Browser',\n\t\t\t\t\t\t}\n\t\t\t\t\t: tab,\n\t\t\t),\n\t\t})),\n\n\treloadBrowserTab: (id) =>\n\t\tset((state) => ({\n\t\t\ttabs: state.tabs.map((tab) =>\n\t\t\t\ttab.id === id && tab.type === 'browser'\n\t\t\t\t\t? { ...tab, reloadKey: tab.reloadKey + 1 }\n\t\t\t\t\t: tab,\n\t\t\t),\n\t\t})),\n\n\tsetActiveTab: (id) =>\n\t\tset((state) => {\n\t\t\tconst tab = state.tabs.find((item) => item.id === id);\n\t\t\tconst mode = tab ? modeForTab(tab) : state.activeMode;\n\t\t\treturn {\n\t\t\t\tactiveMode: mode,\n\t\t\t\tactiveWorkTabId: mode === 'work' ? id : state.activeWorkTabId,\n\t\t\t\tactivePreviewTabId: mode === 'preview' ? id : state.activePreviewTabId,\n\t\t\t\tactiveTabId: id,\n\t\t\t};\n\t\t}),\n\n\tcloseTab: (id) =>\n\t\tset((state) => {\n\t\t\tconst closingIndex = state.tabs.findIndex((tab) => tab.id === id);\n\t\t\tconst closingTab = state.tabs[closingIndex];\n\t\t\tconst tabs = state.tabs.filter((tab) => tab.id !== id);\n\t\t\tlet activeMode = state.activeMode;\n\t\t\tlet activeWorkTabId = state.activeWorkTabId;\n\t\t\tlet activePreviewTabId = state.activePreviewTabId;\n\n\t\t\tif (\n\t\t\t\tclosingTab &&\n\t\t\t\tmodeForTab(closingTab) === 'work' &&\n\t\t\t\tactiveWorkTabId === id\n\t\t\t) {\n\t\t\t\tactiveWorkTabId = findFallbackTabId(tabs, 'work', closingIndex);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tclosingTab &&\n\t\t\t\tmodeForTab(closingTab) === 'preview' &&\n\t\t\t\tactivePreviewTabId === id\n\t\t\t) {\n\t\t\t\tactivePreviewTabId = findFallbackTabId(tabs, 'preview', closingIndex);\n\t\t\t}\n\n\t\t\tif (activeMode === 'work' && !activeWorkTabId && activePreviewTabId) {\n\t\t\t\tactiveMode = 'preview';\n\t\t\t}\n\n\t\t\tif (activeMode === 'preview' && !activePreviewTabId && activeWorkTabId) {\n\t\t\t\tactiveMode = 'work';\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ttabs,\n\t\t\t\tactiveMode,\n\t\t\t\tactiveWorkTabId,\n\t\t\t\tactivePreviewTabId,\n\t\t\t\tactiveTabId:\n\t\t\t\t\tactiveMode === 'preview' ? activePreviewTabId : activeWorkTabId,\n\t\t\t};\n\t\t}),\n\n\tupdateSessionFileOperationIndex: (id, index) =>\n\t\tset((state) => ({\n\t\t\ttabs: state.tabs.map((tab) =>\n\t\t\t\ttab.id === id && tab.type === 'session-file-diff'\n\t\t\t\t\t? { ...tab, selectedOperationIndex: index }\n\t\t\t\t\t: tab,\n\t\t\t),\n\t\t})),\n\n\tcloseAllTabs: () =>\n\t\tset({\n\t\t\ttabs: [],\n\t\t\tactiveTabId: null,\n\t\t\tactiveMode: 'work',\n\t\t\tactiveWorkTabId: null,\n\t\t\tactivePreviewTabId: null,\n\t\t}),\n}));\n",
32
32
  "import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport { apiClient } from '../lib/api-client';\nimport type { SendMessageRequest } from '../types/api';\nimport { optimisticallyQueueMessage } from './useQueueState';\nimport { sessionsQueryKey } from './useSessions';\n\ninterface UseMessagesOptions {\n\tenabled?: boolean;\n\tstaleTime?: number;\n}\n\nexport function useMessages(\n\tsessionId: string | undefined,\n\toptions: UseMessagesOptions = {},\n) {\n\tconst { enabled = true, staleTime = 15_000 } = options;\n\n\treturn useQuery({\n\t\tqueryKey: ['messages', sessionId],\n\t\tqueryFn: () => {\n\t\t\tif (!sessionId) {\n\t\t\t\tthrow new Error('Session ID is required');\n\t\t\t}\n\t\t\treturn apiClient.getMessages(sessionId);\n\t\t},\n\t\tenabled: !!sessionId && enabled,\n\t\tstaleTime,\n\t\trefetchOnWindowFocus: false,\n\t});\n}\n\nexport function useSendMessage(sessionId: string) {\n\tconst queryClient = useQueryClient();\n\n\treturn useMutation({\n\t\tmutationFn: async (data: SendMessageRequest) => {\n\t\t\tawait apiClient.markSessionViewed(sessionId).catch(() => undefined);\n\t\t\treturn apiClient.sendMessage(sessionId, data);\n\t\t},\n\t\tonSuccess: (result) => {\n\t\t\toptimisticallyQueueMessage(queryClient, sessionId, result.messageId);\n\t\t\tqueryClient.invalidateQueries({ queryKey: ['messages', sessionId] });\n\t\t\tqueryClient.invalidateQueries({ queryKey: sessionsQueryKey });\n\t\t},\n\t});\n}\n",
33
33
  "import { useQuery, type QueryClient } from '@tanstack/react-query';\nimport { apiClient } from '../lib/api-client';\n\nexport type QueueState = {\n\tcurrentMessageId: string | null;\n\tqueuedMessages: Array<{ messageId: string; position: number }>;\n\tqueueLength: number;\n\tisRunning: boolean;\n};\n\nconst defaultQueueState: QueueState = {\n\tcurrentMessageId: null,\n\tqueuedMessages: [],\n\tqueueLength: 0,\n\tisRunning: false,\n};\n\nexport function normalizeQueueState(state: {\n\tcurrentMessageId: string | null;\n\tqueuedMessages: Array<{ messageId: string; position: number }>;\n\tisRunning?: boolean;\n}): QueueState {\n\tconst isRunning = state.isRunning ?? Boolean(state.currentMessageId);\n\tconst currentMessageId = isRunning ? state.currentMessageId : null;\n\tconst hasActiveTurn = Boolean(currentMessageId);\n\tconst queuedMessages = hasActiveTurn ? state.queuedMessages : [];\n\n\treturn {\n\t\tcurrentMessageId,\n\t\tqueuedMessages,\n\t\tqueueLength: queuedMessages.length,\n\t\tisRunning: hasActiveTurn,\n\t};\n}\n\nexport function optimisticallyQueueMessage(\n\tqueryClient: QueryClient,\n\tsessionId: string,\n\tmessageId: string,\n) {\n\tqueryClient.setQueryData<QueueState>(['queueState', sessionId], (current) => {\n\t\tif (!current) return current;\n\t\tif (!current.isRunning || !current.currentMessageId) return current;\n\t\tif (current.currentMessageId === messageId) return current;\n\t\tif (current.queuedMessages.some((item) => item.messageId === messageId)) {\n\t\t\treturn current;\n\t\t}\n\n\t\tconst queuedMessages = [\n\t\t\t...current.queuedMessages,\n\t\t\t{ messageId, position: current.queuedMessages.length },\n\t\t];\n\t\treturn {\n\t\t\t...current,\n\t\t\tqueuedMessages,\n\t\t\tqueueLength: queuedMessages.length,\n\t\t};\n\t});\n}\n\nexport function useQueueState(sessionId: string | undefined): QueueState {\n\tconst { data } = useQuery<QueueState>({\n\t\tqueryKey: ['queueState', sessionId],\n\t\tqueryFn: async () => {\n\t\t\tif (!sessionId) return defaultQueueState;\n\t\t\tconst queueState = await apiClient.getQueueState(sessionId);\n\t\t\treturn normalizeQueueState(queueState);\n\t\t},\n\t\tenabled: !!sessionId,\n\t\tplaceholderData: defaultQueueState,\n\t\tstaleTime: Infinity,\n\t});\n\n\treturn data ?? defaultQueueState;\n}\n\nexport function useMessageQueuePosition(\n\tsessionId: string | undefined,\n\tmessageId: string,\n): { isQueued: boolean; isRunning: boolean; position: number | null } {\n\tconst queueState = useQueueState(sessionId);\n\n\tif (!sessionId || !queueState) {\n\t\treturn { isQueued: false, isRunning: false, position: null };\n\t}\n\n\tif (queueState.currentMessageId === messageId) {\n\t\treturn { isQueued: false, isRunning: true, position: null };\n\t}\n\n\tconst queuedItem = queueState.queuedMessages.find(\n\t\t(item) => item.messageId === messageId,\n\t);\n\n\tif (queuedItem) {\n\t\treturn { isQueued: true, isRunning: false, position: queuedItem.position };\n\t}\n\n\treturn { isQueued: false, isRunning: false, position: null };\n}\n",
34
34
  "import {\n\tuseInfiniteQuery,\n\tuseMutation,\n\tuseQueryClient,\n} from '@tanstack/react-query';\nimport { useMemo } from 'react';\nimport { apiClient } from '../lib/api-client';\nimport type {\n\tCreateSessionRequest,\n\tUpdateSessionRequest,\n\tSession,\n\tSessionsPage,\n} from '../types/api';\n\nconst SESSIONS_PAGE_SIZE = 50;\n\nexport const sessionsQueryKey = ['sessions', 'list'] as const;\n\nexport function useSessionsInfinite() {\n\treturn useInfiniteQuery({\n\t\tqueryKey: sessionsQueryKey,\n\t\tqueryFn: ({ pageParam = 0 }) =>\n\t\t\tapiClient.getSessionsPage({\n\t\t\t\tlimit: SESSIONS_PAGE_SIZE,\n\t\t\t\toffset: pageParam,\n\t\t\t}),\n\t\tgetNextPageParam: (lastPage) => lastPage.nextOffset ?? undefined,\n\t\tinitialPageParam: 0,\n\t\tstaleTime: 30_000,\n\t\trefetchInterval: 30_000,\n\t\trefetchOnWindowFocus: false,\n\t});\n}\n\nexport function useSessions() {\n\tconst query = useSessionsInfinite();\n\tconst data = useMemo<Session[]>(() => {\n\t\tif (!query.data?.pages) return [];\n\t\treturn query.data.pages.flatMap((p) => p.items ?? []);\n\t}, [query.data]);\n\n\treturn {\n\t\tdata,\n\t\tisLoading: query.isLoading,\n\t\tisError: query.isError,\n\t\terror: query.error,\n\t\thasNextPage: query.hasNextPage,\n\t\tfetchNextPage: query.fetchNextPage,\n\t\tisFetchingNextPage: query.isFetchingNextPage,\n\t};\n}\n\nexport function useSession(sessionId: string) {\n\tconst { data: sessions } = useSessions();\n\treturn sessions?.find((s) => s.id === sessionId);\n}\n\nexport function useCreateSession() {\n\tconst queryClient = useQueryClient();\n\n\treturn useMutation({\n\t\tmutationFn: (data: CreateSessionRequest) => apiClient.createSession(data),\n\t\tonSuccess: (newSession) => {\n\t\t\tqueryClient.setQueryData<{ pages: SessionsPage[]; pageParams: number[] }>(\n\t\t\t\tsessionsQueryKey,\n\t\t\t\t(old) => {\n\t\t\t\t\tif (!old) return old;\n\t\t\t\t\tconst firstPage = old.pages[0];\n\t\t\t\t\tif (!firstPage) return old;\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...old,\n\t\t\t\t\t\tpages: [\n\t\t\t\t\t\t\t{ ...firstPage, items: [newSession, ...firstPage.items] },\n\t\t\t\t\t\t\t...old.pages.slice(1),\n\t\t\t\t\t\t],\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t);\n\t\t\tqueryClient.invalidateQueries({ queryKey: sessionsQueryKey });\n\t\t},\n\t});\n}\n\nexport function useUpdateSession(sessionId: string) {\n\tconst queryClient = useQueryClient();\n\n\treturn useMutation({\n\t\tmutationFn: (data: UpdateSessionRequest) =>\n\t\t\tapiClient.updateSession(sessionId, data),\n\t\tonSuccess: async () => {\n\t\t\tawait queryClient.invalidateQueries({ queryKey: sessionsQueryKey });\n\t\t\tawait queryClient.invalidateQueries({ queryKey: ['session', sessionId] });\n\t\t},\n\t});\n}\n\nexport function useMarkSessionViewed() {\n\tconst queryClient = useQueryClient();\n\n\treturn useMutation({\n\t\tmutationFn: (sessionId: string) => apiClient.markSessionViewed(sessionId),\n\t\tonSuccess: (updatedSession) => {\n\t\t\tqueryClient.setQueryData<{ pages: SessionsPage[]; pageParams: number[] }>(\n\t\t\t\tsessionsQueryKey,\n\t\t\t\t(old) => {\n\t\t\t\t\tif (!old) return old;\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...old,\n\t\t\t\t\t\tpages: old.pages.map((page) => ({\n\t\t\t\t\t\t\t...page,\n\t\t\t\t\t\t\titems: page.items.map((session) =>\n\t\t\t\t\t\t\t\tsession.id === updatedSession.id\n\t\t\t\t\t\t\t\t\t? { ...session, ...updatedSession }\n\t\t\t\t\t\t\t\t\t: session,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t})),\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t);\n\t\t},\n\t});\n}\n\nexport function useDeleteSession() {\n\tconst queryClient = useQueryClient();\n\n\treturn useMutation({\n\t\tmutationFn: (sessionId: string) => apiClient.deleteSession(sessionId),\n\t\tonSuccess: () => {\n\t\t\tqueryClient.invalidateQueries({ queryKey: sessionsQueryKey });\n\t\t},\n\t});\n}\n",
35
- "import { useEffect, useRef } from 'react';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { SSEClient } from '../lib/sse-client';\nimport { apiClient } from '../lib/api-client';\nimport type { Message, MessagePart } from '../types/api';\nimport { useToolApprovalStore } from '../stores/toolApprovalStore';\nimport { useViewerTabsStore } from '../stores/viewerTabsStore';\nimport {\n\tnormalizeQueueState,\n\toptimisticallyQueueMessage,\n} from './useQueueState';\nimport { sessionsQueryKey } from './useSessions';\n\nconst TOOL_PREVIEW_THROTTLE_MS = 500;\nconst TOOL_PREVIEW_THROTTLE_MIN_CHARS = 8_000;\nconst TOOL_PREVIEW_THROTTLE_MIN_DELTA_CHARS = 16_000;\nconst STREAMING_WRITE_CONTENT_PREVIEW_CHARS = 24_000;\nconst STREAMING_PATCH_PREVIEW_HEAD_CHARS = 12_000;\nconst STREAMING_PATCH_PREVIEW_TAIL_CHARS = 24_000;\nconst STREAMING_TOOL_INPUT_HEAD_CHARS = 8_000;\nconst STREAMING_TOOL_INPUT_TAIL_CHARS = 16_000;\nconst STREAMING_TOOL_MESSAGE_THROTTLE_MS = 500;\n\nexport function useSessionStream(\n\tsessionId: string | undefined,\n\tenabled = true,\n) {\n\tconst queryClient = useQueryClient();\n\tconst clientRef = useRef<SSEClient | null>(null);\n\tconst assistantMessageIdRef = useRef<string | null>(null);\n\tconst toolInputBuffersRef = useRef<Map<string, string>>(new Map());\n\tconst toolPreviewEmitRef = useRef<\n\t\tMap<\n\t\t\tstring,\n\t\t\t{ emittedAt: number; contentLength: number; lineSignature?: string }\n\t\t>\n\t>(new Map());\n\tconst toolMessageEmitRef = useRef<Map<string, number>>(new Map());\n\n\tconst {\n\t\taddPendingApproval,\n\t\tremovePendingApproval,\n\t\tupdatePendingApproval,\n\t\tsetPendingApprovals,\n\t} = useToolApprovalStore();\n\n\tuseEffect(() => {\n\t\tif (!sessionId || !enabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tassistantMessageIdRef.current = null;\n\t\ttoolInputBuffersRef.current.clear();\n\t\ttoolPreviewEmitRef.current.clear();\n\t\ttoolMessageEmitRef.current.clear();\n\t\tlet lastSessionInvalidation = 0;\n\n\t\t// Fetch pending approvals from server for this session\n\t\tapiClient\n\t\t\t.getPendingApprovals(sessionId)\n\t\t\t.then((result) => {\n\t\t\t\tif (result.ok && result.pending.length > 0) {\n\t\t\t\t\tsetPendingApprovals(result.pending);\n\t\t\t\t} else {\n\t\t\t\t\tsetPendingApprovals([]);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\tsetPendingApprovals([]);\n\t\t\t});\n\n\t\tconst client = new SSEClient();\n\t\tclientRef.current = client;\n\n\t\tconst url = apiClient.getStreamUrl(sessionId);\n\t\tconsole.log('[useSessionStream] Connecting to stream:', url);\n\t\tclient.connect(url);\n\n\t\tconst resolveAssistantTargetIndex = (messages: Message[]): number => {\n\t\t\tif (assistantMessageIdRef.current) {\n\t\t\t\tconst byId = messages.findIndex(\n\t\t\t\t\t(message) => message.id === assistantMessageIdRef.current,\n\t\t\t\t);\n\t\t\t\tif (byId !== -1) return byId;\n\t\t\t}\n\t\t\tfor (let i = messages.length - 1; i >= 0; i -= 1) {\n\t\t\t\tconst candidate = messages[i];\n\t\t\t\tif (candidate.role === 'assistant' && candidate.status === 'pending') {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1;\n\t\t};\n\n\t\tconst extractText = (part: MessagePart): string => {\n\t\t\tif (\n\t\t\t\tpart.contentJson &&\n\t\t\t\ttypeof part.contentJson === 'object' &&\n\t\t\t\t!Array.isArray(part.contentJson) &&\n\t\t\t\t'text' in part.contentJson\n\t\t\t) {\n\t\t\t\treturn String((part.contentJson as Record<string, unknown>).text ?? '');\n\t\t\t}\n\t\t\tif (typeof part.content === 'string') {\n\t\t\t\ttry {\n\t\t\t\t\tconst parsed = JSON.parse(part.content);\n\t\t\t\t\tif (parsed && typeof parsed.text === 'string') return parsed.text;\n\t\t\t\t} catch {}\n\t\t\t\treturn part.content;\n\t\t\t}\n\t\t\treturn '';\n\t\t};\n\n\t\tconst getToolEventCallId = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t): string | null => {\n\t\t\tif (typeof payload?.callId === 'string') return payload.callId;\n\t\t\treturn typeof payload?.toolCallId === 'string'\n\t\t\t\t? payload.toolCallId\n\t\t\t\t: null;\n\t\t};\n\n\t\tconst getToolEventName = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t): string | null => {\n\t\t\tif (typeof payload?.name === 'string') return payload.name;\n\t\t\treturn typeof payload?.toolName === 'string' ? payload.toolName : null;\n\t\t};\n\n\t\tconst getToolEventArgs = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t): unknown => payload?.args ?? payload?.input;\n\n\t\tconst getToolBufferKey = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t): string | null => {\n\t\t\tconst callId = getToolEventCallId(payload);\n\t\t\tif (callId) return callId;\n\t\t\tconst name = getToolEventName(payload);\n\t\t\treturn name ? `name:${name}` : null;\n\t\t};\n\n\t\tconst parseArgsRecord = (\n\t\t\tvalue: unknown,\n\t\t): Record<string, unknown> | null => {\n\t\t\tif (value && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t\treturn value as Record<string, unknown>;\n\t\t\t}\n\n\t\t\tif (typeof value !== 'string') return null;\n\n\t\t\ttry {\n\t\t\t\tconst parsed = JSON.parse(value);\n\t\t\t\treturn parsed && typeof parsed === 'object' && !Array.isArray(parsed)\n\t\t\t\t\t? (parsed as Record<string, unknown>)\n\t\t\t\t\t: null;\n\t\t\t} catch {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t};\n\n\t\tconst normalizeLineNumber = (value: unknown): number | undefined => {\n\t\t\tconst parsed =\n\t\t\t\ttypeof value === 'number'\n\t\t\t\t\t? value\n\t\t\t\t\t: typeof value === 'string'\n\t\t\t\t\t\t? Number.parseInt(value, 10)\n\t\t\t\t\t\t: Number.NaN;\n\t\t\treturn Number.isFinite(parsed) && parsed > 0\n\t\t\t\t? Math.floor(parsed)\n\t\t\t\t: undefined;\n\t\t};\n\n\t\tconst parseLineRange = (\n\t\t\tvalue: unknown,\n\t\t): { startLine?: number; endLine?: number } => {\n\t\t\tif (typeof value !== 'string') return {};\n\t\t\tconst match = value.match(/@(\\d+)(?:-(\\d+))?/);\n\t\t\tif (!match) return {};\n\t\t\treturn {\n\t\t\t\tstartLine: normalizeLineNumber(match[1]),\n\t\t\t\tendLine: normalizeLineNumber(match[2] ?? match[1]),\n\t\t\t};\n\t\t};\n\n\t\tconst getBoundedStreamingToolInput = (value: string): string => {\n\t\t\tconst maxLength =\n\t\t\t\tSTREAMING_TOOL_INPUT_HEAD_CHARS + STREAMING_TOOL_INPUT_TAIL_CHARS;\n\t\t\tif (value.length <= maxLength) return value;\n\t\t\treturn `${value.slice(\n\t\t\t\t0,\n\t\t\t\tSTREAMING_TOOL_INPUT_HEAD_CHARS,\n\t\t\t)}\\n… streamed tool input truncated for UI responsiveness …\\n${value.slice(\n\t\t\t\t-STREAMING_TOOL_INPUT_TAIL_CHARS,\n\t\t\t)}`;\n\t\t};\n\n\t\tconst getToolArgsForViewer = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t\tdelta?: string | null,\n\t\t): Record<string, unknown> | null => {\n\t\t\tconst args = parseArgsRecord(getToolEventArgs(payload));\n\t\t\tif (args) return args;\n\n\t\t\tconst key = getToolBufferKey(payload);\n\t\t\tif (!key) return null;\n\n\t\t\tconst previous = toolInputBuffersRef.current.get(key) ?? '';\n\t\t\tif (!delta) return parseArgsRecord(previous);\n\n\t\t\tconst next = getBoundedStreamingToolInput(`${previous}${delta}`);\n\t\t\ttoolInputBuffersRef.current.set(key, next);\n\t\t\treturn parseArgsRecord(next);\n\t\t};\n\n\t\tconst bestEffortUnescapeJsonString = (value: string): string => {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(`\"${value.replace(/\\\\$/, '')}\"`) as string;\n\t\t\t} catch {\n\t\t\t\treturn value\n\t\t\t\t\t.replace(/\\\\n/g, '\\n')\n\t\t\t\t\t.replace(/\\\\t/g, '\\t')\n\t\t\t\t\t.replace(/\\\\r/g, '\\r')\n\t\t\t\t\t.replace(/\\\\\"/g, '\"')\n\t\t\t\t\t.replace(/\\\\\\\\/g, '\\\\');\n\t\t\t}\n\t\t};\n\n\t\tconst extractJsonStringField = (\n\t\t\ttext: string,\n\t\t\tfield: string,\n\t\t\trequireClosed = false,\n\t\t): string | undefined => {\n\t\t\tconst marker = `\"${field}\"`;\n\t\t\tconst markerIndex = text.indexOf(marker);\n\t\t\tif (markerIndex === -1) return undefined;\n\n\t\t\tconst colonIndex = text.indexOf(':', markerIndex + marker.length);\n\t\t\tif (colonIndex === -1) return undefined;\n\n\t\t\tconst quoteIndex = text.indexOf('\"', colonIndex + 1);\n\t\t\tif (quoteIndex === -1) return undefined;\n\n\t\t\tlet escaped = '';\n\t\t\tlet escaping = false;\n\t\t\tlet closed = false;\n\t\t\tfor (let i = quoteIndex + 1; i < text.length; i += 1) {\n\t\t\t\tconst char = text[i];\n\t\t\t\tif (escaping) {\n\t\t\t\t\tescaped += `\\\\${char}`;\n\t\t\t\t\tescaping = false;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (char === '\\\\') {\n\t\t\t\t\tescaping = true;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (char === '\"') {\n\t\t\t\t\tclosed = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tescaped += char;\n\t\t\t}\n\n\t\t\tif (requireClosed && !closed) return undefined;\n\n\t\t\treturn bestEffortUnescapeJsonString(escaped);\n\t\t};\n\n\t\tconst getBufferedToolInput = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t): string => {\n\t\t\tconst key = getToolBufferKey(payload);\n\t\t\treturn key ? (toolInputBuffersRef.current.get(key) ?? '') : '';\n\t\t};\n\n\t\tconst getStringArg = (\n\t\t\targs: Record<string, unknown> | null,\n\t\t\tbuffer: string,\n\t\t\tfield: string,\n\t\t\trequireClosed = false,\n\t\t): string | undefined => {\n\t\t\tconst value = args?.[field];\n\t\t\tif (typeof value === 'string') return value;\n\t\t\treturn extractJsonStringField(buffer, field, requireClosed);\n\t\t};\n\n\t\tconst getStreamingWritePreviewContent = (\n\t\t\targs: Record<string, unknown> | null,\n\t\t\tbuffer: string,\n\t\t): string | undefined => {\n\t\t\tconst argContent = args?.content;\n\t\t\tif (typeof argContent === 'string') {\n\t\t\t\tif (argContent.length <= STREAMING_WRITE_CONTENT_PREVIEW_CHARS) {\n\t\t\t\t\treturn argContent;\n\t\t\t\t}\n\n\t\t\t\treturn `… showing latest streamed content only …\\n${argContent.slice(\n\t\t\t\t\t-STREAMING_WRITE_CONTENT_PREVIEW_CHARS,\n\t\t\t\t)}`;\n\t\t\t}\n\n\t\t\tconst marker = '\"content\"';\n\t\t\tconst markerIndex = buffer.indexOf(marker);\n\t\t\tif (markerIndex === -1) return undefined;\n\n\t\t\tconst colonIndex = buffer.indexOf(':', markerIndex + marker.length);\n\t\t\tif (colonIndex === -1) return undefined;\n\n\t\t\tconst quoteIndex = buffer.indexOf('\"', colonIndex + 1);\n\t\t\tif (quoteIndex === -1) return undefined;\n\n\t\t\tconst valueStart = quoteIndex + 1;\n\t\t\tif (buffer.length - valueStart <= STREAMING_WRITE_CONTENT_PREVIEW_CHARS) {\n\t\t\t\treturn extractJsonStringField(buffer, 'content');\n\t\t\t}\n\n\t\t\tconst rawTail = buffer.slice(\n\t\t\t\tMath.max(\n\t\t\t\t\tvalueStart,\n\t\t\t\t\tbuffer.length - STREAMING_WRITE_CONTENT_PREVIEW_CHARS,\n\t\t\t\t),\n\t\t\t);\n\t\t\treturn `… showing latest streamed content only …\\n${bestEffortUnescapeJsonString(\n\t\t\t\trawTail,\n\t\t\t)}`;\n\t\t};\n\n\t\tconst getStreamingPatchPreviewContent = (\n\t\t\targs: Record<string, unknown> | null,\n\t\t\tbuffer: string,\n\t\t): string | undefined => {\n\t\t\tconst argPatch = args?.patch;\n\t\t\tif (typeof argPatch === 'string') {\n\t\t\t\tif (\n\t\t\t\t\targPatch.length <=\n\t\t\t\t\tSTREAMING_PATCH_PREVIEW_HEAD_CHARS +\n\t\t\t\t\t\tSTREAMING_PATCH_PREVIEW_TAIL_CHARS\n\t\t\t\t) {\n\t\t\t\t\treturn argPatch;\n\t\t\t\t}\n\n\t\t\t\treturn `${argPatch.slice(\n\t\t\t\t\t0,\n\t\t\t\t\tSTREAMING_PATCH_PREVIEW_HEAD_CHARS,\n\t\t\t\t)}\\n… patch preview truncated while streaming …\\n${argPatch.slice(\n\t\t\t\t\t-STREAMING_PATCH_PREVIEW_TAIL_CHARS,\n\t\t\t\t)}`;\n\t\t\t}\n\n\t\t\tconst marker = '\"patch\"';\n\t\t\tconst markerIndex = buffer.indexOf(marker);\n\t\t\tif (markerIndex === -1) return undefined;\n\n\t\t\tconst colonIndex = buffer.indexOf(':', markerIndex + marker.length);\n\t\t\tif (colonIndex === -1) return undefined;\n\n\t\t\tconst quoteIndex = buffer.indexOf('\"', colonIndex + 1);\n\t\t\tif (quoteIndex === -1) return undefined;\n\n\t\t\tconst valueStart = quoteIndex + 1;\n\t\t\tconst rawLength = buffer.length - valueStart;\n\t\t\tif (\n\t\t\t\trawLength <=\n\t\t\t\tSTREAMING_PATCH_PREVIEW_HEAD_CHARS + STREAMING_PATCH_PREVIEW_TAIL_CHARS\n\t\t\t) {\n\t\t\t\treturn extractJsonStringField(buffer, 'patch');\n\t\t\t}\n\n\t\t\tconst rawHead = buffer.slice(\n\t\t\t\tvalueStart,\n\t\t\t\tvalueStart + STREAMING_PATCH_PREVIEW_HEAD_CHARS,\n\t\t\t);\n\t\t\tconst rawTail = buffer.slice(-STREAMING_PATCH_PREVIEW_TAIL_CHARS);\n\t\t\treturn `${bestEffortUnescapeJsonString(\n\t\t\t\trawHead,\n\t\t\t)}\\n… patch preview truncated while streaming …\\n${bestEffortUnescapeJsonString(\n\t\t\t\trawTail,\n\t\t\t)}`;\n\t\t};\n\n\t\tconst getResultRecord = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t): Record<string, unknown> | null =>\n\t\t\tpayload?.result &&\n\t\t\ttypeof payload.result === 'object' &&\n\t\t\t!Array.isArray(payload.result)\n\t\t\t\t? (payload.result as Record<string, unknown>)\n\t\t\t\t: null;\n\n\t\tconst getArtifactRecord = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t): Record<string, unknown> | null =>\n\t\t\tpayload?.artifact &&\n\t\t\ttypeof payload.artifact === 'object' &&\n\t\t\t!Array.isArray(payload.artifact)\n\t\t\t\t? (payload.artifact as Record<string, unknown>)\n\t\t\t\t: null;\n\n\t\tconst extractErrorMessage = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t): string | undefined => {\n\t\t\tconst result = getResultRecord(payload);\n\t\t\tif (typeof payload?.error === 'string') return payload.error;\n\t\t\treturn typeof result?.error === 'string' ? result.error : undefined;\n\t\t};\n\n\t\tconst normalizePatchPath = (path: string): string =>\n\t\t\tpath.replace(/^a\\//, '').replace(/^b\\//, '').trim();\n\n\t\tconst patchPathMatches = (\n\t\t\tpatchPath: string,\n\t\t\ttargetPath: string,\n\t\t): boolean => {\n\t\t\tconst normalizedPatch = normalizePatchPath(patchPath);\n\t\t\tconst normalizedTarget = normalizePatchPath(targetPath);\n\t\t\treturn (\n\t\t\t\tnormalizedPatch === normalizedTarget ||\n\t\t\t\tnormalizedPatch.endsWith(`/${normalizedTarget}`) ||\n\t\t\t\tnormalizedTarget.endsWith(`/${normalizedPatch}`)\n\t\t\t);\n\t\t};\n\n\t\tconst patchPathMayReferToTarget = (\n\t\t\tpatchPath: string,\n\t\t\ttargetPath: string,\n\t\t): boolean => {\n\t\t\tconst normalizedPatch = normalizePatchPath(patchPath).replace(/\\/+$/, '');\n\t\t\tconst normalizedTarget = normalizePatchPath(targetPath);\n\t\t\tif (!normalizedPatch) return false;\n\t\t\treturn (\n\t\t\t\tpatchPathMatches(patchPath, targetPath) ||\n\t\t\t\tnormalizedTarget.startsWith(`${normalizedPatch}/`)\n\t\t\t);\n\t\t};\n\n\t\tconst isLikelyCompletePatchPath = (path: string): boolean => {\n\t\t\tconst normalized = normalizePatchPath(path);\n\t\t\tif (!normalized || normalized.endsWith('/')) return false;\n\t\t\tconst name = normalized.split('/').pop() ?? '';\n\t\t\treturn name.includes('.');\n\t\t};\n\n\t\tconst getCompletedPatchChangeLineSignature = (\n\t\t\tpatch: string,\n\t\t): string | undefined => {\n\t\t\tconst stablePatch = patch.endsWith('\\n')\n\t\t\t\t? patch\n\t\t\t\t: patch.slice(0, patch.lastIndexOf('\\n') + 1);\n\t\t\tif (!stablePatch) return undefined;\n\n\t\t\tlet changeLines = 0;\n\t\t\tlet stableChangeLength = 0;\n\t\t\tlet lineDirectiveCount = 0;\n\t\t\tfor (const line of stablePatch.split('\\n')) {\n\t\t\t\tif (\n\t\t\t\t\t(line.startsWith('+') && !line.startsWith('+++')) ||\n\t\t\t\t\t(line.startsWith('-') && !line.startsWith('---'))\n\t\t\t\t) {\n\t\t\t\t\tchangeLines += 1;\n\t\t\t\t\tstableChangeLength += line.length;\n\t\t\t\t} else if (\n\t\t\t\t\t/^\\*\\*\\* (?:Delete Lines in|Replace Lines in|Insert Before in|Insert After in): /.test(\n\t\t\t\t\t\tline,\n\t\t\t\t\t) ||\n\t\t\t\t\tline.startsWith('*** Lines:') ||\n\t\t\t\t\tline.startsWith('*** Line:') ||\n\t\t\t\t\tline.startsWith('*** With:')\n\t\t\t\t) {\n\t\t\t\t\tlineDirectiveCount += 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (changeLines > 0) return `${changeLines}:${stableChangeLength}`;\n\t\t\treturn lineDirectiveCount > 0\n\t\t\t\t? `lines:${lineDirectiveCount}:${stablePatch.length}`\n\t\t\t\t: undefined;\n\t\t};\n\n\t\tconst extractPathsFromPatch = (patch: string): string[] => {\n\t\t\tconst paths = new Set<string>();\n\t\t\tfor (const line of patch.split('\\n')) {\n\t\t\t\tconst directive = line.match(\n\t\t\t\t\t/^\\*\\*\\* (?:Update|Add|Delete) File: (.+)$/,\n\t\t\t\t);\n\t\t\t\tconst replaceDirective = line.match(/^\\*\\*\\* Replace in: (.+)$/);\n\t\t\t\tconst lineDirective = line.match(\n\t\t\t\t\t/^\\*\\*\\* (?:Delete Lines in|Replace Lines in|Insert Before in|Insert After in): (.+)$/,\n\t\t\t\t);\n\t\t\t\tconst path =\n\t\t\t\t\tdirective?.[1] ?? replaceDirective?.[1] ?? lineDirective?.[1];\n\t\t\t\tif (path) {\n\t\t\t\t\tpaths.add(path.trim());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst unified = line.match(/^\\+\\+\\+ (?:b\\/)?(.+)$/);\n\t\t\t\tif (unified?.[1] && unified[1] !== '/dev/null') {\n\t\t\t\t\tpaths.add(unified[1].trim());\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn [...paths];\n\t\t};\n\n\t\ttype FileContentCache = {\n\t\t\tcontent: string;\n\t\t\tpath: string;\n\t\t\textension: string;\n\t\t\tlineCount: number;\n\t\t};\n\n\t\tconst getExtension = (path: string): string =>\n\t\t\tpath.split('.').pop()?.toLowerCase() ?? '';\n\n\t\tconst updateFileContentCache = (path: string, content: string) => {\n\t\t\tqueryClient.setQueryData<FileContentCache>(['files', 'read', path], {\n\t\t\t\tcontent,\n\t\t\t\tpath,\n\t\t\t\textension: getExtension(path),\n\t\t\t\tlineCount: content.split('\\n').length,\n\t\t\t});\n\t\t};\n\n\t\tconst mergeReadResultIntoFileCache = (\n\t\t\tpath: string,\n\t\t\tresult: Record<string, unknown> | null,\n\t\t\tstartLine: number | undefined,\n\t\t\tendLine: number | undefined,\n\t\t) => {\n\t\t\tif (typeof result?.content !== 'string') return;\n\t\t\tconst readContent = result.content;\n\t\t\tif (!startLine || !endLine) {\n\t\t\t\tupdateFileContentCache(path, readContent);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tqueryClient.setQueryData<FileContentCache | undefined>(\n\t\t\t\t['files', 'read', path],\n\t\t\t\t(current) => {\n\t\t\t\t\tif (!current?.content) return current;\n\t\t\t\t\tconst lines = current.content.split('\\n');\n\t\t\t\t\tif (lines.at(-1) === '') lines.pop();\n\t\t\t\t\tconst readLines = readContent.split('\\n');\n\t\t\t\t\tlines.splice(startLine - 1, endLine - startLine + 1, ...readLines);\n\t\t\t\t\tconst content = `${lines.join('\\n')}\\n`;\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...current,\n\t\t\t\t\t\tcontent,\n\t\t\t\t\t\tlineCount:\n\t\t\t\t\t\t\ttypeof result.totalLines === 'number'\n\t\t\t\t\t\t\t\t? result.totalLines\n\t\t\t\t\t\t\t\t: lines.length,\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t);\n\t\t};\n\n\t\tconst invalidateFileContentCache = (path: string) => {\n\t\t\tvoid queryClient.invalidateQueries({ queryKey: ['files', 'read', path] });\n\t\t};\n\n\t\tconst getChangedLinesForPath = (\n\t\t\tresult: Record<string, unknown> | null,\n\t\t\tpath: string,\n\t\t): number[] | undefined => {\n\t\t\tconst changes = Array.isArray(result?.changes) ? result.changes : [];\n\t\t\tconst lines = new Set<number>();\n\n\t\t\tfor (const change of changes) {\n\t\t\t\tif (!change || typeof change !== 'object') continue;\n\t\t\t\tconst record = change as Record<string, unknown>;\n\t\t\t\tif (typeof record.filePath !== 'string') continue;\n\t\t\t\tif (!patchPathMatches(record.filePath, path)) continue;\n\t\t\t\tif (!Array.isArray(record.hunks)) continue;\n\n\t\t\t\tfor (const hunk of record.hunks) {\n\t\t\t\t\tif (!hunk || typeof hunk !== 'object') continue;\n\t\t\t\t\tconst hunkRecord = hunk as Record<string, unknown>;\n\t\t\t\t\tconst newStart =\n\t\t\t\t\t\ttypeof hunkRecord.newStart === 'number'\n\t\t\t\t\t\t\t? hunkRecord.newStart\n\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\tconst newLines =\n\t\t\t\t\t\ttypeof hunkRecord.newLines === 'number'\n\t\t\t\t\t\t\t? hunkRecord.newLines\n\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\tif (!newStart || !newLines) continue;\n\n\t\t\t\t\tfor (let line = newStart; line < newStart + newLines; line += 1) {\n\t\t\t\t\t\tlines.add(line);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn lines.size > 0 ? [...lines] : undefined;\n\t\t};\n\n\t\tconst handleReadToolActivity = (\n\t\t\teventType: string,\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t\tdelta?: string | null,\n\t\t) => {\n\t\t\tconst name = getToolEventName(payload);\n\t\t\tif (name !== 'read') return;\n\n\t\t\tconst args = getToolArgsForViewer(payload, delta);\n\t\t\tconst path = typeof args?.path === 'string' ? args.path : null;\n\t\t\tif (!path) return;\n\n\t\t\tconst result =\n\t\t\t\tpayload?.result &&\n\t\t\t\ttypeof payload.result === 'object' &&\n\t\t\t\t!Array.isArray(payload.result)\n\t\t\t\t\t? (payload.result as Record<string, unknown>)\n\t\t\t\t\t: null;\n\t\t\tconst rangeFromResult = parseLineRange(result?.lineRange);\n\t\t\tconst startLine =\n\t\t\t\tnormalizeLineNumber(args.startLine) ??\n\t\t\t\tnormalizeLineNumber(args.start_line) ??\n\t\t\t\trangeFromResult.startLine;\n\t\t\tconst endLine =\n\t\t\t\tnormalizeLineNumber(args.endLine) ??\n\t\t\t\tnormalizeLineNumber(args.end_line) ??\n\t\t\t\trangeFromResult.endLine ??\n\t\t\t\tstartLine;\n\t\t\tconst failed = result?.ok === false || eventType === 'error';\n\t\t\tif (eventType === 'tool.result' && !failed) {\n\t\t\t\tmergeReadResultIntoFileCache(path, result, startLine, endLine);\n\t\t\t}\n\n\t\t\tconst viewerStore = useViewerTabsStore.getState();\n\t\t\tif (!viewerStore.followToolActivity) return;\n\n\t\t\tviewerStore.openToolReadTab(path, {\n\t\t\t\tstartLine,\n\t\t\t\tendLine,\n\t\t\t\treason: 'read',\n\t\t\t\tcallId: getToolEventCallId(payload) ?? undefined,\n\t\t\t\tstatus: failed\n\t\t\t\t\t? 'error'\n\t\t\t\t\t: eventType === 'tool.result'\n\t\t\t\t\t\t? 'success'\n\t\t\t\t\t\t: 'streaming',\n\t\t\t});\n\t\t};\n\n\t\tconst handleWriteToolActivity = (\n\t\t\teventType: string,\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t\tdelta?: string | null,\n\t\t) => {\n\t\t\tconst name = getToolEventName(payload);\n\t\t\tif (name !== 'write') return;\n\n\t\t\tconst args = getToolArgsForViewer(payload, delta);\n\t\t\tconst buffer = getBufferedToolInput(payload);\n\t\t\tconst result = getResultRecord(payload);\n\t\t\tconst path =\n\t\t\t\t(typeof result?.path === 'string' ? result.path : undefined) ??\n\t\t\t\tgetStringArg(args, buffer, 'path', true);\n\t\t\tif (!path) return;\n\n\t\t\tconst failed = result?.ok === false || eventType === 'error';\n\t\t\tconst callId = getToolEventCallId(payload) ?? undefined;\n\t\t\tconst status = failed\n\t\t\t\t? 'error'\n\t\t\t\t: eventType === 'tool.result'\n\t\t\t\t\t? 'success'\n\t\t\t\t\t: 'streaming';\n\t\t\tconst content =\n\t\t\t\tstatus === 'streaming'\n\t\t\t\t\t? getStreamingWritePreviewContent(args, buffer)\n\t\t\t\t\t: getStringArg(args, buffer, 'content');\n\t\t\tconst summary =\n\t\t\t\tresult?.summary && typeof result.summary === 'object'\n\t\t\t\t\t? (result.summary as Record<string, unknown>)\n\t\t\t\t\t: undefined;\n\t\t\tconst changeCount =\n\t\t\t\ttypeof summary?.additions === 'number' &&\n\t\t\t\ttypeof summary.deletions === 'number'\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tadditions: summary.additions,\n\t\t\t\t\t\t\tremovals: summary.deletions,\n\t\t\t\t\t\t}\n\t\t\t\t\t: undefined;\n\t\t\tif (status === 'success') {\n\t\t\t\tif (content !== undefined) updateFileContentCache(path, content);\n\t\t\t\telse invalidateFileContentCache(path);\n\t\t\t}\n\n\t\t\tconst viewerStore = useViewerTabsStore.getState();\n\t\t\tif (!viewerStore.followToolActivity) return;\n\n\t\t\tif (\n\t\t\t\tstatus === 'streaming' &&\n\t\t\t\tcontent !== undefined &&\n\t\t\t\tcontent.length >= TOOL_PREVIEW_THROTTLE_MIN_CHARS\n\t\t\t) {\n\t\t\t\tconst previewKey = callId ?? path;\n\t\t\t\tconst now = Date.now();\n\t\t\t\tconst last = toolPreviewEmitRef.current.get(previewKey);\n\t\t\t\tconst contentDelta = Math.abs(\n\t\t\t\t\tcontent.length - (last?.contentLength ?? 0),\n\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\tlast &&\n\t\t\t\t\tnow - last.emittedAt < TOOL_PREVIEW_THROTTLE_MS &&\n\t\t\t\t\tcontentDelta < TOOL_PREVIEW_THROTTLE_MIN_DELTA_CHARS\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\ttoolPreviewEmitRef.current.set(previewKey, {\n\t\t\t\t\temittedAt: now,\n\t\t\t\t\tcontentLength: content.length,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tviewerStore.openToolPreviewTab({\n\t\t\t\tpath,\n\t\t\t\ttoolName: 'write',\n\t\t\t\tcallId,\n\t\t\t\tcontent,\n\t\t\t\tchangeCount,\n\t\t\t\tstatus,\n\t\t\t\terror: extractErrorMessage(payload),\n\t\t\t});\n\t\t};\n\n\t\tconst handleApplyPatchToolActivity = (\n\t\t\teventType: string,\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t\tdelta?: string | null,\n\t\t) => {\n\t\t\tconst name = getToolEventName(payload);\n\t\t\tif (name !== 'apply_patch') return;\n\n\t\t\tconst args = getToolArgsForViewer(payload, delta);\n\t\t\tconst buffer = getBufferedToolInput(payload);\n\t\t\tconst artifact = getArtifactRecord(payload);\n\t\t\tconst result = getResultRecord(payload);\n\t\t\tconst failed = result?.ok === false || eventType === 'error';\n\t\t\tconst status = failed\n\t\t\t\t? 'error'\n\t\t\t\t: eventType === 'tool.result'\n\t\t\t\t\t? 'success'\n\t\t\t\t\t: 'streaming';\n\t\t\tconst callId = getToolEventCallId(payload) ?? undefined;\n\n\t\t\tconst patch =\n\t\t\t\t(typeof artifact?.patch === 'string' ? artifact.patch : undefined) ??\n\t\t\t\t(status === 'streaming'\n\t\t\t\t\t? getStreamingPatchPreviewContent(args, buffer)\n\t\t\t\t\t: getStringArg(args, buffer, 'patch'));\n\t\t\tif (!patch) return;\n\n\t\t\tconst previewKey = callId ?? 'apply_patch';\n\t\t\tconst lineSignature =\n\t\t\t\tstatus === 'streaming'\n\t\t\t\t\t? getCompletedPatchChangeLineSignature(patch)\n\t\t\t\t\t: undefined;\n\t\t\tif (status === 'streaming') {\n\t\t\t\tconst last = toolPreviewEmitRef.current.get(previewKey);\n\t\t\t\tif (last?.lineSignature === lineSignature) return;\n\t\t\t}\n\n\t\t\tconst patchPaths = extractPathsFromPatch(patch);\n\t\t\tif (patchPaths.length === 0) return;\n\t\t\tif (status === 'success') {\n\t\t\t\tfor (const path of patchPaths) invalidateFileContentCache(path);\n\t\t\t}\n\n\t\t\tconst viewerStore = useViewerTabsStore.getState();\n\t\t\tif (!viewerStore.followToolActivity) return;\n\n\t\t\tconst matchingFileTabs = viewerStore.tabs.filter(\n\t\t\t\t(\n\t\t\t\t\ttab,\n\t\t\t\t): tab is Extract<\n\t\t\t\t\t(typeof viewerStore.tabs)[number],\n\t\t\t\t\t{ type: 'file' }\n\t\t\t\t> =>\n\t\t\t\t\ttab.type === 'file' &&\n\t\t\t\t\tpatchPaths.some((path) => patchPathMayReferToTarget(path, tab.path)),\n\t\t\t);\n\t\t\tconst activeMatchingFileTab = matchingFileTabs.find(\n\t\t\t\t(tab) => tab.id === viewerStore.activeTabId,\n\t\t\t);\n\t\t\tconst fallbackPath = patchPaths.find(isLikelyCompletePatchPath);\n\t\t\tif (!activeMatchingFileTab && !matchingFileTabs[0] && !fallbackPath)\n\t\t\t\treturn;\n\t\t\tconst targetPath =\n\t\t\t\tactiveMatchingFileTab?.path ??\n\t\t\t\tmatchingFileTabs[0]?.path ??\n\t\t\t\tfallbackPath;\n\t\t\tif (!targetPath) return;\n\n\t\t\tviewerStore.openToolPreviewTab({\n\t\t\t\tpath: targetPath,\n\t\t\t\ttoolName: 'apply_patch',\n\t\t\t\tcallId,\n\t\t\t\tpatch,\n\t\t\t\tchangedLines: getChangedLinesForPath(result, targetPath),\n\t\t\t\tstatus,\n\t\t\t\terror: extractErrorMessage(payload),\n\t\t\t});\n\n\t\t\tif (status === 'streaming') {\n\t\t\t\ttoolPreviewEmitRef.current.set(previewKey, {\n\t\t\t\t\temittedAt: Date.now(),\n\t\t\t\t\tcontentLength: buffer.length,\n\t\t\t\t\tlineSignature,\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\tconst handleToolActivityViewerEvent = (\n\t\t\teventType: string,\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t\tdelta?: string | null,\n\t\t) => {\n\t\t\tconst name = getToolEventName(payload);\n\t\t\tif (name === 'read') handleReadToolActivity(eventType, payload, delta);\n\t\t\tif (name === 'write') handleWriteToolActivity(eventType, payload, delta);\n\t\t\tif (name === 'apply_patch') {\n\t\t\t\thandleApplyPatchToolActivity(eventType, payload, delta);\n\t\t\t}\n\t\t};\n\n\t\tconst getToolInputDelta = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t): string | null => {\n\t\t\tif (typeof payload?.delta === 'string') return payload.delta;\n\t\t\treturn typeof payload?.inputTextDelta === 'string'\n\t\t\t\t? payload.inputTextDelta\n\t\t\t\t: null;\n\t\t};\n\n\t\tconst getToolOutputDelta = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t): string | null => {\n\t\t\tif (typeof payload?.delta === 'string') return payload.delta;\n\t\t\treturn typeof payload?.outputTextDelta === 'string'\n\t\t\t\t? payload.outputTextDelta\n\t\t\t\t: null;\n\t\t};\n\n\t\tconst getOptimisticPartIndex = (\n\t\t\tparts: MessagePart[],\n\t\t\t_stepIndex: number | null,\n\t\t): number => {\n\t\t\tconst indexes = parts\n\t\t\t\t.map((part) => part.index)\n\t\t\t\t.filter((index): index is number => Number.isFinite(index));\n\t\t\treturn indexes.length > 0 ? Math.max(...indexes) + 0.001 : 0;\n\t\t};\n\n\t\tconst applyReasoningDelta = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t) => {\n\t\t\tconst messageId =\n\t\t\t\ttypeof payload?.messageId === 'string' ? payload.messageId : null;\n\t\t\tconst partId =\n\t\t\t\ttypeof payload?.partId === 'string' ? payload.partId : null;\n\t\t\tconst delta = typeof payload?.delta === 'string' ? payload.delta : null;\n\t\t\tif (!messageId || !partId || delta === null) return;\n\t\t\tqueryClient.setQueryData<Message[]>(\n\t\t\t\t['messages', sessionId],\n\t\t\t\t(oldMessages) => {\n\t\t\t\t\tif (!oldMessages) return oldMessages;\n\t\t\t\t\tconst nextMessages = [...oldMessages];\n\t\t\t\t\tconst messageIndex = nextMessages.findIndex(\n\t\t\t\t\t\t(message) => message.id === messageId,\n\t\t\t\t\t);\n\t\t\t\t\tif (messageIndex === -1) return oldMessages;\n\t\t\t\t\tconst targetMessage = nextMessages[messageIndex];\n\t\t\t\t\tconst parts = targetMessage.parts ? [...targetMessage.parts] : [];\n\t\t\t\t\tlet partIndex = parts.findIndex((part) => part.id === partId);\n\t\t\t\t\tconst stepIndex =\n\t\t\t\t\t\ttypeof payload?.stepIndex === 'number' ? payload.stepIndex : null;\n\t\t\t\t\tif (partIndex === -1) {\n\t\t\t\t\t\tconst newPart: MessagePart = {\n\t\t\t\t\t\t\tid: partId,\n\t\t\t\t\t\t\tmessageId,\n\t\t\t\t\t\t\tindex: getOptimisticPartIndex(parts, stepIndex),\n\t\t\t\t\t\t\tstepIndex,\n\t\t\t\t\t\t\ttype: 'reasoning',\n\t\t\t\t\t\t\tcontent: JSON.stringify({ text: delta }),\n\t\t\t\t\t\t\tcontentJson: { text: delta },\n\t\t\t\t\t\t\tagent: targetMessage.agent,\n\t\t\t\t\t\t\tprovider: targetMessage.provider,\n\t\t\t\t\t\t\tmodel: targetMessage.model,\n\t\t\t\t\t\t\tstartedAt: Date.now(),\n\t\t\t\t\t\t\tcompletedAt: null,\n\t\t\t\t\t\t\ttoolName: null,\n\t\t\t\t\t\t\ttoolCallId: null,\n\t\t\t\t\t\t\ttoolDurationMs: null,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tparts.push(newPart);\n\t\t\t\t\t\tpartIndex = parts.length - 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst existing = parts[partIndex];\n\t\t\t\t\t\tconst previous = extractText(existing);\n\t\t\t\t\t\tconst nextText = `${previous}${delta}`;\n\t\t\t\t\t\tparts[partIndex] = {\n\t\t\t\t\t\t\t...existing,\n\t\t\t\t\t\t\tcontent: JSON.stringify({ text: nextText }),\n\t\t\t\t\t\t\tcontentJson: { text: nextText },\n\t\t\t\t\t\t\tstepIndex: stepIndex ?? existing.stepIndex ?? null,\n\t\t\t\t\t\t\tcompletedAt: null,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tnextMessages[messageIndex] = { ...targetMessage, parts };\n\t\t\t\t\treturn nextMessages;\n\t\t\t\t},\n\t\t\t);\n\t\t};\n\n\t\tconst applyMessageDelta = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t) => {\n\t\t\tconst messageId =\n\t\t\t\ttypeof payload?.messageId === 'string' ? payload.messageId : null;\n\t\t\tconst partId =\n\t\t\t\ttypeof payload?.partId === 'string' ? payload.partId : null;\n\t\t\tconst payloadType =\n\t\t\t\ttypeof payload?.type === 'string' ? payload.type : undefined;\n\t\t\tif (payloadType === 'error') {\n\t\t\t\tupsertErrorPart(payload);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst delta = typeof payload?.delta === 'string' ? payload.delta : null;\n\t\t\tif (!messageId || !partId || delta === null) return;\n\t\t\tqueryClient.setQueryData<Message[]>(\n\t\t\t\t['messages', sessionId],\n\t\t\t\t(oldMessages) => {\n\t\t\t\t\tif (!oldMessages) return oldMessages;\n\t\t\t\t\tconst nextMessages = [...oldMessages];\n\t\t\t\t\tconst messageIndex = nextMessages.findIndex(\n\t\t\t\t\t\t(message) => message.id === messageId,\n\t\t\t\t\t);\n\t\t\t\t\tif (messageIndex === -1) return oldMessages;\n\t\t\t\t\tconst targetMessage = nextMessages[messageIndex];\n\t\t\t\t\tconst parts = targetMessage.parts ? [...targetMessage.parts] : [];\n\t\t\t\t\tlet partIndex = parts.findIndex((part) => part.id === partId);\n\t\t\t\t\tconst stepIndex =\n\t\t\t\t\t\ttypeof payload?.stepIndex === 'number' ? payload.stepIndex : null;\n\t\t\t\t\tif (partIndex === -1) {\n\t\t\t\t\t\tconst newPart: MessagePart = {\n\t\t\t\t\t\t\tid: partId,\n\t\t\t\t\t\t\tmessageId,\n\t\t\t\t\t\t\tindex: getOptimisticPartIndex(parts, stepIndex),\n\t\t\t\t\t\t\tstepIndex,\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\tcontent: JSON.stringify({ text: delta }),\n\t\t\t\t\t\t\tcontentJson: { text: delta },\n\t\t\t\t\t\t\tagent: targetMessage.agent,\n\t\t\t\t\t\t\tprovider: targetMessage.provider,\n\t\t\t\t\t\t\tmodel: targetMessage.model,\n\t\t\t\t\t\t\tstartedAt: Date.now(),\n\t\t\t\t\t\t\tcompletedAt: null,\n\t\t\t\t\t\t\ttoolName: null,\n\t\t\t\t\t\t\ttoolCallId: null,\n\t\t\t\t\t\t\ttoolDurationMs: null,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tparts.push(newPart);\n\t\t\t\t\t\tpartIndex = parts.length - 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst existing = parts[partIndex];\n\t\t\t\t\t\tconst previous = extractText(existing);\n\t\t\t\t\t\tconst nextText = `${previous}${delta}`;\n\t\t\t\t\t\tparts[partIndex] = {\n\t\t\t\t\t\t\t...existing,\n\t\t\t\t\t\t\tcontent: JSON.stringify({ text: nextText }),\n\t\t\t\t\t\t\tcontentJson: { text: nextText },\n\t\t\t\t\t\t\tstepIndex: stepIndex ?? existing.stepIndex ?? null,\n\t\t\t\t\t\t\tcompletedAt: null,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tnextMessages[messageIndex] = { ...targetMessage, parts };\n\t\t\t\t\treturn nextMessages;\n\t\t\t\t},\n\t\t\t);\n\t\t};\n\n\t\tconst toRecord = (value: unknown): Record<string, unknown> | null => {\n\t\t\tif (value && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t\treturn value as Record<string, unknown>;\n\t\t\t}\n\t\t\treturn null;\n\t\t};\n\n\t\tconst parseErrorContent = (\n\t\t\tpayload: Record<string, unknown>,\n\t\t): Record<string, unknown> => {\n\t\t\tconst contentRecord = toRecord(payload.content);\n\t\t\tif (contentRecord) return contentRecord;\n\n\t\t\tif (typeof payload.content === 'string') {\n\t\t\t\ttry {\n\t\t\t\t\tconst parsed = JSON.parse(payload.content);\n\t\t\t\t\tconst parsedRecord = toRecord(parsed);\n\t\t\t\t\tif (parsedRecord) return parsedRecord;\n\t\t\t\t} catch {}\n\t\t\t}\n\n\t\t\tconst message =\n\t\t\t\ttypeof payload.error === 'string'\n\t\t\t\t\t? payload.error\n\t\t\t\t\t: typeof payload.message === 'string'\n\t\t\t\t\t\t? payload.message\n\t\t\t\t\t\t: 'Assistant run failed';\n\t\t\treturn {\n\t\t\t\tmessage,\n\t\t\t\ttype:\n\t\t\t\t\ttypeof payload.errorType === 'string' ? payload.errorType : 'error',\n\t\t\t\tdetails: toRecord(payload.details) ?? undefined,\n\t\t\t\tisAborted: payload.isAborted === true,\n\t\t\t\tautoCompacted: payload.autoCompacted === true,\n\t\t\t};\n\t\t};\n\n\t\tconst upsertErrorPart = (payload: Record<string, unknown> | undefined) => {\n\t\t\tconst messageId =\n\t\t\t\ttypeof payload?.messageId === 'string' ? payload.messageId : null;\n\t\t\tif (!payload || !messageId) return;\n\n\t\t\tconst contentJson = parseErrorContent(payload);\n\t\t\tconst content = JSON.stringify(contentJson);\n\t\t\tconst errorMessage =\n\t\t\t\ttypeof contentJson.message === 'string'\n\t\t\t\t\t? contentJson.message\n\t\t\t\t\t: typeof payload.error === 'string'\n\t\t\t\t\t\t? payload.error\n\t\t\t\t\t\t: 'Assistant run failed';\n\t\t\tconst stepIndex =\n\t\t\t\ttypeof payload.stepIndex === 'number' ? payload.stepIndex : null;\n\t\t\tconst partId =\n\t\t\t\ttypeof payload.partId === 'string'\n\t\t\t\t\t? payload.partId\n\t\t\t\t\t: `error-${messageId}`;\n\n\t\t\tqueryClient.setQueryData<Message[]>(\n\t\t\t\t['messages', sessionId],\n\t\t\t\t(oldMessages) => {\n\t\t\t\t\tif (!oldMessages) return oldMessages;\n\t\t\t\t\tconst nextMessages = [...oldMessages];\n\t\t\t\t\tconst messageIndex = nextMessages.findIndex(\n\t\t\t\t\t\t(message) => message.id === messageId,\n\t\t\t\t\t);\n\t\t\t\t\tif (messageIndex === -1) return oldMessages;\n\t\t\t\t\tconst targetMessage = nextMessages[messageIndex];\n\t\t\t\t\tconst parts = targetMessage.parts ? [...targetMessage.parts] : [];\n\t\t\t\t\tconst partIndex = parts.findIndex((part) => part.id === partId);\n\t\t\t\t\tif (partIndex === -1) {\n\t\t\t\t\t\tconst newPart: MessagePart = {\n\t\t\t\t\t\t\tid: partId,\n\t\t\t\t\t\t\tmessageId,\n\t\t\t\t\t\t\tindex: getOptimisticPartIndex(parts, stepIndex),\n\t\t\t\t\t\t\tstepIndex,\n\t\t\t\t\t\t\ttype: 'error',\n\t\t\t\t\t\t\tcontent,\n\t\t\t\t\t\t\tcontentJson,\n\t\t\t\t\t\t\tagent: targetMessage.agent,\n\t\t\t\t\t\t\tprovider: targetMessage.provider,\n\t\t\t\t\t\t\tmodel: targetMessage.model,\n\t\t\t\t\t\t\tstartedAt: Date.now(),\n\t\t\t\t\t\t\tcompletedAt: Date.now(),\n\t\t\t\t\t\t\ttoolName: null,\n\t\t\t\t\t\t\ttoolCallId: null,\n\t\t\t\t\t\t\ttoolDurationMs: null,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tparts.push(newPart);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tparts[partIndex] = {\n\t\t\t\t\t\t\t...parts[partIndex],\n\t\t\t\t\t\t\tcontent,\n\t\t\t\t\t\t\tcontentJson,\n\t\t\t\t\t\t\tstepIndex: stepIndex ?? parts[partIndex].stepIndex ?? null,\n\t\t\t\t\t\t\tcompletedAt: Date.now(),\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tnextMessages[messageIndex] = {\n\t\t\t\t\t\t...targetMessage,\n\t\t\t\t\t\tstatus: 'error',\n\t\t\t\t\t\tcompletedAt: targetMessage.completedAt ?? Date.now(),\n\t\t\t\t\t\terror: errorMessage,\n\t\t\t\t\t\tparts,\n\t\t\t\t\t};\n\t\t\t\t\treturn nextMessages;\n\t\t\t\t},\n\t\t\t);\n\t\t};\n\n\t\tconst upsertEphemeralToolCall = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t) => {\n\t\t\tif (!payload) return;\n\t\t\tconst callId = getToolEventCallId(payload);\n\t\t\tconst name = getToolEventName(payload);\n\t\t\tif (!name) return;\n\n\t\t\tif (name === 'write' || name === 'apply_patch') {\n\t\t\t\tconst bufferKey = getToolBufferKey(payload);\n\t\t\t\tconst bufferedLength = bufferKey\n\t\t\t\t\t? (toolInputBuffersRef.current.get(bufferKey)?.length ?? 0)\n\t\t\t\t\t: 0;\n\t\t\t\tif (bufferedLength >= TOOL_PREVIEW_THROTTLE_MIN_CHARS) {\n\t\t\t\t\tconst emitKey = callId ?? `name:${name}`;\n\t\t\t\t\tconst now = Date.now();\n\t\t\t\t\tconst last = toolMessageEmitRef.current.get(emitKey) ?? 0;\n\t\t\t\t\tif (now - last < STREAMING_TOOL_MESSAGE_THROTTLE_MS) return;\n\t\t\t\t\ttoolMessageEmitRef.current.set(emitKey, now);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tqueryClient.setQueryData<Message[]>(\n\t\t\t\t['messages', sessionId],\n\t\t\t\t(oldMessages) => {\n\t\t\t\t\tif (!oldMessages) return oldMessages;\n\t\t\t\t\tconst nextMessages = [...oldMessages];\n\t\t\t\t\tlet targetIndex = resolveAssistantTargetIndex(nextMessages);\n\t\t\t\t\tif (typeof payload.messageId === 'string') {\n\t\t\t\t\t\tconst explicitIndex = nextMessages.findIndex(\n\t\t\t\t\t\t\t(message) => message.id === payload.messageId,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (explicitIndex !== -1) targetIndex = explicitIndex;\n\t\t\t\t\t}\n\t\t\t\t\tif (targetIndex === -1) return oldMessages;\n\t\t\t\t\tconst targetMessage = nextMessages[targetIndex];\n\t\t\t\t\tconst parts = targetMessage.parts ? [...targetMessage.parts] : [];\n\t\t\t\t\tlet partIndex = -1;\n\t\t\t\t\tif (callId) {\n\t\t\t\t\t\tpartIndex = parts.findIndex(\n\t\t\t\t\t\t\t(part) => part.toolCallId === callId && part.ephemeral,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t// Only fallback to name match if we don't have a callId\n\t\t\t\t\tif (partIndex === -1 && !callId) {\n\t\t\t\t\t\tpartIndex = parts.findIndex(\n\t\t\t\t\t\t\t(part) => part.ephemeral && part.toolName === name,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tconst args = getToolEventArgs(payload);\n\t\t\t\t\tconst stepIndex =\n\t\t\t\t\t\ttypeof payload.stepIndex === 'number' ? payload.stepIndex : null;\n\t\t\t\t\tconst contentJsonBase: Record<string, unknown> = { name };\n\t\t\t\t\tif (callId) contentJsonBase.callId = callId;\n\t\t\t\t\tif (args !== undefined) contentJsonBase.args = args;\n\t\t\t\t\tif (partIndex === -1) {\n\t\t\t\t\t\tconst newPart: MessagePart = {\n\t\t\t\t\t\t\tid: callId\n\t\t\t\t\t\t\t\t? `ephemeral-tool-call-${callId}`\n\t\t\t\t\t\t\t\t: `ephemeral-tool-call-${name}-${Date.now()}`,\n\t\t\t\t\t\t\tmessageId: targetMessage.id,\n\t\t\t\t\t\t\tindex: getOptimisticPartIndex(parts, stepIndex),\n\t\t\t\t\t\t\tstepIndex,\n\t\t\t\t\t\t\ttype: 'tool_call',\n\t\t\t\t\t\t\tcontent: JSON.stringify(contentJsonBase),\n\t\t\t\t\t\t\tcontentJson: contentJsonBase,\n\t\t\t\t\t\t\tagent: targetMessage.agent,\n\t\t\t\t\t\t\tprovider: targetMessage.provider,\n\t\t\t\t\t\t\tmodel: targetMessage.model,\n\t\t\t\t\t\t\tstartedAt: Date.now(),\n\t\t\t\t\t\t\tcompletedAt: null,\n\t\t\t\t\t\t\ttoolName: name,\n\t\t\t\t\t\t\ttoolCallId: callId,\n\t\t\t\t\t\t\ttoolDurationMs: null,\n\t\t\t\t\t\t\tephemeral: true,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tparts.push(newPart);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst existing = parts[partIndex];\n\t\t\t\t\t\tconst nextContentJson: Record<string, unknown> = {\n\t\t\t\t\t\t\t...(typeof existing.contentJson === 'object' &&\n\t\t\t\t\t\t\t!Array.isArray(existing.contentJson)\n\t\t\t\t\t\t\t\t? (existing.contentJson as Record<string, unknown>)\n\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (callId) nextContentJson.callId = callId;\n\t\t\t\t\t\tif (args !== undefined) nextContentJson.args = args;\n\t\t\t\t\t\tparts[partIndex] = {\n\t\t\t\t\t\t\t...existing,\n\t\t\t\t\t\t\tcontent: JSON.stringify(nextContentJson),\n\t\t\t\t\t\t\tcontentJson: nextContentJson,\n\t\t\t\t\t\t\tstepIndex: stepIndex ?? existing.stepIndex ?? null,\n\t\t\t\t\t\t\ttoolCallId: callId ?? existing.toolCallId,\n\t\t\t\t\t\t\ttoolName: name,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tnextMessages[targetIndex] = { ...targetMessage, parts };\n\t\t\t\t\treturn nextMessages;\n\t\t\t\t},\n\t\t\t);\n\t\t};\n\n\t\tconst accumulateToolInputDelta = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t\tdelta: string,\n\t\t) => {\n\t\t\tif (!payload) return;\n\t\t\tconst callId = getToolEventCallId(payload);\n\t\t\tconst name = getToolEventName(payload);\n\t\t\tif (!name) return;\n\t\t\tqueryClient.setQueryData<Message[]>(\n\t\t\t\t['messages', sessionId],\n\t\t\t\t(oldMessages) => {\n\t\t\t\t\tif (!oldMessages) return oldMessages;\n\t\t\t\t\tconst nextMessages = [...oldMessages];\n\t\t\t\t\tlet targetIndex = resolveAssistantTargetIndex(nextMessages);\n\t\t\t\t\tif (typeof payload.messageId === 'string') {\n\t\t\t\t\t\tconst explicitIndex = nextMessages.findIndex(\n\t\t\t\t\t\t\t(message) => message.id === payload.messageId,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (explicitIndex !== -1) targetIndex = explicitIndex;\n\t\t\t\t\t}\n\t\t\t\t\tif (targetIndex === -1) return oldMessages;\n\t\t\t\t\tconst targetMessage = nextMessages[targetIndex];\n\t\t\t\t\tconst parts = targetMessage.parts ? [...targetMessage.parts] : [];\n\t\t\t\t\tlet partIndex = -1;\n\t\t\t\t\tif (callId) {\n\t\t\t\t\t\tpartIndex = parts.findIndex(\n\t\t\t\t\t\t\t(part) => part.toolCallId === callId && part.ephemeral,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (partIndex === -1 && !callId) {\n\t\t\t\t\t\tpartIndex = parts.findIndex(\n\t\t\t\t\t\t\t(part) => part.ephemeral && part.toolName === name,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tconst stepIndex =\n\t\t\t\t\t\ttypeof payload.stepIndex === 'number' ? payload.stepIndex : null;\n\t\t\t\t\tif (partIndex === -1) {\n\t\t\t\t\t\tconst contentJsonBase: Record<string, unknown> = {\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t_streamedInput: getBoundedStreamingToolInput(delta),\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (callId) contentJsonBase.callId = callId;\n\t\t\t\t\t\tconst newPart: MessagePart = {\n\t\t\t\t\t\t\tid: callId\n\t\t\t\t\t\t\t\t? `ephemeral-tool-call-${callId}`\n\t\t\t\t\t\t\t\t: `ephemeral-tool-call-${name}-${Date.now()}`,\n\t\t\t\t\t\t\tmessageId: targetMessage.id,\n\t\t\t\t\t\t\tindex: getOptimisticPartIndex(parts, stepIndex),\n\t\t\t\t\t\t\tstepIndex,\n\t\t\t\t\t\t\ttype: 'tool_call',\n\t\t\t\t\t\t\tcontent: JSON.stringify(contentJsonBase),\n\t\t\t\t\t\t\tcontentJson: contentJsonBase,\n\t\t\t\t\t\t\tagent: targetMessage.agent,\n\t\t\t\t\t\t\tprovider: targetMessage.provider,\n\t\t\t\t\t\t\tmodel: targetMessage.model,\n\t\t\t\t\t\t\tstartedAt: Date.now(),\n\t\t\t\t\t\t\tcompletedAt: null,\n\t\t\t\t\t\t\ttoolName: name,\n\t\t\t\t\t\t\ttoolCallId: callId,\n\t\t\t\t\t\t\ttoolDurationMs: null,\n\t\t\t\t\t\t\tephemeral: true,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tparts.push(newPart);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst existing = parts[partIndex];\n\t\t\t\t\t\tconst prev =\n\t\t\t\t\t\t\ttypeof (existing.contentJson as Record<string, unknown>)\n\t\t\t\t\t\t\t\t?._streamedInput === 'string'\n\t\t\t\t\t\t\t\t? ((existing.contentJson as Record<string, unknown>)\n\t\t\t\t\t\t\t\t\t\t._streamedInput as string)\n\t\t\t\t\t\t\t\t: '';\n\t\t\t\t\t\tconst nextContentJson: Record<string, unknown> = {\n\t\t\t\t\t\t\t...(typeof existing.contentJson === 'object' &&\n\t\t\t\t\t\t\t!Array.isArray(existing.contentJson)\n\t\t\t\t\t\t\t\t? (existing.contentJson as Record<string, unknown>)\n\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t_streamedInput: getBoundedStreamingToolInput(prev + delta),\n\t\t\t\t\t\t};\n\t\t\t\t\t\tparts[partIndex] = {\n\t\t\t\t\t\t\t...existing,\n\t\t\t\t\t\t\tcontent: JSON.stringify(nextContentJson),\n\t\t\t\t\t\t\tcontentJson: nextContentJson,\n\t\t\t\t\t\t\tstepIndex: stepIndex ?? existing.stepIndex ?? null,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tnextMessages[targetIndex] = { ...targetMessage, parts };\n\t\t\t\t\treturn nextMessages;\n\t\t\t\t},\n\t\t\t);\n\t\t};\n\n\t\tconst accumulateToolOutputDelta = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t\tdelta: string,\n\t\t) => {\n\t\t\tif (!payload) return;\n\t\t\tconst callId = getToolEventCallId(payload);\n\t\t\tconst name = getToolEventName(payload);\n\t\t\tif (!name) return;\n\t\t\tqueryClient.setQueryData<Message[]>(\n\t\t\t\t['messages', sessionId],\n\t\t\t\t(oldMessages) => {\n\t\t\t\t\tif (!oldMessages) return oldMessages;\n\t\t\t\t\tconst nextMessages = [...oldMessages];\n\t\t\t\t\tlet targetIndex = resolveAssistantTargetIndex(nextMessages);\n\t\t\t\t\tif (typeof payload.messageId === 'string') {\n\t\t\t\t\t\tconst explicitIndex = nextMessages.findIndex(\n\t\t\t\t\t\t\t(message) => message.id === payload.messageId,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (explicitIndex !== -1) targetIndex = explicitIndex;\n\t\t\t\t\t}\n\t\t\t\t\tif (targetIndex === -1) return oldMessages;\n\t\t\t\t\tconst targetMessage = nextMessages[targetIndex];\n\t\t\t\t\tconst parts = targetMessage.parts ? [...targetMessage.parts] : [];\n\t\t\t\t\tlet partIndex = -1;\n\t\t\t\t\tif (callId) {\n\t\t\t\t\t\tpartIndex = parts.findIndex(\n\t\t\t\t\t\t\t(part) => part.toolCallId === callId && part.ephemeral,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (partIndex === -1 && !callId) {\n\t\t\t\t\t\tpartIndex = parts.findIndex(\n\t\t\t\t\t\t\t(part) => part.ephemeral && part.toolName === name,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tconst stepIndex =\n\t\t\t\t\t\ttypeof payload.stepIndex === 'number' ? payload.stepIndex : null;\n\t\t\t\t\tif (partIndex === -1) {\n\t\t\t\t\t\tconst contentJsonBase: Record<string, unknown> = {\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t_streamedOutput: delta,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (callId) contentJsonBase.callId = callId;\n\t\t\t\t\t\tconst newPart: MessagePart = {\n\t\t\t\t\t\t\tid: callId\n\t\t\t\t\t\t\t\t? `ephemeral-tool-call-${callId}`\n\t\t\t\t\t\t\t\t: `ephemeral-tool-call-${name}-${Date.now()}`,\n\t\t\t\t\t\t\tmessageId: targetMessage.id,\n\t\t\t\t\t\t\tindex: getOptimisticPartIndex(parts, stepIndex),\n\t\t\t\t\t\t\tstepIndex,\n\t\t\t\t\t\t\ttype: 'tool_call',\n\t\t\t\t\t\t\tcontent: JSON.stringify(contentJsonBase),\n\t\t\t\t\t\t\tcontentJson: contentJsonBase,\n\t\t\t\t\t\t\tagent: targetMessage.agent,\n\t\t\t\t\t\t\tprovider: targetMessage.provider,\n\t\t\t\t\t\t\tmodel: targetMessage.model,\n\t\t\t\t\t\t\tstartedAt: Date.now(),\n\t\t\t\t\t\t\tcompletedAt: null,\n\t\t\t\t\t\t\ttoolName: name,\n\t\t\t\t\t\t\ttoolCallId: callId,\n\t\t\t\t\t\t\ttoolDurationMs: null,\n\t\t\t\t\t\t\tephemeral: true,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tparts.push(newPart);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst existing = parts[partIndex];\n\t\t\t\t\t\tconst prev =\n\t\t\t\t\t\t\ttypeof (existing.contentJson as Record<string, unknown>)\n\t\t\t\t\t\t\t\t?._streamedOutput === 'string'\n\t\t\t\t\t\t\t\t? ((existing.contentJson as Record<string, unknown>)\n\t\t\t\t\t\t\t\t\t\t._streamedOutput as string)\n\t\t\t\t\t\t\t\t: '';\n\t\t\t\t\t\tconst nextContentJson: Record<string, unknown> = {\n\t\t\t\t\t\t\t...(typeof existing.contentJson === 'object' &&\n\t\t\t\t\t\t\t!Array.isArray(existing.contentJson)\n\t\t\t\t\t\t\t\t? (existing.contentJson as Record<string, unknown>)\n\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t_streamedOutput: prev + delta,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tparts[partIndex] = {\n\t\t\t\t\t\t\t...existing,\n\t\t\t\t\t\t\tcontent: JSON.stringify(nextContentJson),\n\t\t\t\t\t\t\tcontentJson: nextContentJson,\n\t\t\t\t\t\t\tstepIndex: stepIndex ?? existing.stepIndex ?? null,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tnextMessages[targetIndex] = { ...targetMessage, parts };\n\t\t\t\t\treturn nextMessages;\n\t\t\t\t},\n\t\t\t);\n\t\t};\n\n\t\tconst resolveEphemeralToolCall = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t) => {\n\t\t\tconst callId = getToolEventCallId(payload);\n\t\t\tif (!callId) return;\n\t\t\tconst payloadName = getToolEventName(payload);\n\t\t\tconst payloadStepIndex =\n\t\t\t\ttypeof payload?.stepIndex === 'number' ? payload.stepIndex : null;\n\t\t\tconst payloadResult = payload?.result;\n\t\t\tconst payloadArtifact = payload?.artifact;\n\t\t\tconst payloadArgs = getToolEventArgs(payload);\n\t\t\tqueryClient.setQueryData<Message[]>(\n\t\t\t\t['messages', sessionId],\n\t\t\t\t(oldMessages) => {\n\t\t\t\t\tif (!oldMessages) return oldMessages;\n\t\t\t\t\tlet changed = false;\n\t\t\t\t\tconst now = Date.now();\n\t\t\t\t\tconst nextMessages = oldMessages.map((message) => {\n\t\t\t\t\t\tif (!message.parts?.length) return message;\n\t\t\t\t\t\tlet messageChanged = false;\n\t\t\t\t\t\tconst updatedParts = message.parts.map((part) => {\n\t\t\t\t\t\t\tif (!(part.ephemeral && part.toolCallId === callId)) {\n\t\t\t\t\t\t\t\treturn part;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tmessageChanged = true;\n\t\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\t\tconst nextContentJson: Record<string, unknown> = {\n\t\t\t\t\t\t\t\t...(typeof part.contentJson === 'object' &&\n\t\t\t\t\t\t\t\t!Array.isArray(part.contentJson)\n\t\t\t\t\t\t\t\t\t? (part.contentJson as Record<string, unknown>)\n\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t\tname: payloadName ?? part.toolName ?? 'tool',\n\t\t\t\t\t\t\t\tcallId,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tif (payloadArgs !== undefined) nextContentJson.args = payloadArgs;\n\t\t\t\t\t\t\tif (payloadResult !== undefined)\n\t\t\t\t\t\t\t\tnextContentJson.result = payloadResult;\n\t\t\t\t\t\t\tif (payloadArtifact !== undefined)\n\t\t\t\t\t\t\t\tnextContentJson.artifact = payloadArtifact;\n\t\t\t\t\t\t\tconst durationMs =\n\t\t\t\t\t\t\t\tpart.startedAt && Number.isFinite(part.startedAt)\n\t\t\t\t\t\t\t\t\t? Math.max(0, now - part.startedAt)\n\t\t\t\t\t\t\t\t\t: part.toolDurationMs;\n\t\t\t\t\t\t\tconst resolvedPart: MessagePart = {\n\t\t\t\t\t\t\t\t...part,\n\t\t\t\t\t\t\t\ttype: 'tool_result',\n\t\t\t\t\t\t\t\tcontent: JSON.stringify(nextContentJson),\n\t\t\t\t\t\t\t\tcontentJson: nextContentJson,\n\t\t\t\t\t\t\t\tstepIndex: payloadStepIndex ?? part.stepIndex ?? null,\n\t\t\t\t\t\t\t\tcompletedAt: now,\n\t\t\t\t\t\t\t\ttoolName: payloadName ?? part.toolName,\n\t\t\t\t\t\t\t\ttoolDurationMs: durationMs ?? null,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\treturn resolvedPart;\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (!messageChanged) return message;\n\t\t\t\t\t\treturn { ...message, parts: updatedParts };\n\t\t\t\t\t});\n\t\t\t\t\treturn changed ? nextMessages : oldMessages;\n\t\t\t\t},\n\t\t\t);\n\t\t};\n\n\t\tconst removeEphemeralToolCall = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t) => {\n\t\t\tconst callId = getToolEventCallId(payload);\n\t\t\tif (!callId) return;\n\t\t\tqueryClient.setQueryData<Message[]>(\n\t\t\t\t['messages', sessionId],\n\t\t\t\t(oldMessages) => {\n\t\t\t\t\tif (!oldMessages) return oldMessages;\n\t\t\t\t\tlet changed = false;\n\t\t\t\t\tconst nextMessages = oldMessages.map((message) => {\n\t\t\t\t\t\tif (!message.parts?.length) return message;\n\t\t\t\t\t\tconst filtered = message.parts.filter(\n\t\t\t\t\t\t\t(part) => !(part.ephemeral && part.toolCallId === callId),\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (filtered.length === message.parts.length) return message;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\treturn { ...message, parts: filtered };\n\t\t\t\t\t});\n\t\t\t\t\treturn changed ? nextMessages : oldMessages;\n\t\t\t\t},\n\t\t\t);\n\t\t};\n\n\t\tconst clearEphemeralForMessage = (messageId: string | null) => {\n\t\t\tif (!messageId) return;\n\t\t\tqueryClient.setQueryData<Message[]>(\n\t\t\t\t['messages', sessionId],\n\t\t\t\t(oldMessages) => {\n\t\t\t\t\tif (!oldMessages) return oldMessages;\n\t\t\t\t\tconst targetIndex = oldMessages.findIndex(\n\t\t\t\t\t\t(message) => message.id === messageId,\n\t\t\t\t\t);\n\t\t\t\t\tif (targetIndex === -1) return oldMessages;\n\t\t\t\t\tconst target = oldMessages[targetIndex];\n\t\t\t\t\tif (\n\t\t\t\t\t\t!target.parts?.some(\n\t\t\t\t\t\t\t(part) => part.ephemeral && part.type === 'tool_call',\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t\t\treturn oldMessages;\n\t\t\t\t\tconst nextMessages = [...oldMessages];\n\t\t\t\t\tnextMessages[targetIndex] = {\n\t\t\t\t\t\t...target,\n\t\t\t\t\t\tparts:\n\t\t\t\t\t\t\ttarget.parts?.filter(\n\t\t\t\t\t\t\t\t(part) => !(part.ephemeral && part.type === 'tool_call'),\n\t\t\t\t\t\t\t) ?? [],\n\t\t\t\t\t};\n\t\t\t\t\treturn nextMessages;\n\t\t\t\t},\n\t\t\t);\n\t\t};\n\n\t\tconst markMessageCompleted = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t) => {\n\t\t\tconst id = typeof payload?.id === 'string' ? payload.id : null;\n\t\t\tif (!id) return;\n\t\t\tqueryClient.setQueryData<Message[]>(\n\t\t\t\t['messages', sessionId],\n\t\t\t\t(oldMessages) => {\n\t\t\t\t\tif (!oldMessages) return oldMessages;\n\t\t\t\t\tconst nextMessages = [...oldMessages];\n\t\t\t\t\tconst messageIndex = nextMessages.findIndex(\n\t\t\t\t\t\t(message) => message.id === id,\n\t\t\t\t\t);\n\t\t\t\t\tif (messageIndex === -1) return oldMessages;\n\t\t\t\t\tconst existing = nextMessages[messageIndex];\n\t\t\t\t\tnextMessages[messageIndex] = {\n\t\t\t\t\t\t...existing,\n\t\t\t\t\t\tstatus: 'complete',\n\t\t\t\t\t\tcompletedAt: Date.now(),\n\t\t\t\t\t};\n\t\t\t\t\treturn nextMessages;\n\t\t\t\t},\n\t\t\t);\n\t\t};\n\n\t\tconst unsubscribe = client.on('*', (event) => {\n\t\t\t// console.log('[useSessionStream] Event received:', event);\n\t\t\tconst payload = event.payload as Record<string, unknown> | undefined;\n\n\t\t\tswitch (event.type) {\n\t\t\t\tcase 'message.created': {\n\t\t\t\t\tconst role = typeof payload?.role === 'string' ? payload.role : null;\n\t\t\t\t\tconst id = typeof payload?.id === 'string' ? payload.id : null;\n\t\t\t\t\tif (role === 'assistant' && id) {\n\t\t\t\t\t\tassistantMessageIdRef.current = id;\n\t\t\t\t\t\toptimisticallyQueueMessage(queryClient, sessionId, id);\n\t\t\t\t\t}\n\t\t\t\t\tif (id && role) {\n\t\t\t\t\t\tconst agent =\n\t\t\t\t\t\t\ttypeof payload?.agent === 'string' ? payload.agent : '';\n\t\t\t\t\t\tconst provider =\n\t\t\t\t\t\t\ttypeof payload?.provider === 'string' ? payload.provider : '';\n\t\t\t\t\t\tconst model =\n\t\t\t\t\t\t\ttypeof payload?.model === 'string' ? payload.model : '';\n\t\t\t\t\t\tconst content =\n\t\t\t\t\t\t\ttypeof payload?.content === 'string' ? payload.content : null;\n\t\t\t\t\t\tconst userParts: MessagePart[] =\n\t\t\t\t\t\t\trole === 'user' && content\n\t\t\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tid: `${id}-text`,\n\t\t\t\t\t\t\t\t\t\t\tmessageId: id,\n\t\t\t\t\t\t\t\t\t\t\tindex: 0,\n\t\t\t\t\t\t\t\t\t\t\tstepIndex: null,\n\t\t\t\t\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\t\t\t\t\tcontent: JSON.stringify({ text: content }),\n\t\t\t\t\t\t\t\t\t\t\tcontentJson: { text: content },\n\t\t\t\t\t\t\t\t\t\t\tagent,\n\t\t\t\t\t\t\t\t\t\t\tprovider,\n\t\t\t\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t\t\t\tstartedAt: Date.now(),\n\t\t\t\t\t\t\t\t\t\t\tcompletedAt: Date.now(),\n\t\t\t\t\t\t\t\t\t\t\ttoolName: null,\n\t\t\t\t\t\t\t\t\t\t\ttoolCallId: null,\n\t\t\t\t\t\t\t\t\t\t\ttoolDurationMs: null,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t: [];\n\t\t\t\t\t\tqueryClient.setQueryData<Message[]>(\n\t\t\t\t\t\t\t['messages', sessionId],\n\t\t\t\t\t\t\t(oldMessages) => {\n\t\t\t\t\t\t\t\tif (!oldMessages) return oldMessages;\n\t\t\t\t\t\t\t\tif (oldMessages.some((m) => m.id === id)) return oldMessages;\n\t\t\t\t\t\t\t\tconst newMessage: Message = {\n\t\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t\t\tsessionId,\n\t\t\t\t\t\t\t\t\trole: role as Message['role'],\n\t\t\t\t\t\t\t\t\tstatus: role === 'user' ? 'complete' : 'pending',\n\t\t\t\t\t\t\t\t\tagent,\n\t\t\t\t\t\t\t\t\tprovider,\n\t\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t\tcreatedAt: Date.now(),\n\t\t\t\t\t\t\t\t\tcompletedAt: null,\n\t\t\t\t\t\t\t\t\tlatencyMs: null,\n\t\t\t\t\t\t\t\t\tpromptTokens: null,\n\t\t\t\t\t\t\t\t\tcompletionTokens: null,\n\t\t\t\t\t\t\t\t\ttotalTokens: null,\n\t\t\t\t\t\t\t\t\terror: null,\n\t\t\t\t\t\t\t\t\tparts: userParts,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tconst next = [...oldMessages, newMessage];\n\t\t\t\t\t\t\t\tnext.sort((a, b) => a.createdAt - b.createdAt);\n\t\t\t\t\t\t\t\treturn next;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'message.part.delta': {\n\t\t\t\t\tapplyMessageDelta(payload);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'reasoning.delta': {\n\t\t\t\t\tapplyReasoningDelta(payload);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'message.completed': {\n\t\t\t\t\tconst id = typeof payload?.id === 'string' ? payload.id : null;\n\t\t\t\t\tif (id && assistantMessageIdRef.current === id) {\n\t\t\t\t\t\tassistantMessageIdRef.current = null;\n\t\t\t\t\t}\n\t\t\t\t\tmarkMessageCompleted(payload);\n\t\t\t\t\tclearEphemeralForMessage(id);\n\t\t\t\t\tif (id) {\n\t\t\t\t\t\tqueryClient.setQueryData<ReturnType<typeof normalizeQueueState>>(\n\t\t\t\t\t\t\t['queueState', sessionId],\n\t\t\t\t\t\t\t(current) => {\n\t\t\t\t\t\t\t\tif (!current || current.currentMessageId !== id) return current;\n\t\t\t\t\t\t\t\treturn normalizeQueueState({\n\t\t\t\t\t\t\t\t\tcurrentMessageId: null,\n\t\t\t\t\t\t\t\t\tqueuedMessages: [],\n\t\t\t\t\t\t\t\t\tisRunning: false,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tqueryClient.invalidateQueries({ queryKey: ['messages', sessionId] });\n\t\t\t\t\tqueryClient.invalidateQueries({ queryKey: sessionsQueryKey });\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'tool.delta': {\n\t\t\t\t\tconst channel =\n\t\t\t\t\t\ttypeof payload?.channel === 'string' ? payload.channel : null;\n\t\t\t\t\tconst delta =\n\t\t\t\t\t\tchannel === 'output'\n\t\t\t\t\t\t\t? getToolOutputDelta(payload)\n\t\t\t\t\t\t\t: getToolInputDelta(payload);\n\t\t\t\t\tif (channel === 'input' || (channel == null && delta)) {\n\t\t\t\t\t\tif (delta) {\n\t\t\t\t\t\t\taccumulateToolInputDelta(payload, delta);\n\t\t\t\t\t\t\thandleToolActivityViewerEvent('tool.delta', payload, delta);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tupsertEphemeralToolCall(payload);\n\t\t\t\t\t\t\thandleToolActivityViewerEvent('tool.delta', payload);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (channel === 'output' && delta) {\n\t\t\t\t\t\taccumulateToolOutputDelta(payload, delta);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'tool.call': {\n\t\t\t\t\tupsertEphemeralToolCall(payload);\n\t\t\t\t\thandleToolActivityViewerEvent('tool.call', payload);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'tool.result': {\n\t\t\t\t\tresolveEphemeralToolCall(payload);\n\t\t\t\t\thandleToolActivityViewerEvent('tool.result', payload);\n\t\t\t\t\tconst key = getToolBufferKey(payload);\n\t\t\t\t\tif (key) toolInputBuffersRef.current.delete(key);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'tool.approval.required': {\n\t\t\t\t\tconst callId =\n\t\t\t\t\t\ttypeof payload?.callId === 'string' ? payload.callId : null;\n\t\t\t\t\tconst toolName =\n\t\t\t\t\t\ttypeof payload?.toolName === 'string' ? payload.toolName : null;\n\t\t\t\t\tconst messageId =\n\t\t\t\t\t\ttypeof payload?.messageId === 'string' ? payload.messageId : null;\n\t\t\t\t\tconst args = payload?.args;\n\t\t\t\t\tif (callId && toolName && messageId) {\n\t\t\t\t\t\taddPendingApproval({\n\t\t\t\t\t\t\tcallId,\n\t\t\t\t\t\t\ttoolName,\n\t\t\t\t\t\t\targs,\n\t\t\t\t\t\t\tmessageId,\n\t\t\t\t\t\t\tcreatedAt: Date.now(),\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'tool.approval.resolved': {\n\t\t\t\t\tconst callId =\n\t\t\t\t\t\ttypeof payload?.callId === 'string' ? payload.callId : null;\n\t\t\t\t\tif (callId) {\n\t\t\t\t\t\tremovePendingApproval(callId);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'tool.approval.updated': {\n\t\t\t\t\tconst callId =\n\t\t\t\t\t\ttypeof payload?.callId === 'string' ? payload.callId : null;\n\t\t\t\t\tconst args = payload?.args;\n\t\t\t\t\tif (callId) {\n\t\t\t\t\t\tupdatePendingApproval(callId, args);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'error': {\n\t\t\t\t\thandleToolActivityViewerEvent('error', payload);\n\t\t\t\t\tremoveEphemeralToolCall(payload);\n\t\t\t\t\tconst messageId =\n\t\t\t\t\t\ttypeof payload?.messageId === 'string' ? payload.messageId : null;\n\t\t\t\t\tif (messageId) {\n\t\t\t\t\t\tif (assistantMessageIdRef.current === messageId) {\n\t\t\t\t\t\t\tassistantMessageIdRef.current = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclearEphemeralForMessage(messageId);\n\t\t\t\t\t\tupsertErrorPart(payload);\n\t\t\t\t\t}\n\t\t\t\t\tqueryClient.invalidateQueries({ queryKey: ['messages', sessionId] });\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'message.updated': {\n\t\t\t\t\tconst id = typeof payload?.id === 'string' ? payload.id : null;\n\t\t\t\t\tconst status =\n\t\t\t\t\t\ttypeof payload?.status === 'string' ? payload.status : null;\n\t\t\t\t\tif (id && status) {\n\t\t\t\t\t\tif (status !== 'pending' && assistantMessageIdRef.current === id) {\n\t\t\t\t\t\t\tassistantMessageIdRef.current = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (status !== 'pending') {\n\t\t\t\t\t\t\tclearEphemeralForMessage(id);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst error =\n\t\t\t\t\t\t\ttypeof payload?.error === 'string' ? payload.error : undefined;\n\t\t\t\t\t\tqueryClient.setQueryData<Message[]>(\n\t\t\t\t\t\t\t['messages', sessionId],\n\t\t\t\t\t\t\t(oldMessages) => {\n\t\t\t\t\t\t\t\tif (!oldMessages) return oldMessages;\n\t\t\t\t\t\t\t\tconst idx = oldMessages.findIndex((m) => m.id === id);\n\t\t\t\t\t\t\t\tif (idx === -1) return oldMessages;\n\t\t\t\t\t\t\t\tconst next = [...oldMessages];\n\t\t\t\t\t\t\t\tnext[idx] = {\n\t\t\t\t\t\t\t\t\t...next[idx],\n\t\t\t\t\t\t\t\t\tstatus: status as Message['status'],\n\t\t\t\t\t\t\t\t\tcompletedAt:\n\t\t\t\t\t\t\t\t\t\tstatus === 'pending'\n\t\t\t\t\t\t\t\t\t\t\t? next[idx].completedAt\n\t\t\t\t\t\t\t\t\t\t\t: (next[idx].completedAt ?? Date.now()),\n\t\t\t\t\t\t\t\t\terror: error ?? next[idx].error,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\treturn next;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'queue.updated': {\n\t\t\t\t\tconst queueState = normalizeQueueState({\n\t\t\t\t\t\tcurrentMessageId: payload?.currentMessageId as string | null,\n\t\t\t\t\t\tqueuedMessages: (payload?.queuedMessages ?? []) as Array<{\n\t\t\t\t\t\t\tmessageId: string;\n\t\t\t\t\t\t\tposition: number;\n\t\t\t\t\t\t}>,\n\t\t\t\t\t\tisRunning:\n\t\t\t\t\t\t\ttypeof payload?.isRunning === 'boolean'\n\t\t\t\t\t\t\t\t? payload.isRunning\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t});\n\t\t\t\t\tqueryClient.setQueryData(['queueState', sessionId], queueState);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (event.type === 'finish-step') {\n\t\t\t\tconst now = Date.now();\n\t\t\t\tif (now - lastSessionInvalidation >= 2000) {\n\t\t\t\t\tlastSessionInvalidation = now;\n\t\t\t\t\tqueryClient.invalidateQueries({ queryKey: sessionsQueryKey });\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn () => {\n\t\t\tunsubscribe();\n\t\t\tclient.disconnect();\n\t\t};\n\t}, [\n\t\tsessionId,\n\t\tqueryClient,\n\t\taddPendingApproval,\n\t\tremovePendingApproval,\n\t\tenabled,\n\t\tsetPendingApprovals,\n\t\tupdatePendingApproval,\n\t]);\n}\n",
35
+ "import { useEffect, useRef } from 'react';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { SSEClient } from '../lib/sse-client';\nimport { apiClient } from '../lib/api-client';\nimport type { Message, MessagePart } from '../types/api';\nimport { useToolApprovalStore } from '../stores/toolApprovalStore';\nimport { useViewerTabsStore } from '../stores/viewerTabsStore';\nimport {\n\tnormalizeQueueState,\n\toptimisticallyQueueMessage,\n} from './useQueueState';\nimport { sessionsQueryKey } from './useSessions';\n\nconst TOOL_PREVIEW_THROTTLE_MS = 500;\nconst TOOL_PREVIEW_THROTTLE_MIN_CHARS = 8_000;\nconst TOOL_PREVIEW_THROTTLE_MIN_DELTA_CHARS = 16_000;\nconst STREAMING_WRITE_CONTENT_PREVIEW_CHARS = 24_000;\nconst STREAMING_PATCH_PREVIEW_HEAD_CHARS = 12_000;\nconst STREAMING_PATCH_PREVIEW_TAIL_CHARS = 24_000;\nconst STREAMING_TOOL_INPUT_HEAD_CHARS = 8_000;\nconst STREAMING_TOOL_INPUT_TAIL_CHARS = 16_000;\nconst STREAMING_TOOL_MESSAGE_THROTTLE_MS = 500;\n\nexport function useSessionStream(\n\tsessionId: string | undefined,\n\tenabled = true,\n) {\n\tconst queryClient = useQueryClient();\n\tconst clientRef = useRef<SSEClient | null>(null);\n\tconst assistantMessageIdRef = useRef<string | null>(null);\n\tconst toolInputBuffersRef = useRef<Map<string, string>>(new Map());\n\tconst toolPreviewEmitRef = useRef<\n\t\tMap<\n\t\t\tstring,\n\t\t\t{ emittedAt: number; contentLength: number; lineSignature?: string }\n\t\t>\n\t>(new Map());\n\tconst toolMessageEmitRef = useRef<Map<string, number>>(new Map());\n\n\tconst {\n\t\taddPendingApproval,\n\t\tremovePendingApproval,\n\t\tupdatePendingApproval,\n\t\tsetPendingApprovals,\n\t} = useToolApprovalStore();\n\n\tuseEffect(() => {\n\t\tif (!sessionId || !enabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tassistantMessageIdRef.current = null;\n\t\ttoolInputBuffersRef.current.clear();\n\t\ttoolPreviewEmitRef.current.clear();\n\t\ttoolMessageEmitRef.current.clear();\n\t\tlet lastSessionInvalidation = 0;\n\n\t\t// Fetch pending approvals from server for this session\n\t\tapiClient\n\t\t\t.getPendingApprovals(sessionId)\n\t\t\t.then((result) => {\n\t\t\t\tif (result.ok && result.pending.length > 0) {\n\t\t\t\t\tsetPendingApprovals(result.pending);\n\t\t\t\t} else {\n\t\t\t\t\tsetPendingApprovals([]);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\tsetPendingApprovals([]);\n\t\t\t});\n\n\t\tconst client = new SSEClient();\n\t\tclientRef.current = client;\n\n\t\tconst url = apiClient.getStreamUrl(sessionId);\n\t\tconsole.log('[useSessionStream] Connecting to stream:', url);\n\t\tclient.connect(url);\n\n\t\tconst resolveAssistantTargetIndex = (messages: Message[]): number => {\n\t\t\tif (assistantMessageIdRef.current) {\n\t\t\t\tconst byId = messages.findIndex(\n\t\t\t\t\t(message) => message.id === assistantMessageIdRef.current,\n\t\t\t\t);\n\t\t\t\tif (byId !== -1) return byId;\n\t\t\t}\n\t\t\tfor (let i = messages.length - 1; i >= 0; i -= 1) {\n\t\t\t\tconst candidate = messages[i];\n\t\t\t\tif (candidate.role === 'assistant' && candidate.status === 'pending') {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1;\n\t\t};\n\n\t\tconst extractText = (part: MessagePart): string => {\n\t\t\tif (\n\t\t\t\tpart.contentJson &&\n\t\t\t\ttypeof part.contentJson === 'object' &&\n\t\t\t\t!Array.isArray(part.contentJson) &&\n\t\t\t\t'text' in part.contentJson\n\t\t\t) {\n\t\t\t\treturn String((part.contentJson as Record<string, unknown>).text ?? '');\n\t\t\t}\n\t\t\tif (typeof part.content === 'string') {\n\t\t\t\ttry {\n\t\t\t\t\tconst parsed = JSON.parse(part.content);\n\t\t\t\t\tif (parsed && typeof parsed.text === 'string') return parsed.text;\n\t\t\t\t} catch {}\n\t\t\t\treturn part.content;\n\t\t\t}\n\t\t\treturn '';\n\t\t};\n\n\t\tconst getToolEventCallId = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t): string | null => {\n\t\t\tif (typeof payload?.callId === 'string') return payload.callId;\n\t\t\treturn typeof payload?.toolCallId === 'string'\n\t\t\t\t? payload.toolCallId\n\t\t\t\t: null;\n\t\t};\n\n\t\tconst getToolEventName = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t): string | null => {\n\t\t\tif (typeof payload?.name === 'string') return payload.name;\n\t\t\treturn typeof payload?.toolName === 'string' ? payload.toolName : null;\n\t\t};\n\n\t\tconst getToolEventArgs = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t): unknown => payload?.args ?? payload?.input;\n\n\t\tconst getToolEventResult = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t): unknown => payload?.result ?? payload?.output;\n\n\t\tconst getToolBufferKey = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t): string | null => {\n\t\t\tconst callId = getToolEventCallId(payload);\n\t\t\tif (callId) return callId;\n\t\t\tconst name = getToolEventName(payload);\n\t\t\treturn name ? `name:${name}` : null;\n\t\t};\n\n\t\tconst parseArgsRecord = (\n\t\t\tvalue: unknown,\n\t\t): Record<string, unknown> | null => {\n\t\t\tif (value && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t\treturn value as Record<string, unknown>;\n\t\t\t}\n\n\t\t\tif (typeof value !== 'string') return null;\n\n\t\t\ttry {\n\t\t\t\tconst parsed = JSON.parse(value);\n\t\t\t\treturn parsed && typeof parsed === 'object' && !Array.isArray(parsed)\n\t\t\t\t\t? (parsed as Record<string, unknown>)\n\t\t\t\t\t: null;\n\t\t\t} catch {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t};\n\n\t\tconst normalizeLineNumber = (value: unknown): number | undefined => {\n\t\t\tconst parsed =\n\t\t\t\ttypeof value === 'number'\n\t\t\t\t\t? value\n\t\t\t\t\t: typeof value === 'string'\n\t\t\t\t\t\t? Number.parseInt(value, 10)\n\t\t\t\t\t\t: Number.NaN;\n\t\t\treturn Number.isFinite(parsed) && parsed > 0\n\t\t\t\t? Math.floor(parsed)\n\t\t\t\t: undefined;\n\t\t};\n\n\t\tconst parseLineRange = (\n\t\t\tvalue: unknown,\n\t\t): { startLine?: number; endLine?: number } => {\n\t\t\tif (typeof value !== 'string') return {};\n\t\t\tconst match = value.match(/@(\\d+)(?:-(\\d+))?/);\n\t\t\tif (!match) return {};\n\t\t\treturn {\n\t\t\t\tstartLine: normalizeLineNumber(match[1]),\n\t\t\t\tendLine: normalizeLineNumber(match[2] ?? match[1]),\n\t\t\t};\n\t\t};\n\n\t\tconst getBoundedStreamingToolInput = (value: string): string => {\n\t\t\tconst maxLength =\n\t\t\t\tSTREAMING_TOOL_INPUT_HEAD_CHARS + STREAMING_TOOL_INPUT_TAIL_CHARS;\n\t\t\tif (value.length <= maxLength) return value;\n\t\t\treturn `${value.slice(\n\t\t\t\t0,\n\t\t\t\tSTREAMING_TOOL_INPUT_HEAD_CHARS,\n\t\t\t)}\\n… streamed tool input truncated for UI responsiveness …\\n${value.slice(\n\t\t\t\t-STREAMING_TOOL_INPUT_TAIL_CHARS,\n\t\t\t)}`;\n\t\t};\n\n\t\tconst getToolArgsForViewer = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t\tdelta?: string | null,\n\t\t): Record<string, unknown> | null => {\n\t\t\tconst args = parseArgsRecord(getToolEventArgs(payload));\n\t\t\tif (args) return args;\n\n\t\t\tconst key = getToolBufferKey(payload);\n\t\t\tif (!key) return null;\n\n\t\t\tconst previous = toolInputBuffersRef.current.get(key) ?? '';\n\t\t\tif (!delta) return parseArgsRecord(previous);\n\n\t\t\tconst next = getBoundedStreamingToolInput(`${previous}${delta}`);\n\t\t\ttoolInputBuffersRef.current.set(key, next);\n\t\t\treturn parseArgsRecord(next);\n\t\t};\n\n\t\tconst bestEffortUnescapeJsonString = (value: string): string => {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(`\"${value.replace(/\\\\$/, '')}\"`) as string;\n\t\t\t} catch {\n\t\t\t\treturn value\n\t\t\t\t\t.replace(/\\\\n/g, '\\n')\n\t\t\t\t\t.replace(/\\\\t/g, '\\t')\n\t\t\t\t\t.replace(/\\\\r/g, '\\r')\n\t\t\t\t\t.replace(/\\\\\"/g, '\"')\n\t\t\t\t\t.replace(/\\\\\\\\/g, '\\\\');\n\t\t\t}\n\t\t};\n\n\t\tconst extractJsonStringField = (\n\t\t\ttext: string,\n\t\t\tfield: string,\n\t\t\trequireClosed = false,\n\t\t): string | undefined => {\n\t\t\tconst marker = `\"${field}\"`;\n\t\t\tconst markerIndex = text.indexOf(marker);\n\t\t\tif (markerIndex === -1) return undefined;\n\n\t\t\tconst colonIndex = text.indexOf(':', markerIndex + marker.length);\n\t\t\tif (colonIndex === -1) return undefined;\n\n\t\t\tconst quoteIndex = text.indexOf('\"', colonIndex + 1);\n\t\t\tif (quoteIndex === -1) return undefined;\n\n\t\t\tlet escaped = '';\n\t\t\tlet escaping = false;\n\t\t\tlet closed = false;\n\t\t\tfor (let i = quoteIndex + 1; i < text.length; i += 1) {\n\t\t\t\tconst char = text[i];\n\t\t\t\tif (escaping) {\n\t\t\t\t\tescaped += `\\\\${char}`;\n\t\t\t\t\tescaping = false;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (char === '\\\\') {\n\t\t\t\t\tescaping = true;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (char === '\"') {\n\t\t\t\t\tclosed = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tescaped += char;\n\t\t\t}\n\n\t\t\tif (requireClosed && !closed) return undefined;\n\n\t\t\treturn bestEffortUnescapeJsonString(escaped);\n\t\t};\n\n\t\tconst getBufferedToolInput = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t): string => {\n\t\t\tconst key = getToolBufferKey(payload);\n\t\t\treturn key ? (toolInputBuffersRef.current.get(key) ?? '') : '';\n\t\t};\n\n\t\tconst getStringArg = (\n\t\t\targs: Record<string, unknown> | null,\n\t\t\tbuffer: string,\n\t\t\tfield: string,\n\t\t\trequireClosed = false,\n\t\t): string | undefined => {\n\t\t\tconst value = args?.[field];\n\t\t\tif (typeof value === 'string') return value;\n\t\t\treturn extractJsonStringField(buffer, field, requireClosed);\n\t\t};\n\n\t\tconst getStreamingWritePreviewContent = (\n\t\t\targs: Record<string, unknown> | null,\n\t\t\tbuffer: string,\n\t\t): string | undefined => {\n\t\t\tconst argContent = args?.content;\n\t\t\tif (typeof argContent === 'string') {\n\t\t\t\tif (argContent.length <= STREAMING_WRITE_CONTENT_PREVIEW_CHARS) {\n\t\t\t\t\treturn argContent;\n\t\t\t\t}\n\n\t\t\t\treturn `… showing latest streamed content only …\\n${argContent.slice(\n\t\t\t\t\t-STREAMING_WRITE_CONTENT_PREVIEW_CHARS,\n\t\t\t\t)}`;\n\t\t\t}\n\n\t\t\tconst marker = '\"content\"';\n\t\t\tconst markerIndex = buffer.indexOf(marker);\n\t\t\tif (markerIndex === -1) return undefined;\n\n\t\t\tconst colonIndex = buffer.indexOf(':', markerIndex + marker.length);\n\t\t\tif (colonIndex === -1) return undefined;\n\n\t\t\tconst quoteIndex = buffer.indexOf('\"', colonIndex + 1);\n\t\t\tif (quoteIndex === -1) return undefined;\n\n\t\t\tconst valueStart = quoteIndex + 1;\n\t\t\tif (buffer.length - valueStart <= STREAMING_WRITE_CONTENT_PREVIEW_CHARS) {\n\t\t\t\treturn extractJsonStringField(buffer, 'content');\n\t\t\t}\n\n\t\t\tconst rawTail = buffer.slice(\n\t\t\t\tMath.max(\n\t\t\t\t\tvalueStart,\n\t\t\t\t\tbuffer.length - STREAMING_WRITE_CONTENT_PREVIEW_CHARS,\n\t\t\t\t),\n\t\t\t);\n\t\t\treturn `… showing latest streamed content only …\\n${bestEffortUnescapeJsonString(\n\t\t\t\trawTail,\n\t\t\t)}`;\n\t\t};\n\n\t\tconst getStreamingPatchPreviewContent = (\n\t\t\targs: Record<string, unknown> | null,\n\t\t\tbuffer: string,\n\t\t): string | undefined => {\n\t\t\tconst argPatch = args?.patch;\n\t\t\tif (typeof argPatch === 'string') {\n\t\t\t\tif (\n\t\t\t\t\targPatch.length <=\n\t\t\t\t\tSTREAMING_PATCH_PREVIEW_HEAD_CHARS +\n\t\t\t\t\t\tSTREAMING_PATCH_PREVIEW_TAIL_CHARS\n\t\t\t\t) {\n\t\t\t\t\treturn argPatch;\n\t\t\t\t}\n\n\t\t\t\treturn `${argPatch.slice(\n\t\t\t\t\t0,\n\t\t\t\t\tSTREAMING_PATCH_PREVIEW_HEAD_CHARS,\n\t\t\t\t)}\\n… patch preview truncated while streaming …\\n${argPatch.slice(\n\t\t\t\t\t-STREAMING_PATCH_PREVIEW_TAIL_CHARS,\n\t\t\t\t)}`;\n\t\t\t}\n\n\t\t\tconst marker = '\"patch\"';\n\t\t\tconst markerIndex = buffer.indexOf(marker);\n\t\t\tif (markerIndex === -1) return undefined;\n\n\t\t\tconst colonIndex = buffer.indexOf(':', markerIndex + marker.length);\n\t\t\tif (colonIndex === -1) return undefined;\n\n\t\t\tconst quoteIndex = buffer.indexOf('\"', colonIndex + 1);\n\t\t\tif (quoteIndex === -1) return undefined;\n\n\t\t\tconst valueStart = quoteIndex + 1;\n\t\t\tconst rawLength = buffer.length - valueStart;\n\t\t\tif (\n\t\t\t\trawLength <=\n\t\t\t\tSTREAMING_PATCH_PREVIEW_HEAD_CHARS + STREAMING_PATCH_PREVIEW_TAIL_CHARS\n\t\t\t) {\n\t\t\t\treturn extractJsonStringField(buffer, 'patch');\n\t\t\t}\n\n\t\t\tconst rawHead = buffer.slice(\n\t\t\t\tvalueStart,\n\t\t\t\tvalueStart + STREAMING_PATCH_PREVIEW_HEAD_CHARS,\n\t\t\t);\n\t\t\tconst rawTail = buffer.slice(-STREAMING_PATCH_PREVIEW_TAIL_CHARS);\n\t\t\treturn `${bestEffortUnescapeJsonString(\n\t\t\t\trawHead,\n\t\t\t)}\\n… patch preview truncated while streaming …\\n${bestEffortUnescapeJsonString(\n\t\t\t\trawTail,\n\t\t\t)}`;\n\t\t};\n\n\t\tconst getResultRecord = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t): Record<string, unknown> | null =>\n\t\t\tpayload?.result &&\n\t\t\ttypeof payload.result === 'object' &&\n\t\t\t!Array.isArray(payload.result)\n\t\t\t\t? (payload.result as Record<string, unknown>)\n\t\t\t\t: null;\n\n\t\tconst getArtifactRecord = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t): Record<string, unknown> | null =>\n\t\t\tpayload?.artifact &&\n\t\t\ttypeof payload.artifact === 'object' &&\n\t\t\t!Array.isArray(payload.artifact)\n\t\t\t\t? (payload.artifact as Record<string, unknown>)\n\t\t\t\t: null;\n\n\t\tconst extractErrorMessage = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t): string | undefined => {\n\t\t\tconst result = getResultRecord(payload);\n\t\t\tif (typeof payload?.error === 'string') return payload.error;\n\t\t\treturn typeof result?.error === 'string' ? result.error : undefined;\n\t\t};\n\n\t\tconst normalizePatchPath = (path: string): string =>\n\t\t\tpath.replace(/^a\\//, '').replace(/^b\\//, '').trim();\n\n\t\tconst patchPathMatches = (\n\t\t\tpatchPath: string,\n\t\t\ttargetPath: string,\n\t\t): boolean => {\n\t\t\tconst normalizedPatch = normalizePatchPath(patchPath);\n\t\t\tconst normalizedTarget = normalizePatchPath(targetPath);\n\t\t\treturn (\n\t\t\t\tnormalizedPatch === normalizedTarget ||\n\t\t\t\tnormalizedPatch.endsWith(`/${normalizedTarget}`) ||\n\t\t\t\tnormalizedTarget.endsWith(`/${normalizedPatch}`)\n\t\t\t);\n\t\t};\n\n\t\tconst patchPathMayReferToTarget = (\n\t\t\tpatchPath: string,\n\t\t\ttargetPath: string,\n\t\t): boolean => {\n\t\t\tconst normalizedPatch = normalizePatchPath(patchPath).replace(/\\/+$/, '');\n\t\t\tconst normalizedTarget = normalizePatchPath(targetPath);\n\t\t\tif (!normalizedPatch) return false;\n\t\t\treturn (\n\t\t\t\tpatchPathMatches(patchPath, targetPath) ||\n\t\t\t\tnormalizedTarget.startsWith(`${normalizedPatch}/`)\n\t\t\t);\n\t\t};\n\n\t\tconst isLikelyCompletePatchPath = (path: string): boolean => {\n\t\t\tconst normalized = normalizePatchPath(path);\n\t\t\tif (!normalized || normalized.endsWith('/')) return false;\n\t\t\tconst name = normalized.split('/').pop() ?? '';\n\t\t\treturn name.includes('.');\n\t\t};\n\n\t\tconst getCompletedPatchChangeLineSignature = (\n\t\t\tpatch: string,\n\t\t): string | undefined => {\n\t\t\tconst stablePatch = patch.endsWith('\\n')\n\t\t\t\t? patch\n\t\t\t\t: patch.slice(0, patch.lastIndexOf('\\n') + 1);\n\t\t\tif (!stablePatch) return undefined;\n\n\t\t\tlet changeLines = 0;\n\t\t\tlet stableChangeLength = 0;\n\t\t\tlet lineDirectiveCount = 0;\n\t\t\tfor (const line of stablePatch.split('\\n')) {\n\t\t\t\tif (\n\t\t\t\t\t(line.startsWith('+') && !line.startsWith('+++')) ||\n\t\t\t\t\t(line.startsWith('-') && !line.startsWith('---'))\n\t\t\t\t) {\n\t\t\t\t\tchangeLines += 1;\n\t\t\t\t\tstableChangeLength += line.length;\n\t\t\t\t} else if (\n\t\t\t\t\t/^\\*\\*\\* (?:Delete Lines in|Replace Lines in|Insert Before in|Insert After in): /.test(\n\t\t\t\t\t\tline,\n\t\t\t\t\t) ||\n\t\t\t\t\tline.startsWith('*** Lines:') ||\n\t\t\t\t\tline.startsWith('*** Line:') ||\n\t\t\t\t\tline.startsWith('*** With:')\n\t\t\t\t) {\n\t\t\t\t\tlineDirectiveCount += 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (changeLines > 0) return `${changeLines}:${stableChangeLength}`;\n\t\t\treturn lineDirectiveCount > 0\n\t\t\t\t? `lines:${lineDirectiveCount}:${stablePatch.length}`\n\t\t\t\t: undefined;\n\t\t};\n\n\t\tconst extractPathsFromPatch = (patch: string): string[] => {\n\t\t\tconst paths = new Set<string>();\n\t\t\tfor (const line of patch.split('\\n')) {\n\t\t\t\tconst directive = line.match(\n\t\t\t\t\t/^\\*\\*\\* (?:Update|Add|Delete) File: (.+)$/,\n\t\t\t\t);\n\t\t\t\tconst replaceDirective = line.match(/^\\*\\*\\* Replace in: (.+)$/);\n\t\t\t\tconst lineDirective = line.match(\n\t\t\t\t\t/^\\*\\*\\* (?:Delete Lines in|Replace Lines in|Insert Before in|Insert After in): (.+)$/,\n\t\t\t\t);\n\t\t\t\tconst path =\n\t\t\t\t\tdirective?.[1] ?? replaceDirective?.[1] ?? lineDirective?.[1];\n\t\t\t\tif (path) {\n\t\t\t\t\tpaths.add(path.trim());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst unified = line.match(/^\\+\\+\\+ (?:b\\/)?(.+)$/);\n\t\t\t\tif (unified?.[1] && unified[1] !== '/dev/null') {\n\t\t\t\t\tpaths.add(unified[1].trim());\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn [...paths];\n\t\t};\n\n\t\ttype FileContentCache = {\n\t\t\tcontent: string;\n\t\t\tpath: string;\n\t\t\textension: string;\n\t\t\tlineCount: number;\n\t\t};\n\n\t\tconst getExtension = (path: string): string =>\n\t\t\tpath.split('.').pop()?.toLowerCase() ?? '';\n\n\t\tconst updateFileContentCache = (path: string, content: string) => {\n\t\t\tqueryClient.setQueryData<FileContentCache>(['files', 'read', path], {\n\t\t\t\tcontent,\n\t\t\t\tpath,\n\t\t\t\textension: getExtension(path),\n\t\t\t\tlineCount: content.split('\\n').length,\n\t\t\t});\n\t\t};\n\n\t\tconst mergeReadResultIntoFileCache = (\n\t\t\tpath: string,\n\t\t\tresult: Record<string, unknown> | null,\n\t\t\tstartLine: number | undefined,\n\t\t\tendLine: number | undefined,\n\t\t) => {\n\t\t\tif (typeof result?.content !== 'string') return;\n\t\t\tconst readContent = result.content;\n\t\t\tif (!startLine || !endLine) {\n\t\t\t\tupdateFileContentCache(path, readContent);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tqueryClient.setQueryData<FileContentCache | undefined>(\n\t\t\t\t['files', 'read', path],\n\t\t\t\t(current) => {\n\t\t\t\t\tif (!current?.content) return current;\n\t\t\t\t\tconst lines = current.content.split('\\n');\n\t\t\t\t\tif (lines.at(-1) === '') lines.pop();\n\t\t\t\t\tconst readLines = readContent.split('\\n');\n\t\t\t\t\tlines.splice(startLine - 1, endLine - startLine + 1, ...readLines);\n\t\t\t\t\tconst content = `${lines.join('\\n')}\\n`;\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...current,\n\t\t\t\t\t\tcontent,\n\t\t\t\t\t\tlineCount:\n\t\t\t\t\t\t\ttypeof result.totalLines === 'number'\n\t\t\t\t\t\t\t\t? result.totalLines\n\t\t\t\t\t\t\t\t: lines.length,\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t);\n\t\t};\n\n\t\tconst invalidateFileContentCache = (path: string) => {\n\t\t\tvoid queryClient.invalidateQueries({ queryKey: ['files', 'read', path] });\n\t\t};\n\n\t\tconst getChangedLinesForPath = (\n\t\t\tresult: Record<string, unknown> | null,\n\t\t\tpath: string,\n\t\t): number[] | undefined => {\n\t\t\tconst changes = Array.isArray(result?.changes) ? result.changes : [];\n\t\t\tconst lines = new Set<number>();\n\n\t\t\tfor (const change of changes) {\n\t\t\t\tif (!change || typeof change !== 'object') continue;\n\t\t\t\tconst record = change as Record<string, unknown>;\n\t\t\t\tif (typeof record.filePath !== 'string') continue;\n\t\t\t\tif (!patchPathMatches(record.filePath, path)) continue;\n\t\t\t\tif (!Array.isArray(record.hunks)) continue;\n\n\t\t\t\tfor (const hunk of record.hunks) {\n\t\t\t\t\tif (!hunk || typeof hunk !== 'object') continue;\n\t\t\t\t\tconst hunkRecord = hunk as Record<string, unknown>;\n\t\t\t\t\tconst newStart =\n\t\t\t\t\t\ttypeof hunkRecord.newStart === 'number'\n\t\t\t\t\t\t\t? hunkRecord.newStart\n\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\tconst newLines =\n\t\t\t\t\t\ttypeof hunkRecord.newLines === 'number'\n\t\t\t\t\t\t\t? hunkRecord.newLines\n\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\tif (!newStart || !newLines) continue;\n\n\t\t\t\t\tfor (let line = newStart; line < newStart + newLines; line += 1) {\n\t\t\t\t\t\tlines.add(line);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn lines.size > 0 ? [...lines] : undefined;\n\t\t};\n\n\t\tconst handleReadToolActivity = (\n\t\t\teventType: string,\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t\tdelta?: string | null,\n\t\t) => {\n\t\t\tconst name = getToolEventName(payload);\n\t\t\tif (name !== 'read') return;\n\n\t\t\tconst args = getToolArgsForViewer(payload, delta);\n\t\t\tconst path = typeof args?.path === 'string' ? args.path : null;\n\t\t\tif (!path) return;\n\n\t\t\tconst result =\n\t\t\t\tpayload?.result &&\n\t\t\t\ttypeof payload.result === 'object' &&\n\t\t\t\t!Array.isArray(payload.result)\n\t\t\t\t\t? (payload.result as Record<string, unknown>)\n\t\t\t\t\t: null;\n\t\t\tconst rangeFromResult = parseLineRange(result?.lineRange);\n\t\t\tconst startLine =\n\t\t\t\tnormalizeLineNumber(args.startLine) ??\n\t\t\t\tnormalizeLineNumber(args.start_line) ??\n\t\t\t\trangeFromResult.startLine;\n\t\t\tconst endLine =\n\t\t\t\tnormalizeLineNumber(args.endLine) ??\n\t\t\t\tnormalizeLineNumber(args.end_line) ??\n\t\t\t\trangeFromResult.endLine ??\n\t\t\t\tstartLine;\n\t\t\tconst failed = result?.ok === false || eventType === 'error';\n\t\t\tif (eventType === 'tool.result' && !failed) {\n\t\t\t\tmergeReadResultIntoFileCache(path, result, startLine, endLine);\n\t\t\t}\n\n\t\t\tconst viewerStore = useViewerTabsStore.getState();\n\t\t\tif (!viewerStore.followToolActivity) return;\n\n\t\t\tviewerStore.openToolReadTab(path, {\n\t\t\t\tstartLine,\n\t\t\t\tendLine,\n\t\t\t\treason: 'read',\n\t\t\t\tcallId: getToolEventCallId(payload) ?? undefined,\n\t\t\t\tstatus: failed\n\t\t\t\t\t? 'error'\n\t\t\t\t\t: eventType === 'tool.result'\n\t\t\t\t\t\t? 'success'\n\t\t\t\t\t\t: 'streaming',\n\t\t\t});\n\t\t};\n\n\t\tconst handleWriteToolActivity = (\n\t\t\teventType: string,\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t\tdelta?: string | null,\n\t\t) => {\n\t\t\tconst name = getToolEventName(payload);\n\t\t\tif (name !== 'write') return;\n\n\t\t\tconst args = getToolArgsForViewer(payload, delta);\n\t\t\tconst buffer = getBufferedToolInput(payload);\n\t\t\tconst result = getResultRecord(payload);\n\t\t\tconst path =\n\t\t\t\t(typeof result?.path === 'string' ? result.path : undefined) ??\n\t\t\t\tgetStringArg(args, buffer, 'path', true);\n\t\t\tif (!path) return;\n\n\t\t\tconst failed = result?.ok === false || eventType === 'error';\n\t\t\tconst callId = getToolEventCallId(payload) ?? undefined;\n\t\t\tconst status = failed\n\t\t\t\t? 'error'\n\t\t\t\t: eventType === 'tool.result'\n\t\t\t\t\t? 'success'\n\t\t\t\t\t: 'streaming';\n\t\t\tconst content =\n\t\t\t\tstatus === 'streaming'\n\t\t\t\t\t? getStreamingWritePreviewContent(args, buffer)\n\t\t\t\t\t: getStringArg(args, buffer, 'content');\n\t\t\tconst summary =\n\t\t\t\tresult?.summary && typeof result.summary === 'object'\n\t\t\t\t\t? (result.summary as Record<string, unknown>)\n\t\t\t\t\t: undefined;\n\t\t\tconst changeCount =\n\t\t\t\ttypeof summary?.additions === 'number' &&\n\t\t\t\ttypeof summary.deletions === 'number'\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tadditions: summary.additions,\n\t\t\t\t\t\t\tremovals: summary.deletions,\n\t\t\t\t\t\t}\n\t\t\t\t\t: undefined;\n\t\t\tif (status === 'success') {\n\t\t\t\tif (content !== undefined) updateFileContentCache(path, content);\n\t\t\t\telse invalidateFileContentCache(path);\n\t\t\t}\n\n\t\t\tconst viewerStore = useViewerTabsStore.getState();\n\t\t\tif (!viewerStore.followToolActivity) return;\n\n\t\t\tif (\n\t\t\t\tstatus === 'streaming' &&\n\t\t\t\tcontent !== undefined &&\n\t\t\t\tcontent.length >= TOOL_PREVIEW_THROTTLE_MIN_CHARS\n\t\t\t) {\n\t\t\t\tconst previewKey = callId ?? path;\n\t\t\t\tconst now = Date.now();\n\t\t\t\tconst last = toolPreviewEmitRef.current.get(previewKey);\n\t\t\t\tconst contentDelta = Math.abs(\n\t\t\t\t\tcontent.length - (last?.contentLength ?? 0),\n\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\tlast &&\n\t\t\t\t\tnow - last.emittedAt < TOOL_PREVIEW_THROTTLE_MS &&\n\t\t\t\t\tcontentDelta < TOOL_PREVIEW_THROTTLE_MIN_DELTA_CHARS\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\ttoolPreviewEmitRef.current.set(previewKey, {\n\t\t\t\t\temittedAt: now,\n\t\t\t\t\tcontentLength: content.length,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tviewerStore.openToolPreviewTab({\n\t\t\t\tpath,\n\t\t\t\ttoolName: 'write',\n\t\t\t\tcallId,\n\t\t\t\tcontent,\n\t\t\t\tchangeCount,\n\t\t\t\tstatus,\n\t\t\t\terror: extractErrorMessage(payload),\n\t\t\t});\n\t\t};\n\n\t\tconst handleApplyPatchToolActivity = (\n\t\t\teventType: string,\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t\tdelta?: string | null,\n\t\t) => {\n\t\t\tconst name = getToolEventName(payload);\n\t\t\tif (name !== 'apply_patch') return;\n\n\t\t\tconst args = getToolArgsForViewer(payload, delta);\n\t\t\tconst buffer = getBufferedToolInput(payload);\n\t\t\tconst artifact = getArtifactRecord(payload);\n\t\t\tconst result = getResultRecord(payload);\n\t\t\tconst failed = result?.ok === false || eventType === 'error';\n\t\t\tconst status = failed\n\t\t\t\t? 'error'\n\t\t\t\t: eventType === 'tool.result'\n\t\t\t\t\t? 'success'\n\t\t\t\t\t: 'streaming';\n\t\t\tconst callId = getToolEventCallId(payload) ?? undefined;\n\n\t\t\tconst patch =\n\t\t\t\t(typeof artifact?.patch === 'string' ? artifact.patch : undefined) ??\n\t\t\t\t(status === 'streaming'\n\t\t\t\t\t? getStreamingPatchPreviewContent(args, buffer)\n\t\t\t\t\t: getStringArg(args, buffer, 'patch'));\n\t\t\tif (!patch) return;\n\n\t\t\tconst previewKey = callId ?? 'apply_patch';\n\t\t\tconst lineSignature =\n\t\t\t\tstatus === 'streaming'\n\t\t\t\t\t? getCompletedPatchChangeLineSignature(patch)\n\t\t\t\t\t: undefined;\n\t\t\tif (status === 'streaming') {\n\t\t\t\tconst last = toolPreviewEmitRef.current.get(previewKey);\n\t\t\t\tif (last?.lineSignature === lineSignature) return;\n\t\t\t}\n\n\t\t\tconst patchPaths = extractPathsFromPatch(patch);\n\t\t\tif (patchPaths.length === 0) return;\n\t\t\tif (status === 'success') {\n\t\t\t\tfor (const path of patchPaths) invalidateFileContentCache(path);\n\t\t\t}\n\n\t\t\tconst viewerStore = useViewerTabsStore.getState();\n\t\t\tif (!viewerStore.followToolActivity) return;\n\n\t\t\tconst matchingFileTabs = viewerStore.tabs.filter(\n\t\t\t\t(\n\t\t\t\t\ttab,\n\t\t\t\t): tab is Extract<\n\t\t\t\t\t(typeof viewerStore.tabs)[number],\n\t\t\t\t\t{ type: 'file' }\n\t\t\t\t> =>\n\t\t\t\t\ttab.type === 'file' &&\n\t\t\t\t\tpatchPaths.some((path) => patchPathMayReferToTarget(path, tab.path)),\n\t\t\t);\n\t\t\tconst activeMatchingFileTab = matchingFileTabs.find(\n\t\t\t\t(tab) => tab.id === viewerStore.activeTabId,\n\t\t\t);\n\t\t\tconst fallbackPath = patchPaths.find(isLikelyCompletePatchPath);\n\t\t\tif (!activeMatchingFileTab && !matchingFileTabs[0] && !fallbackPath)\n\t\t\t\treturn;\n\t\t\tconst targetPath =\n\t\t\t\tactiveMatchingFileTab?.path ??\n\t\t\t\tmatchingFileTabs[0]?.path ??\n\t\t\t\tfallbackPath;\n\t\t\tif (!targetPath) return;\n\n\t\t\tviewerStore.openToolPreviewTab({\n\t\t\t\tpath: targetPath,\n\t\t\t\ttoolName: 'apply_patch',\n\t\t\t\tcallId,\n\t\t\t\tpatch,\n\t\t\t\tchangedLines: getChangedLinesForPath(result, targetPath),\n\t\t\t\tstatus,\n\t\t\t\terror: extractErrorMessage(payload),\n\t\t\t});\n\n\t\t\tif (status === 'streaming') {\n\t\t\t\ttoolPreviewEmitRef.current.set(previewKey, {\n\t\t\t\t\temittedAt: Date.now(),\n\t\t\t\t\tcontentLength: buffer.length,\n\t\t\t\t\tlineSignature,\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\tconst handleSimulatorToolActivity = (\n\t\t\teventType: string,\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t) => {\n\t\t\tif (eventType !== 'tool.result') return;\n\t\t\tconst result = getToolEventResult(payload);\n\t\t\tif (!result || typeof result !== 'object' || Array.isArray(result))\n\t\t\t\treturn;\n\t\t\tconst resultRecord = result as Record<string, unknown>;\n\t\t\tconst firstStream = Array.isArray(resultRecord.streams)\n\t\t\t\t? resultRecord.streams[0]\n\t\t\t\t: undefined;\n\t\t\tconst stream = resultRecord.stream ?? firstStream;\n\t\t\tconst previewUrl = resultRecord.previewUrl;\n\t\t\tif (typeof previewUrl === 'string' && previewUrl.trim()) {\n\t\t\t\tuseViewerTabsStore.getState().openBrowserTab(previewUrl, {\n\t\t\t\t\tkind: 'simulator',\n\t\t\t\t\ttitle: 'Simulator',\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!stream || typeof stream !== 'object' || Array.isArray(stream))\n\t\t\t\treturn;\n\n\t\t\tuseViewerTabsStore.getState().openBrowserTab('http://localhost:3200', {\n\t\t\t\tkind: 'simulator',\n\t\t\t\ttitle: 'Simulator',\n\t\t\t});\n\t\t};\n\n\t\tconst handleToolActivityViewerEvent = (\n\t\t\teventType: string,\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t\tdelta?: string | null,\n\t\t) => {\n\t\t\tconst name = getToolEventName(payload);\n\t\t\tif (name === 'read') handleReadToolActivity(eventType, payload, delta);\n\t\t\tif (name === 'write') handleWriteToolActivity(eventType, payload, delta);\n\t\t\tif (name === 'apply_patch') {\n\t\t\t\thandleApplyPatchToolActivity(eventType, payload, delta);\n\t\t\t}\n\t\t\tif (name === 'simulator') {\n\t\t\t\thandleSimulatorToolActivity(eventType, payload);\n\t\t\t}\n\t\t};\n\n\t\tconst getToolInputDelta = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t): string | null => {\n\t\t\tif (typeof payload?.delta === 'string') return payload.delta;\n\t\t\treturn typeof payload?.inputTextDelta === 'string'\n\t\t\t\t? payload.inputTextDelta\n\t\t\t\t: null;\n\t\t};\n\n\t\tconst getToolOutputDelta = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t): string | null => {\n\t\t\tif (typeof payload?.delta === 'string') return payload.delta;\n\t\t\treturn typeof payload?.outputTextDelta === 'string'\n\t\t\t\t? payload.outputTextDelta\n\t\t\t\t: null;\n\t\t};\n\n\t\tconst getOptimisticPartIndex = (\n\t\t\tparts: MessagePart[],\n\t\t\t_stepIndex: number | null,\n\t\t): number => {\n\t\t\tconst indexes = parts\n\t\t\t\t.map((part) => part.index)\n\t\t\t\t.filter((index): index is number => Number.isFinite(index));\n\t\t\treturn indexes.length > 0 ? Math.max(...indexes) + 0.001 : 0;\n\t\t};\n\n\t\tconst applyReasoningDelta = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t) => {\n\t\t\tconst messageId =\n\t\t\t\ttypeof payload?.messageId === 'string' ? payload.messageId : null;\n\t\t\tconst partId =\n\t\t\t\ttypeof payload?.partId === 'string' ? payload.partId : null;\n\t\t\tconst delta = typeof payload?.delta === 'string' ? payload.delta : null;\n\t\t\tif (!messageId || !partId || delta === null) return;\n\t\t\tqueryClient.setQueryData<Message[]>(\n\t\t\t\t['messages', sessionId],\n\t\t\t\t(oldMessages) => {\n\t\t\t\t\tif (!oldMessages) return oldMessages;\n\t\t\t\t\tconst nextMessages = [...oldMessages];\n\t\t\t\t\tconst messageIndex = nextMessages.findIndex(\n\t\t\t\t\t\t(message) => message.id === messageId,\n\t\t\t\t\t);\n\t\t\t\t\tif (messageIndex === -1) return oldMessages;\n\t\t\t\t\tconst targetMessage = nextMessages[messageIndex];\n\t\t\t\t\tconst parts = targetMessage.parts ? [...targetMessage.parts] : [];\n\t\t\t\t\tlet partIndex = parts.findIndex((part) => part.id === partId);\n\t\t\t\t\tconst stepIndex =\n\t\t\t\t\t\ttypeof payload?.stepIndex === 'number' ? payload.stepIndex : null;\n\t\t\t\t\tif (partIndex === -1) {\n\t\t\t\t\t\tconst newPart: MessagePart = {\n\t\t\t\t\t\t\tid: partId,\n\t\t\t\t\t\t\tmessageId,\n\t\t\t\t\t\t\tindex: getOptimisticPartIndex(parts, stepIndex),\n\t\t\t\t\t\t\tstepIndex,\n\t\t\t\t\t\t\ttype: 'reasoning',\n\t\t\t\t\t\t\tcontent: JSON.stringify({ text: delta }),\n\t\t\t\t\t\t\tcontentJson: { text: delta },\n\t\t\t\t\t\t\tagent: targetMessage.agent,\n\t\t\t\t\t\t\tprovider: targetMessage.provider,\n\t\t\t\t\t\t\tmodel: targetMessage.model,\n\t\t\t\t\t\t\tstartedAt: Date.now(),\n\t\t\t\t\t\t\tcompletedAt: null,\n\t\t\t\t\t\t\ttoolName: null,\n\t\t\t\t\t\t\ttoolCallId: null,\n\t\t\t\t\t\t\ttoolDurationMs: null,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tparts.push(newPart);\n\t\t\t\t\t\tpartIndex = parts.length - 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst existing = parts[partIndex];\n\t\t\t\t\t\tconst previous = extractText(existing);\n\t\t\t\t\t\tconst nextText = `${previous}${delta}`;\n\t\t\t\t\t\tparts[partIndex] = {\n\t\t\t\t\t\t\t...existing,\n\t\t\t\t\t\t\tcontent: JSON.stringify({ text: nextText }),\n\t\t\t\t\t\t\tcontentJson: { text: nextText },\n\t\t\t\t\t\t\tstepIndex: stepIndex ?? existing.stepIndex ?? null,\n\t\t\t\t\t\t\tcompletedAt: null,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tnextMessages[messageIndex] = { ...targetMessage, parts };\n\t\t\t\t\treturn nextMessages;\n\t\t\t\t},\n\t\t\t);\n\t\t};\n\n\t\tconst applyMessageDelta = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t) => {\n\t\t\tconst messageId =\n\t\t\t\ttypeof payload?.messageId === 'string' ? payload.messageId : null;\n\t\t\tconst partId =\n\t\t\t\ttypeof payload?.partId === 'string' ? payload.partId : null;\n\t\t\tconst payloadType =\n\t\t\t\ttypeof payload?.type === 'string' ? payload.type : undefined;\n\t\t\tif (payloadType === 'error') {\n\t\t\t\tupsertErrorPart(payload);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst delta = typeof payload?.delta === 'string' ? payload.delta : null;\n\t\t\tif (!messageId || !partId || delta === null) return;\n\t\t\tqueryClient.setQueryData<Message[]>(\n\t\t\t\t['messages', sessionId],\n\t\t\t\t(oldMessages) => {\n\t\t\t\t\tif (!oldMessages) return oldMessages;\n\t\t\t\t\tconst nextMessages = [...oldMessages];\n\t\t\t\t\tconst messageIndex = nextMessages.findIndex(\n\t\t\t\t\t\t(message) => message.id === messageId,\n\t\t\t\t\t);\n\t\t\t\t\tif (messageIndex === -1) return oldMessages;\n\t\t\t\t\tconst targetMessage = nextMessages[messageIndex];\n\t\t\t\t\tconst parts = targetMessage.parts ? [...targetMessage.parts] : [];\n\t\t\t\t\tlet partIndex = parts.findIndex((part) => part.id === partId);\n\t\t\t\t\tconst stepIndex =\n\t\t\t\t\t\ttypeof payload?.stepIndex === 'number' ? payload.stepIndex : null;\n\t\t\t\t\tif (partIndex === -1) {\n\t\t\t\t\t\tconst newPart: MessagePart = {\n\t\t\t\t\t\t\tid: partId,\n\t\t\t\t\t\t\tmessageId,\n\t\t\t\t\t\t\tindex: getOptimisticPartIndex(parts, stepIndex),\n\t\t\t\t\t\t\tstepIndex,\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\tcontent: JSON.stringify({ text: delta }),\n\t\t\t\t\t\t\tcontentJson: { text: delta },\n\t\t\t\t\t\t\tagent: targetMessage.agent,\n\t\t\t\t\t\t\tprovider: targetMessage.provider,\n\t\t\t\t\t\t\tmodel: targetMessage.model,\n\t\t\t\t\t\t\tstartedAt: Date.now(),\n\t\t\t\t\t\t\tcompletedAt: null,\n\t\t\t\t\t\t\ttoolName: null,\n\t\t\t\t\t\t\ttoolCallId: null,\n\t\t\t\t\t\t\ttoolDurationMs: null,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tparts.push(newPart);\n\t\t\t\t\t\tpartIndex = parts.length - 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst existing = parts[partIndex];\n\t\t\t\t\t\tconst previous = extractText(existing);\n\t\t\t\t\t\tconst nextText = `${previous}${delta}`;\n\t\t\t\t\t\tparts[partIndex] = {\n\t\t\t\t\t\t\t...existing,\n\t\t\t\t\t\t\tcontent: JSON.stringify({ text: nextText }),\n\t\t\t\t\t\t\tcontentJson: { text: nextText },\n\t\t\t\t\t\t\tstepIndex: stepIndex ?? existing.stepIndex ?? null,\n\t\t\t\t\t\t\tcompletedAt: null,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tnextMessages[messageIndex] = { ...targetMessage, parts };\n\t\t\t\t\treturn nextMessages;\n\t\t\t\t},\n\t\t\t);\n\t\t};\n\n\t\tconst toRecord = (value: unknown): Record<string, unknown> | null => {\n\t\t\tif (value && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t\treturn value as Record<string, unknown>;\n\t\t\t}\n\t\t\treturn null;\n\t\t};\n\n\t\tconst parseErrorContent = (\n\t\t\tpayload: Record<string, unknown>,\n\t\t): Record<string, unknown> => {\n\t\t\tconst contentRecord = toRecord(payload.content);\n\t\t\tif (contentRecord) return contentRecord;\n\n\t\t\tif (typeof payload.content === 'string') {\n\t\t\t\ttry {\n\t\t\t\t\tconst parsed = JSON.parse(payload.content);\n\t\t\t\t\tconst parsedRecord = toRecord(parsed);\n\t\t\t\t\tif (parsedRecord) return parsedRecord;\n\t\t\t\t} catch {}\n\t\t\t}\n\n\t\t\tconst message =\n\t\t\t\ttypeof payload.error === 'string'\n\t\t\t\t\t? payload.error\n\t\t\t\t\t: typeof payload.message === 'string'\n\t\t\t\t\t\t? payload.message\n\t\t\t\t\t\t: 'Assistant run failed';\n\t\t\treturn {\n\t\t\t\tmessage,\n\t\t\t\ttype:\n\t\t\t\t\ttypeof payload.errorType === 'string' ? payload.errorType : 'error',\n\t\t\t\tdetails: toRecord(payload.details) ?? undefined,\n\t\t\t\tisAborted: payload.isAborted === true,\n\t\t\t\tautoCompacted: payload.autoCompacted === true,\n\t\t\t};\n\t\t};\n\n\t\tconst upsertErrorPart = (payload: Record<string, unknown> | undefined) => {\n\t\t\tconst messageId =\n\t\t\t\ttypeof payload?.messageId === 'string' ? payload.messageId : null;\n\t\t\tif (!payload || !messageId) return;\n\n\t\t\tconst contentJson = parseErrorContent(payload);\n\t\t\tconst content = JSON.stringify(contentJson);\n\t\t\tconst errorMessage =\n\t\t\t\ttypeof contentJson.message === 'string'\n\t\t\t\t\t? contentJson.message\n\t\t\t\t\t: typeof payload.error === 'string'\n\t\t\t\t\t\t? payload.error\n\t\t\t\t\t\t: 'Assistant run failed';\n\t\t\tconst stepIndex =\n\t\t\t\ttypeof payload.stepIndex === 'number' ? payload.stepIndex : null;\n\t\t\tconst partId =\n\t\t\t\ttypeof payload.partId === 'string'\n\t\t\t\t\t? payload.partId\n\t\t\t\t\t: `error-${messageId}`;\n\n\t\t\tqueryClient.setQueryData<Message[]>(\n\t\t\t\t['messages', sessionId],\n\t\t\t\t(oldMessages) => {\n\t\t\t\t\tif (!oldMessages) return oldMessages;\n\t\t\t\t\tconst nextMessages = [...oldMessages];\n\t\t\t\t\tconst messageIndex = nextMessages.findIndex(\n\t\t\t\t\t\t(message) => message.id === messageId,\n\t\t\t\t\t);\n\t\t\t\t\tif (messageIndex === -1) return oldMessages;\n\t\t\t\t\tconst targetMessage = nextMessages[messageIndex];\n\t\t\t\t\tconst parts = targetMessage.parts ? [...targetMessage.parts] : [];\n\t\t\t\t\tconst partIndex = parts.findIndex((part) => part.id === partId);\n\t\t\t\t\tif (partIndex === -1) {\n\t\t\t\t\t\tconst newPart: MessagePart = {\n\t\t\t\t\t\t\tid: partId,\n\t\t\t\t\t\t\tmessageId,\n\t\t\t\t\t\t\tindex: getOptimisticPartIndex(parts, stepIndex),\n\t\t\t\t\t\t\tstepIndex,\n\t\t\t\t\t\t\ttype: 'error',\n\t\t\t\t\t\t\tcontent,\n\t\t\t\t\t\t\tcontentJson,\n\t\t\t\t\t\t\tagent: targetMessage.agent,\n\t\t\t\t\t\t\tprovider: targetMessage.provider,\n\t\t\t\t\t\t\tmodel: targetMessage.model,\n\t\t\t\t\t\t\tstartedAt: Date.now(),\n\t\t\t\t\t\t\tcompletedAt: Date.now(),\n\t\t\t\t\t\t\ttoolName: null,\n\t\t\t\t\t\t\ttoolCallId: null,\n\t\t\t\t\t\t\ttoolDurationMs: null,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tparts.push(newPart);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tparts[partIndex] = {\n\t\t\t\t\t\t\t...parts[partIndex],\n\t\t\t\t\t\t\tcontent,\n\t\t\t\t\t\t\tcontentJson,\n\t\t\t\t\t\t\tstepIndex: stepIndex ?? parts[partIndex].stepIndex ?? null,\n\t\t\t\t\t\t\tcompletedAt: Date.now(),\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tnextMessages[messageIndex] = {\n\t\t\t\t\t\t...targetMessage,\n\t\t\t\t\t\tstatus: 'error',\n\t\t\t\t\t\tcompletedAt: targetMessage.completedAt ?? Date.now(),\n\t\t\t\t\t\terror: errorMessage,\n\t\t\t\t\t\tparts,\n\t\t\t\t\t};\n\t\t\t\t\treturn nextMessages;\n\t\t\t\t},\n\t\t\t);\n\t\t};\n\n\t\tconst upsertEphemeralToolCall = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t) => {\n\t\t\tif (!payload) return;\n\t\t\tconst callId = getToolEventCallId(payload);\n\t\t\tconst name = getToolEventName(payload);\n\t\t\tif (!name) return;\n\n\t\t\tif (name === 'write' || name === 'apply_patch') {\n\t\t\t\tconst bufferKey = getToolBufferKey(payload);\n\t\t\t\tconst bufferedLength = bufferKey\n\t\t\t\t\t? (toolInputBuffersRef.current.get(bufferKey)?.length ?? 0)\n\t\t\t\t\t: 0;\n\t\t\t\tif (bufferedLength >= TOOL_PREVIEW_THROTTLE_MIN_CHARS) {\n\t\t\t\t\tconst emitKey = callId ?? `name:${name}`;\n\t\t\t\t\tconst now = Date.now();\n\t\t\t\t\tconst last = toolMessageEmitRef.current.get(emitKey) ?? 0;\n\t\t\t\t\tif (now - last < STREAMING_TOOL_MESSAGE_THROTTLE_MS) return;\n\t\t\t\t\ttoolMessageEmitRef.current.set(emitKey, now);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tqueryClient.setQueryData<Message[]>(\n\t\t\t\t['messages', sessionId],\n\t\t\t\t(oldMessages) => {\n\t\t\t\t\tif (!oldMessages) return oldMessages;\n\t\t\t\t\tconst nextMessages = [...oldMessages];\n\t\t\t\t\tlet targetIndex = resolveAssistantTargetIndex(nextMessages);\n\t\t\t\t\tif (typeof payload.messageId === 'string') {\n\t\t\t\t\t\tconst explicitIndex = nextMessages.findIndex(\n\t\t\t\t\t\t\t(message) => message.id === payload.messageId,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (explicitIndex !== -1) targetIndex = explicitIndex;\n\t\t\t\t\t}\n\t\t\t\t\tif (targetIndex === -1) return oldMessages;\n\t\t\t\t\tconst targetMessage = nextMessages[targetIndex];\n\t\t\t\t\tconst parts = targetMessage.parts ? [...targetMessage.parts] : [];\n\t\t\t\t\tlet partIndex = -1;\n\t\t\t\t\tif (callId) {\n\t\t\t\t\t\tpartIndex = parts.findIndex(\n\t\t\t\t\t\t\t(part) => part.toolCallId === callId && part.ephemeral,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t// Only fallback to name match if we don't have a callId\n\t\t\t\t\tif (partIndex === -1 && !callId) {\n\t\t\t\t\t\tpartIndex = parts.findIndex(\n\t\t\t\t\t\t\t(part) => part.ephemeral && part.toolName === name,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tconst args = getToolEventArgs(payload);\n\t\t\t\t\tconst stepIndex =\n\t\t\t\t\t\ttypeof payload.stepIndex === 'number' ? payload.stepIndex : null;\n\t\t\t\t\tconst contentJsonBase: Record<string, unknown> = { name };\n\t\t\t\t\tif (callId) contentJsonBase.callId = callId;\n\t\t\t\t\tif (args !== undefined) contentJsonBase.args = args;\n\t\t\t\t\tif (partIndex === -1) {\n\t\t\t\t\t\tconst newPart: MessagePart = {\n\t\t\t\t\t\t\tid: callId\n\t\t\t\t\t\t\t\t? `ephemeral-tool-call-${callId}`\n\t\t\t\t\t\t\t\t: `ephemeral-tool-call-${name}-${Date.now()}`,\n\t\t\t\t\t\t\tmessageId: targetMessage.id,\n\t\t\t\t\t\t\tindex: getOptimisticPartIndex(parts, stepIndex),\n\t\t\t\t\t\t\tstepIndex,\n\t\t\t\t\t\t\ttype: 'tool_call',\n\t\t\t\t\t\t\tcontent: JSON.stringify(contentJsonBase),\n\t\t\t\t\t\t\tcontentJson: contentJsonBase,\n\t\t\t\t\t\t\tagent: targetMessage.agent,\n\t\t\t\t\t\t\tprovider: targetMessage.provider,\n\t\t\t\t\t\t\tmodel: targetMessage.model,\n\t\t\t\t\t\t\tstartedAt: Date.now(),\n\t\t\t\t\t\t\tcompletedAt: null,\n\t\t\t\t\t\t\ttoolName: name,\n\t\t\t\t\t\t\ttoolCallId: callId,\n\t\t\t\t\t\t\ttoolDurationMs: null,\n\t\t\t\t\t\t\tephemeral: true,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tparts.push(newPart);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst existing = parts[partIndex];\n\t\t\t\t\t\tconst nextContentJson: Record<string, unknown> = {\n\t\t\t\t\t\t\t...(typeof existing.contentJson === 'object' &&\n\t\t\t\t\t\t\t!Array.isArray(existing.contentJson)\n\t\t\t\t\t\t\t\t? (existing.contentJson as Record<string, unknown>)\n\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (callId) nextContentJson.callId = callId;\n\t\t\t\t\t\tif (args !== undefined) nextContentJson.args = args;\n\t\t\t\t\t\tparts[partIndex] = {\n\t\t\t\t\t\t\t...existing,\n\t\t\t\t\t\t\tcontent: JSON.stringify(nextContentJson),\n\t\t\t\t\t\t\tcontentJson: nextContentJson,\n\t\t\t\t\t\t\tstepIndex: stepIndex ?? existing.stepIndex ?? null,\n\t\t\t\t\t\t\ttoolCallId: callId ?? existing.toolCallId,\n\t\t\t\t\t\t\ttoolName: name,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tnextMessages[targetIndex] = { ...targetMessage, parts };\n\t\t\t\t\treturn nextMessages;\n\t\t\t\t},\n\t\t\t);\n\t\t};\n\n\t\tconst accumulateToolInputDelta = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t\tdelta: string,\n\t\t) => {\n\t\t\tif (!payload) return;\n\t\t\tconst callId = getToolEventCallId(payload);\n\t\t\tconst name = getToolEventName(payload);\n\t\t\tif (!name) return;\n\t\t\tqueryClient.setQueryData<Message[]>(\n\t\t\t\t['messages', sessionId],\n\t\t\t\t(oldMessages) => {\n\t\t\t\t\tif (!oldMessages) return oldMessages;\n\t\t\t\t\tconst nextMessages = [...oldMessages];\n\t\t\t\t\tlet targetIndex = resolveAssistantTargetIndex(nextMessages);\n\t\t\t\t\tif (typeof payload.messageId === 'string') {\n\t\t\t\t\t\tconst explicitIndex = nextMessages.findIndex(\n\t\t\t\t\t\t\t(message) => message.id === payload.messageId,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (explicitIndex !== -1) targetIndex = explicitIndex;\n\t\t\t\t\t}\n\t\t\t\t\tif (targetIndex === -1) return oldMessages;\n\t\t\t\t\tconst targetMessage = nextMessages[targetIndex];\n\t\t\t\t\tconst parts = targetMessage.parts ? [...targetMessage.parts] : [];\n\t\t\t\t\tlet partIndex = -1;\n\t\t\t\t\tif (callId) {\n\t\t\t\t\t\tpartIndex = parts.findIndex(\n\t\t\t\t\t\t\t(part) => part.toolCallId === callId && part.ephemeral,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (partIndex === -1 && !callId) {\n\t\t\t\t\t\tpartIndex = parts.findIndex(\n\t\t\t\t\t\t\t(part) => part.ephemeral && part.toolName === name,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tconst stepIndex =\n\t\t\t\t\t\ttypeof payload.stepIndex === 'number' ? payload.stepIndex : null;\n\t\t\t\t\tif (partIndex === -1) {\n\t\t\t\t\t\tconst contentJsonBase: Record<string, unknown> = {\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t_streamedInput: getBoundedStreamingToolInput(delta),\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (callId) contentJsonBase.callId = callId;\n\t\t\t\t\t\tconst newPart: MessagePart = {\n\t\t\t\t\t\t\tid: callId\n\t\t\t\t\t\t\t\t? `ephemeral-tool-call-${callId}`\n\t\t\t\t\t\t\t\t: `ephemeral-tool-call-${name}-${Date.now()}`,\n\t\t\t\t\t\t\tmessageId: targetMessage.id,\n\t\t\t\t\t\t\tindex: getOptimisticPartIndex(parts, stepIndex),\n\t\t\t\t\t\t\tstepIndex,\n\t\t\t\t\t\t\ttype: 'tool_call',\n\t\t\t\t\t\t\tcontent: JSON.stringify(contentJsonBase),\n\t\t\t\t\t\t\tcontentJson: contentJsonBase,\n\t\t\t\t\t\t\tagent: targetMessage.agent,\n\t\t\t\t\t\t\tprovider: targetMessage.provider,\n\t\t\t\t\t\t\tmodel: targetMessage.model,\n\t\t\t\t\t\t\tstartedAt: Date.now(),\n\t\t\t\t\t\t\tcompletedAt: null,\n\t\t\t\t\t\t\ttoolName: name,\n\t\t\t\t\t\t\ttoolCallId: callId,\n\t\t\t\t\t\t\ttoolDurationMs: null,\n\t\t\t\t\t\t\tephemeral: true,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tparts.push(newPart);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst existing = parts[partIndex];\n\t\t\t\t\t\tconst prev =\n\t\t\t\t\t\t\ttypeof (existing.contentJson as Record<string, unknown>)\n\t\t\t\t\t\t\t\t?._streamedInput === 'string'\n\t\t\t\t\t\t\t\t? ((existing.contentJson as Record<string, unknown>)\n\t\t\t\t\t\t\t\t\t\t._streamedInput as string)\n\t\t\t\t\t\t\t\t: '';\n\t\t\t\t\t\tconst nextContentJson: Record<string, unknown> = {\n\t\t\t\t\t\t\t...(typeof existing.contentJson === 'object' &&\n\t\t\t\t\t\t\t!Array.isArray(existing.contentJson)\n\t\t\t\t\t\t\t\t? (existing.contentJson as Record<string, unknown>)\n\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t_streamedInput: getBoundedStreamingToolInput(prev + delta),\n\t\t\t\t\t\t};\n\t\t\t\t\t\tparts[partIndex] = {\n\t\t\t\t\t\t\t...existing,\n\t\t\t\t\t\t\tcontent: JSON.stringify(nextContentJson),\n\t\t\t\t\t\t\tcontentJson: nextContentJson,\n\t\t\t\t\t\t\tstepIndex: stepIndex ?? existing.stepIndex ?? null,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tnextMessages[targetIndex] = { ...targetMessage, parts };\n\t\t\t\t\treturn nextMessages;\n\t\t\t\t},\n\t\t\t);\n\t\t};\n\n\t\tconst accumulateToolOutputDelta = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t\tdelta: string,\n\t\t) => {\n\t\t\tif (!payload) return;\n\t\t\tconst callId = getToolEventCallId(payload);\n\t\t\tconst name = getToolEventName(payload);\n\t\t\tif (!name) return;\n\t\t\tqueryClient.setQueryData<Message[]>(\n\t\t\t\t['messages', sessionId],\n\t\t\t\t(oldMessages) => {\n\t\t\t\t\tif (!oldMessages) return oldMessages;\n\t\t\t\t\tconst nextMessages = [...oldMessages];\n\t\t\t\t\tlet targetIndex = resolveAssistantTargetIndex(nextMessages);\n\t\t\t\t\tif (typeof payload.messageId === 'string') {\n\t\t\t\t\t\tconst explicitIndex = nextMessages.findIndex(\n\t\t\t\t\t\t\t(message) => message.id === payload.messageId,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (explicitIndex !== -1) targetIndex = explicitIndex;\n\t\t\t\t\t}\n\t\t\t\t\tif (targetIndex === -1) return oldMessages;\n\t\t\t\t\tconst targetMessage = nextMessages[targetIndex];\n\t\t\t\t\tconst parts = targetMessage.parts ? [...targetMessage.parts] : [];\n\t\t\t\t\tlet partIndex = -1;\n\t\t\t\t\tif (callId) {\n\t\t\t\t\t\tpartIndex = parts.findIndex(\n\t\t\t\t\t\t\t(part) => part.toolCallId === callId && part.ephemeral,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (partIndex === -1 && !callId) {\n\t\t\t\t\t\tpartIndex = parts.findIndex(\n\t\t\t\t\t\t\t(part) => part.ephemeral && part.toolName === name,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tconst stepIndex =\n\t\t\t\t\t\ttypeof payload.stepIndex === 'number' ? payload.stepIndex : null;\n\t\t\t\t\tif (partIndex === -1) {\n\t\t\t\t\t\tconst contentJsonBase: Record<string, unknown> = {\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t_streamedOutput: delta,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (callId) contentJsonBase.callId = callId;\n\t\t\t\t\t\tconst newPart: MessagePart = {\n\t\t\t\t\t\t\tid: callId\n\t\t\t\t\t\t\t\t? `ephemeral-tool-call-${callId}`\n\t\t\t\t\t\t\t\t: `ephemeral-tool-call-${name}-${Date.now()}`,\n\t\t\t\t\t\t\tmessageId: targetMessage.id,\n\t\t\t\t\t\t\tindex: getOptimisticPartIndex(parts, stepIndex),\n\t\t\t\t\t\t\tstepIndex,\n\t\t\t\t\t\t\ttype: 'tool_call',\n\t\t\t\t\t\t\tcontent: JSON.stringify(contentJsonBase),\n\t\t\t\t\t\t\tcontentJson: contentJsonBase,\n\t\t\t\t\t\t\tagent: targetMessage.agent,\n\t\t\t\t\t\t\tprovider: targetMessage.provider,\n\t\t\t\t\t\t\tmodel: targetMessage.model,\n\t\t\t\t\t\t\tstartedAt: Date.now(),\n\t\t\t\t\t\t\tcompletedAt: null,\n\t\t\t\t\t\t\ttoolName: name,\n\t\t\t\t\t\t\ttoolCallId: callId,\n\t\t\t\t\t\t\ttoolDurationMs: null,\n\t\t\t\t\t\t\tephemeral: true,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tparts.push(newPart);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst existing = parts[partIndex];\n\t\t\t\t\t\tconst prev =\n\t\t\t\t\t\t\ttypeof (existing.contentJson as Record<string, unknown>)\n\t\t\t\t\t\t\t\t?._streamedOutput === 'string'\n\t\t\t\t\t\t\t\t? ((existing.contentJson as Record<string, unknown>)\n\t\t\t\t\t\t\t\t\t\t._streamedOutput as string)\n\t\t\t\t\t\t\t\t: '';\n\t\t\t\t\t\tconst nextContentJson: Record<string, unknown> = {\n\t\t\t\t\t\t\t...(typeof existing.contentJson === 'object' &&\n\t\t\t\t\t\t\t!Array.isArray(existing.contentJson)\n\t\t\t\t\t\t\t\t? (existing.contentJson as Record<string, unknown>)\n\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t_streamedOutput: prev + delta,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tparts[partIndex] = {\n\t\t\t\t\t\t\t...existing,\n\t\t\t\t\t\t\tcontent: JSON.stringify(nextContentJson),\n\t\t\t\t\t\t\tcontentJson: nextContentJson,\n\t\t\t\t\t\t\tstepIndex: stepIndex ?? existing.stepIndex ?? null,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tnextMessages[targetIndex] = { ...targetMessage, parts };\n\t\t\t\t\treturn nextMessages;\n\t\t\t\t},\n\t\t\t);\n\t\t};\n\n\t\tconst resolveEphemeralToolCall = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t) => {\n\t\t\tconst callId = getToolEventCallId(payload);\n\t\t\tif (!callId) return;\n\t\t\tconst payloadName = getToolEventName(payload);\n\t\t\tconst payloadStepIndex =\n\t\t\t\ttypeof payload?.stepIndex === 'number' ? payload.stepIndex : null;\n\t\t\tconst payloadResult = payload?.result;\n\t\t\tconst payloadArtifact = payload?.artifact;\n\t\t\tconst payloadArgs = getToolEventArgs(payload);\n\t\t\tqueryClient.setQueryData<Message[]>(\n\t\t\t\t['messages', sessionId],\n\t\t\t\t(oldMessages) => {\n\t\t\t\t\tif (!oldMessages) return oldMessages;\n\t\t\t\t\tlet changed = false;\n\t\t\t\t\tconst now = Date.now();\n\t\t\t\t\tconst nextMessages = oldMessages.map((message) => {\n\t\t\t\t\t\tif (!message.parts?.length) return message;\n\t\t\t\t\t\tlet messageChanged = false;\n\t\t\t\t\t\tconst updatedParts = message.parts.map((part) => {\n\t\t\t\t\t\t\tif (!(part.ephemeral && part.toolCallId === callId)) {\n\t\t\t\t\t\t\t\treturn part;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tmessageChanged = true;\n\t\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\t\tconst nextContentJson: Record<string, unknown> = {\n\t\t\t\t\t\t\t\t...(typeof part.contentJson === 'object' &&\n\t\t\t\t\t\t\t\t!Array.isArray(part.contentJson)\n\t\t\t\t\t\t\t\t\t? (part.contentJson as Record<string, unknown>)\n\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t\tname: payloadName ?? part.toolName ?? 'tool',\n\t\t\t\t\t\t\t\tcallId,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tif (payloadArgs !== undefined) nextContentJson.args = payloadArgs;\n\t\t\t\t\t\t\tif (payloadResult !== undefined)\n\t\t\t\t\t\t\t\tnextContentJson.result = payloadResult;\n\t\t\t\t\t\t\tif (payloadArtifact !== undefined)\n\t\t\t\t\t\t\t\tnextContentJson.artifact = payloadArtifact;\n\t\t\t\t\t\t\tconst durationMs =\n\t\t\t\t\t\t\t\tpart.startedAt && Number.isFinite(part.startedAt)\n\t\t\t\t\t\t\t\t\t? Math.max(0, now - part.startedAt)\n\t\t\t\t\t\t\t\t\t: part.toolDurationMs;\n\t\t\t\t\t\t\tconst resolvedPart: MessagePart = {\n\t\t\t\t\t\t\t\t...part,\n\t\t\t\t\t\t\t\ttype: 'tool_result',\n\t\t\t\t\t\t\t\tcontent: JSON.stringify(nextContentJson),\n\t\t\t\t\t\t\t\tcontentJson: nextContentJson,\n\t\t\t\t\t\t\t\tstepIndex: payloadStepIndex ?? part.stepIndex ?? null,\n\t\t\t\t\t\t\t\tcompletedAt: now,\n\t\t\t\t\t\t\t\ttoolName: payloadName ?? part.toolName,\n\t\t\t\t\t\t\t\ttoolDurationMs: durationMs ?? null,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\treturn resolvedPart;\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (!messageChanged) return message;\n\t\t\t\t\t\treturn { ...message, parts: updatedParts };\n\t\t\t\t\t});\n\t\t\t\t\treturn changed ? nextMessages : oldMessages;\n\t\t\t\t},\n\t\t\t);\n\t\t};\n\n\t\tconst removeEphemeralToolCall = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t) => {\n\t\t\tconst callId = getToolEventCallId(payload);\n\t\t\tif (!callId) return;\n\t\t\tqueryClient.setQueryData<Message[]>(\n\t\t\t\t['messages', sessionId],\n\t\t\t\t(oldMessages) => {\n\t\t\t\t\tif (!oldMessages) return oldMessages;\n\t\t\t\t\tlet changed = false;\n\t\t\t\t\tconst nextMessages = oldMessages.map((message) => {\n\t\t\t\t\t\tif (!message.parts?.length) return message;\n\t\t\t\t\t\tconst filtered = message.parts.filter(\n\t\t\t\t\t\t\t(part) => !(part.ephemeral && part.toolCallId === callId),\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (filtered.length === message.parts.length) return message;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\treturn { ...message, parts: filtered };\n\t\t\t\t\t});\n\t\t\t\t\treturn changed ? nextMessages : oldMessages;\n\t\t\t\t},\n\t\t\t);\n\t\t};\n\n\t\tconst clearEphemeralForMessage = (messageId: string | null) => {\n\t\t\tif (!messageId) return;\n\t\t\tqueryClient.setQueryData<Message[]>(\n\t\t\t\t['messages', sessionId],\n\t\t\t\t(oldMessages) => {\n\t\t\t\t\tif (!oldMessages) return oldMessages;\n\t\t\t\t\tconst targetIndex = oldMessages.findIndex(\n\t\t\t\t\t\t(message) => message.id === messageId,\n\t\t\t\t\t);\n\t\t\t\t\tif (targetIndex === -1) return oldMessages;\n\t\t\t\t\tconst target = oldMessages[targetIndex];\n\t\t\t\t\tif (\n\t\t\t\t\t\t!target.parts?.some(\n\t\t\t\t\t\t\t(part) => part.ephemeral && part.type === 'tool_call',\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t\t\treturn oldMessages;\n\t\t\t\t\tconst nextMessages = [...oldMessages];\n\t\t\t\t\tnextMessages[targetIndex] = {\n\t\t\t\t\t\t...target,\n\t\t\t\t\t\tparts:\n\t\t\t\t\t\t\ttarget.parts?.filter(\n\t\t\t\t\t\t\t\t(part) => !(part.ephemeral && part.type === 'tool_call'),\n\t\t\t\t\t\t\t) ?? [],\n\t\t\t\t\t};\n\t\t\t\t\treturn nextMessages;\n\t\t\t\t},\n\t\t\t);\n\t\t};\n\n\t\tconst markMessageCompleted = (\n\t\t\tpayload: Record<string, unknown> | undefined,\n\t\t) => {\n\t\t\tconst id = typeof payload?.id === 'string' ? payload.id : null;\n\t\t\tif (!id) return;\n\t\t\tqueryClient.setQueryData<Message[]>(\n\t\t\t\t['messages', sessionId],\n\t\t\t\t(oldMessages) => {\n\t\t\t\t\tif (!oldMessages) return oldMessages;\n\t\t\t\t\tconst nextMessages = [...oldMessages];\n\t\t\t\t\tconst messageIndex = nextMessages.findIndex(\n\t\t\t\t\t\t(message) => message.id === id,\n\t\t\t\t\t);\n\t\t\t\t\tif (messageIndex === -1) return oldMessages;\n\t\t\t\t\tconst existing = nextMessages[messageIndex];\n\t\t\t\t\tnextMessages[messageIndex] = {\n\t\t\t\t\t\t...existing,\n\t\t\t\t\t\tstatus: 'complete',\n\t\t\t\t\t\tcompletedAt: Date.now(),\n\t\t\t\t\t};\n\t\t\t\t\treturn nextMessages;\n\t\t\t\t},\n\t\t\t);\n\t\t};\n\n\t\tconst unsubscribe = client.on('*', (event) => {\n\t\t\t// console.log('[useSessionStream] Event received:', event);\n\t\t\tconst payload = event.payload as Record<string, unknown> | undefined;\n\n\t\t\tswitch (event.type) {\n\t\t\t\tcase 'message.created': {\n\t\t\t\t\tconst role = typeof payload?.role === 'string' ? payload.role : null;\n\t\t\t\t\tconst id = typeof payload?.id === 'string' ? payload.id : null;\n\t\t\t\t\tif (role === 'assistant' && id) {\n\t\t\t\t\t\tassistantMessageIdRef.current = id;\n\t\t\t\t\t\toptimisticallyQueueMessage(queryClient, sessionId, id);\n\t\t\t\t\t}\n\t\t\t\t\tif (id && role) {\n\t\t\t\t\t\tconst agent =\n\t\t\t\t\t\t\ttypeof payload?.agent === 'string' ? payload.agent : '';\n\t\t\t\t\t\tconst provider =\n\t\t\t\t\t\t\ttypeof payload?.provider === 'string' ? payload.provider : '';\n\t\t\t\t\t\tconst model =\n\t\t\t\t\t\t\ttypeof payload?.model === 'string' ? payload.model : '';\n\t\t\t\t\t\tconst content =\n\t\t\t\t\t\t\ttypeof payload?.content === 'string' ? payload.content : null;\n\t\t\t\t\t\tconst userParts: MessagePart[] =\n\t\t\t\t\t\t\trole === 'user' && content\n\t\t\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tid: `${id}-text`,\n\t\t\t\t\t\t\t\t\t\t\tmessageId: id,\n\t\t\t\t\t\t\t\t\t\t\tindex: 0,\n\t\t\t\t\t\t\t\t\t\t\tstepIndex: null,\n\t\t\t\t\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\t\t\t\t\tcontent: JSON.stringify({ text: content }),\n\t\t\t\t\t\t\t\t\t\t\tcontentJson: { text: content },\n\t\t\t\t\t\t\t\t\t\t\tagent,\n\t\t\t\t\t\t\t\t\t\t\tprovider,\n\t\t\t\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t\t\t\tstartedAt: Date.now(),\n\t\t\t\t\t\t\t\t\t\t\tcompletedAt: Date.now(),\n\t\t\t\t\t\t\t\t\t\t\ttoolName: null,\n\t\t\t\t\t\t\t\t\t\t\ttoolCallId: null,\n\t\t\t\t\t\t\t\t\t\t\ttoolDurationMs: null,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t: [];\n\t\t\t\t\t\tqueryClient.setQueryData<Message[]>(\n\t\t\t\t\t\t\t['messages', sessionId],\n\t\t\t\t\t\t\t(oldMessages) => {\n\t\t\t\t\t\t\t\tif (!oldMessages) return oldMessages;\n\t\t\t\t\t\t\t\tif (oldMessages.some((m) => m.id === id)) return oldMessages;\n\t\t\t\t\t\t\t\tconst newMessage: Message = {\n\t\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t\t\tsessionId,\n\t\t\t\t\t\t\t\t\trole: role as Message['role'],\n\t\t\t\t\t\t\t\t\tstatus: role === 'user' ? 'complete' : 'pending',\n\t\t\t\t\t\t\t\t\tagent,\n\t\t\t\t\t\t\t\t\tprovider,\n\t\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t\tcreatedAt: Date.now(),\n\t\t\t\t\t\t\t\t\tcompletedAt: null,\n\t\t\t\t\t\t\t\t\tlatencyMs: null,\n\t\t\t\t\t\t\t\t\tpromptTokens: null,\n\t\t\t\t\t\t\t\t\tcompletionTokens: null,\n\t\t\t\t\t\t\t\t\ttotalTokens: null,\n\t\t\t\t\t\t\t\t\terror: null,\n\t\t\t\t\t\t\t\t\tparts: userParts,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tconst next = [...oldMessages, newMessage];\n\t\t\t\t\t\t\t\tnext.sort((a, b) => a.createdAt - b.createdAt);\n\t\t\t\t\t\t\t\treturn next;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'message.part.delta': {\n\t\t\t\t\tapplyMessageDelta(payload);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'reasoning.delta': {\n\t\t\t\t\tapplyReasoningDelta(payload);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'message.completed': {\n\t\t\t\t\tconst id = typeof payload?.id === 'string' ? payload.id : null;\n\t\t\t\t\tif (id && assistantMessageIdRef.current === id) {\n\t\t\t\t\t\tassistantMessageIdRef.current = null;\n\t\t\t\t\t}\n\t\t\t\t\tmarkMessageCompleted(payload);\n\t\t\t\t\tclearEphemeralForMessage(id);\n\t\t\t\t\tif (id) {\n\t\t\t\t\t\tqueryClient.setQueryData<ReturnType<typeof normalizeQueueState>>(\n\t\t\t\t\t\t\t['queueState', sessionId],\n\t\t\t\t\t\t\t(current) => {\n\t\t\t\t\t\t\t\tif (!current || current.currentMessageId !== id) return current;\n\t\t\t\t\t\t\t\treturn normalizeQueueState({\n\t\t\t\t\t\t\t\t\tcurrentMessageId: null,\n\t\t\t\t\t\t\t\t\tqueuedMessages: [],\n\t\t\t\t\t\t\t\t\tisRunning: false,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tqueryClient.invalidateQueries({ queryKey: ['messages', sessionId] });\n\t\t\t\t\tqueryClient.invalidateQueries({ queryKey: sessionsQueryKey });\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'tool.delta': {\n\t\t\t\t\tconst channel =\n\t\t\t\t\t\ttypeof payload?.channel === 'string' ? payload.channel : null;\n\t\t\t\t\tconst delta =\n\t\t\t\t\t\tchannel === 'output'\n\t\t\t\t\t\t\t? getToolOutputDelta(payload)\n\t\t\t\t\t\t\t: getToolInputDelta(payload);\n\t\t\t\t\tif (channel === 'input' || (channel == null && delta)) {\n\t\t\t\t\t\tif (delta) {\n\t\t\t\t\t\t\taccumulateToolInputDelta(payload, delta);\n\t\t\t\t\t\t\thandleToolActivityViewerEvent('tool.delta', payload, delta);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tupsertEphemeralToolCall(payload);\n\t\t\t\t\t\t\thandleToolActivityViewerEvent('tool.delta', payload);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (channel === 'output' && delta) {\n\t\t\t\t\t\taccumulateToolOutputDelta(payload, delta);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'tool.call': {\n\t\t\t\t\tupsertEphemeralToolCall(payload);\n\t\t\t\t\thandleToolActivityViewerEvent('tool.call', payload);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'tool.result': {\n\t\t\t\t\tresolveEphemeralToolCall(payload);\n\t\t\t\t\thandleToolActivityViewerEvent('tool.result', payload);\n\t\t\t\t\tconst key = getToolBufferKey(payload);\n\t\t\t\t\tif (key) toolInputBuffersRef.current.delete(key);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'tool.approval.required': {\n\t\t\t\t\tconst callId =\n\t\t\t\t\t\ttypeof payload?.callId === 'string' ? payload.callId : null;\n\t\t\t\t\tconst toolName =\n\t\t\t\t\t\ttypeof payload?.toolName === 'string' ? payload.toolName : null;\n\t\t\t\t\tconst messageId =\n\t\t\t\t\t\ttypeof payload?.messageId === 'string' ? payload.messageId : null;\n\t\t\t\t\tconst args = payload?.args;\n\t\t\t\t\tif (callId && toolName && messageId) {\n\t\t\t\t\t\taddPendingApproval({\n\t\t\t\t\t\t\tcallId,\n\t\t\t\t\t\t\ttoolName,\n\t\t\t\t\t\t\targs,\n\t\t\t\t\t\t\tmessageId,\n\t\t\t\t\t\t\tcreatedAt: Date.now(),\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'tool.approval.resolved': {\n\t\t\t\t\tconst callId =\n\t\t\t\t\t\ttypeof payload?.callId === 'string' ? payload.callId : null;\n\t\t\t\t\tif (callId) {\n\t\t\t\t\t\tremovePendingApproval(callId);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'tool.approval.updated': {\n\t\t\t\t\tconst callId =\n\t\t\t\t\t\ttypeof payload?.callId === 'string' ? payload.callId : null;\n\t\t\t\t\tconst args = payload?.args;\n\t\t\t\t\tif (callId) {\n\t\t\t\t\t\tupdatePendingApproval(callId, args);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'error': {\n\t\t\t\t\thandleToolActivityViewerEvent('error', payload);\n\t\t\t\t\tremoveEphemeralToolCall(payload);\n\t\t\t\t\tconst messageId =\n\t\t\t\t\t\ttypeof payload?.messageId === 'string' ? payload.messageId : null;\n\t\t\t\t\tif (messageId) {\n\t\t\t\t\t\tif (assistantMessageIdRef.current === messageId) {\n\t\t\t\t\t\t\tassistantMessageIdRef.current = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclearEphemeralForMessage(messageId);\n\t\t\t\t\t\tupsertErrorPart(payload);\n\t\t\t\t\t}\n\t\t\t\t\tqueryClient.invalidateQueries({ queryKey: ['messages', sessionId] });\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'message.updated': {\n\t\t\t\t\tconst id = typeof payload?.id === 'string' ? payload.id : null;\n\t\t\t\t\tconst status =\n\t\t\t\t\t\ttypeof payload?.status === 'string' ? payload.status : null;\n\t\t\t\t\tif (id && status) {\n\t\t\t\t\t\tif (status !== 'pending' && assistantMessageIdRef.current === id) {\n\t\t\t\t\t\t\tassistantMessageIdRef.current = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (status !== 'pending') {\n\t\t\t\t\t\t\tclearEphemeralForMessage(id);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst error =\n\t\t\t\t\t\t\ttypeof payload?.error === 'string' ? payload.error : undefined;\n\t\t\t\t\t\tqueryClient.setQueryData<Message[]>(\n\t\t\t\t\t\t\t['messages', sessionId],\n\t\t\t\t\t\t\t(oldMessages) => {\n\t\t\t\t\t\t\t\tif (!oldMessages) return oldMessages;\n\t\t\t\t\t\t\t\tconst idx = oldMessages.findIndex((m) => m.id === id);\n\t\t\t\t\t\t\t\tif (idx === -1) return oldMessages;\n\t\t\t\t\t\t\t\tconst next = [...oldMessages];\n\t\t\t\t\t\t\t\tnext[idx] = {\n\t\t\t\t\t\t\t\t\t...next[idx],\n\t\t\t\t\t\t\t\t\tstatus: status as Message['status'],\n\t\t\t\t\t\t\t\t\tcompletedAt:\n\t\t\t\t\t\t\t\t\t\tstatus === 'pending'\n\t\t\t\t\t\t\t\t\t\t\t? next[idx].completedAt\n\t\t\t\t\t\t\t\t\t\t\t: (next[idx].completedAt ?? Date.now()),\n\t\t\t\t\t\t\t\t\terror: error ?? next[idx].error,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\treturn next;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'queue.updated': {\n\t\t\t\t\tconst queueState = normalizeQueueState({\n\t\t\t\t\t\tcurrentMessageId: payload?.currentMessageId as string | null,\n\t\t\t\t\t\tqueuedMessages: (payload?.queuedMessages ?? []) as Array<{\n\t\t\t\t\t\t\tmessageId: string;\n\t\t\t\t\t\t\tposition: number;\n\t\t\t\t\t\t}>,\n\t\t\t\t\t\tisRunning:\n\t\t\t\t\t\t\ttypeof payload?.isRunning === 'boolean'\n\t\t\t\t\t\t\t\t? payload.isRunning\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t});\n\t\t\t\t\tqueryClient.setQueryData(['queueState', sessionId], queueState);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (event.type === 'finish-step') {\n\t\t\t\tconst now = Date.now();\n\t\t\t\tif (now - lastSessionInvalidation >= 2000) {\n\t\t\t\t\tlastSessionInvalidation = now;\n\t\t\t\t\tqueryClient.invalidateQueries({ queryKey: sessionsQueryKey });\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn () => {\n\t\t\tunsubscribe();\n\t\t\tclient.disconnect();\n\t\t};\n\t}, [\n\t\tsessionId,\n\t\tqueryClient,\n\t\taddPendingApproval,\n\t\tremovePendingApproval,\n\t\tenabled,\n\t\tsetPendingApprovals,\n\t\tupdatePendingApproval,\n\t]);\n}\n",
36
36
  "import type { SSEEvent } from '../types/api';\n\nexport type SSEEventHandler = (event: SSEEvent) => void;\n\nexport class SSEClient {\n\tprivate abortController: AbortController | null = null;\n\tprivate handlers: Map<string, Set<SSEEventHandler>> = new Map();\n\tprivate running = false;\n\n\tasync connect(url: string) {\n\t\tif (this.abortController) {\n\t\t\tthis.abortController.abort();\n\t\t}\n\n\t\tthis.abortController = new AbortController();\n\t\tthis.running = true;\n\n\t\tconst isTunnel = !url.includes('localhost') && !url.includes('127.0.0.1');\n\n\t\ttry {\n\t\t\tconst response = await fetch(url, {\n\t\t\t\tmethod: isTunnel ? 'POST' : 'GET',\n\t\t\t\theaders: { Accept: 'text/event-stream' },\n\t\t\t\tsignal: this.abortController.signal,\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\tconsole.error('[SSE] Connection failed:', response.status);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst reader = response.body?.getReader();\n\t\t\tif (!reader) {\n\t\t\t\tconsole.error('[SSE] No response body');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst decoder = new TextDecoder();\n\t\t\tlet buffer = '';\n\n\t\t\twhile (this.running) {\n\t\t\t\tconst { done, value } = await reader.read();\n\t\t\t\tif (done) break;\n\n\t\t\t\tbuffer += decoder.decode(value, { stream: true });\n\t\t\t\tlet idx = buffer.indexOf('\\n\\n');\n\n\t\t\t\twhile (idx !== -1) {\n\t\t\t\t\tconst raw = buffer.slice(0, idx);\n\t\t\t\t\tbuffer = buffer.slice(idx + 2);\n\t\t\t\t\tconst lines = raw.split('\\n');\n\n\t\t\t\t\tlet eventType = 'message';\n\t\t\t\t\tlet data = '';\n\n\t\t\t\t\tfor (const line of lines) {\n\t\t\t\t\t\tif (line.startsWith('event: ')) {\n\t\t\t\t\t\t\teventType = line.slice(7).trim();\n\t\t\t\t\t\t} else if (line.startsWith('data: ')) {\n\t\t\t\t\t\t\tdata += (data ? '\\n' : '') + line.slice(6);\n\t\t\t\t\t\t} else if (line.startsWith(':')) {\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (data) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst payload = JSON.parse(data);\n\t\t\t\t\t\t\tthis.emit({ type: eventType, payload });\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tconsole.error(`[SSE] Failed to parse ${eventType}:`, error);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tidx = buffer.indexOf('\\n\\n');\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (error instanceof Error && error.name === 'AbortError') {\n\t\t\t} else if (\n\t\t\t\terror instanceof TypeError &&\n\t\t\t\terror.message === 'Load failed'\n\t\t\t) {\n\t\t\t} else {\n\t\t\t\tconsole.error('[SSE] Connection error:', error);\n\t\t\t}\n\t\t}\n\t}\n\n\tdisconnect() {\n\t\tthis.running = false;\n\t\tif (this.abortController) {\n\t\t\tthis.abortController.abort();\n\t\t\tthis.abortController = null;\n\t\t}\n\t}\n\n\ton(eventType: string, handler: SSEEventHandler) {\n\t\tif (!this.handlers.has(eventType)) {\n\t\t\tthis.handlers.set(eventType, new Set());\n\t\t}\n\t\tthis.handlers.get(eventType)?.add(handler);\n\n\t\treturn () => {\n\t\t\tthis.off(eventType, handler);\n\t\t};\n\t}\n\n\toff(eventType: string, handler: SSEEventHandler) {\n\t\tconst handlers = this.handlers.get(eventType);\n\t\tif (handlers) {\n\t\t\thandlers.delete(handler);\n\t\t\tif (handlers.size === 0) {\n\t\t\t\tthis.handlers.delete(eventType);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate emit(event: SSEEvent) {\n\t\tconst handlers = this.handlers.get(event.type);\n\t\tif (handlers) {\n\t\t\tfor (const handler of handlers) {\n\t\t\t\thandler(event);\n\t\t\t}\n\t\t}\n\n\t\tconst allHandlers = this.handlers.get('*');\n\t\tif (allHandlers) {\n\t\t\tfor (const handler of allHandlers) {\n\t\t\t\thandler(event);\n\t\t\t}\n\t\t}\n\t}\n}\n",
37
37
  "import { create } from 'zustand';\n\nexport interface PendingToolApproval {\n\tcallId: string;\n\ttoolName: string;\n\targs: unknown;\n\tmessageId: string;\n\tcreatedAt: number;\n}\n\ninterface ToolApprovalState {\n\tpendingApprovals: PendingToolApproval[];\n\taddPendingApproval: (approval: PendingToolApproval) => void;\n\tremovePendingApproval: (callId: string) => void;\n\tupdatePendingApproval: (callId: string, args: unknown) => void;\n\tclearPendingApprovals: () => void;\n\tsetPendingApprovals: (approvals: PendingToolApproval[]) => void;\n}\n\nexport const useToolApprovalStore = create<ToolApprovalState>((set) => ({\n\tpendingApprovals: [],\n\n\taddPendingApproval: (approval) =>\n\t\tset((state) => ({\n\t\t\tpendingApprovals: [...state.pendingApprovals, approval],\n\t\t})),\n\n\tremovePendingApproval: (callId) =>\n\t\tset((state) => ({\n\t\t\tpendingApprovals: state.pendingApprovals.filter(\n\t\t\t\t(a) => a.callId !== callId,\n\t\t\t),\n\t\t})),\n\n\tupdatePendingApproval: (callId, args) =>\n\t\tset((state) => ({\n\t\t\tpendingApprovals: state.pendingApprovals.map((a) =>\n\t\t\t\ta.callId === callId ? { ...a, args } : a,\n\t\t\t),\n\t\t})),\n\n\tclearPendingApprovals: () => set({ pendingApprovals: [] }),\n\n\tsetPendingApprovals: (approvals) => set({ pendingApprovals: approvals }),\n}));\n",
38
38
  "import { useEffect, useRef } from 'react';\nimport { useQueryClient } from '@tanstack/react-query';\nimport {\n\tbuildClientEventsStreamUrl,\n\tcreateClientEventsStream,\n\ttype NotificationEvent,\n\ttype SessionStatusEvent,\n} from '@ottocode/api';\nimport { toast, useToastStore } from '../stores/toastStore';\nimport type { SessionsPage } from '../types/api';\nimport { getBaseUrl } from '../lib/api-client/utils';\nimport { openUrl } from '../lib/open-url';\nimport {\n\tgetPlatformWindowFocused,\n\thasPlatformOpenUrl,\n\topenPlatformSession,\n\tshowPlatformNotification,\n} from '../lib/platform';\nimport { sessionsQueryKey } from './useSessions';\n\ntype DesktopNotificationMessage = {\n\ttype: 'otto-notification';\n\tnotification: NotificationEvent;\n};\n\nfunction toastTypeForLevel(level: NotificationEvent['level']) {\n\tif (level === 'success') return 'success';\n\tif (level === 'error') return 'error';\n\treturn 'default';\n}\n\nfunction notificationTargetHref(notification: NotificationEvent) {\n\treturn (\n\t\tnotification.action?.href ??\n\t\t(notification.sessionId\n\t\t\t? `/sessions/${encodeURIComponent(notification.sessionId)}`\n\t\t\t: undefined)\n\t);\n}\n\nfunction openNotificationTarget(notification: NotificationEvent) {\n\tconst href = notificationTargetHref(notification);\n\tif (!href || typeof window === 'undefined') return;\n\n\tif (notification.sessionId && openPlatformSession(notification.sessionId)) {\n\t\treturn;\n\t}\n\n\tif (href.startsWith('/')) {\n\t\twindow.location.href = href;\n\t\treturn;\n\t}\n\n\topenUrl(href);\n}\n\nfunction requestNotificationPermission() {\n\treturn new Promise<NotificationPermission>((resolve) => {\n\t\tlet settled = false;\n\t\tlet hasNativeRequest = false;\n\t\tconst finish = (permission?: NotificationPermission) => {\n\t\t\tif (settled) return;\n\t\t\tsettled = true;\n\t\t\tsetTimeout(() => resolve(permission ?? Notification.permission), 100);\n\t\t};\n\n\t\ttry {\n\t\t\tconst result = Notification.requestPermission(finish);\n\t\t\tif (result && typeof result.then === 'function') {\n\t\t\t\thasNativeRequest = true;\n\t\t\t\tresult.then(finish).catch(() => finish());\n\t\t\t}\n\t\t} catch {\n\t\t\tfinish();\n\t\t}\n\n\t\tif (!hasNativeRequest) {\n\t\t\tsetTimeout(() => finish(), 60_000);\n\t\t}\n\t});\n}\n\nfunction showInAppNotification(notification: NotificationEvent) {\n\tconst message = notification.body\n\t\t? `${notification.title}: ${notification.body}`\n\t\t: notification.title;\n\tconst targetHref = notificationTargetHref(notification);\n\n\tif (targetHref) {\n\t\tconst id = toast(message, toastTypeForLevel(notification.level), 6000);\n\t\tuseToastStore.getState().updateToast(id, {\n\t\t\tactivateActionOnClick: true,\n\t\t\taction: notification.action\n\t\t\t\t? {\n\t\t\t\t\t\t...notification.action,\n\t\t\t\t\t\tonClick: () => openNotificationTarget(notification),\n\t\t\t\t\t}\n\t\t\t\t: {\n\t\t\t\t\t\tlabel: 'Open session',\n\t\t\t\t\t\tonClick: () => openNotificationTarget(notification),\n\t\t\t\t\t},\n\t\t});\n\t\treturn;\n\t}\n\n\ttoast(message, toastTypeForLevel(notification.level), 5000);\n}\n\nfunction sendBrowserNotification(notification: NotificationEvent) {\n\tif (typeof window === 'undefined') return false;\n\tif (showPlatformNotification(notification)) return true;\n\n\tif (window.parent && window.parent !== window) {\n\t\tconst message: DesktopNotificationMessage = {\n\t\t\ttype: 'otto-notification',\n\t\t\tnotification,\n\t\t};\n\t\twindow.parent.postMessage(message, '*');\n\t\treturn true;\n\t}\n\n\tif (!('Notification' in window) || Notification.permission !== 'granted')\n\t\treturn false;\n\n\tconst browserNotification = new Notification(notification.title, {\n\t\tbody: notification.body,\n\t\ttag: notification.id,\n\t\tdata: { href: notificationTargetHref(notification) },\n\t});\n\tbrowserNotification.onclick = () => {\n\t\twindow.focus();\n\t\topenNotificationTarget(notification);\n\t\tbrowserNotification.close();\n\t};\n\treturn true;\n}\n\nfunction isAppForeground() {\n\treturn getPlatformWindowFocused() ?? document.visibilityState === 'visible';\n}\n\nfunction updateSessionStatusInCache(\n\tqueryClient: ReturnType<typeof useQueryClient>,\n\tstatus: SessionStatusEvent,\n) {\n\tqueryClient.setQueryData<{ pages: SessionsPage[]; pageParams: number[] }>(\n\t\tsessionsQueryKey,\n\t\t(old) => {\n\t\t\tif (!old) return old;\n\t\t\treturn {\n\t\t\t\t...old,\n\t\t\t\tpages: old.pages.map((page) => ({\n\t\t\t\t\t...page,\n\t\t\t\t\titems: page.items.map((session) =>\n\t\t\t\t\t\tsession.id === status.sessionId\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t...session,\n\t\t\t\t\t\t\t\t\tisRunning: status.status === 'running',\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: session,\n\t\t\t\t\t),\n\t\t\t\t})),\n\t\t\t};\n\t\t},\n\t);\n}\n\nfunction isLocalApiUrl(baseUrl: string) {\n\ttry {\n\t\tconst { hostname } = new URL(baseUrl);\n\t\treturn (\n\t\t\thostname === 'localhost' ||\n\t\t\thostname === '127.0.0.1' ||\n\t\t\thostname.startsWith('192.168.') ||\n\t\t\thostname.startsWith('10.') ||\n\t\t\t/^172\\.(1[6-9]|2\\d|3[01])\\./.test(hostname)\n\t\t);\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nasync function requestLocalhostAccess(baseUrl: string) {\n\tconst response = await fetch(new URL('/openapi.json', baseUrl), {\n\t\tcache: 'no-store',\n\t\tcredentials: 'include',\n\t});\n\tif (!response.ok) {\n\t\tthrow new Error(`Local API returned ${response.status}`);\n\t}\n}\n\nconst localAccessToastIds = new Map<string, string>();\nconst localAccessChecksInFlight = new Set<string>();\n\nfunction localAccessStorageKey(baseUrl: string) {\n\treturn `otto-local-access-confirmed:${baseUrl}`;\n}\n\nfunction hasConfirmedLocalAccess(baseUrl: string) {\n\ttry {\n\t\treturn window.localStorage.getItem(localAccessStorageKey(baseUrl)) === '1';\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction markLocalAccessConfirmed(baseUrl: string) {\n\ttry {\n\t\twindow.localStorage.setItem(localAccessStorageKey(baseUrl), '1');\n\t} catch {\n\t\t// Ignore storage failures; the in-memory toast map still prevents spam.\n\t}\n}\n\nasync function maybeShowLocalAccessToast(baseUrl: string) {\n\tif (hasPlatformOpenUrl()) return;\n\tif (!isLocalApiUrl(baseUrl) || hasConfirmedLocalAccess(baseUrl)) return;\n\tif (\n\t\tlocalAccessToastIds.has(baseUrl) ||\n\t\tlocalAccessChecksInFlight.has(baseUrl)\n\t) {\n\t\treturn;\n\t}\n\n\tlocalAccessChecksInFlight.add(baseUrl);\n\ttry {\n\t\tawait requestLocalhostAccess(baseUrl);\n\t\tmarkLocalAccessConfirmed(baseUrl);\n\t\treturn;\n\t} catch {\n\t\t// Show the manual permission toast below.\n\t} finally {\n\t\tlocalAccessChecksInFlight.delete(baseUrl);\n\t}\n\n\tif (localAccessToastIds.has(baseUrl)) return;\n\tconst id = toast(\n\t\t'Safari may need permission to access the local otto server.',\n\t\t'default',\n\t\t0,\n\t);\n\tlocalAccessToastIds.set(baseUrl, id);\n\tuseToastStore.getState().updateToast(id, {\n\t\taction: {\n\t\t\tlabel: 'Allow access',\n\t\t\tonClick: async () => {\n\t\t\t\tawait requestLocalhostAccess(baseUrl);\n\t\t\t\tmarkLocalAccessConfirmed(baseUrl);\n\t\t\t\tuseToastStore.getState().removeToast(id);\n\t\t\t\tlocalAccessToastIds.delete(baseUrl);\n\t\t\t\ttoast.success('Local otto server access confirmed.');\n\t\t\t},\n\t\t},\n\t});\n}\n\nexport function useClientEvents(activeSessionId?: string) {\n\tconst queryClient = useQueryClient();\n\tconst activeSessionIdRef = useRef(activeSessionId);\n\n\tuseEffect(() => {\n\t\tactiveSessionIdRef.current = activeSessionId;\n\t}, [activeSessionId]);\n\n\tuseEffect(() => {\n\t\tif (typeof window === 'undefined' || window.parent !== window) return;\n\t\tif (!('Notification' in window)) return;\n\t\tif (Notification.permission !== 'default') return;\n\t\tif (window.localStorage.getItem('otto-notification-permission-prompted')) {\n\t\t\treturn;\n\t\t}\n\n\t\twindow.localStorage.setItem('otto-notification-permission-prompted', '1');\n\t\tconst id = toast(\n\t\t\t'Enable browser notifications for background session updates.',\n\t\t\t'default',\n\t\t\t0,\n\t\t);\n\t\tuseToastStore.getState().updateToast(id, {\n\t\t\taction: {\n\t\t\t\tlabel: 'Enable',\n\t\t\t\tonClick: async () => {\n\t\t\t\t\tconst permission = await requestNotificationPermission();\n\t\t\t\t\tconst currentPermission = Notification.permission;\n\t\t\t\t\tif (permission === 'granted' || currentPermission === 'granted') {\n\t\t\t\t\t\ttoast.success('Browser notifications enabled.');\n\t\t\t\t\t} else if (\n\t\t\t\t\t\tpermission === 'default' &&\n\t\t\t\t\t\tcurrentPermission === 'default'\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttoast.info('Browser notifications were not enabled.');\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\t}, []);\n\n\tuseEffect(() => {\n\t\tconst controller = new AbortController();\n\t\tconst baseUrl = getBaseUrl();\n\n\t\tvoid createClientEventsStream(\n\t\t\t{\n\t\t\t\tbaseUrl,\n\t\t\t\tonEvent: (event) => {\n\t\t\t\t\tif (event.event === 'heartbeat') return;\n\n\t\t\t\t\tlet payload: unknown;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpayload = JSON.parse(event.data);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error('[client-events] Failed to parse event:', error);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (event.event === 'session.status') {\n\t\t\t\t\t\tconst status = payload as SessionStatusEvent;\n\t\t\t\t\t\tupdateSessionStatusInCache(queryClient, status);\n\t\t\t\t\t\tif (status.status !== 'running') {\n\t\t\t\t\t\t\tvoid queryClient.invalidateQueries({\n\t\t\t\t\t\t\t\tqueryKey: sessionsQueryKey,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (event.event === 'notification') {\n\t\t\t\t\t\tconst notification = payload as NotificationEvent;\n\t\t\t\t\t\tconst isActiveVisibleSession =\n\t\t\t\t\t\t\tnotification.sessionId === activeSessionIdRef.current &&\n\t\t\t\t\t\t\tisAppForeground();\n\t\t\t\t\t\tconst isSessionNotification =\n\t\t\t\t\t\t\tnotification.source === 'session' || !!notification.sessionId;\n\t\t\t\t\t\tlet sentSystemNotification = false;\n\t\t\t\t\t\tif (!isActiveVisibleSession) {\n\t\t\t\t\t\t\tsentSystemNotification = sendBrowserNotification(notification);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t!isSessionNotification ||\n\t\t\t\t\t\t\t(!sentSystemNotification && !isActiveVisibleSession)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tshowInAppNotification(notification);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tonError: (error) => {\n\t\t\t\t\tif (!controller.signal.aborted) {\n\t\t\t\t\t\tconsole.error('[client-events] Stream error:', error);\n\t\t\t\t\t\tvoid maybeShowLocalAccessToast(baseUrl);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t\tcontroller.signal,\n\t\t);\n\n\t\treturn () => controller.abort();\n\t}, [queryClient]);\n\n\treturn buildClientEventsStreamUrl({ baseUrl: getBaseUrl() });\n}\n",
@@ -68,7 +68,7 @@
68
68
  "import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { useSkillsStore } from '../stores/skillsStore';\nimport { useEffect } from 'react';\nimport { apiClient } from '../lib/api-client';\n\nexport function useSkills() {\n\tconst setSkillsConfig = useSkillsStore((s) => s.setSkillsConfig);\n\n\tconst query = useQuery({\n\t\tqueryKey: ['skills'],\n\t\tqueryFn: async () => {\n\t\t\treturn apiClient.getSkillsConfig();\n\t\t},\n\t\trefetchInterval: 30000,\n\t});\n\n\tuseEffect(() => {\n\t\tif (query.data?.items) {\n\t\t\tsetSkillsConfig({\n\t\t\t\tskills: query.data.items,\n\t\t\t\tglobalEnabled: query.data.enabled,\n\t\t\t\ttotalCount: query.data.totalCount,\n\t\t\t\tenabledCount: query.data.enabledCount,\n\t\t\t});\n\t\t}\n\t}, [query.data, setSkillsConfig]);\n\n\treturn query;\n}\n\nexport function useUpdateSkillsConfig() {\n\tconst queryClient = useQueryClient();\n\tconst setSkillsConfig = useSkillsStore((s) => s.setSkillsConfig);\n\n\treturn useMutation({\n\t\tmutationFn: (input: {\n\t\t\tenabled?: boolean;\n\t\t\titems?: Record<string, { enabled?: boolean }>;\n\t\t\tscope?: 'global' | 'local';\n\t\t}) => apiClient.updateSkillsConfig(input),\n\t\tonSuccess: (data) => {\n\t\t\tsetSkillsConfig({\n\t\t\t\tskills: data.items,\n\t\t\t\tglobalEnabled: data.enabled,\n\t\t\t\ttotalCount: data.totalCount,\n\t\t\t\tenabledCount: data.enabledCount,\n\t\t\t});\n\t\t\tqueryClient.setQueryData(['skills'], data);\n\t\t},\n\t});\n}\n\nexport function useSkillDetail(name: string | null) {\n\treturn useQuery({\n\t\tqueryKey: ['skills', name],\n\t\tqueryFn: async () => {\n\t\t\tif (!name) return null;\n\t\t\treturn apiClient.getSkill(name);\n\t\t},\n\t\tenabled: !!name,\n\t});\n}\n\nexport function useSkillFiles(name: string | null) {\n\treturn useQuery({\n\t\tqueryKey: ['skills', name, 'files'],\n\t\tqueryFn: async () => {\n\t\t\tif (!name) return null;\n\t\t\treturn apiClient.getSkillFiles(name);\n\t\t},\n\t\tenabled: !!name,\n\t});\n}\n\nexport function useSkillFileContent(\n\tname: string | null,\n\tfilePath: string | null,\n) {\n\treturn useQuery({\n\t\tqueryKey: ['skills', name, 'files', filePath],\n\t\tqueryFn: async () => {\n\t\t\tif (!name || !filePath) return null;\n\t\t\treturn apiClient.getSkillFileContent(name, filePath);\n\t\t},\n\t\tenabled: !!name && !!filePath,\n\t});\n}\n",
69
69
  "import { useEffect, useState, type RefObject } from 'react';\n\n/**\n * Tracks the inline (width) size of the element referenced by `ref` via a\n * ResizeObserver. Returns 0 until the first measurement.\n */\nexport function useContainerWidth(ref: RefObject<HTMLElement | null>): number {\n\tconst [width, setWidth] = useState(0);\n\n\tuseEffect(() => {\n\t\tconst el = ref.current;\n\t\tif (!el) return;\n\n\t\tconst update = () => setWidth(el.clientWidth);\n\t\tupdate();\n\n\t\tconst observer = new ResizeObserver(() => update());\n\t\tobserver.observe(el);\n\t\treturn () => observer.disconnect();\n\t}, [ref]);\n\n\treturn width;\n}\n"
70
70
  ],
71
- "mappings": "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",
72
- "debugId": "3A3CE5241D63364B64756E2164756E21",
71
+ "mappings": "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",
72
+ "debugId": "C8B7C4D04F69D1E164756E2164756E21",
73
73
  "names": []
74
74
  }