@ottocode/web-sdk 0.1.295 → 0.1.297
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.
- package/dist/components/branch/BranchModal.d.ts +1 -1
- package/dist/components/branch/BranchModal.d.ts.map +1 -1
- package/dist/components/browser/BrowserViewerPanel.d.ts +1 -1
- package/dist/components/browser/BrowserViewerPanel.d.ts.map +1 -1
- package/dist/components/chat/CommandSuggestionsPopup.d.ts +1 -1
- package/dist/components/chat/CommandSuggestionsPopup.d.ts.map +1 -1
- package/dist/components/chat/ConfigModal.d.ts +1 -1
- package/dist/components/chat/ConfigModal.d.ts.map +1 -1
- package/dist/components/chat/ConfigSelector.d.ts +1 -1
- package/dist/components/chat/ConfigSelector.d.ts.map +1 -1
- package/dist/components/chat/FileMentionPopup.d.ts +1 -1
- package/dist/components/chat/FileMentionPopup.d.ts.map +1 -1
- package/dist/components/chat/LiveWaveform.d.ts +1 -1
- package/dist/components/chat/LiveWaveform.d.ts.map +1 -1
- package/dist/components/chat/ReasoningTabs.d.ts +1 -1
- package/dist/components/chat/ReasoningTabs.d.ts.map +1 -1
- package/dist/components/chat/ShortcutsModal.d.ts +1 -1
- package/dist/components/chat/ShortcutsModal.d.ts.map +1 -1
- package/dist/components/chat/SkillMentionPopup.d.ts +1 -1
- package/dist/components/chat/SkillMentionPopup.d.ts.map +1 -1
- package/dist/components/chat/StopButton.d.ts +1 -1
- package/dist/components/chat/StopButton.d.ts.map +1 -1
- package/dist/components/common/FileTypeIcon.d.ts +1 -1
- package/dist/components/common/FileTypeIcon.d.ts.map +1 -1
- package/dist/components/dashboard/UsageDashboard.d.ts +1 -1
- package/dist/components/dashboard/UsageDashboard.d.ts.map +1 -1
- package/dist/components/git/GitBranchSwitcher.d.ts +1 -1
- package/dist/components/git/GitBranchSwitcher.d.ts.map +1 -1
- package/dist/components/git/GitCommitModal.d.ts +1 -1
- package/dist/components/git/GitCommitModal.d.ts.map +1 -1
- package/dist/components/git/GitCreateBranchModal.d.ts +1 -1
- package/dist/components/git/GitCreateBranchModal.d.ts.map +1 -1
- package/dist/components/git/GitDiffViewer.d.ts +1 -1
- package/dist/components/git/GitDiffViewer.d.ts.map +1 -1
- package/dist/components/git/GitFileItem.d.ts +1 -1
- package/dist/components/git/GitFileItem.d.ts.map +1 -1
- package/dist/components/git/GitFileList.d.ts +1 -1
- package/dist/components/git/GitFileList.d.ts.map +1 -1
- package/dist/components/git/GitFileTree.d.ts +1 -1
- package/dist/components/git/GitFileTree.d.ts.map +1 -1
- package/dist/components/index.js +988 -528
- package/dist/components/index.js.map +16 -16
- package/dist/components/messages/ActionToolBox.d.ts +1 -1
- package/dist/components/messages/ActionToolBox.d.ts.map +1 -1
- package/dist/components/messages/AssistantMessageGroup.d.ts +1 -0
- package/dist/components/messages/AssistantMessageGroup.d.ts.map +1 -1
- package/dist/components/messages/CompactActivityGroup.d.ts +1 -1
- package/dist/components/messages/CompactActivityGroup.d.ts.map +1 -1
- package/dist/components/messages/MessageThread.d.ts.map +1 -1
- package/dist/components/messages/renderers/ApplyPatchRenderer.d.ts +1 -1
- package/dist/components/messages/renderers/ApplyPatchRenderer.d.ts.map +1 -1
- package/dist/components/messages/renderers/BashRenderer.d.ts +1 -1
- package/dist/components/messages/renderers/BashRenderer.d.ts.map +1 -1
- package/dist/components/messages/renderers/CopyAttachmentRenderer.d.ts +1 -1
- package/dist/components/messages/renderers/CopyAttachmentRenderer.d.ts.map +1 -1
- package/dist/components/messages/renderers/CopyIntoRenderer.d.ts +1 -1
- package/dist/components/messages/renderers/CopyIntoRenderer.d.ts.map +1 -1
- package/dist/components/messages/renderers/DatabaseToolRenderer.d.ts +1 -1
- package/dist/components/messages/renderers/DatabaseToolRenderer.d.ts.map +1 -1
- package/dist/components/messages/renderers/DebugRenderer.d.ts +1 -1
- package/dist/components/messages/renderers/DebugRenderer.d.ts.map +1 -1
- package/dist/components/messages/renderers/DiffView.d.ts +1 -1
- package/dist/components/messages/renderers/DiffView.d.ts.map +1 -1
- package/dist/components/messages/renderers/ErrorRenderer.d.ts +2 -1
- package/dist/components/messages/renderers/ErrorRenderer.d.ts.map +1 -1
- package/dist/components/messages/renderers/FinishRenderer.d.ts +1 -1
- package/dist/components/messages/renderers/FinishRenderer.d.ts.map +1 -1
- package/dist/components/messages/renderers/GenericRenderer.d.ts +1 -1
- package/dist/components/messages/renderers/GenericRenderer.d.ts.map +1 -1
- package/dist/components/messages/renderers/GitCommitRenderer.d.ts +1 -1
- package/dist/components/messages/renderers/GitCommitRenderer.d.ts.map +1 -1
- package/dist/components/messages/renderers/GitDiffRenderer.d.ts +1 -1
- package/dist/components/messages/renderers/GitDiffRenderer.d.ts.map +1 -1
- package/dist/components/messages/renderers/GitStatusRenderer.d.ts +1 -1
- package/dist/components/messages/renderers/GitStatusRenderer.d.ts.map +1 -1
- package/dist/components/messages/renderers/ListRenderer.d.ts +1 -1
- package/dist/components/messages/renderers/ListRenderer.d.ts.map +1 -1
- package/dist/components/messages/renderers/LoadMcpToolsRenderer.d.ts +1 -1
- package/dist/components/messages/renderers/LoadMcpToolsRenderer.d.ts.map +1 -1
- package/dist/components/messages/renderers/LoadToolsRenderer.d.ts +1 -1
- package/dist/components/messages/renderers/LoadToolsRenderer.d.ts.map +1 -1
- package/dist/components/messages/renderers/McpToolRenderer.d.ts +1 -1
- package/dist/components/messages/renderers/McpToolRenderer.d.ts.map +1 -1
- package/dist/components/messages/renderers/ProgressUpdateRenderer.d.ts +1 -1
- package/dist/components/messages/renderers/ProgressUpdateRenderer.d.ts.map +1 -1
- package/dist/components/messages/renderers/ReadImageRenderer.d.ts +1 -1
- package/dist/components/messages/renderers/ReadImageRenderer.d.ts.map +1 -1
- package/dist/components/messages/renderers/ReadRenderer.d.ts +1 -1
- package/dist/components/messages/renderers/ReadRenderer.d.ts.map +1 -1
- package/dist/components/messages/renderers/ReasoningRenderer.d.ts +1 -1
- package/dist/components/messages/renderers/ReasoningRenderer.d.ts.map +1 -1
- package/dist/components/messages/renderers/SearchRenderer.d.ts +1 -1
- package/dist/components/messages/renderers/SearchRenderer.d.ts.map +1 -1
- package/dist/components/messages/renderers/SimulatorRenderer.d.ts +1 -1
- package/dist/components/messages/renderers/SimulatorRenderer.d.ts.map +1 -1
- package/dist/components/messages/renderers/SkillRenderer.d.ts +1 -1
- package/dist/components/messages/renderers/SkillRenderer.d.ts.map +1 -1
- package/dist/components/messages/renderers/TerminalRenderer.d.ts +1 -1
- package/dist/components/messages/renderers/TerminalRenderer.d.ts.map +1 -1
- package/dist/components/messages/renderers/TodosRenderer.d.ts +1 -1
- package/dist/components/messages/renderers/TodosRenderer.d.ts.map +1 -1
- package/dist/components/messages/renderers/ToolErrorDisplay.d.ts +1 -1
- package/dist/components/messages/renderers/ToolErrorDisplay.d.ts.map +1 -1
- package/dist/components/messages/renderers/TreeRenderer.d.ts +1 -1
- package/dist/components/messages/renderers/TreeRenderer.d.ts.map +1 -1
- package/dist/components/messages/renderers/WebSearchRenderer.d.ts +1 -1
- package/dist/components/messages/renderers/WebSearchRenderer.d.ts.map +1 -1
- package/dist/components/messages/renderers/WriteRenderer.d.ts +1 -1
- package/dist/components/messages/renderers/WriteRenderer.d.ts.map +1 -1
- package/dist/components/messages/renderers/index.d.ts +1 -1
- package/dist/components/messages/renderers/index.d.ts.map +1 -1
- package/dist/components/messages/renderers/shared/CopyButton.d.ts +1 -1
- package/dist/components/messages/renderers/shared/CopyButton.d.ts.map +1 -1
- package/dist/components/messages/renderers/shared/ImagePreview.d.ts +1 -1
- package/dist/components/messages/renderers/shared/ImagePreview.d.ts.map +1 -1
- package/dist/components/messages/renderers/shared/ToolContentBox.d.ts +1 -1
- package/dist/components/messages/renderers/shared/ToolContentBox.d.ts.map +1 -1
- package/dist/components/messages/renderers/shared/ToolHeader.d.ts +6 -6
- package/dist/components/messages/renderers/shared/ToolHeader.d.ts.map +1 -1
- package/dist/components/messages/threadDensity.d.ts +1 -1
- package/dist/components/messages/threadDensity.d.ts.map +1 -1
- package/dist/components/sessions/EditableTitle.d.ts +1 -1
- package/dist/components/sessions/EditableTitle.d.ts.map +1 -1
- package/dist/components/sessions/LeanHeader.d.ts +1 -1
- package/dist/components/sessions/LeanHeader.d.ts.map +1 -1
- package/dist/components/sessions/SessionHeader.d.ts +1 -1
- package/dist/components/sessions/SessionHeader.d.ts.map +1 -1
- package/dist/components/sessions/SessionItem.d.ts +1 -0
- package/dist/components/sessions/SessionItem.d.ts.map +1 -1
- package/dist/components/sessions/SessionListContainer.d.ts.map +1 -1
- package/dist/components/ui/CodeMirrorViewer.d.ts +1 -1
- package/dist/components/ui/CodeMirrorViewer.d.ts.map +1 -1
- package/dist/components/ui/ConfirmationDialog.d.ts +1 -1
- package/dist/components/ui/ConfirmationDialog.d.ts.map +1 -1
- package/dist/components/ui/Modal.d.ts +1 -1
- package/dist/components/ui/Modal.d.ts.map +1 -1
- package/dist/components/ui/SidebarHeader.d.ts +1 -1
- package/dist/components/ui/SidebarHeader.d.ts.map +1 -1
- package/dist/components/ui/StableSpinner.d.ts +1 -1
- package/dist/components/ui/StableSpinner.d.ts.map +1 -1
- package/dist/components/ui/Toaster.d.ts +1 -1
- package/dist/components/ui/Toaster.d.ts.map +1 -1
- package/dist/components/ui/ToolApprovalDialog.d.ts +1 -1
- package/dist/components/ui/ToolApprovalDialog.d.ts.map +1 -1
- package/dist/components/workspace/ToolActivityToggle.d.ts +1 -1
- package/dist/components/workspace/ToolActivityToggle.d.ts.map +1 -1
- package/dist/components/workspace/ToolPreviewPanel.d.ts +1 -1
- package/dist/components/workspace/ToolPreviewPanel.d.ts.map +1 -1
- package/dist/components/workspace/ViewerStatusBar.d.ts +4 -4
- package/dist/components/workspace/ViewerStatusBar.d.ts.map +1 -1
- package/dist/hooks/index.js +76 -39
- package/dist/hooks/index.js.map +8 -8
- package/dist/hooks/useFileUpload.d.ts.map +1 -1
- package/dist/hooks/useSessions.d.ts +4 -0
- package/dist/hooks/useSessions.d.ts.map +1 -1
- package/dist/hooks/useSimulator.d.ts.map +1 -1
- package/dist/index.js +1005 -544
- package/dist/index.js.map +16 -16
- package/dist/lib/api-client/index.d.ts.map +1 -1
- package/dist/lib/api-client/secure-input.d.ts.map +1 -1
- package/dist/lib/api-client/sessions.d.ts.map +1 -1
- package/dist/lib/api-client/usage.d.ts +9 -2
- package/dist/lib/api-client/usage.d.ts.map +1 -1
- package/dist/lib/api-client/utils.d.ts +12 -1
- package/dist/lib/api-client/utils.d.ts.map +1 -1
- package/dist/lib/index.js +40 -28
- package/dist/lib/index.js.map +6 -6
- package/dist/types/api.d.ts +2 -0
- package/dist/types/api.d.ts.map +1 -1
- package/package.json +5 -4
package/dist/hooks/index.js.map
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
"sources": ["../src/hooks/useConfig.ts", "../src/lib/api-client/sessions.ts", "../src/lib/api-client/utils.ts", "../src/lib/platform.ts", "../src/lib/config.ts", "../src/lib/api-client/git.ts", "../src/lib/api-client/config.ts", "../src/lib/api-client/files.ts", "../src/lib/api-client/branches.ts", "../src/lib/api-client/approval.ts", "../src/lib/api-client/ottorouter.ts", "../src/lib/api-client/auth.ts", "../src/lib/api-client/skills.ts", "../src/lib/api-client/usage.ts", "../src/lib/api-client/dictation.ts", "../src/lib/api-client/secure-input.ts", "../src/lib/api-client/index.ts", "../src/hooks/usePreferences.ts", "../src/hooks/useFiles.ts", "../src/hooks/useGit.ts", "../src/stores/gitStore.ts", "../src/stores/sessionFilesStore.ts", "../src/stores/researchStore.ts", "../src/stores/settingsStore.ts", "../src/stores/tunnelStore.ts", "../src/stores/fileBrowserStore.ts", "../src/stores/mcpStore.ts", "../src/stores/skillsStore.ts", "../src/stores/viewerTabsStore.ts", "../src/hooks/useMessages.ts", "../src/hooks/useQueueState.ts", "../src/hooks/useSessions.ts", "../src/hooks/useSessionStream.ts", "../src/lib/sse-client.ts", "../src/stores/toolApprovalStore.ts", "../src/stores/secureInputStore.ts", "../src/hooks/useClientEvents.ts", "../src/stores/toastStore.ts", "../src/lib/open-url.ts", "../src/hooks/useTheme.ts", "../src/hooks/useWorkingDirectory.ts", "../src/hooks/useKeyboardShortcuts.ts", "../src/stores/focusStore.ts", "../src/stores/sidebarStore.ts", "../src/stores/filePickerStore.ts", "../src/stores/terminalStore.ts", "../src/hooks/useImageUpload.ts", "../src/hooks/useFileUpload.ts", "../src/hooks/useSessionFiles.ts", "../src/hooks/useBranch.ts", "../src/hooks/useResearch.ts", "../src/stores/pendingResearchStore.ts", "../src/hooks/useOttoRouterPayments.ts", "../src/stores/ottorouterStore.ts", "../src/stores/topupApprovalStore.ts", "../src/hooks/useOttoRouterBalance.ts", "../src/stores/usageStore.ts", "../src/hooks/useShareStatus.ts", "../src/hooks/useToolApprovalShortcuts.ts", "../src/hooks/useTopupCallback.ts", "../src/hooks/useAuthStatus.ts", "../src/stores/onboardingStore.ts", "../src/hooks/useTunnel.ts", "../src/hooks/useProviderUsage.ts", "../src/hooks/useFileBrowser.ts", "../src/hooks/useMCP.ts", "../src/hooks/useSkills.ts", "../src/hooks/useContainerWidth.ts", "../src/hooks/useVoiceInput.ts", "../src/hooks/useDictationModels.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport { apiClient } from '../lib/api-client';\n\ntype ConfigData = Awaited<ReturnType<typeof apiClient.getConfig>>;\n\nexport function useConfig() {\n\treturn useQuery({\n\t\tqueryKey: ['config'],\n\t\tqueryFn: () => apiClient.getConfig(),\n\t\tstaleTime: 30000,\n\t});\n}\n\nexport function useModels(provider?: string) {\n\treturn useQuery({\n\t\tqueryKey: ['models', provider],\n\t\tqueryFn: () => (provider ? apiClient.getModels(provider) : null),\n\t\tenabled: !!provider,\n\t});\n}\n\nexport function useAllModels() {\n\treturn useQuery({\n\t\tqueryKey: ['models', 'all'],\n\t\tqueryFn: () => apiClient.getAllModels(),\n\t});\n}\n\nexport function useUpdateDefaults() {\n\tconst queryClient = useQueryClient();\n\n\treturn useMutation({\n\t\tmutationFn: (data: {\n\t\t\tagent?: string;\n\t\t\tprovider?: string;\n\t\t\tmodel?: string;\n\t\t\ttoolApproval?: 'auto' | 'dangerous' | 'all' | 'yolo';\n\t\t\tguidedMode?: boolean;\n\t\t\treasoningText?: boolean;\n\t\t\treasoningLevel?: 'minimal' | 'low' | 'medium' | 'high' | 'max' | 'xhigh';\n\t\t\ttheme?: 'light' | 'dark';\n\t\t\tvimMode?: boolean;\n\t\t\tcompactThread?: boolean;\n\t\t\tfontFamily?: string;\n\t\t\tsmartEdges?: boolean;\n\t\t\treleaseToSend?: boolean;\n\t\t\tfullWidthContent?: boolean;\n\t\t\tautoCompactThresholdTokens?: number | null;\n\t\t\tscope?: 'global' | 'local';\n\t\t}) => apiClient.updateDefaults(data),\n\t\tonMutate: async (data) => {\n\t\t\tawait queryClient.cancelQueries({ queryKey: ['config'] });\n\n\t\t\tconst previousConfig = queryClient.getQueryData<ConfigData>(['config']);\n\t\t\tif (previousConfig) {\n\t\t\t\tconst defaultUpdates = Object.fromEntries(\n\t\t\t\t\tObject.entries(data).filter(\n\t\t\t\t\t\t([key, value]) => key !== 'scope' && value !== undefined,\n\t\t\t\t\t),\n\t\t\t\t) as Partial<ConfigData['defaults']>;\n\n\t\t\t\tqueryClient.setQueryData<ConfigData>(['config'], {\n\t\t\t\t\t...previousConfig,\n\t\t\t\t\tdefaults: {\n\t\t\t\t\t\t...previousConfig.defaults,\n\t\t\t\t\t\t...defaultUpdates,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn { previousConfig };\n\t\t},\n\t\tonError: (_error, _data, context) => {\n\t\t\tif (context?.previousConfig) {\n\t\t\t\tqueryClient.setQueryData(['config'], context.previousConfig);\n\t\t\t}\n\t\t},\n\t\tonSuccess: () => {\n\t\t\tqueryClient.invalidateQueries({ queryKey: ['config'] });\n\t\t},\n\t});\n}\n",
|
|
6
|
-
"import {\n\tcreateSession as apiCreateSession,\n\tlistSessions as apiListSessions,\n\tlistMessages as apiListMessages,\n\tcreateMessage as apiCreateMessage,\n\tabortSession as apiAbortSession,\n\tdeleteSession as apiDeleteSession,\n\tmarkSessionViewed as apiMarkSessionViewed,\n\tupdateSession as apiUpdateSession,\n\tgetSessionQueue as apiGetSessionQueue,\n\tremoveFromQueue as apiRemoveFromQueue,\n\tretryMessage as apiRetryMessage,\n\
|
|
7
|
-
"import { client } from '@ottocode/api';\nimport
|
|
6
|
+
"import {\n\tcreateSession as apiCreateSession,\n\tlistSessions as apiListSessions,\n\tlistMessages as apiListMessages,\n\tcreateMessage as apiCreateMessage,\n\tabortSession as apiAbortSession,\n\tdeleteSession as apiDeleteSession,\n\tmarkSessionViewed as apiMarkSessionViewed,\n\tupdateSession as apiUpdateSession,\n\tgetSessionQueue as apiGetSessionQueue,\n\tremoveFromQueue as apiRemoveFromQueue,\n\tretryMessage as apiRetryMessage,\n\tcreateSessionHandoff as apiCreateSessionHandoff,\n\tsendQueuedMessageNow as apiSendQueuedMessageNow,\n\tbuildSessionStreamUrl,\n\ttype CreateSessionData,\n\ttype CreateMessageData,\n} from '@ottocode/api';\nimport type {\n\tSession,\n\tMessage,\n\tCreateSessionRequest,\n\tSendMessageRequest,\n\tSendMessageResponse,\n\tUpdateSessionRequest,\n\tSessionsPage,\n} from '../../types/api';\nimport {\n\textractErrorMessage,\n\tconvertSession,\n\tconvertMessage,\n\tgetBaseUrl,\n} from './utils';\n\ntype ApiSession = Parameters<typeof convertSession>[0];\n\nexport const sessionsMixin = {\n\tasync getSessions(): Promise<Session[]> {\n\t\tconst page = await this.getSessionsPage({ limit: 200 });\n\t\treturn page.items;\n\t},\n\n\tasync getSessionsPage(\n\t\tparams: { limit?: number; offset?: number } = {},\n\t): Promise<SessionsPage> {\n\t\tconst { limit = 50, offset = 0 } = params;\n\t\tconst response = await apiListSessions({\n\t\t\tquery: { limit, offset },\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\tconst data = response.data;\n\t\treturn {\n\t\t\titems: (data?.items ?? []).map((s) => convertSession(s as ApiSession)),\n\t\t\thasMore: data?.hasMore ?? false,\n\t\t\tnextOffset: data?.nextOffset ?? null,\n\t\t};\n\t},\n\n\tasync createSession(data: CreateSessionRequest): Promise<Session> {\n\t\tconst response = await apiCreateSession({\n\t\t\tbody: data as CreateSessionData['body'],\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\tif (!response.data) throw new Error('No data returned from create session');\n\t\treturn convertSession(response.data as ApiSession);\n\t},\n\n\tasync updateSession(\n\t\tsessionId: string,\n\t\tdata: UpdateSessionRequest,\n\t): Promise<Session> {\n\t\tconst response = await apiUpdateSession({\n\t\t\tpath: { sessionId },\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: API type mismatch\n\t\t\tbody: data as any,\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn convertSession(response.data as ApiSession);\n\t},\n\n\tasync markSessionViewed(sessionId: string): Promise<Session> {\n\t\tconst response = await apiMarkSessionViewed({ path: { sessionId } });\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn convertSession(response.data as ApiSession);\n\t},\n\n\tasync deleteSession(sessionId: string): Promise<{ success: boolean }> {\n\t\tconst response = await apiDeleteSession({ path: { sessionId } });\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as { success: boolean };\n\t},\n\n\tasync createHandoff(sessionId: string): Promise<{\n\t\tsession: Session;\n\t\tsessionId: string;\n\t\tsourceSessionId: string;\n\t\tmessage: string;\n\t}> {\n\t\tconst response = await apiCreateSessionHandoff({ path: { sessionId } });\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\tconst data = response.data;\n\t\tif (!data?.session || !data?.sessionId) {\n\t\t\tthrow new Error('No data returned from handoff');\n\t\t}\n\t\treturn {\n\t\t\tsession: convertSession(data.session as ApiSession),\n\t\t\tsessionId: String(data.sessionId),\n\t\t\tsourceSessionId: String(data.sourceSessionId),\n\t\t\tmessage: String(data.message ?? ''),\n\t\t};\n\t},\n\n\tasync abortSession(sessionId: string): Promise<{ success: boolean }> {\n\t\tconst response = await apiAbortSession({\n\t\t\tpath: { sessionId },\n\t\t\tbody: {},\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as { success: boolean };\n\t},\n\n\tasync abortMessage(\n\t\tsessionId: string,\n\t\t_messageId: string,\n\t): Promise<{ success: boolean; wasRunning: boolean; messageId: string }> {\n\t\tconst response = await apiAbortSession({\n\t\t\tpath: { sessionId },\n\t\t\tbody: {},\n\t\t});\n\t\tif (response.error) throw new Error('Failed to abort message');\n\t\treturn response.data as {\n\t\t\tsuccess: boolean;\n\t\t\twasRunning: boolean;\n\t\t\tmessageId: string;\n\t\t};\n\t},\n\n\tasync getQueueState(sessionId: string): Promise<{\n\t\tcurrentMessageId: string | null;\n\t\tqueuedMessages: Array<{ messageId: string; position: number }>;\n\t\tisRunning: boolean;\n\t}> {\n\t\tconst response = await apiGetSessionQueue({ path: { sessionId } });\n\t\tif (response.error) throw new Error('Failed to get queue state');\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn response.data as any;\n\t},\n\n\tasync removeFromQueue(\n\t\tsessionId: string,\n\t\tmessageId: string,\n\t): Promise<{\n\t\tsuccess: boolean;\n\t\tremoved: boolean;\n\t\twasQueued?: boolean;\n\t\twasRunning?: boolean;\n\t}> {\n\t\tconst response = await apiRemoveFromQueue({\n\t\t\tpath: { sessionId, messageId },\n\t\t});\n\t\tif (response.error) throw new Error('Failed to remove from queue');\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn response.data as any;\n\t},\n\n\tasync sendQueuedMessageNow(\n\t\tsessionId: string,\n\t\tmessageId: string,\n\t): Promise<{\n\t\tsuccess: boolean;\n\t\tpromoted: boolean;\n\t\twasQueued?: boolean;\n\t\twasRunning?: boolean;\n\t\tpreemptedMessageId?: string | null;\n\t}> {\n\t\tconst response = await apiSendQueuedMessageNow({\n\t\t\tpath: { sessionId, messageId },\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as {\n\t\t\tsuccess: boolean;\n\t\t\tpromoted: boolean;\n\t\t\twasQueued?: boolean;\n\t\t\twasRunning?: boolean;\n\t\t\tpreemptedMessageId?: string | null;\n\t\t};\n\t},\n\n\tasync getMessages(sessionId: string): Promise<Message[]> {\n\t\tconst response = await apiListMessages({ path: { id: sessionId } });\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn (response.data || []).map(convertMessage);\n\t},\n\n\tasync sendMessage(\n\t\tsessionId: string,\n\t\tdata: SendMessageRequest,\n\t): Promise<SendMessageResponse> {\n\t\tconst response = await apiCreateMessage({\n\t\t\tpath: { id: sessionId },\n\t\t\tbody: data as CreateMessageData['body'],\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as SendMessageResponse;\n\t},\n\n\tgetStreamUrl(sessionId: string): string {\n\t\treturn buildSessionStreamUrl({ baseUrl: getBaseUrl(), sessionId });\n\t},\n\n\tasync retryMessage(\n\t\tsessionId: string,\n\t\tmessageId: string,\n\t): Promise<{ success: boolean; messageId: string }> {\n\t\tconst response = await apiRetryMessage({\n\t\t\tpath: { sessionId, messageId },\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn response.data as any;\n\t},\n};\n",
|
|
7
|
+
"import { client } from '@ottocode/api';\nimport {\n\tgetRuntimeApiBaseUrl,\n\tsetRuntimeApiBaseUrl as persistRuntimeApiBaseUrl,\n} from '../config';\nimport type { Session, Message } from '../../types/api';\n\ntype ApiSession = Record<string, unknown> & {\n\ttitle?: string | null;\n\tcreatedAt?: string | number;\n\tlastActiveAt?: string | number;\n\tlastViewedAt?: string | number | null;\n\tpinnedAt?: string | number | null;\n};\n\ntype ApiMessage = Record<string, unknown> & {\n\tcreatedAt?: string | number;\n\tcompletedAt?: string | number | null;\n};\n\nfunction getClientAdapter(): 'fetch' | undefined {\n\tif (typeof window !== 'undefined' && typeof window.fetch === 'function') {\n\t\treturn 'fetch';\n\t}\n\treturn undefined;\n}\n\nexport function extractErrorMessage(error: unknown): string {\n\tif (!error) return 'Unknown error';\n\tif (typeof error === 'string') return error;\n\tif (error && typeof error === 'object') {\n\t\tconst errObj = error as Record<string, unknown>;\n\t\tif (errObj.error && typeof errObj.error === 'object') {\n\t\t\tconst innerError = errObj.error as Record<string, unknown>;\n\t\t\tif (typeof innerError.message === 'string') return innerError.message;\n\t\t}\n\t\tif (typeof errObj.error === 'string') return errObj.error;\n\t\tif (typeof errObj.message === 'string') return errObj.message;\n\t\ttry {\n\t\t\treturn JSON.stringify(error);\n\t\t} catch {\n\t\t\treturn 'Error occurred (unable to parse)';\n\t\t}\n\t}\n\treturn 'Unknown error';\n}\n\nexport function configureApiClient() {\n\tconst baseURL = getRuntimeApiBaseUrl();\n\tclient.setConfig({\n\t\tbaseURL,\n\t\tadapter: getClientAdapter(),\n\t});\n}\n\nconfigureApiClient();\n\nexport function getBaseUrl(): string {\n\treturn getRuntimeApiBaseUrl();\n}\n\nexport function setRuntimeApiBaseUrl(value: string): string {\n\tconst baseUrl = persistRuntimeApiBaseUrl(value);\n\tconfigureApiClient();\n\treturn baseUrl;\n}\n\nexport function convertSession(apiSession: ApiSession): Session {\n\treturn {\n\t\t...apiSession,\n\t\ttitle: apiSession.title ?? null,\n\t\tcreatedAt:\n\t\t\ttypeof apiSession.createdAt === 'string'\n\t\t\t\t? new Date(apiSession.createdAt).getTime()\n\t\t\t\t: apiSession.createdAt,\n\t\tlastActiveAt:\n\t\t\ttypeof apiSession.lastActiveAt === 'string'\n\t\t\t\t? new Date(apiSession.lastActiveAt).getTime()\n\t\t\t\t: apiSession.lastActiveAt,\n\t\tlastViewedAt:\n\t\t\ttypeof apiSession.lastViewedAt === 'string'\n\t\t\t\t? new Date(apiSession.lastViewedAt).getTime()\n\t\t\t\t: apiSession.lastViewedAt,\n\t\tpinnedAt:\n\t\t\ttypeof apiSession.pinnedAt === 'string'\n\t\t\t\t? new Date(apiSession.pinnedAt).getTime()\n\t\t\t\t: apiSession.pinnedAt,\n\t} as Session;\n}\n\nexport function convertMessage(apiMessage: ApiMessage): Message {\n\treturn {\n\t\t...apiMessage,\n\t\tcreatedAt:\n\t\t\ttypeof apiMessage.createdAt === 'string'\n\t\t\t\t? new Date(apiMessage.createdAt).getTime()\n\t\t\t\t: apiMessage.createdAt,\n\t\tcompletedAt: apiMessage.completedAt\n\t\t\t? typeof apiMessage.completedAt === 'string'\n\t\t\t\t? new Date(apiMessage.completedAt).getTime()\n\t\t\t\t: apiMessage.completedAt\n\t\t\t: null,\n\t} as Message;\n}\n",
|
|
8
8
|
"export interface OttoPlatformNotification {\n\tid: string;\n\ttitle: string;\n\tbody?: string;\n\tsessionId?: string;\n}\n\ninterface OttoPlatformWindow extends Window {\n\tOTTO_OPEN_URL?: (url: string) => void | Promise<void>;\n\tOTTO_SHOW_NOTIFICATION?: (\n\t\tnotification: OttoPlatformNotification,\n\t) => void | Promise<void>;\n\tOTTO_LIST_SYSTEM_FONTS?: () => Promise<string[]>;\n\tOTTO_SET_DESKTOP_FONT?: (fontFamily: string) => void | Promise<void>;\n\tOTTO_OPEN_SESSION?: (sessionId: string) => void | Promise<void>;\n\tOTTO_IS_WINDOW_FOCUSED?: () => boolean;\n}\n\nfunction getPlatformWindow(): OttoPlatformWindow | null {\n\tif (typeof window === 'undefined') return null;\n\treturn window as OttoPlatformWindow;\n}\n\nexport function openPlatformUrl(url: string): boolean {\n\tconst win = getPlatformWindow();\n\tif (!win?.OTTO_OPEN_URL) return false;\n\tvoid win.OTTO_OPEN_URL(url);\n\treturn true;\n}\n\nexport function showPlatformNotification(\n\tnotification: OttoPlatformNotification,\n): boolean {\n\tconst win = getPlatformWindow();\n\tif (!win?.OTTO_SHOW_NOTIFICATION) return false;\n\tvoid win.OTTO_SHOW_NOTIFICATION(notification);\n\treturn true;\n}\n\nexport function listPlatformSystemFonts(): Promise<string[]> | null {\n\tconst win = getPlatformWindow();\n\tif (!win?.OTTO_LIST_SYSTEM_FONTS) return null;\n\treturn win.OTTO_LIST_SYSTEM_FONTS();\n}\n\nexport function notifyPlatformFontFamilyChanged(fontFamily: string): boolean {\n\tconst win = getPlatformWindow();\n\tif (!win?.OTTO_SET_DESKTOP_FONT) return false;\n\tvoid win.OTTO_SET_DESKTOP_FONT(fontFamily);\n\treturn true;\n}\n\nexport function openPlatformSession(sessionId: string): boolean {\n\tconst win = getPlatformWindow();\n\tif (!win?.OTTO_OPEN_SESSION) return false;\n\tvoid win.OTTO_OPEN_SESSION(sessionId);\n\treturn true;\n}\n\nexport function getPlatformWindowFocused(): boolean | null {\n\tconst win = getPlatformWindow();\n\tif (!win?.OTTO_IS_WINDOW_FOCUSED) return null;\n\treturn win.OTTO_IS_WINDOW_FOCUSED();\n}\n\nexport function hasPlatformOpenUrl(): boolean {\n\treturn !!getPlatformWindow()?.OTTO_OPEN_URL;\n}\n\nexport function hasPlatformSystemFonts(): boolean {\n\treturn !!getPlatformWindow()?.OTTO_LIST_SYSTEM_FONTS;\n}\n\nexport function isPlatformDesktop(): boolean {\n\tif (typeof window === 'undefined') return false;\n\ttry {\n\t\treturn (\n\t\t\t'__TAURI__' in window ||\n\t\t\t'__TAURI_INTERNALS__' in window ||\n\t\t\t'__TAURI_METADATA__' in window\n\t\t);\n\t} catch {\n\t\treturn false;\n\t}\n}\n",
|
|
9
9
|
"import { isPlatformDesktop } from './platform';\n\n// Extend Window interface to include custom properties\ninterface OttoWindow extends Window {\n\t__OTTO_API_URL__?: string;\n\tOTTO_SERVER_URL?: string;\n}\n\nexport const RUNTIME_API_BASE_URL_STORAGE_KEY = 'otto-api-base-url';\n\nexport function normalizeApiBaseUrl(value: string): string {\n\tconst trimmed = value.trim();\n\tif (!trimmed) {\n\t\tthrow new Error('Enter an otto tunnel URL.');\n\t}\n\n\tlet url: URL;\n\ttry {\n\t\turl = new URL(trimmed);\n\t} catch {\n\t\tthrow new Error('Enter a valid URL, including http:// or https://.');\n\t}\n\n\tif (url.protocol !== 'http:' && url.protocol !== 'https:') {\n\t\tthrow new Error('Tunnel URL must start with http:// or https://.');\n\t}\n\n\turl.hash = '';\n\turl.pathname = url.pathname.replace(/\\/+$/, '') || '';\n\treturn url.toString().replace(/\\/+$/, '');\n}\n\nfunction getStoredApiBaseUrl(): string | undefined {\n\tif (typeof window === 'undefined') return undefined;\n\tif (isPlatformDesktop()) return undefined;\n\ttry {\n\t\treturn (\n\t\t\twindow.localStorage.getItem(RUNTIME_API_BASE_URL_STORAGE_KEY) ?? undefined\n\t\t);\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nexport function getConfiguredRuntimeApiBaseUrl(): string | undefined {\n\tif (typeof window === 'undefined') return undefined;\n\n\tconst params = new URLSearchParams(window.location.search);\n\tconst urlParam = params.get('url');\n\tif (urlParam) return normalizeApiBaseUrl(urlParam);\n\n\tconst win = window as OttoWindow;\n\tif (win.OTTO_SERVER_URL) return normalizeApiBaseUrl(win.OTTO_SERVER_URL);\n\tif (win.__OTTO_API_URL__) return normalizeApiBaseUrl(win.__OTTO_API_URL__);\n\n\tconst storedUrl = getStoredApiBaseUrl();\n\tif (storedUrl) return normalizeApiBaseUrl(storedUrl);\n\n\treturn undefined;\n}\n\nexport function hasConfiguredRuntimeApiBaseUrl(): boolean {\n\treturn Boolean(getConfiguredRuntimeApiBaseUrl());\n}\n\nexport function setRuntimeApiBaseUrl(value: string): string {\n\tconst baseUrl = normalizeApiBaseUrl(value);\n\tif (typeof window !== 'undefined') {\n\t\tconst win = window as OttoWindow;\n\t\twin.OTTO_SERVER_URL = baseUrl;\n\t\tif (!isPlatformDesktop()) {\n\t\t\ttry {\n\t\t\t\twindow.localStorage.setItem(RUNTIME_API_BASE_URL_STORAGE_KEY, baseUrl);\n\t\t\t} catch {\n\t\t\t\t// Ignore storage errors; the in-memory URL still works for this page load.\n\t\t\t}\n\t\t}\n\t}\n\treturn baseUrl;\n}\n\nexport function clearRuntimeApiBaseUrl() {\n\tif (typeof window === 'undefined') return;\n\tconst win = window as OttoWindow;\n\tdelete win.OTTO_SERVER_URL;\n\tdelete win.__OTTO_API_URL__;\n\ttry {\n\t\twindow.localStorage.removeItem(RUNTIME_API_BASE_URL_STORAGE_KEY);\n\t} catch {\n\t\t// Ignore storage errors.\n\t}\n}\n\n// This function will execute at runtime in the browser\nfunction computeApiBaseUrl(): string {\n\tconst runtimeUrl = getConfiguredRuntimeApiBaseUrl();\n\tif (runtimeUrl) {\n\t\treturn runtimeUrl;\n\t}\n\n\tconst envUrl = import.meta.env?.VITE_API_BASE_URL;\n\tif (envUrl) return normalizeApiBaseUrl(envUrl);\n\n\t// Fallback for standalone dev\n\treturn 'http://localhost:9100';\n}\n\nexport function getRuntimeApiBaseUrl(): string {\n\treturn computeApiBaseUrl();\n}\n\nexport const API_BASE_URL = computeApiBaseUrl();\n\nexport const config = {\n\tapiBaseUrl: API_BASE_URL,\n};\n",
|
|
10
10
|
"import {\n\tgetGitStatus as apiGetGitStatus,\n\tgetGitDiff as apiGetGitDiff,\n\tgetGitBranch as apiGetGitBranch,\n\tstageFiles as apiStageFiles,\n\tunstageFiles as apiUnstageFiles,\n\trestoreFiles as apiRestoreFiles,\n\tdeleteFiles as apiDeleteFiles,\n\tcommitChanges as apiCommitChanges,\n\tgenerateCommitMessage as apiGenerateCommitMessage,\n\tpushCommits as apiPushCommits,\n\tpullChanges as apiPullChanges,\n\tperformGitRebaseAction as apiPerformGitRebaseAction,\n\tinitGitRepo as apiInitGitRepo,\n\tgetGitRemotes as apiGetGitRemotes,\n\taddGitRemote as apiAddGitRemote,\n\tremoveGitRemote as apiRemoveGitRemote,\n\tlistGitBranches as apiListGitBranches,\n\tcheckoutGitBranch as apiCheckoutGitBranch,\n\tcreateGitBranch as apiCreateGitBranch,\n} from '@ottocode/api';\nimport type {\n\tGitStatusResponse,\n\tGitDiffResponse,\n\tGitStageResponse,\n\tGitUnstageResponse,\n\tGitCommitResponse,\n\tGitGenerateCommitMessageResponse,\n\tGitBranchInfo,\n\tGitPushResponse,\n\tGitPullResponse,\n\tGitRebaseActionResponse,\n\tGitRemoteInfo,\n\tGitBranchListResponse,\n} from '../../types/api';\nimport { extractErrorMessage } from './utils';\n\nexport const gitMixin = {\n\tasync initGitRepo(): Promise<{ initialized: boolean; path: string }> {\n\t\tconst response = await apiInitGitRepo({\n\t\t\tbody: {},\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn (response.data as any)?.data;\n\t},\n\n\tasync getGitStatus(): Promise<GitStatusResponse> {\n\t\tconst response = await apiGetGitStatus();\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn (response.data as any)?.data as GitStatusResponse;\n\t},\n\n\tasync getGitDiff(\n\t\tfile: string,\n\t\tstaged: boolean = false,\n\t): Promise<GitDiffResponse> {\n\t\tconst response = await apiGetGitDiff({\n\t\t\tquery: { file, staged: staged ? 'true' : 'false' },\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn (response.data as any)?.data as GitDiffResponse;\n\t},\n\n\tasync getGitDiffFullFile(\n\t\tfile: string,\n\t\tstaged = false,\n\t): Promise<GitDiffResponse> {\n\t\tconst response = await apiGetGitDiff({\n\t\t\tquery: {\n\t\t\t\tfile,\n\t\t\t\tstaged: staged ? 'true' : 'false',\n\t\t\t\tfullFile: 'true',\n\t\t\t},\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn (response.data as any)?.data as GitDiffResponse;\n\t},\n\n\tasync generateCommitMessage(\n\t\tsessionId?: string,\n\t): Promise<GitGenerateCommitMessageResponse> {\n\t\tconst response = await apiGenerateCommitMessage({\n\t\t\tbody: sessionId ? { sessionId } : {},\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn (response.data as any)?.data as GitGenerateCommitMessageResponse;\n\t},\n\n\tasync stageFiles(files: string[]): Promise<GitStageResponse> {\n\t\tconst response = await apiStageFiles({\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: API type mismatch\n\t\t\tbody: { files } as any,\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn (response.data as any)?.data as GitStageResponse;\n\t},\n\n\tasync unstageFiles(files: string[]): Promise<GitUnstageResponse> {\n\t\tconst response = await apiUnstageFiles({\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: API type mismatch\n\t\t\tbody: { files } as any,\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn (response.data as any)?.data as GitUnstageResponse;\n\t},\n\n\tasync restoreFiles(files: string[]): Promise<{ restored: string[] }> {\n\t\tconst response = await apiRestoreFiles({\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: API type mismatch\n\t\t\tbody: { files } as any,\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn (response.data as any)?.data as { restored: string[] };\n\t},\n\n\tasync deleteFiles(files: string[]): Promise<{ deleted: string[] }> {\n\t\tconst response = await apiDeleteFiles({\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: API type mismatch\n\t\t\tbody: { files } as any,\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn (response.data as any)?.data as { deleted: string[] };\n\t},\n\n\tasync commitChanges(message: string): Promise<GitCommitResponse> {\n\t\tconst response = await apiCommitChanges({\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: API type mismatch\n\t\t\tbody: { message } as any,\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn (response.data as any)?.data as GitCommitResponse;\n\t},\n\n\tasync getGitBranch(): Promise<GitBranchInfo> {\n\t\tconst response = await apiGetGitBranch();\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn (response.data as any)?.data as GitBranchInfo;\n\t},\n\n\tasync pushCommits(): Promise<GitPushResponse> {\n\t\tconst response = await apiPushCommits({\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: API type mismatch\n\t\t\tbody: {} as any,\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn (response.data as any)?.data as GitPushResponse;\n\t},\n\n\tasync pullChanges(): Promise<GitPullResponse> {\n\t\tconst response = await apiPullChanges({\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: API type mismatch\n\t\t\tbody: {} as any,\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn (response.data as any)?.data as GitPullResponse;\n\t},\n\n\tasync performRebaseAction(\n\t\taction: 'continue' | 'abort' | 'skip',\n\t): Promise<GitRebaseActionResponse> {\n\t\tconst response = await apiPerformGitRebaseAction({\n\t\t\tbody: { action },\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn (response.data as any)?.data as GitRebaseActionResponse;\n\t},\n\n\tasync getRemotes(): Promise<GitRemoteInfo[]> {\n\t\tconst response = await apiGetGitRemotes();\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn (response.data as any)?.data?.remotes as GitRemoteInfo[];\n\t},\n\n\tasync addRemote(\n\t\tname: string,\n\t\turl: string,\n\t): Promise<{ name: string; url: string }> {\n\t\tconst response = await apiAddGitRemote({\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: API type mismatch\n\t\t\tbody: { name, url } as any,\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn (response.data as any)?.data as { name: string; url: string };\n\t},\n\n\tasync removeRemote(name: string): Promise<{ removed: string }> {\n\t\tconst response = await apiRemoveGitRemote({\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: API type mismatch\n\t\t\tbody: { name } as any,\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn (response.data as any)?.data as { removed: string };\n\t},\n\n\tasync listGitBranches(): Promise<GitBranchListResponse> {\n\t\tconst response = await apiListGitBranches();\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn (response.data as any)?.data as GitBranchListResponse;\n\t},\n\n\tasync checkoutBranch(branch: string): Promise<{ branch: string }> {\n\t\tconst response = await apiCheckoutGitBranch({\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: API type mismatch\n\t\t\tbody: { branch } as any,\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn (response.data as any)?.data as { branch: string };\n\t},\n\n\tasync createGitBranch(\n\t\tname: string,\n\t\toptions?: { startPoint?: string; checkout?: boolean },\n\t): Promise<{ branch: string; checkedOut: boolean }> {\n\t\tconst response = await apiCreateGitBranch({\n\t\t\tbody: {\n\t\t\t\tname,\n\t\t\t\t...(options?.startPoint ? { startPoint: options.startPoint } : {}),\n\t\t\t\t...(options?.checkout !== undefined\n\t\t\t\t\t? { checkout: options.checkout }\n\t\t\t\t\t: {}),\n\t\t\t\t// biome-ignore lint/suspicious/noExplicitAny: API type mismatch\n\t\t\t} as any,\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn (response.data as any)?.data as {\n\t\t\tbranch: string;\n\t\t\tcheckedOut: boolean;\n\t\t};\n\t},\n};\n",
|
|
@@ -15,9 +15,9 @@
|
|
|
15
15
|
"import {\n\tgetOttoRouterBalance as apiGetOttoRouterBalance,\n\tgetOttoRouterWallet as apiGetOttoRouterWallet,\n\tgetOttoRouterUsdcBalance as apiGetOttoRouterUsdcBalance,\n\tcreatePolarCheckout as apiCreatePolarCheckout,\n\tgetPolarTopupEstimate as apiGetPolarTopupEstimate,\n\tgetPolarTopupStatus as apiGetPolarTopupStatus,\n\tgetRazorpayTopupEstimate as apiGetRazorpayTopupEstimate,\n\tcreateRazorpayOrder as apiCreateRazorpayOrder,\n\tverifyRazorpayPayment as apiVerifyRazorpayPayment,\n\tselectTopupMethod as apiSelectTopupMethod,\n\tcancelTopup as apiCancelTopup,\n\tgetPendingTopup as apiGetPendingTopup,\n} from '@ottocode/api';\nimport { extractErrorMessage } from './utils';\n\nexport const ottorouterMixin = {\n\tasync getOttoRouterBalance(): Promise<{\n\t\twalletAddress: string;\n\t\tbalance: number;\n\t\ttotalSpent: number;\n\t\ttotalTopups: number;\n\t\trequestCount: number;\n\t\tscope?: 'wallet' | 'account';\n\t\tpayg?: {\n\t\t\twalletBalanceUsd: number;\n\t\t\taccountBalanceUsd: number;\n\t\t\trawPoolUsd: number;\n\t\t\teffectiveSpendableUsd: number;\n\t\t};\n\t\tlimits?: {\n\t\t\tenabled: boolean;\n\t\t\tdailyLimitUsd: number | null;\n\t\t\tdailySpentUsd: number;\n\t\t\tdailyRemainingUsd: number | null;\n\t\t\tmonthlyLimitUsd: number | null;\n\t\t\tmonthlySpentUsd: number;\n\t\t\tmonthlyRemainingUsd: number | null;\n\t\t\tcapRemainingUsd: number | null;\n\t\t} | null;\n\t\tsubscription?: {\n\t\t\tactive: boolean;\n\t\t\ttierId?: string;\n\t\t\ttierName?: string;\n\t\t\tcreditsIncluded?: number;\n\t\t\tcreditsUsed?: number;\n\t\t\tcreditsRemaining?: number;\n\t\t\tcreditsWeeklyLimit?: number | null;\n\t\t\tcreditsFiveHourLimit?: number | null;\n\t\t\tusageWindows?: {\n\t\t\t\tweekly: {\n\t\t\t\t\tlimit: number | null;\n\t\t\t\t\tused: number;\n\t\t\t\t\tremaining: number | null;\n\t\t\t\t\tpercentUsed: number;\n\t\t\t\t};\n\t\t\t\tfiveHour: {\n\t\t\t\t\tlimit: number | null;\n\t\t\t\t\tused: number;\n\t\t\t\t\tremaining: number | null;\n\t\t\t\t\tpercentUsed: number;\n\t\t\t\t};\n\t\t\t};\n\t\t\tperiodStart?: string;\n\t\t\tperiodEnd?: string;\n\t\t} | null;\n\t} | null> {\n\t\ttry {\n\t\t\tconst response = await apiGetOttoRouterBalance();\n\t\t\tif (response.error) return null;\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\t\treturn response.data as any;\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t},\n\n\tasync getOttoRouterWallet(): Promise<{\n\t\tconfigured: boolean;\n\t\tpublicKey?: string;\n\t\terror?: string;\n\t}> {\n\t\ttry {\n\t\t\tconst response = await apiGetOttoRouterWallet();\n\t\t\tif (response.error) return { configured: false };\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\t\treturn response.data as any;\n\t\t} catch {\n\t\t\treturn { configured: false };\n\t\t}\n\t},\n\n\tasync getOttoRouterUsdcBalance(\n\t\tnetwork: 'mainnet' | 'devnet' = 'mainnet',\n\t): Promise<{\n\t\twalletAddress: string;\n\t\tusdcBalance: number;\n\t\tnetwork: 'mainnet' | 'devnet';\n\t} | null> {\n\t\ttry {\n\t\t\tconst response = await apiGetOttoRouterUsdcBalance({\n\t\t\t\tquery: { network },\n\t\t\t});\n\t\t\tif (response.error) return null;\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\t\treturn response.data as any;\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t},\n\n\tasync getPolarTopupEstimate(amount: number): Promise<{\n\t\tcreditAmount: number;\n\t\tchargeAmount: number;\n\t\tfeeAmount: number;\n\t\tfeeBreakdown: {\n\t\t\tbasePercent: number;\n\t\t\tinternationalPercent: number;\n\t\t\tfixedCents: number;\n\t\t};\n\t} | null> {\n\t\ttry {\n\t\t\tconst response = await apiGetPolarTopupEstimate({\n\t\t\t\tquery: { amount },\n\t\t\t});\n\t\t\tif (response.error) return null;\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\t\treturn response.data as any;\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t},\n\n\tasync createPolarCheckout(\n\t\tamount: number,\n\t\tsuccessUrl: string,\n\t): Promise<{\n\t\tsuccess: boolean;\n\t\tcheckoutId: string;\n\t\tcheckoutUrl: string;\n\t\tcreditAmount: number;\n\t\tchargeAmount: number;\n\t\tfeeAmount: number;\n\t}> {\n\t\tconst response = await apiCreatePolarCheckout({\n\t\t\tbody: { amount, successUrl },\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn response.data as any;\n\t},\n\n\tasync selectTopupMethod(\n\t\tsessionId: string,\n\t\tmethod: 'crypto' | 'fiat',\n\t): Promise<{ success: boolean; method: string }> {\n\t\tconst response = await apiSelectTopupMethod({\n\t\t\tbody: { sessionId, method },\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn response.data as any;\n\t},\n\n\tasync cancelTopup(\n\t\tsessionId: string,\n\t\treason?: string,\n\t): Promise<{ success: boolean }> {\n\t\tconst response = await apiCancelTopup({\n\t\t\tbody: { sessionId, reason },\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn response.data as any;\n\t},\n\n\tasync getPendingTopup(sessionId: string): Promise<{\n\t\thasPending: boolean;\n\t\tsessionId?: string;\n\t\tmessageId?: string;\n\t\tamountUsd?: number;\n\t\tcurrentBalance?: number;\n\t\tcreatedAt?: number;\n\t}> {\n\t\ttry {\n\t\t\tconst response = await apiGetPendingTopup({\n\t\t\t\tquery: { sessionId },\n\t\t\t});\n\t\t\tif (response.error) return { hasPending: false };\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\t\treturn response.data as any;\n\t\t} catch {\n\t\t\treturn { hasPending: false };\n\t\t}\n\t},\n\n\tasync getPolarTopupStatus(checkoutId: string): Promise<{\n\t\tcheckoutId: string;\n\t\tconfirmed: boolean;\n\t\tamountUsd: number | null;\n\t\tconfirmedAt: string | null;\n\t} | null> {\n\t\ttry {\n\t\t\tconst response = await apiGetPolarTopupStatus({\n\t\t\t\tquery: { checkoutId },\n\t\t\t});\n\t\t\tif (response.error) return null;\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\t\treturn response.data as any;\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t},\n\n\tasync getRazorpayTopupEstimate(amount: number): Promise<{\n\t\tcreditAmountUsd: number;\n\t\tchargeAmountInr: number;\n\t\tfeeAmountInr: number;\n\t\tcurrency: string;\n\t\texchangeRate: number;\n\t} | null> {\n\t\ttry {\n\t\t\tconst response = await apiGetRazorpayTopupEstimate({\n\t\t\t\tquery: { amount },\n\t\t\t});\n\t\t\tif (response.error) return null;\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\t\treturn response.data as any;\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t},\n\n\tasync createRazorpayOrder(amount: number): Promise<{\n\t\tsuccess: boolean;\n\t\torderId: string;\n\t\tamount: number;\n\t\tcurrency: string;\n\t\tcreditAmountUsd: number;\n\t\tkeyId: string;\n\t}> {\n\t\tconst response = await apiCreateRazorpayOrder({\n\t\t\tbody: { amount },\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn response.data as any;\n\t},\n\n\tasync verifyRazorpayPayment(params: {\n\t\trazorpay_order_id: string;\n\t\trazorpay_payment_id: string;\n\t\trazorpay_signature: string;\n\t}): Promise<{\n\t\tsuccess: boolean;\n\t\tcredited: number;\n\t\tnewBalance: number;\n\t}> {\n\t\tconst response = await apiVerifyRazorpayPayment({\n\t\t\tbody: params,\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn response.data as any;\n\t},\n};\n",
|
|
16
16
|
"import {\n\tgetAuthStatus as apiGetAuthStatus,\n\tsetupOttoRouterWallet as apiSetupOttoRouterWallet,\n\timportOttoRouterWallet as apiImportOttoRouterWallet,\n\texportOttoRouterWallet as apiExportOttoRouterWallet,\n\taddProviderApiKey as apiAddProviderApiKey,\n\tremoveProvider as apiRemoveProvider,\n\tcompleteOnboarding as apiCompleteOnboarding,\n\tgetOAuthUrl as apiGetOAuthUrl,\n\texchangeOAuthCode as apiExchangeOAuthCode,\n\tstartOpenAiDeviceFlow as apiStartOpenAiDeviceFlow,\n\tpollOpenAiDeviceFlow as apiPollOpenAiDeviceFlow,\n\tstartCopilotDeviceFlow as apiStartCopilotDeviceFlow,\n\tpollCopilotDeviceFlow as apiPollCopilotDeviceFlow,\n\tgetCopilotAuthMethods as apiGetCopilotAuthMethods,\n\tsaveCopilotToken as apiSaveCopilotToken,\n\timportCopilotTokenFromGh as apiImportCopilotTokenFromGh,\n\tgetCopilotDiagnostics as apiGetCopilotDiagnostics,\n\tgetProviderUsage as apiGetProviderUsage,\n} from '@ottocode/api';\nimport type { ProviderUsageResponse } from '../../types/api';\nimport { extractErrorMessage, getBaseUrl } from './utils';\n\nexport const authMixin = {\n\tasync getAuthStatus(): Promise<{\n\t\tonboardingComplete: boolean;\n\t\tottorouter: { configured: boolean; publicKey?: string };\n\t\tproviders: Record<\n\t\t\tstring,\n\t\t\t{\n\t\t\t\tconfigured: boolean;\n\t\t\t\ttype?: 'api' | 'oauth' | 'wallet';\n\t\t\t\tlabel: string;\n\t\t\t\tsupportsOAuth: boolean;\n\t\t\t\tsupportsToken?: boolean;\n\t\t\t\tsupportsGhImport?: boolean;\n\t\t\t\tcustom?: boolean;\n\t\t\t\tmodelCount: number;\n\t\t\t\tcostRange?: { min: number; max: number };\n\t\t\t}\n\t\t>;\n\t\tdefaults: {\n\t\t\tagent: string;\n\t\t\tprovider: string;\n\t\t\tmodel: string;\n\t\t\ttoolApproval?: 'auto' | 'dangerous' | 'all' | 'yolo';\n\t\t};\n\t}> {\n\t\tconst response = await apiGetAuthStatus();\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn response.data as any;\n\t},\n\n\tasync setupOttoRouterWallet(): Promise<{\n\t\tsuccess: boolean;\n\t\tpublicKey: string;\n\t\tisNew: boolean;\n\t}> {\n\t\tconst response = await apiSetupOttoRouterWallet();\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn response.data as any;\n\t},\n\n\tasync importOttoRouterWallet(privateKey: string): Promise<{\n\t\tsuccess: boolean;\n\t\tpublicKey: string;\n\t}> {\n\t\tconst response = await apiImportOttoRouterWallet({\n\t\t\tbody: { privateKey },\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn response.data as any;\n\t},\n\n\tasync exportOttoRouterWallet(): Promise<{\n\t\tsuccess: boolean;\n\t\tpublicKey: string;\n\t\tprivateKey: string;\n\t}> {\n\t\tconst response = await apiExportOttoRouterWallet();\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn response.data as any;\n\t},\n\n\tasync addProvider(\n\t\tprovider: string,\n\t\tapiKey: string,\n\t): Promise<{ success: boolean; provider: string }> {\n\t\tconst response = await apiAddProviderApiKey({\n\t\t\tpath: { provider },\n\t\t\tbody: { apiKey },\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn response.data as any;\n\t},\n\n\tasync removeProvider(\n\t\tprovider: string,\n\t): Promise<{ success: boolean; provider: string }> {\n\t\tconst response = await apiRemoveProvider({ path: { provider } });\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn response.data as any;\n\t},\n\n\tasync completeOnboarding(): Promise<{ success: boolean }> {\n\t\tconst response = await apiCompleteOnboarding();\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn response.data as any;\n\t},\n\n\tgetOAuthStartUrl(provider: string, mode?: string): string {\n\t\tconst baseUrl = `${getBaseUrl()}/v1/auth/${provider}/oauth/start`;\n\t\tif (mode) return `${baseUrl}?mode=${mode}`;\n\t\treturn baseUrl;\n\t},\n\n\tasync getOAuthUrl(\n\t\tprovider: string,\n\t\tmode?: string,\n\t): Promise<{ url: string; sessionId: string; provider: string }> {\n\t\tconst response = await apiGetOAuthUrl({\n\t\t\tpath: { provider },\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: API type mismatch\n\t\t\tbody: { mode } as any,\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn response.data as any;\n\t},\n\n\tasync exchangeOAuthCode(\n\t\tprovider: string,\n\t\tcode: string,\n\t\tsessionId: string,\n\t): Promise<{ success: boolean; provider: string }> {\n\t\tconst response = await apiExchangeOAuthCode({\n\t\t\tpath: { provider },\n\t\t\tbody: { code, sessionId },\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn response.data as any;\n\t},\n\n\tasync startOpenAIDeviceFlow(): Promise<{\n\t\tsessionId: string;\n\t\tuserCode: string;\n\t\tverificationUri: string;\n\t\tinterval: number;\n\t}> {\n\t\tconst response = await apiStartOpenAiDeviceFlow();\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn response.data as any;\n\t},\n\n\tasync pollOpenAIDeviceFlow(\n\t\tsessionId: string,\n\t): Promise<{ status: 'complete' | 'pending' | 'error'; error?: string }> {\n\t\tconst response = await apiPollOpenAiDeviceFlow({\n\t\t\tbody: { sessionId },\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn response.data as any;\n\t},\n\n\tasync startCopilotDeviceFlow(): Promise<{\n\t\tsessionId: string;\n\t\tuserCode: string;\n\t\tverificationUri: string;\n\t\tinterval: number;\n\t}> {\n\t\tconst response = await apiStartCopilotDeviceFlow();\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn response.data as any;\n\t},\n\n\tasync pollCopilotDeviceFlow(\n\t\tsessionId: string,\n\t): Promise<{ status: 'complete' | 'pending' | 'error'; error?: string }> {\n\t\tconst response = await apiPollCopilotDeviceFlow({\n\t\t\tbody: { sessionId },\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn response.data as any;\n\t},\n\n\tasync getCopilotAuthMethods(): Promise<{\n\t\toauth: boolean;\n\t\ttoken: boolean;\n\t\tghImport: { available: boolean; authenticated: boolean; reason?: string };\n\t}> {\n\t\tconst response = await apiGetCopilotAuthMethods();\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn response.data as any;\n\t},\n\n\tasync saveCopilotToken(token: string): Promise<{\n\t\tsuccess: boolean;\n\t\tprovider: string;\n\t\tsource: 'token';\n\t\tmodelCount: number;\n\t\thasGpt52Codex: boolean;\n\t\tsampleModels: string[];\n\t}> {\n\t\tconst response = await apiSaveCopilotToken({ body: { token } });\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn response.data as any;\n\t},\n\n\tasync importCopilotTokenFromGh(): Promise<{\n\t\tsuccess: boolean;\n\t\tprovider: string;\n\t\tsource: 'gh';\n\t\tmodelCount: number;\n\t\thasGpt52Codex: boolean;\n\t\tsampleModels: string[];\n\t}> {\n\t\tconst response = await apiImportCopilotTokenFromGh();\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn response.data as any;\n\t},\n\n\tasync getCopilotDiagnostics(): Promise<{\n\t\ttokenSources: Array<{\n\t\t\tsource: 'env' | 'stored';\n\t\t\tconfigured: boolean;\n\t\t\tmodelCount?: number;\n\t\t\thasGpt52Codex?: boolean;\n\t\t\tsampleModels?: string[];\n\t\t\trestrictedByOrgPolicy?: boolean;\n\t\t\trestrictedOrg?: string;\n\t\t\trestrictionMessage?: string;\n\t\t\terror?: string;\n\t\t}>;\n\t\tmethods: {\n\t\t\toauth: boolean;\n\t\t\ttoken: boolean;\n\t\t\tghImport: { available: boolean; authenticated: boolean; reason?: string };\n\t\t};\n\t}> {\n\t\tconst response = await apiGetCopilotDiagnostics();\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn response.data as any;\n\t},\n\n\tasync getProviderUsage(provider: string): Promise<ProviderUsageResponse> {\n\t\tconst response = await apiGetProviderUsage({\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: API path type mismatch\n\t\t\tpath: { provider } as any,\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as ProviderUsageResponse;\n\t},\n};\n",
|
|
17
17
|
"import {\n\tgetSkillsConfig as apiGetSkillsConfig,\n\tupdateSkillsConfig as apiUpdateSkillsConfig,\n\tlistSkills as apiListSkills,\n\tgetSkill as apiGetSkill,\n\tlistSkillFiles as apiListSkillFiles,\n\tgetSkillFile as apiGetSkillFile,\n} from '@ottocode/api';\nimport { extractErrorMessage } from './utils';\n\nexport interface SkillSummary {\n\tname: string;\n\tdescription: string;\n\tscope: string;\n\tpath: string;\n\tenabled?: boolean;\n}\n\nexport interface SkillsConfigResponse {\n\tenabled: boolean;\n\ttotalCount: number;\n\tenabledCount: number;\n\titems: SkillSummary[];\n}\n\nexport interface SkillDetail {\n\tname: string;\n\tdescription: string;\n\tlicense?: string | null;\n\tcompatibility?: string | null;\n\tmetadata?: unknown;\n\tallowedTools?: string[] | null;\n\tpath: string;\n\tscope: string;\n\tcontent: string;\n}\n\nexport interface SkillFileInfo {\n\trelativePath: string;\n\tsize: number;\n}\n\nexport const skillsMixin = {\n\tasync listSkills(): Promise<{ skills: SkillSummary[] }> {\n\t\tconst response = await apiListSkills();\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as { skills: SkillSummary[] };\n\t},\n\n\tasync getSkill(name: string): Promise<SkillDetail> {\n\t\tconst response = await apiGetSkill({ path: { name } });\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as SkillDetail;\n\t},\n\n\tasync getSkillFiles(name: string): Promise<{ files: SkillFileInfo[] }> {\n\t\tconst response = await apiListSkillFiles({ path: { name } });\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as { files: SkillFileInfo[] };\n\t},\n\n\tasync getSkillFileContent(\n\t\tname: string,\n\t\tfilePath: string,\n\t): Promise<{ content: string; path: string }> {\n\t\tconst response = await apiGetSkillFile({\n\t\t\tpath: { name, filePath },\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as { content: string; path: string };\n\t},\n\n\tasync getSkillsConfig(): Promise<SkillsConfigResponse> {\n\t\tconst response = await apiGetSkillsConfig();\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as SkillsConfigResponse;\n\t},\n\n\tasync updateSkillsConfig(input: {\n\t\tenabled?: boolean;\n\t\titems?: Record<string, { enabled?: boolean }>;\n\t\tscope?: 'global' | 'local';\n\t}): Promise<SkillsConfigResponse> {\n\t\tconst response = await apiUpdateSkillsConfig({ body: input });\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as SkillsConfigResponse;\n\t},\n};\n",
|
|
18
|
-
"import {\n\tgetUsageStats as apiGetUsageStats,\n\tgetGlobalUsageStats as apiGetGlobalUsageStats,\n\ttype UsageStats,\n
|
|
18
|
+
"import {\n\tgetUsageStats as apiGetUsageStats,\n\tgetGlobalUsageStats as apiGetGlobalUsageStats,\n\ttype UsageStats,\n} from '@ottocode/api';\nimport { extractErrorMessage } from './utils';\n\nexport type { UsageStats };\nexport type UsageTotals = UsageStats['totals'];\nexport type UsageProviderAgg = UsageStats['providers'][number];\nexport type UsageModelAgg = UsageStats['models'][number];\nexport type UsageDailyAgg = UsageStats['daily'][number];\nexport type UsageProjectsBreakdown = NonNullable<UsageStats['projects']>;\nexport type UsageProjectInfo = UsageProjectsBreakdown['included'][number];\nexport type UsageProjectUnavailable =\n\tUsageProjectsBreakdown['unavailable'][number];\n\nexport type UsageAuthBucket = 'oauth' | 'api' | 'subscription';\n\nexport const usageMixin = {\n\tasync getUsageStats(): Promise<UsageStats> {\n\t\tconst { data, error } = await apiGetUsageStats();\n\t\tif (error) throw new Error(extractErrorMessage(error));\n\t\tif (!data) throw new Error('Empty response from /v1/usage/stats');\n\t\treturn data;\n\t},\n\tasync getGlobalUsageStats(): Promise<UsageStats> {\n\t\tconst { data, error } = await apiGetGlobalUsageStats();\n\t\tif (error) throw new Error(extractErrorMessage(error));\n\t\tif (!data) throw new Error('Empty response from /v1/usage/stats/global');\n\t\treturn data;\n\t},\n};\n",
|
|
19
19
|
"import {\n\tgetDictationStatus as apiGetDictationStatus,\n\tinstallDictationModel as apiInstallDictationModel,\n\tlistDictationModels as apiListDictationModels,\n\tremoveDictationModel as apiRemoveDictationModel,\n\tcreateDictationSession as apiCreateDictationSession,\n} from '@ottocode/api';\nimport { extractErrorMessage, getBaseUrl } from './utils';\n\nexport type DictationModelInstallStatus =\n\t| 'idle'\n\t| 'installing'\n\t| 'verifying'\n\t| 'installed'\n\t| 'error';\n\nexport interface DictationModelState {\n\tid: string;\n\tlabel: string;\n\tlanguage: 'en' | 'multi';\n\tsizeBytes: number;\n\turl: string;\n\tsha256: string;\n\trecommended?: boolean;\n\tinstalled: boolean;\n\tinstalling: boolean;\n\tinstalledSizeBytes: number;\n\tinstallStatus: DictationModelInstallStatus;\n\tprogressBytes: number;\n\ttotalBytes: number;\n\terror?: string;\n\terrorCode?: string;\n}\n\nexport interface DictationStatusResponse {\n\tavailable: boolean;\n\tengine: string;\n\tengineInstalled: boolean;\n\tdefaultModel: string;\n\tformat?: {\n\t\tencoding?: string;\n\t\tsampleRate?: number;\n\t\tchannels?: number;\n\t};\n\tmodels: DictationModelState[];\n}\n\nexport interface DictationModelsResponse {\n\tmodels: DictationModelState[];\n}\n\nexport interface InstallDictationModelInput {\n\tmodel: string;\n\tforce?: boolean;\n}\n\nexport interface InstallDictationModelResponse {\n\tmodel: DictationModelState;\n}\n\nexport interface RemoveDictationModelResponse {\n\tremoved: boolean;\n\tmodel: DictationModelState;\n}\n\nexport interface DictationModelInstallEvent {\n\ttype: 'model';\n\tmodel: DictationModelState;\n}\n\nexport interface CreateDictationSessionInput {\n\tmodel?: string;\n\tlanguage?: string;\n}\n\nexport interface CreateDictationSessionResponse {\n\tid: string;\n\twsUrl: string;\n\tmodel: string;\n\tmodelInstalled: boolean;\n\tformat: {\n\t\tencoding: string;\n\t\tsampleRate: number;\n\t\tchannels: number;\n\t};\n}\n\nfunction coerceModelState(value: unknown): DictationModelState {\n\treturn value as DictationModelState;\n}\n\nfunction coerceModels(value: unknown): DictationModelState[] {\n\treturn Array.isArray(value) ? value.map(coerceModelState) : [];\n}\n\nfunction buildInstallEventsUrl(model: string): string {\n\tconst baseUrl = getBaseUrl().replace(/\\/+$/, '');\n\treturn `${baseUrl}/v1/dictation/models/${encodeURIComponent(model)}/install/events`;\n}\n\nexport const dictationMixin = {\n\tasync getDictationStatus(): Promise<DictationStatusResponse> {\n\t\tconst response = await apiGetDictationStatus();\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\tconst data = response.data as Omit<DictationStatusResponse, 'models'> & {\n\t\t\tmodels?: unknown;\n\t\t};\n\t\treturn {\n\t\t\t...data,\n\t\t\tmodels: coerceModels(data.models),\n\t\t};\n\t},\n\n\tasync listDictationModels(): Promise<DictationModelsResponse> {\n\t\tconst response = await apiListDictationModels();\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\tconst data = response.data as { models?: unknown };\n\t\treturn { models: coerceModels(data.models) };\n\t},\n\n\tasync installDictationModel({\n\t\tmodel,\n\t\tforce,\n\t}: InstallDictationModelInput): Promise<InstallDictationModelResponse> {\n\t\tconst response = await apiInstallDictationModel({\n\t\t\tpath: { model },\n\t\t\tbody: { force },\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\tconst data = response.data as { model: unknown };\n\t\treturn { model: coerceModelState(data.model) };\n\t},\n\n\tasync removeDictationModel(\n\t\tmodel: string,\n\t): Promise<RemoveDictationModelResponse> {\n\t\tconst response = await apiRemoveDictationModel({ path: { model } });\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\tconst data = response.data as { removed: boolean; model: unknown };\n\t\treturn {\n\t\t\tremoved: data.removed,\n\t\t\tmodel: coerceModelState(data.model),\n\t\t};\n\t},\n\n\tasync createDictationSession(\n\t\tinput: CreateDictationSessionInput = {},\n\t): Promise<CreateDictationSessionResponse> {\n\t\tconst response = await apiCreateDictationSession({ body: input });\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as CreateDictationSessionResponse;\n\t},\n\n\tgetDictationModelInstallEventsUrl: buildInstallEventsUrl,\n};\n",
|
|
20
|
-
"import {
|
|
20
|
+
"import {\n\tlistPendingSecureInputs as apiListPendingSecureInputs,\n\tresolveSecureInput as apiResolveSecureInput,\n} from '@ottocode/api';\n\nexport const secureInputMixin = {\n\tasync submitSecureInput(\n\t\tsessionId: string,\n\t\tpromptId: string,\n\t\tvalue: string,\n\t): Promise<{ ok: boolean; promptId: string; cancelled: boolean }> {\n\t\tconst response = await apiResolveSecureInput({\n\t\t\tpath: { id: sessionId },\n\t\t\tbody: { promptId, value },\n\t\t});\n\t\tif (response.error) throw new Error('Failed to submit secure input');\n\t\treturn response.data;\n\t},\n\n\tasync cancelSecureInput(\n\t\tsessionId: string,\n\t\tpromptId: string,\n\t): Promise<{ ok: boolean; promptId: string; cancelled: boolean }> {\n\t\tconst response = await apiResolveSecureInput({\n\t\t\tpath: { id: sessionId },\n\t\t\tbody: { promptId, cancelled: true },\n\t\t});\n\t\tif (response.error) throw new Error('Failed to cancel secure input');\n\t\treturn response.data;\n\t},\n\n\tasync getPendingSecureInputs(sessionId: string): Promise<{\n\t\tok: boolean;\n\t\tpending: Array<{\n\t\t\tpromptId: string;\n\t\t\tmessageId?: string;\n\t\t\tcallId?: string;\n\t\t\tprompt: string;\n\t\t\tinputKind: 'password';\n\t\t\tcreatedAt: number;\n\t\t}>;\n\t}> {\n\t\tconst response = await apiListPendingSecureInputs({\n\t\t\tpath: { id: sessionId },\n\t\t});\n\t\tif (response.error) throw new Error('Failed to get pending secure inputs');\n\t\treturn response.data;\n\t},\n};\n",
|
|
21
21
|
"import { sessionsMixin } from './sessions';\nimport { gitMixin } from './git';\nimport { configMixin } from './config';\nimport { filesMixin } from './files';\nimport { branchesMixin } from './branches';\nimport { approvalMixin } from './approval';\nimport { ottorouterMixin } from './ottorouter';\nimport { authMixin } from './auth';\nimport { skillsMixin } from './skills';\nimport { usageMixin } from './usage';\nimport { dictationMixin } from './dictation';\nimport { secureInputMixin } from './secure-input';\n\nexport { configureApiClient } from './utils';\nexport type {\n\tCreateDictationSessionInput,\n\tCreateDictationSessionResponse,\n\tDictationModelInstallEvent,\n\tDictationModelInstallStatus,\n\tDictationModelState,\n\tDictationModelsResponse,\n\tDictationStatusResponse,\n\tInstallDictationModelInput,\n\tInstallDictationModelResponse,\n\tRemoveDictationModelResponse,\n} from './dictation';\n\nclass ApiClient {\n\tgetSessions = sessionsMixin.getSessions;\n\tgetSessionsPage = sessionsMixin.getSessionsPage;\n\tcreateSession = sessionsMixin.createSession;\n\tupdateSession = sessionsMixin.updateSession;\n\tmarkSessionViewed = sessionsMixin.markSessionViewed;\n\tdeleteSession = sessionsMixin.deleteSession;\n\tcreateHandoff = sessionsMixin.createHandoff;\n\tabortSession = sessionsMixin.abortSession;\n\tabortMessage = sessionsMixin.abortMessage;\n\tgetQueueState = sessionsMixin.getQueueState;\n\tremoveFromQueue = sessionsMixin.removeFromQueue;\n\tsendQueuedMessageNow = sessionsMixin.sendQueuedMessageNow;\n\tgetMessages = sessionsMixin.getMessages;\n\tsendMessage = sessionsMixin.sendMessage;\n\tgetStreamUrl = sessionsMixin.getStreamUrl;\n\tretryMessage = sessionsMixin.retryMessage;\n\n\tinitGitRepo = gitMixin.initGitRepo;\n\tgetGitStatus = gitMixin.getGitStatus;\n\tgetGitDiff = gitMixin.getGitDiff;\n\tgetGitDiffFullFile = gitMixin.getGitDiffFullFile;\n\tgenerateCommitMessage = gitMixin.generateCommitMessage;\n\tstageFiles = gitMixin.stageFiles;\n\tunstageFiles = gitMixin.unstageFiles;\n\trestoreFiles = gitMixin.restoreFiles;\n\tdeleteFiles = gitMixin.deleteFiles;\n\tcommitChanges = gitMixin.commitChanges;\n\tgetGitBranch = gitMixin.getGitBranch;\n\tpushCommits = gitMixin.pushCommits;\n\tpullChanges = gitMixin.pullChanges;\n\tperformRebaseAction = gitMixin.performRebaseAction;\n\tgetRemotes = gitMixin.getRemotes;\n\taddRemote = gitMixin.addRemote;\n\tremoveRemote = gitMixin.removeRemote;\n\tlistGitBranches = gitMixin.listGitBranches;\n\tcheckoutBranch = gitMixin.checkoutBranch;\n\tcreateGitBranch = gitMixin.createGitBranch;\n\n\tgetConfig = configMixin.getConfig;\n\tgetModels = configMixin.getModels;\n\tgetAllModels = configMixin.getAllModels;\n\tdiscoverProviderModels = configMixin.discoverProviderModels;\n\tupdateProviderSettings = configMixin.updateProviderSettings;\n\tdeleteProviderSettings = configMixin.deleteProviderSettings;\n\tupdateDefaults = configMixin.updateDefaults;\n\n\tlistFiles = filesMixin.listFiles;\n\tsearchFiles = filesMixin.searchFiles;\n\tgetFileTree = filesMixin.getFileTree;\n\treadFileContent = filesMixin.readFileContent;\n\tgetSessionFiles = filesMixin.getSessionFiles;\n\n\tcreateBranch = branchesMixin.createBranch;\n\tlistBranches = branchesMixin.listBranches;\n\tgetParentSession = branchesMixin.getParentSession;\n\tgetShareStatus = branchesMixin.getShareStatus;\n\tshareSession = branchesMixin.shareSession;\n\tsyncSession = branchesMixin.syncSession;\n\n\tapproveToolCall = approvalMixin.approveToolCall;\n\tgetPendingApprovals = approvalMixin.getPendingApprovals;\n\tsubmitSecureInput = secureInputMixin.submitSecureInput;\n\tcancelSecureInput = secureInputMixin.cancelSecureInput;\n\tgetPendingSecureInputs = secureInputMixin.getPendingSecureInputs;\n\n\tgetOttoRouterBalance = ottorouterMixin.getOttoRouterBalance;\n\tgetOttoRouterWallet = ottorouterMixin.getOttoRouterWallet;\n\tgetOttoRouterUsdcBalance = ottorouterMixin.getOttoRouterUsdcBalance;\n\tgetPolarTopupEstimate = ottorouterMixin.getPolarTopupEstimate;\n\tcreatePolarCheckout = ottorouterMixin.createPolarCheckout;\n\tselectTopupMethod = ottorouterMixin.selectTopupMethod;\n\tcancelTopup = ottorouterMixin.cancelTopup;\n\tgetPendingTopup = ottorouterMixin.getPendingTopup;\n\tgetPolarTopupStatus = ottorouterMixin.getPolarTopupStatus;\n\tgetRazorpayTopupEstimate = ottorouterMixin.getRazorpayTopupEstimate;\n\tcreateRazorpayOrder = ottorouterMixin.createRazorpayOrder;\n\tverifyRazorpayPayment = ottorouterMixin.verifyRazorpayPayment;\n\n\tgetAuthStatus = authMixin.getAuthStatus;\n\tsetupOttoRouterWallet = authMixin.setupOttoRouterWallet;\n\timportOttoRouterWallet = authMixin.importOttoRouterWallet;\n\texportOttoRouterWallet = authMixin.exportOttoRouterWallet;\n\taddProvider = authMixin.addProvider;\n\tremoveProvider = authMixin.removeProvider;\n\tcompleteOnboarding = authMixin.completeOnboarding;\n\tgetOAuthStartUrl = authMixin.getOAuthStartUrl;\n\tgetOAuthUrl = authMixin.getOAuthUrl;\n\texchangeOAuthCode = authMixin.exchangeOAuthCode;\n\tstartOpenAIDeviceFlow = authMixin.startOpenAIDeviceFlow;\n\tpollOpenAIDeviceFlow = authMixin.pollOpenAIDeviceFlow;\n\tstartCopilotDeviceFlow = authMixin.startCopilotDeviceFlow;\n\tpollCopilotDeviceFlow = authMixin.pollCopilotDeviceFlow;\n\tgetCopilotAuthMethods = authMixin.getCopilotAuthMethods;\n\tsaveCopilotToken = authMixin.saveCopilotToken;\n\timportCopilotTokenFromGh = authMixin.importCopilotTokenFromGh;\n\tgetCopilotDiagnostics = authMixin.getCopilotDiagnostics;\n\tgetProviderUsage = authMixin.getProviderUsage;\n\n\tlistSkills = skillsMixin.listSkills;\n\tgetSkill = skillsMixin.getSkill;\n\tgetSkillFiles = skillsMixin.getSkillFiles;\n\tgetSkillFileContent = skillsMixin.getSkillFileContent;\n\tgetSkillsConfig = skillsMixin.getSkillsConfig;\n\tupdateSkillsConfig = skillsMixin.updateSkillsConfig;\n\n\tgetUsageStats = usageMixin.getUsageStats;\n\tgetGlobalUsageStats = usageMixin.getGlobalUsageStats;\n\n\tgetDictationStatus = dictationMixin.getDictationStatus;\n\tlistDictationModels = dictationMixin.listDictationModels;\n\tinstallDictationModel = dictationMixin.installDictationModel;\n\tremoveDictationModel = dictationMixin.removeDictationModel;\n\tcreateDictationSession = dictationMixin.createDictationSession;\n\tgetDictationModelInstallEventsUrl =\n\t\tdictationMixin.getDictationModelInstallEventsUrl;\n}\n\nexport const apiClient = new ApiClient();\n",
|
|
22
22
|
"import { useCallback, useEffect, useMemo } from 'react';\nimport { useConfig, useUpdateDefaults } from './useConfig';\nimport { notifyPlatformFontFamilyChanged } from '../lib/platform';\n\ninterface Preferences {\n\tvimMode: boolean;\n\tcompactThread: boolean;\n\tfontFamily: string;\n\tsmartEdges: boolean;\n\treleaseToSend: boolean;\n\tfullWidthContent: boolean;\n}\n\nconst DEFAULT_FONT_FAMILY = 'IBM Plex Mono';\nconst DEFAULT_PREFERENCES: Preferences = {\n\tvimMode: false,\n\tcompactThread: true,\n\tfontFamily: DEFAULT_FONT_FAMILY,\n\tsmartEdges: true,\n\treleaseToSend: false,\n\tfullWidthContent: false,\n};\n\nfunction cssFontFamily(fontFamily: string): string {\n\tconst trimmed = fontFamily.trim();\n\tif (!trimmed || trimmed === DEFAULT_FONT_FAMILY) {\n\t\treturn `\"${DEFAULT_FONT_FAMILY}\", monospace`;\n\t}\n\treturn `\"${trimmed.replaceAll('\"', '\\\\\"')}\", \"${DEFAULT_FONT_FAMILY}\", monospace`;\n}\n\nfunction applyFontFamily(fontFamily: string) {\n\tif (typeof document === 'undefined') {\n\t\treturn;\n\t}\n\tdocument.documentElement.style.setProperty(\n\t\t'--otto-font-family',\n\t\tcssFontFamily(fontFamily),\n\t);\n\tdocument.documentElement.dataset.ottoFontFamily = fontFamily;\n\tif (notifyPlatformFontFamilyChanged(fontFamily)) {\n\t\treturn;\n\t}\n\tif (window.self !== window.top) {\n\t\twindow.parent.postMessage(\n\t\t\t{ type: 'otto-font-family-changed', fontFamily },\n\t\t\t'*',\n\t\t);\n\t}\n}\n\nexport function usePreferences() {\n\tconst { data: config } = useConfig();\n\tconst updateDefaults = useUpdateDefaults();\n\n\tconst resolvedPreferences = useMemo<Preferences>(\n\t\t() => ({\n\t\t\tvimMode: config?.defaults?.vimMode ?? DEFAULT_PREFERENCES.vimMode,\n\t\t\tcompactThread:\n\t\t\t\tconfig?.defaults?.compactThread ?? DEFAULT_PREFERENCES.compactThread,\n\t\t\tfontFamily:\n\t\t\t\tconfig?.defaults?.fontFamily?.trim() || DEFAULT_PREFERENCES.fontFamily,\n\t\t\tsmartEdges:\n\t\t\t\tconfig?.defaults?.smartEdges ?? DEFAULT_PREFERENCES.smartEdges,\n\t\t\treleaseToSend:\n\t\t\t\tconfig?.defaults?.releaseToSend ?? DEFAULT_PREFERENCES.releaseToSend,\n\t\t\tfullWidthContent:\n\t\t\t\tconfig?.defaults?.fullWidthContent ??\n\t\t\t\tDEFAULT_PREFERENCES.fullWidthContent,\n\t\t}),\n\t\t[\n\t\t\tconfig?.defaults?.vimMode,\n\t\t\tconfig?.defaults?.compactThread,\n\t\t\tconfig?.defaults?.fontFamily,\n\t\t\tconfig?.defaults?.smartEdges,\n\t\t\tconfig?.defaults?.releaseToSend,\n\t\t\tconfig?.defaults?.fullWidthContent,\n\t\t],\n\t);\n\n\tuseEffect(() => {\n\t\tapplyFontFamily(resolvedPreferences.fontFamily);\n\t}, [resolvedPreferences.fontFamily]);\n\n\tconst updatePreferences = useCallback(\n\t\t(updates: Partial<Preferences>) => {\n\t\t\tconst nextUpdates: Partial<Preferences> = {};\n\n\t\t\tif (updates.vimMode !== undefined) {\n\t\t\t\tnextUpdates.vimMode = updates.vimMode;\n\t\t\t}\n\t\t\tif (updates.compactThread !== undefined) {\n\t\t\t\tnextUpdates.compactThread = updates.compactThread;\n\t\t\t}\n\t\t\tif (updates.fontFamily !== undefined) {\n\t\t\t\tnextUpdates.fontFamily =\n\t\t\t\t\tupdates.fontFamily.trim() || DEFAULT_FONT_FAMILY;\n\t\t\t}\n\t\t\tif (updates.smartEdges !== undefined) {\n\t\t\t\tnextUpdates.smartEdges = updates.smartEdges;\n\t\t\t}\n\t\t\tif (updates.releaseToSend !== undefined) {\n\t\t\t\tnextUpdates.releaseToSend = updates.releaseToSend;\n\t\t\t}\n\t\t\tif (updates.fullWidthContent !== undefined) {\n\t\t\t\tnextUpdates.fullWidthContent = updates.fullWidthContent;\n\t\t\t}\n\n\t\t\tif (Object.keys(nextUpdates).length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tupdateDefaults.mutate({ ...nextUpdates, scope: 'global' });\n\t\t},\n\t\t[updateDefaults],\n\t);\n\n\treturn useMemo(\n\t\t() => ({ preferences: resolvedPreferences, updatePreferences }),\n\t\t[resolvedPreferences, updatePreferences],\n\t);\n}\n\nexport type { Preferences };\n",
|
|
23
23
|
"import { useQuery } from '@tanstack/react-query';\nimport { apiClient } from '../lib/api-client';\n\nexport function useFiles(options: { enabled?: boolean; query?: string } = {}) {\n\treturn useQuery({\n\t\tqueryKey: ['files', options.query ?? ''],\n\t\tqueryFn: async () => {\n\t\t\tconst result = await apiClient.searchFiles(options.query ?? '');\n\t\t\treturn result;\n\t\t},\n\t\tenabled: options.enabled ?? true,\n\t\tstaleTime: 10000,\n\t\trefetchOnWindowFocus: true,\n\t\tretry: 1,\n\t});\n}\n",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"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",
|
|
34
34
|
"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",
|
|
35
35
|
"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",
|
|
36
|
-
"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",
|
|
36
|
+
"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 useSetSessionPinned() {\n\tconst queryClient = useQueryClient();\n\n\treturn useMutation({\n\t\tmutationFn: ({\n\t\t\tsessionId,\n\t\t\tisPinned,\n\t\t}: {\n\t\t\tsessionId: string;\n\t\t\tisPinned: boolean;\n\t\t}) => apiClient.updateSession(sessionId, { isPinned }),\n\t\tonSuccess: async (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\tawait queryClient.invalidateQueries({ queryKey: sessionsQueryKey });\n\t\t\tawait queryClient.invalidateQueries({\n\t\t\t\tqueryKey: ['session', updatedSession.id],\n\t\t\t});\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",
|
|
37
37
|
"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 { useSecureInputStore } from '../stores/secureInputStore';\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\tconst { addPendingInput, removePendingInput, setPendingInputs } =\n\t\tuseSecureInputStore();\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\tapiClient\n\t\t\t.getPendingSecureInputs(sessionId)\n\t\t\t.then((result) => {\n\t\t\t\tif (result.ok && result.pending.length > 0) {\n\t\t\t\t\tsetPendingInputs(result.pending);\n\t\t\t\t} else {\n\t\t\t\t\tsetPendingInputs([]);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\tsetPendingInputs([]);\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 'shell.secure_input.required': {\n\t\t\t\t\tconst promptId =\n\t\t\t\t\t\ttypeof payload?.promptId === 'string' ? payload.promptId : null;\n\t\t\t\t\tconst prompt =\n\t\t\t\t\t\ttypeof payload?.prompt === 'string' ? payload.prompt : null;\n\t\t\t\t\tif (promptId && prompt) {\n\t\t\t\t\t\taddPendingInput({\n\t\t\t\t\t\t\tpromptId,\n\t\t\t\t\t\t\tprompt,\n\t\t\t\t\t\t\tmessageId:\n\t\t\t\t\t\t\t\ttypeof payload?.messageId === 'string'\n\t\t\t\t\t\t\t\t\t? payload.messageId\n\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\tcallId:\n\t\t\t\t\t\t\t\ttypeof payload?.callId === 'string'\n\t\t\t\t\t\t\t\t\t? payload.callId\n\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\tinputKind: 'password',\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 'shell.secure_input.resolved': {\n\t\t\t\t\tconst promptId =\n\t\t\t\t\t\ttypeof payload?.promptId === 'string' ? payload.promptId : null;\n\t\t\t\t\tif (promptId) {\n\t\t\t\t\t\tremovePendingInput(promptId);\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\taddPendingInput,\n\t\tremovePendingApproval,\n\t\tremovePendingInput,\n\t\tenabled,\n\t\tsetPendingApprovals,\n\t\tsetPendingInputs,\n\t\tupdatePendingApproval,\n\t]);\n}\n",
|
|
38
38
|
"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",
|
|
39
39
|
"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",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"import { create } from 'zustand';\n\ninterface FilePickerState {\n\tisOpen: boolean;\n\topen: () => void;\n\tclose: () => void;\n\ttoggle: () => void;\n}\n\nexport const useFilePickerStore = create<FilePickerState>((set) => ({\n\tisOpen: false,\n\topen: () => set({ isOpen: true }),\n\tclose: () => set({ isOpen: false }),\n\ttoggle: () => set((state) => ({ isOpen: !state.isOpen })),\n}));\n",
|
|
50
50
|
"import { create } from 'zustand';\n\ninterface TerminalState {\n\tisOpen: boolean;\n\tpanelHeight: number;\n\tactiveTabId: string | null;\n\tisMaximized: boolean;\n\n\t/** @deprecated Use isOpen instead */\n\tisExpanded: boolean;\n\t/** @deprecated Use activeTabId instead */\n\tselectedTerminalId: string | null;\n\n\topenPanel: () => void;\n\tclosePanel: () => void;\n\ttogglePanel: () => void;\n\tsetPanelHeight: (height: number) => void;\n\tselectTab: (id: string | null) => void;\n\ttoggleMaximize: () => void;\n\n\t/** @deprecated Use openPanel instead */\n\texpandSidebar: () => void;\n\t/** @deprecated Use closePanel instead */\n\tcollapseSidebar: () => void;\n\t/** @deprecated Use togglePanel instead */\n\ttoggleSidebar: () => void;\n\t/** @deprecated Use selectTab instead */\n\tselectTerminal: (id: string | null) => void;\n}\n\nconst DEFAULT_HEIGHT = 300;\nconst MIN_HEIGHT = 150;\n\nexport const useTerminalStore = create<TerminalState>((set) => ({\n\tisOpen: false,\n\tpanelHeight: DEFAULT_HEIGHT,\n\tactiveTabId: null,\n\tisMaximized: false,\n\n\tget isExpanded() {\n\t\treturn this.isOpen;\n\t},\n\tget selectedTerminalId() {\n\t\treturn this.activeTabId;\n\t},\n\n\topenPanel: () => set({ isOpen: true }),\n\tclosePanel: () => set({ isOpen: false, isMaximized: false }),\n\ttogglePanel: () =>\n\t\tset((s) => ({\n\t\t\tisOpen: !s.isOpen,\n\t\t\tisMaximized: !s.isOpen ? s.isMaximized : false,\n\t\t})),\n\tsetPanelHeight: (height: number) =>\n\t\tset({ panelHeight: Math.max(MIN_HEIGHT, height) }),\n\tselectTab: (id) => set({ activeTabId: id, isOpen: true }),\n\ttoggleMaximize: () => set((s) => ({ isMaximized: !s.isMaximized })),\n\n\texpandSidebar: () => set({ isOpen: true }),\n\tcollapseSidebar: () =>\n\t\tset({ isOpen: false, activeTabId: null, isMaximized: false }),\n\ttoggleSidebar: () =>\n\t\tset((s) => ({\n\t\t\tisOpen: !s.isOpen,\n\t\t\tisMaximized: !s.isOpen ? s.isMaximized : false,\n\t\t})),\n\tselectTerminal: (id) => set({ activeTabId: id, isOpen: true }),\n}));\n",
|
|
51
51
|
"import {\n\tuseState,\n\tuseCallback,\n\tuseEffect,\n\ttype DragEvent,\n\ttype ClipboardEvent,\n} from 'react';\n\nexport interface ImageAttachment {\n\tid: string;\n\tfile: File;\n\tpreview: string;\n\tdata: string;\n\tmediaType: string;\n}\n\nconst SUPPORTED_TYPES = ['image/png', 'image/jpeg', 'image/gif', 'image/webp'];\n\nfunction generateId(): string {\n\treturn `img-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;\n}\n\nasync function fileToBase64(file: File): Promise<string> {\n\treturn new Promise((resolve, reject) => {\n\t\tconst reader = new FileReader();\n\t\treader.onload = () => {\n\t\t\tconst result = reader.result as string;\n\t\t\tconst base64 = result.split(',')[1];\n\t\t\tresolve(base64);\n\t\t};\n\t\treader.onerror = reject;\n\t\treader.readAsDataURL(file);\n\t});\n}\n\nasync function fileToPreview(file: File): Promise<string> {\n\treturn new Promise((resolve, reject) => {\n\t\tconst reader = new FileReader();\n\t\treader.onload = () => resolve(reader.result as string);\n\t\treader.onerror = reject;\n\t\treader.readAsDataURL(file);\n\t});\n}\n\ninterface UseImageUploadOptions {\n\tmaxImages?: number;\n\tmaxSizeMB?: number;\n\tpageWide?: boolean;\n}\n\nexport function useImageUpload(options: UseImageUploadOptions = {}) {\n\tconst { maxImages = 5, maxSizeMB = 5, pageWide = true } = options;\n\n\tconst [images, setImages] = useState<ImageAttachment[]>([]);\n\tconst [isDragging, setIsDragging] = useState(false);\n\tconst [error, setError] = useState<string | null>(null);\n\n\tconst maxSizeBytes = maxSizeMB * 1024 * 1024;\n\n\tconst validateFile = useCallback(\n\t\t(file: File): string | null => {\n\t\t\tif (!SUPPORTED_TYPES.includes(file.type)) {\n\t\t\t\treturn `Unsupported file type: ${file.type}. Supported: PNG, JPEG, GIF, WebP`;\n\t\t\t}\n\t\t\tif (file.size > maxSizeBytes) {\n\t\t\t\treturn `File too large: ${(file.size / 1024 / 1024).toFixed(1)}MB. Max: ${maxSizeMB}MB`;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\t[maxSizeBytes, maxSizeMB],\n\t);\n\n\tconst addImages = useCallback(\n\t\tasync (files: FileList | File[]) => {\n\t\t\tsetError(null);\n\t\t\tconst fileArray = Array.from(files);\n\t\t\tconst remaining = maxImages - images.length;\n\n\t\t\tif (remaining <= 0) {\n\t\t\t\tsetError(`Maximum ${maxImages} images allowed`);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst filesToAdd = fileArray.slice(0, remaining);\n\t\t\tconst newImages: ImageAttachment[] = [];\n\n\t\t\tfor (const file of filesToAdd) {\n\t\t\t\tconst validationError = validateFile(file);\n\t\t\t\tif (validationError) {\n\t\t\t\t\tsetError(validationError);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tconst [preview, data] = await Promise.all([\n\t\t\t\t\t\tfileToPreview(file),\n\t\t\t\t\t\tfileToBase64(file),\n\t\t\t\t\t]);\n\n\t\t\t\t\tnewImages.push({\n\t\t\t\t\t\tid: generateId(),\n\t\t\t\t\t\tfile,\n\t\t\t\t\t\tpreview,\n\t\t\t\t\t\tdata,\n\t\t\t\t\t\tmediaType: file.type,\n\t\t\t\t\t});\n\t\t\t\t} catch {\n\t\t\t\t\tsetError('Failed to process image');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newImages.length > 0) {\n\t\t\t\tsetImages((prev) => [...prev, ...newImages]);\n\t\t\t}\n\t\t},\n\t\t[images.length, maxImages, validateFile],\n\t);\n\n\tconst removeImage = useCallback((id: string) => {\n\t\tsetImages((prev) => prev.filter((img) => img.id !== id));\n\t\tsetError(null);\n\t}, []);\n\n\tconst clearImages = useCallback(() => {\n\t\tsetImages([]);\n\t\tsetError(null);\n\t}, []);\n\n\tconst handleDragEnter = useCallback((e: DragEvent) => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tif (e.dataTransfer.types.includes('Files')) {\n\t\t\tsetIsDragging(true);\n\t\t}\n\t}, []);\n\n\tconst handleDragLeave = useCallback((e: DragEvent) => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tconst rect = (e.currentTarget as HTMLElement).getBoundingClientRect();\n\t\tconst x = e.clientX;\n\t\tconst y = e.clientY;\n\t\tif (x < rect.left || x > rect.right || y < rect.top || y > rect.bottom) {\n\t\t\tsetIsDragging(false);\n\t\t}\n\t}, []);\n\n\tconst handleDragOver = useCallback((e: DragEvent) => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t}, []);\n\n\tconst handleDrop = useCallback(\n\t\t(e: DragEvent) => {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\tsetIsDragging(false);\n\n\t\t\tconst files = e.dataTransfer.files;\n\t\t\tif (files.length > 0) {\n\t\t\t\tconst imageFiles = Array.from(files).filter((f) =>\n\t\t\t\t\tf.type.startsWith('image/'),\n\t\t\t\t);\n\t\t\t\tif (imageFiles.length > 0) {\n\t\t\t\t\taddImages(imageFiles);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[addImages],\n\t);\n\n\tconst handlePaste = useCallback(\n\t\t(e: ClipboardEvent) => {\n\t\t\tconst items = e.clipboardData?.items;\n\t\t\tif (!items) return;\n\n\t\t\tconst imageFiles: File[] = [];\n\t\t\tfor (const item of Array.from(items)) {\n\t\t\t\tif (item.type.startsWith('image/')) {\n\t\t\t\t\tconst file = item.getAsFile();\n\t\t\t\t\tif (file) {\n\t\t\t\t\t\timageFiles.push(file);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (imageFiles.length > 0) {\n\t\t\t\te.preventDefault();\n\t\t\t\taddImages(imageFiles);\n\t\t\t}\n\t\t},\n\t\t[addImages],\n\t);\n\n\tuseEffect(() => {\n\t\tif (!pageWide) return;\n\n\t\tlet dragCounter = 0;\n\n\t\tconst onDragEnter = (e: globalThis.DragEvent) => {\n\t\t\te.preventDefault();\n\t\t\tif (e.dataTransfer?.types.includes('Files')) {\n\t\t\t\tdragCounter++;\n\t\t\t\tif (dragCounter === 1) {\n\t\t\t\t\tsetIsDragging(true);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tconst onDragLeave = (e: globalThis.DragEvent) => {\n\t\t\te.preventDefault();\n\t\t\tdragCounter--;\n\t\t\tif (dragCounter === 0) {\n\t\t\t\tsetIsDragging(false);\n\t\t\t}\n\t\t};\n\n\t\tconst onDragOver = (e: globalThis.DragEvent) => {\n\t\t\te.preventDefault();\n\t\t};\n\n\t\tconst onDrop = (e: globalThis.DragEvent) => {\n\t\t\te.preventDefault();\n\t\t\tdragCounter = 0;\n\t\t\tsetIsDragging(false);\n\n\t\t\tconst files = e.dataTransfer?.files;\n\t\t\tif (files && files.length > 0) {\n\t\t\t\tconst imageFiles = Array.from(files).filter((f) =>\n\t\t\t\t\tf.type.startsWith('image/'),\n\t\t\t\t);\n\t\t\t\tif (imageFiles.length > 0) {\n\t\t\t\t\taddImages(imageFiles);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tdocument.addEventListener('dragenter', onDragEnter);\n\t\tdocument.addEventListener('dragleave', onDragLeave);\n\t\tdocument.addEventListener('dragover', onDragOver);\n\t\tdocument.addEventListener('drop', onDrop);\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('dragenter', onDragEnter);\n\t\t\tdocument.removeEventListener('dragleave', onDragLeave);\n\t\t\tdocument.removeEventListener('dragover', onDragOver);\n\t\t\tdocument.removeEventListener('drop', onDrop);\n\t\t};\n\t}, [pageWide, addImages]);\n\n\treturn {\n\t\timages,\n\t\tisDragging,\n\t\terror,\n\t\taddImages,\n\t\tremoveImage,\n\t\tclearImages,\n\t\thandleDragEnter,\n\t\thandleDragLeave,\n\t\thandleDragOver,\n\t\thandleDrop,\n\t\thandlePaste,\n\t};\n}\n",
|
|
52
|
-
"import {\n\tuseState,\n\tuseCallback,\n\tuseEffect,\n\ttype DragEvent,\n\ttype ClipboardEvent,\n} from 'react';\nimport { getBaseUrl, extractErrorMessage } from '../lib/api-client/utils';\n\nexport type FileAttachmentType = 'image' | 'pdf' | 'text' | 'binary';\nexport type FileUploadStatus = 'uploading' | 'ready' | 'failed';\n\nexport interface UploadedAttachment {\n\tid: string;\n\tfilename: string;\n\tmimeType: string;\n\tsize: number;\n\tsha256: string;\n\tkind: FileAttachmentType;\n\toriginalPath: string;\n\toriginalUrl: string;\n\tmetadataUrl: string;\n\tstatus: 'ready';\n}\n\nexport interface FileAttachment {\n\tid: string;\n\tfile: File;\n\ttype: FileAttachmentType;\n\tname: string;\n\tpreview?: string;\n\tdata?: string;\n\tmediaType: string;\n\ttextContent?: string;\n\tuploadStatus: FileUploadStatus;\n\tuploadedAttachment?: UploadedAttachment;\n\tuploadError?: string;\n}\n\nconst IMAGE_TYPES = ['image/png', 'image/jpeg', 'image/gif', 'image/webp'];\nconst PDF_TYPES = ['application/pdf'];\nconst TEXT_TYPES = [\n\t'text/plain',\n\t'text/markdown',\n\t'text/x-markdown',\n\t'application/json',\n\t'text/csv',\n\t'text/xml',\n\t'application/xml',\n\t'text/yaml',\n\t'text/x-yaml',\n\t'application/x-yaml',\n\t'text/html',\n\t'text/css',\n\t'text/javascript',\n\t'application/javascript',\n\t'application/typescript',\n];\nconst TEXT_EXTENSIONS = [\n\t'.txt',\n\t'.md',\n\t'.markdown',\n\t'.json',\n\t'.csv',\n\t'.xml',\n\t'.yaml',\n\t'.yml',\n\t'.html',\n\t'.css',\n\t'.js',\n\t'.ts',\n\t'.jsx',\n\t'.tsx',\n\t'.py',\n\t'.rs',\n\t'.go',\n\t'.java',\n\t'.c',\n\t'.cpp',\n\t'.h',\n\t'.hpp',\n\t'.rb',\n\t'.php',\n\t'.sh',\n\t'.bash',\n\t'.zsh',\n\t'.toml',\n\t'.ini',\n\t'.cfg',\n\t'.env',\n\t'.log',\n\t'.sql',\n\t'.graphql',\n\t'.svelte',\n\t'.vue',\n];\n\nfunction generateId(): string {\n\treturn `file-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;\n}\n\nfunction getExtension(file: File): string {\n\tconst index = file.name.lastIndexOf('.');\n\treturn index >= 0 ? file.name.toLowerCase().slice(index) : '';\n}\n\nfunction getFileType(file: File): FileAttachmentType {\n\tif (IMAGE_TYPES.includes(file.type)) return 'image';\n\tif (PDF_TYPES.includes(file.type)) return 'pdf';\n\tif (TEXT_TYPES.includes(file.type)) return 'text';\n\tif (TEXT_EXTENSIONS.includes(getExtension(file))) return 'text';\n\treturn 'binary';\n}\n\nasync function fileToBase64(file: File): Promise<string> {\n\treturn new Promise((resolve, reject) => {\n\t\tconst reader = new FileReader();\n\t\treader.onload = () => {\n\t\t\tconst result = reader.result as string;\n\t\t\tconst base64 = result.split(',')[1];\n\t\t\tresolve(base64);\n\t\t};\n\t\treader.onerror = reject;\n\t\treader.readAsDataURL(file);\n\t});\n}\n\nasync function fileToText(file: File): Promise<string> {\n\treturn new Promise((resolve, reject) => {\n\t\tconst reader = new FileReader();\n\t\treader.onload = () => resolve(reader.result as string);\n\t\treader.onerror = reject;\n\t\treader.readAsText(file);\n\t});\n}\n\nasync function fileToPreview(file: File): Promise<string> {\n\treturn new Promise((resolve, reject) => {\n\t\tconst reader = new FileReader();\n\t\treader.onload = () => resolve(reader.result as string);\n\t\treader.onerror = reject;\n\t\treader.readAsDataURL(file);\n\t});\n}\n\nasync function uploadOriginalFile(\n\tfile: File,\n\tsessionId?: string,\n): Promise<UploadedAttachment> {\n\tconst form = new FormData();\n\tform.set('file', file);\n\tif (sessionId) form.set('sessionId', sessionId);\n\n\tconst response = await fetch(`${getBaseUrl()}/v1/attachments`, {\n\t\tmethod: 'POST',\n\t\tbody: form,\n\t});\n\tconst data = await response.json().catch(() => null);\n\tif (!response.ok) {\n\t\tthrow new Error(extractErrorMessage(data));\n\t}\n\treturn data as UploadedAttachment;\n}\n\ninterface UseFileUploadOptions {\n\tmaxFiles?: number;\n\tmaxSizeMB?: number;\n\tpageWide?: boolean;\n\tsupportsImages?: boolean;\n\tsupportsFileAttachments?: boolean;\n\tsessionId?: string;\n\tonError?: (message: string) => void;\n}\n\nexport function useFileUpload(options: UseFileUploadOptions = {}) {\n\tconst {\n\t\tmaxFiles = 10,\n\t\tmaxSizeMB = 100,\n\t\tpageWide = true,\n\t\tsupportsImages = true,\n\t\tsupportsFileAttachments = true,\n\t\tsessionId,\n\t\tonError,\n\t} = options;\n\n\tconst [files, setFiles] = useState<FileAttachment[]>([]);\n\tconst [isDragging, setIsDragging] = useState(false);\n\tconst [error, setError] = useState<string | null>(null);\n\n\tconst maxSizeBytes = maxSizeMB * 1024 * 1024;\n\n\tconst validateFile = useCallback(\n\t\t(file: File): string | null => {\n\t\t\tif (file.size > maxSizeBytes) {\n\t\t\t\treturn `File too large: ${(file.size / 1024 / 1024).toFixed(1)}MB. Max: ${maxSizeMB}MB`;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\t[maxSizeBytes, maxSizeMB],\n\t);\n\n\tconst addFiles = useCallback(\n\t\tasync (inputFiles: FileList | File[]) => {\n\t\t\tsetError(null);\n\t\t\tconst fileArray = Array.from(inputFiles);\n\t\t\tconst remaining = maxFiles - files.length;\n\n\t\t\tif (remaining <= 0) {\n\t\t\t\tconst msg = `Maximum ${maxFiles} files allowed`;\n\t\t\t\tsetError(msg);\n\t\t\t\tonError?.(msg);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst filesToAdd = fileArray.slice(0, remaining);\n\t\t\tconst newFiles: FileAttachment[] = [];\n\n\t\t\tfor (const file of filesToAdd) {\n\t\t\t\tconst validationError = validateFile(file);\n\t\t\t\tif (validationError) {\n\t\t\t\t\tsetError(validationError);\n\t\t\t\t\tonError?.(validationError);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst fileType = getFileType(file);\n\n\t\t\t\ttry {\n\t\t\t\t\tlet preview: string | undefined;\n\t\t\t\t\tlet data: string | undefined;\n\t\t\t\t\tlet textContent: string | undefined;\n\t\t\t\t\tlet mediaType = file.type || 'application/octet-stream';\n\n\t\t\t\t\tif (fileType === 'image') {\n\t\t\t\t\t\tif (supportsImages) {\n\t\t\t\t\t\t\t[preview, data] = await Promise.all([\n\t\t\t\t\t\t\t\tfileToPreview(file),\n\t\t\t\t\t\t\t\tfileToBase64(file),\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpreview = await fileToPreview(file);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (fileType === 'pdf') {\n\t\t\t\t\t\tmediaType = 'application/pdf';\n\t\t\t\t\t\tif (supportsFileAttachments) {\n\t\t\t\t\t\t\tdata = await fileToBase64(file);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (fileType === 'text') {\n\t\t\t\t\t\ttextContent = await fileToText(file);\n\t\t\t\t\t\tdata = textContent;\n\t\t\t\t\t\tif (!file.type) {\n\t\t\t\t\t\t\tconst ext = file.name.toLowerCase();\n\t\t\t\t\t\t\tmediaType =\n\t\t\t\t\t\t\t\text.endsWith('.md') || ext.endsWith('.markdown')\n\t\t\t\t\t\t\t\t\t? 'text/markdown'\n\t\t\t\t\t\t\t\t\t: 'text/plain';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst id = generateId();\n\t\t\t\t\tnewFiles.push({\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tfile,\n\t\t\t\t\t\ttype: fileType,\n\t\t\t\t\t\tname: file.name,\n\t\t\t\t\t\tpreview,\n\t\t\t\t\t\tdata,\n\t\t\t\t\t\tmediaType,\n\t\t\t\t\t\ttextContent,\n\t\t\t\t\t\tuploadStatus: 'uploading',\n\t\t\t\t\t});\n\t\t\t\t} catch {\n\t\t\t\t\tconst msg = `Failed to process file: ${file.name}`;\n\t\t\t\t\tsetError(msg);\n\t\t\t\t\tonError?.(msg);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newFiles.length > 0) {\n\t\t\t\tsetFiles((prev) => [...prev, ...newFiles]);\n\t\t\t\tfor (const item of newFiles) {\n\t\t\t\t\tvoid uploadOriginalFile(item.file, sessionId)\n\t\t\t\t\t\t.then((uploadedAttachment) => {\n\t\t\t\t\t\t\tsetFiles((prev) =>\n\t\t\t\t\t\t\t\tprev.map((existing) =>\n\t\t\t\t\t\t\t\t\texisting.id === item.id\n\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\t...existing,\n\t\t\t\t\t\t\t\t\t\t\t\tuploadStatus: 'ready',\n\t\t\t\t\t\t\t\t\t\t\t\tuploadedAttachment,\n\t\t\t\t\t\t\t\t\t\t\t\tuploadError: undefined,\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t: existing,\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\t.catch((uploadError: unknown) => {\n\t\t\t\t\t\t\tconst msg =\n\t\t\t\t\t\t\t\tuploadError instanceof Error\n\t\t\t\t\t\t\t\t\t? uploadError.message\n\t\t\t\t\t\t\t\t\t: `Failed to upload ${item.name}`;\n\t\t\t\t\t\t\tsetFiles((prev) =>\n\t\t\t\t\t\t\t\tprev.map((existing) =>\n\t\t\t\t\t\t\t\t\texisting.id === item.id\n\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\t...existing,\n\t\t\t\t\t\t\t\t\t\t\t\tuploadStatus: 'failed',\n\t\t\t\t\t\t\t\t\t\t\t\tuploadError: msg,\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t: existing,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tonError?.(msg);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\tfiles.length,\n\t\t\tmaxFiles,\n\t\t\tvalidateFile,\n\t\t\tonError,\n\t\t\tsessionId,\n\t\t\tsupportsImages,\n\t\t\tsupportsFileAttachments,\n\t\t],\n\t);\n\n\tconst removeFile = useCallback((id: string) => {\n\t\tsetFiles((prev) => prev.filter((f) => f.id !== id));\n\t\tsetError(null);\n\t}, []);\n\n\tconst clearFiles = useCallback(() => {\n\t\tsetFiles([]);\n\t\tsetError(null);\n\t}, []);\n\n\tconst handleDragEnter = useCallback((e: DragEvent) => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tif (e.dataTransfer.types.includes('Files')) {\n\t\t\tsetIsDragging(true);\n\t\t}\n\t}, []);\n\n\tconst handleDragLeave = useCallback((e: DragEvent) => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tconst rect = (e.currentTarget as HTMLElement).getBoundingClientRect();\n\t\tconst x = e.clientX;\n\t\tconst y = e.clientY;\n\t\tif (x < rect.left || x > rect.right || y < rect.top || y > rect.bottom) {\n\t\t\tsetIsDragging(false);\n\t\t}\n\t}, []);\n\n\tconst handleDragOver = useCallback((e: DragEvent) => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t}, []);\n\n\tconst handleDrop = useCallback(\n\t\t(e: DragEvent) => {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\tsetIsDragging(false);\n\n\t\t\tconst droppedFiles = e.dataTransfer.files;\n\t\t\tif (droppedFiles.length > 0) {\n\t\t\t\taddFiles(Array.from(droppedFiles));\n\t\t\t}\n\t\t},\n\t\t[addFiles],\n\t);\n\n\tconst handlePaste = useCallback(\n\t\t(e: ClipboardEvent) => {\n\t\t\tconst items = e.clipboardData?.items;\n\t\t\tif (!items) return;\n\n\t\t\tconst pastedFiles: File[] = [];\n\t\t\tfor (const item of Array.from(items)) {\n\t\t\t\tif (item.kind === 'file') {\n\t\t\t\t\tconst file = item.getAsFile();\n\t\t\t\t\tif (file) {\n\t\t\t\t\t\tpastedFiles.push(file);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (pastedFiles.length > 0) {\n\t\t\t\te.preventDefault();\n\t\t\t\taddFiles(pastedFiles);\n\t\t\t}\n\t\t},\n\t\t[addFiles],\n\t);\n\n\tuseEffect(() => {\n\t\tif (!pageWide) return;\n\n\t\tlet dragCounter = 0;\n\n\t\tconst onDragEnter = (e: globalThis.DragEvent) => {\n\t\t\te.preventDefault();\n\t\t\tif (e.dataTransfer?.types.includes('Files')) {\n\t\t\t\tdragCounter++;\n\t\t\t\tif (dragCounter === 1) {\n\t\t\t\t\tsetIsDragging(true);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tconst onDragLeave = (e: globalThis.DragEvent) => {\n\t\t\te.preventDefault();\n\t\t\tdragCounter--;\n\t\t\tif (dragCounter === 0) {\n\t\t\t\tsetIsDragging(false);\n\t\t\t}\n\t\t};\n\n\t\tconst onDragOver = (e: globalThis.DragEvent) => {\n\t\t\te.preventDefault();\n\t\t};\n\n\t\tconst onDrop = (e: globalThis.DragEvent) => {\n\t\t\te.preventDefault();\n\t\t\tdragCounter = 0;\n\t\t\tsetIsDragging(false);\n\n\t\t\tconst droppedFiles = e.dataTransfer?.files;\n\t\t\tif (droppedFiles && droppedFiles.length > 0) {\n\t\t\t\taddFiles(Array.from(droppedFiles));\n\t\t\t}\n\t\t};\n\n\t\tdocument.addEventListener('dragenter', onDragEnter);\n\t\tdocument.addEventListener('dragleave', onDragLeave);\n\t\tdocument.addEventListener('dragover', onDragOver);\n\t\tdocument.addEventListener('drop', onDrop);\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('dragenter', onDragEnter);\n\t\t\tdocument.removeEventListener('dragleave', onDragLeave);\n\t\t\tdocument.removeEventListener('dragover', onDragOver);\n\t\t\tdocument.removeEventListener('drop', onDrop);\n\t\t};\n\t}, [pageWide, addFiles]);\n\n\tconst images = files.filter((f) => f.type === 'image');\n\tconst documents = files.filter((f) => f.type !== 'image');\n\n\treturn {\n\t\tfiles,\n\t\timages,\n\t\tdocuments,\n\t\tisDragging,\n\t\terror,\n\t\taddFiles,\n\t\tremoveFile,\n\t\tclearFiles,\n\t\thandleDragEnter,\n\t\thandleDragLeave,\n\t\thandleDragOver,\n\t\thandleDrop,\n\t\thandlePaste,\n\t};\n}\n",
|
|
52
|
+
"import {\n\tuseState,\n\tuseCallback,\n\tuseEffect,\n\ttype DragEvent,\n\ttype ClipboardEvent,\n} from 'react';\nimport { uploadAttachment } from '@ottocode/api';\nimport { extractErrorMessage } from '../lib/api-client/utils';\n\nexport type FileAttachmentType = 'image' | 'pdf' | 'text' | 'binary';\nexport type FileUploadStatus = 'uploading' | 'ready' | 'failed';\n\nexport interface UploadedAttachment {\n\tid: string;\n\tfilename: string;\n\tmimeType: string;\n\tsize: number;\n\tsha256: string;\n\tkind: FileAttachmentType;\n\toriginalPath: string;\n\toriginalUrl: string;\n\tmetadataUrl: string;\n\tstatus: 'ready';\n}\n\nexport interface FileAttachment {\n\tid: string;\n\tfile: File;\n\ttype: FileAttachmentType;\n\tname: string;\n\tpreview?: string;\n\tdata?: string;\n\tmediaType: string;\n\ttextContent?: string;\n\tuploadStatus: FileUploadStatus;\n\tuploadedAttachment?: UploadedAttachment;\n\tuploadError?: string;\n}\n\nconst IMAGE_TYPES = ['image/png', 'image/jpeg', 'image/gif', 'image/webp'];\nconst PDF_TYPES = ['application/pdf'];\nconst TEXT_TYPES = [\n\t'text/plain',\n\t'text/markdown',\n\t'text/x-markdown',\n\t'application/json',\n\t'text/csv',\n\t'text/xml',\n\t'application/xml',\n\t'text/yaml',\n\t'text/x-yaml',\n\t'application/x-yaml',\n\t'text/html',\n\t'text/css',\n\t'text/javascript',\n\t'application/javascript',\n\t'application/typescript',\n];\nconst TEXT_EXTENSIONS = [\n\t'.txt',\n\t'.md',\n\t'.markdown',\n\t'.json',\n\t'.csv',\n\t'.xml',\n\t'.yaml',\n\t'.yml',\n\t'.html',\n\t'.css',\n\t'.js',\n\t'.ts',\n\t'.jsx',\n\t'.tsx',\n\t'.py',\n\t'.rs',\n\t'.go',\n\t'.java',\n\t'.c',\n\t'.cpp',\n\t'.h',\n\t'.hpp',\n\t'.rb',\n\t'.php',\n\t'.sh',\n\t'.bash',\n\t'.zsh',\n\t'.toml',\n\t'.ini',\n\t'.cfg',\n\t'.env',\n\t'.log',\n\t'.sql',\n\t'.graphql',\n\t'.svelte',\n\t'.vue',\n];\n\nfunction generateId(): string {\n\treturn `file-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;\n}\n\nfunction getExtension(file: File): string {\n\tconst index = file.name.lastIndexOf('.');\n\treturn index >= 0 ? file.name.toLowerCase().slice(index) : '';\n}\n\nfunction getFileType(file: File): FileAttachmentType {\n\tif (IMAGE_TYPES.includes(file.type)) return 'image';\n\tif (PDF_TYPES.includes(file.type)) return 'pdf';\n\tif (TEXT_TYPES.includes(file.type)) return 'text';\n\tif (TEXT_EXTENSIONS.includes(getExtension(file))) return 'text';\n\treturn 'binary';\n}\n\nasync function fileToBase64(file: File): Promise<string> {\n\treturn new Promise((resolve, reject) => {\n\t\tconst reader = new FileReader();\n\t\treader.onload = () => {\n\t\t\tconst result = reader.result as string;\n\t\t\tconst base64 = result.split(',')[1];\n\t\t\tresolve(base64);\n\t\t};\n\t\treader.onerror = reject;\n\t\treader.readAsDataURL(file);\n\t});\n}\n\nasync function fileToText(file: File): Promise<string> {\n\treturn new Promise((resolve, reject) => {\n\t\tconst reader = new FileReader();\n\t\treader.onload = () => resolve(reader.result as string);\n\t\treader.onerror = reject;\n\t\treader.readAsText(file);\n\t});\n}\n\nasync function fileToPreview(file: File): Promise<string> {\n\treturn new Promise((resolve, reject) => {\n\t\tconst reader = new FileReader();\n\t\treader.onload = () => resolve(reader.result as string);\n\t\treader.onerror = reject;\n\t\treader.readAsDataURL(file);\n\t});\n}\n\nasync function uploadOriginalFile(\n\tfile: File,\n\tsessionId?: string,\n): Promise<UploadedAttachment> {\n\tconst response = await uploadAttachment({\n\t\tbody: {\n\t\t\tfile,\n\t\t\t...(sessionId ? { sessionId } : {}),\n\t\t},\n\t});\n\tif (response.error) {\n\t\tthrow new Error(extractErrorMessage(response.error));\n\t}\n\treturn response.data as UploadedAttachment;\n}\n\ninterface UseFileUploadOptions {\n\tmaxFiles?: number;\n\tmaxSizeMB?: number;\n\tpageWide?: boolean;\n\tsupportsImages?: boolean;\n\tsupportsFileAttachments?: boolean;\n\tsessionId?: string;\n\tonError?: (message: string) => void;\n}\n\nexport function useFileUpload(options: UseFileUploadOptions = {}) {\n\tconst {\n\t\tmaxFiles = 10,\n\t\tmaxSizeMB = 100,\n\t\tpageWide = true,\n\t\tsupportsImages = true,\n\t\tsupportsFileAttachments = true,\n\t\tsessionId,\n\t\tonError,\n\t} = options;\n\n\tconst [files, setFiles] = useState<FileAttachment[]>([]);\n\tconst [isDragging, setIsDragging] = useState(false);\n\tconst [error, setError] = useState<string | null>(null);\n\n\tconst maxSizeBytes = maxSizeMB * 1024 * 1024;\n\n\tconst validateFile = useCallback(\n\t\t(file: File): string | null => {\n\t\t\tif (file.size > maxSizeBytes) {\n\t\t\t\treturn `File too large: ${(file.size / 1024 / 1024).toFixed(1)}MB. Max: ${maxSizeMB}MB`;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\t[maxSizeBytes, maxSizeMB],\n\t);\n\n\tconst addFiles = useCallback(\n\t\tasync (inputFiles: FileList | File[]) => {\n\t\t\tsetError(null);\n\t\t\tconst fileArray = Array.from(inputFiles);\n\t\t\tconst remaining = maxFiles - files.length;\n\n\t\t\tif (remaining <= 0) {\n\t\t\t\tconst msg = `Maximum ${maxFiles} files allowed`;\n\t\t\t\tsetError(msg);\n\t\t\t\tonError?.(msg);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst filesToAdd = fileArray.slice(0, remaining);\n\t\t\tconst newFiles: FileAttachment[] = [];\n\n\t\t\tfor (const file of filesToAdd) {\n\t\t\t\tconst validationError = validateFile(file);\n\t\t\t\tif (validationError) {\n\t\t\t\t\tsetError(validationError);\n\t\t\t\t\tonError?.(validationError);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst fileType = getFileType(file);\n\n\t\t\t\ttry {\n\t\t\t\t\tlet preview: string | undefined;\n\t\t\t\t\tlet data: string | undefined;\n\t\t\t\t\tlet textContent: string | undefined;\n\t\t\t\t\tlet mediaType = file.type || 'application/octet-stream';\n\n\t\t\t\t\tif (fileType === 'image') {\n\t\t\t\t\t\tif (supportsImages) {\n\t\t\t\t\t\t\t[preview, data] = await Promise.all([\n\t\t\t\t\t\t\t\tfileToPreview(file),\n\t\t\t\t\t\t\t\tfileToBase64(file),\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpreview = await fileToPreview(file);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (fileType === 'pdf') {\n\t\t\t\t\t\tmediaType = 'application/pdf';\n\t\t\t\t\t\tif (supportsFileAttachments) {\n\t\t\t\t\t\t\tdata = await fileToBase64(file);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (fileType === 'text') {\n\t\t\t\t\t\ttextContent = await fileToText(file);\n\t\t\t\t\t\tdata = textContent;\n\t\t\t\t\t\tif (!file.type) {\n\t\t\t\t\t\t\tconst ext = file.name.toLowerCase();\n\t\t\t\t\t\t\tmediaType =\n\t\t\t\t\t\t\t\text.endsWith('.md') || ext.endsWith('.markdown')\n\t\t\t\t\t\t\t\t\t? 'text/markdown'\n\t\t\t\t\t\t\t\t\t: 'text/plain';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst id = generateId();\n\t\t\t\t\tnewFiles.push({\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tfile,\n\t\t\t\t\t\ttype: fileType,\n\t\t\t\t\t\tname: file.name,\n\t\t\t\t\t\tpreview,\n\t\t\t\t\t\tdata,\n\t\t\t\t\t\tmediaType,\n\t\t\t\t\t\ttextContent,\n\t\t\t\t\t\tuploadStatus: 'uploading',\n\t\t\t\t\t});\n\t\t\t\t} catch {\n\t\t\t\t\tconst msg = `Failed to process file: ${file.name}`;\n\t\t\t\t\tsetError(msg);\n\t\t\t\t\tonError?.(msg);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newFiles.length > 0) {\n\t\t\t\tsetFiles((prev) => [...prev, ...newFiles]);\n\t\t\t\tfor (const item of newFiles) {\n\t\t\t\t\tvoid uploadOriginalFile(item.file, sessionId)\n\t\t\t\t\t\t.then((uploadedAttachment) => {\n\t\t\t\t\t\t\tsetFiles((prev) =>\n\t\t\t\t\t\t\t\tprev.map((existing) =>\n\t\t\t\t\t\t\t\t\texisting.id === item.id\n\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\t...existing,\n\t\t\t\t\t\t\t\t\t\t\t\tuploadStatus: 'ready',\n\t\t\t\t\t\t\t\t\t\t\t\tuploadedAttachment,\n\t\t\t\t\t\t\t\t\t\t\t\tuploadError: undefined,\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t: existing,\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\t.catch((uploadError: unknown) => {\n\t\t\t\t\t\t\tconst msg =\n\t\t\t\t\t\t\t\tuploadError instanceof Error\n\t\t\t\t\t\t\t\t\t? uploadError.message\n\t\t\t\t\t\t\t\t\t: `Failed to upload ${item.name}`;\n\t\t\t\t\t\t\tsetFiles((prev) =>\n\t\t\t\t\t\t\t\tprev.map((existing) =>\n\t\t\t\t\t\t\t\t\texisting.id === item.id\n\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\t...existing,\n\t\t\t\t\t\t\t\t\t\t\t\tuploadStatus: 'failed',\n\t\t\t\t\t\t\t\t\t\t\t\tuploadError: msg,\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t: existing,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tonError?.(msg);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\tfiles.length,\n\t\t\tmaxFiles,\n\t\t\tvalidateFile,\n\t\t\tonError,\n\t\t\tsessionId,\n\t\t\tsupportsImages,\n\t\t\tsupportsFileAttachments,\n\t\t],\n\t);\n\n\tconst removeFile = useCallback((id: string) => {\n\t\tsetFiles((prev) => prev.filter((f) => f.id !== id));\n\t\tsetError(null);\n\t}, []);\n\n\tconst clearFiles = useCallback(() => {\n\t\tsetFiles([]);\n\t\tsetError(null);\n\t}, []);\n\n\tconst handleDragEnter = useCallback((e: DragEvent) => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tif (e.dataTransfer.types.includes('Files')) {\n\t\t\tsetIsDragging(true);\n\t\t}\n\t}, []);\n\n\tconst handleDragLeave = useCallback((e: DragEvent) => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tconst rect = (e.currentTarget as HTMLElement).getBoundingClientRect();\n\t\tconst x = e.clientX;\n\t\tconst y = e.clientY;\n\t\tif (x < rect.left || x > rect.right || y < rect.top || y > rect.bottom) {\n\t\t\tsetIsDragging(false);\n\t\t}\n\t}, []);\n\n\tconst handleDragOver = useCallback((e: DragEvent) => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t}, []);\n\n\tconst handleDrop = useCallback(\n\t\t(e: DragEvent) => {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\tsetIsDragging(false);\n\n\t\t\tconst droppedFiles = e.dataTransfer.files;\n\t\t\tif (droppedFiles.length > 0) {\n\t\t\t\taddFiles(Array.from(droppedFiles));\n\t\t\t}\n\t\t},\n\t\t[addFiles],\n\t);\n\n\tconst handlePaste = useCallback(\n\t\t(e: ClipboardEvent) => {\n\t\t\tconst items = e.clipboardData?.items;\n\t\t\tif (!items) return;\n\n\t\t\tconst pastedFiles: File[] = [];\n\t\t\tfor (const item of Array.from(items)) {\n\t\t\t\tif (item.kind === 'file') {\n\t\t\t\t\tconst file = item.getAsFile();\n\t\t\t\t\tif (file) {\n\t\t\t\t\t\tpastedFiles.push(file);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (pastedFiles.length > 0) {\n\t\t\t\te.preventDefault();\n\t\t\t\taddFiles(pastedFiles);\n\t\t\t}\n\t\t},\n\t\t[addFiles],\n\t);\n\n\tuseEffect(() => {\n\t\tif (!pageWide) return;\n\n\t\tlet dragCounter = 0;\n\n\t\tconst onDragEnter = (e: globalThis.DragEvent) => {\n\t\t\te.preventDefault();\n\t\t\tif (e.dataTransfer?.types.includes('Files')) {\n\t\t\t\tdragCounter++;\n\t\t\t\tif (dragCounter === 1) {\n\t\t\t\t\tsetIsDragging(true);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tconst onDragLeave = (e: globalThis.DragEvent) => {\n\t\t\te.preventDefault();\n\t\t\tdragCounter--;\n\t\t\tif (dragCounter === 0) {\n\t\t\t\tsetIsDragging(false);\n\t\t\t}\n\t\t};\n\n\t\tconst onDragOver = (e: globalThis.DragEvent) => {\n\t\t\te.preventDefault();\n\t\t};\n\n\t\tconst onDrop = (e: globalThis.DragEvent) => {\n\t\t\te.preventDefault();\n\t\t\tdragCounter = 0;\n\t\t\tsetIsDragging(false);\n\n\t\t\tconst droppedFiles = e.dataTransfer?.files;\n\t\t\tif (droppedFiles && droppedFiles.length > 0) {\n\t\t\t\taddFiles(Array.from(droppedFiles));\n\t\t\t}\n\t\t};\n\n\t\tdocument.addEventListener('dragenter', onDragEnter);\n\t\tdocument.addEventListener('dragleave', onDragLeave);\n\t\tdocument.addEventListener('dragover', onDragOver);\n\t\tdocument.addEventListener('drop', onDrop);\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('dragenter', onDragEnter);\n\t\t\tdocument.removeEventListener('dragleave', onDragLeave);\n\t\t\tdocument.removeEventListener('dragover', onDragOver);\n\t\t\tdocument.removeEventListener('drop', onDrop);\n\t\t};\n\t}, [pageWide, addFiles]);\n\n\tconst images = files.filter((f) => f.type === 'image');\n\tconst documents = files.filter((f) => f.type !== 'image');\n\n\treturn {\n\t\tfiles,\n\t\timages,\n\t\tdocuments,\n\t\tisDragging,\n\t\terror,\n\t\taddFiles,\n\t\tremoveFile,\n\t\tclearFiles,\n\t\thandleDragEnter,\n\t\thandleDragLeave,\n\t\thandleDragOver,\n\t\thandleDrop,\n\t\thandlePaste,\n\t};\n}\n",
|
|
53
53
|
"import { useQuery } from '@tanstack/react-query';\nimport { apiClient } from '../lib/api-client';\nimport { useSessionFilesStore } from '../stores/sessionFilesStore';\n\nexport function useSessionFiles(sessionId: string | undefined, enabled = true) {\n\tconst isExpanded = useSessionFilesStore((state) => state.isExpanded);\n\n\treturn useQuery({\n\t\tqueryKey: ['session', sessionId, 'files'],\n\t\tqueryFn: () => (sessionId ? apiClient.getSessionFiles(sessionId) : null),\n\t\tenabled: !!sessionId && enabled,\n\t\trefetchInterval: isExpanded && enabled ? 5000 : false,\n\t\tretry: 1,\n\t\tstaleTime: 3000,\n\t});\n}\n",
|
|
54
54
|
"import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport { apiClient } from '../lib/api-client';\nimport type { CreateBranchRequest } from '../types/api';\nimport { sessionsQueryKey } from './useSessions';\n\nexport function useCreateBranch(sessionId: string | undefined) {\n\tconst queryClient = useQueryClient();\n\n\treturn useMutation({\n\t\tmutationFn: (data: CreateBranchRequest) => {\n\t\t\tif (!sessionId) throw new Error('No session ID');\n\t\t\treturn apiClient.createBranch(sessionId, data);\n\t\t},\n\t\tonSuccess: () => {\n\t\t\tqueryClient.invalidateQueries({ queryKey: sessionsQueryKey });\n\t\t\tif (sessionId) {\n\t\t\t\tqueryClient.invalidateQueries({\n\t\t\t\t\tqueryKey: ['branches', sessionId],\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t});\n}\n\nexport function useBranches(sessionId: string | undefined) {\n\treturn useQuery({\n\t\tqueryKey: ['branches', sessionId],\n\t\tqueryFn: () => {\n\t\t\tif (!sessionId) throw new Error('No session ID');\n\t\t\treturn apiClient.listBranches(sessionId);\n\t\t},\n\t\tenabled: Boolean(sessionId),\n\t});\n}\n\nexport function useParentSession(sessionId: string | undefined) {\n\treturn useQuery({\n\t\tqueryKey: ['parentSession', sessionId],\n\t\tqueryFn: () => {\n\t\t\tif (!sessionId) throw new Error('No session ID');\n\t\t\treturn apiClient.getParentSession(sessionId);\n\t\t},\n\t\tenabled: Boolean(sessionId),\n\t});\n}\n",
|
|
55
55
|
"import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport {\n\tcreateResearchSession as apiCreateResearchSession,\n\tdeleteResearchSession as apiDeleteResearchSession,\n\texportResearchSession as apiExportResearchSession,\n\tinjectResearchContext as apiInjectResearchContext,\n\tlistResearchSessions as apiListResearchSessions,\n} from '@ottocode/api';\nimport { usePendingResearchStore } from '../stores/pendingResearchStore';\nimport { sessionsQueryKey } from './useSessions';\n\nexport interface ResearchSession {\n\tid: string;\n\ttitle: string | null;\n\tcreatedAt: number;\n\tlastActiveAt: number | null;\n\tprovider: string;\n\tmodel: string;\n\tmessageCount: number;\n}\n\nexport interface ResearchSessionsResponse {\n\tsessions: ResearchSession[];\n}\n\nexport interface CreateResearchResponse {\n\tsession: ResearchSession;\n\tparentSessionId: string;\n}\n\nexport interface InjectContextResponse {\n\tcontent: string;\n\tlabel: string;\n\tsessionId: string;\n\tparentSessionId: string;\n\ttokenEstimate: number;\n}\n\nexport interface ExportToSessionResponse {\n\tnewSession: {\n\t\tid: string;\n\t\ttitle: string | null;\n\t\tagent: string;\n\t\tprovider: string;\n\t\tmodel: string;\n\t};\n\tinjectedContext: string;\n}\n\nclass ResearchApiClient {\n\tasync listResearchSessions(\n\t\tparentSessionId: string,\n\t): Promise<ResearchSessionsResponse> {\n\t\tconst response = await apiListResearchSessions({\n\t\t\tpath: { parentId: parentSessionId },\n\t\t});\n\t\tif (response.error) throw new Error(JSON.stringify(response.error));\n\t\treturn response.data as unknown as ResearchSessionsResponse;\n\t}\n\n\tasync createResearchSession(\n\t\tparentSessionId: string,\n\t\tdata: { provider?: string; model?: string; title?: string },\n\t): Promise<CreateResearchResponse> {\n\t\tconst response = await apiCreateResearchSession({\n\t\t\tpath: { parentId: parentSessionId },\n\t\t\tbody: data,\n\t\t});\n\t\tif (response.error) throw new Error(JSON.stringify(response.error));\n\t\treturn response.data as unknown as CreateResearchResponse;\n\t}\n\n\tasync deleteResearchSession(\n\t\tresearchId: string,\n\t): Promise<{ success: boolean }> {\n\t\tconst response = await apiDeleteResearchSession({\n\t\t\tpath: { researchId },\n\t\t});\n\t\tif (response.error) throw new Error(JSON.stringify(response.error));\n\t\treturn response.data as { success: boolean };\n\t}\n\n\tasync injectContext(\n\t\tparentSessionId: string,\n\t\tresearchSessionId: string,\n\t\tlabel?: string,\n\t): Promise<InjectContextResponse> {\n\t\tconst response = await apiInjectResearchContext({\n\t\t\tpath: { parentId: parentSessionId },\n\t\t\tbody: { researchSessionId, label },\n\t\t});\n\t\tif (response.error) throw new Error(JSON.stringify(response.error));\n\t\treturn response.data as InjectContextResponse;\n\t}\n\n\tasync exportToNewSession(\n\t\tresearchId: string,\n\t\tdata?: { provider?: string; model?: string; agent?: string },\n\t): Promise<ExportToSessionResponse> {\n\t\tconst response = await apiExportResearchSession({\n\t\t\tpath: { researchId },\n\t\t\tbody: data ?? {},\n\t\t});\n\t\tif (response.error) throw new Error(JSON.stringify(response.error));\n\t\treturn response.data as ExportToSessionResponse;\n\t}\n}\n\nconst researchApi = new ResearchApiClient();\n\nexport function useResearchSessions(\n\tparentSessionId: string | null,\n\tenabled = true,\n) {\n\treturn useQuery({\n\t\tqueryKey: ['research', 'sessions', parentSessionId],\n\t\tqueryFn: () => researchApi.listResearchSessions(parentSessionId as string),\n\t\tenabled: !!parentSessionId && enabled,\n\t\tstaleTime: 30000,\n\t});\n}\n\nexport function useCreateResearchSession() {\n\tconst queryClient = useQueryClient();\n\n\treturn useMutation({\n\t\tmutationFn: ({\n\t\t\tparentSessionId,\n\t\t\tdata,\n\t\t}: {\n\t\t\tparentSessionId: string;\n\t\t\tdata?: { provider?: string; model?: string; title?: string };\n\t\t}) => researchApi.createResearchSession(parentSessionId, data ?? {}),\n\t\tonSuccess: (_, { parentSessionId }) => {\n\t\t\tqueryClient.invalidateQueries({\n\t\t\t\tqueryKey: ['research', 'sessions', parentSessionId],\n\t\t\t});\n\t\t},\n\t});\n}\n\nexport function useDeleteResearchSession() {\n\tconst queryClient = useQueryClient();\n\n\treturn useMutation({\n\t\tmutationFn: (researchId: string) =>\n\t\t\tresearchApi.deleteResearchSession(researchId),\n\t\tonSuccess: () => {\n\t\t\tqueryClient.invalidateQueries({ queryKey: ['research', 'sessions'] });\n\t\t},\n\t});\n}\n\nexport function useInjectContext() {\n\tconst addContext = usePendingResearchStore((state) => state.addContext);\n\n\treturn useMutation({\n\t\tmutationFn: ({\n\t\t\tparentSessionId,\n\t\t\tresearchSessionId,\n\t\t\tlabel,\n\t\t}: {\n\t\t\tparentSessionId: string;\n\t\t\tresearchSessionId: string;\n\t\t\tlabel?: string;\n\t\t}) => researchApi.injectContext(parentSessionId, researchSessionId, label),\n\t\tonSuccess: (data, { parentSessionId }) => {\n\t\t\taddContext(parentSessionId, {\n\t\t\t\tid: data.sessionId,\n\t\t\t\tsessionId: data.sessionId,\n\t\t\t\tlabel: data.label,\n\t\t\t\tcontent: data.content,\n\t\t\t});\n\t\t},\n\t});\n}\n\nexport function useExportToSession() {\n\tconst queryClient = useQueryClient();\n\n\treturn useMutation({\n\t\tmutationFn: ({\n\t\t\tresearchId,\n\t\t\tdata,\n\t\t}: {\n\t\t\tresearchId: string;\n\t\t\tdata?: { provider?: string; model?: string; agent?: string };\n\t\t}) => researchApi.exportToNewSession(researchId, data),\n\t\tonSuccess: () => {\n\t\t\tqueryClient.invalidateQueries({ queryKey: sessionsQueryKey });\n\t\t},\n\t});\n}\n",
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
"import { useCallback, useEffect, useRef, useState } from 'react';\nimport { apiClient } from '../lib/api-client';\n\nconst TARGET_SAMPLE_RATE = 16000;\nconst PCM_FRAME_BYTES = 3200; // 100ms of 16 kHz mono pcm_s16le\n\ntype DictationServerEvent =\n\t| {\n\t\t\ttype: 'ready';\n\t\t\tsessionId: string;\n\t\t\tmodel: string;\n\t }\n\t| {\n\t\t\ttype: 'recording';\n\t\t\treceivedMs: number;\n\t\t\treceivedBytes: number;\n\t }\n\t| {\n\t\t\ttype: 'final';\n\t\t\ttext: string;\n\t\t\tlanguage: string;\n\t\t\tmodel: string;\n\t\t\tdurationMs: number;\n\t }\n\t| {\n\t\t\ttype: 'error';\n\t\t\tcode: string;\n\t\t\tmessage: string;\n\t };\n\ninterface UseVoiceInputOptions {\n\t/** Called when local dictation returns transcript text. */\n\tonTranscript?: (transcript: string, isFinal: boolean) => void;\n\tonError?: (message: string) => void;\n\tonNeedsInstall?: () => void;\n\tlang?: string;\n}\n\ninterface UseVoiceInputResult {\n\tisListening: boolean;\n\tisTranscribing: boolean;\n\tisSupported: boolean;\n\tanalyser: AnalyserNode | null;\n\terror: string | null;\n\tstart: () => Promise<void>;\n\tstop: () => void;\n}\n\ntype ScriptProcessorNodeLike = ScriptProcessorNode & {\n\tonaudioprocess: ((event: AudioProcessingEvent) => void) | null;\n};\n\nfunction getAudioContextConstructor(): typeof AudioContext | null {\n\tif (typeof window === 'undefined') return null;\n\treturn (\n\t\twindow.AudioContext ||\n\t\t(window as unknown as { webkitAudioContext?: typeof AudioContext })\n\t\t\t.webkitAudioContext ||\n\t\tnull\n\t);\n}\n\nfunction toLanguageCode(lang: string): string {\n\treturn lang.split('-', 1)[0]?.toLowerCase() || 'en';\n}\n\nfunction parseServerEvent(raw: string): DictationServerEvent | null {\n\ttry {\n\t\tconst value = JSON.parse(raw) as DictationServerEvent;\n\t\tif (!value || typeof value.type !== 'string') return null;\n\t\treturn value;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nfunction resampleLinear(\n\tinput: Float32Array,\n\tinputSampleRate: number,\n\toutputSampleRate: number,\n): Float32Array {\n\tif (inputSampleRate === outputSampleRate) return input;\n\tconst ratio = inputSampleRate / outputSampleRate;\n\tconst outputLength = Math.max(1, Math.floor(input.length / ratio));\n\tconst output = new Float32Array(outputLength);\n\tfor (let i = 0; i < outputLength; i++) {\n\t\tconst inputIndex = i * ratio;\n\t\tconst before = Math.floor(inputIndex);\n\t\tconst after = Math.min(before + 1, input.length - 1);\n\t\tconst weight = inputIndex - before;\n\t\toutput[i] = input[before] * (1 - weight) + input[after] * weight;\n\t}\n\treturn output;\n}\n\nfunction floatToPcm16(samples: Float32Array): ArrayBuffer {\n\tconst buffer = new ArrayBuffer(samples.length * 2);\n\tconst view = new DataView(buffer);\n\tfor (let i = 0; i < samples.length; i++) {\n\t\tconst sample = Math.max(-1, Math.min(1, samples[i]));\n\t\tview.setInt16(i * 2, sample < 0 ? sample * 0x8000 : sample * 0x7fff, true);\n\t}\n\treturn buffer;\n}\n\nfunction appendBuffer(\n\ta: Uint8Array<ArrayBufferLike>,\n\tb: Uint8Array<ArrayBufferLike>,\n): Uint8Array<ArrayBufferLike> {\n\tconst next = new Uint8Array(a.byteLength + b.byteLength);\n\tnext.set(a, 0);\n\tnext.set(b, a.byteLength);\n\treturn next;\n}\n\n/**\n * Owns local streaming dictation: getUserMedia + AudioContext for waveform and\n * PCM frame capture, plus a WebSocket session to the local otto server.\n *\n * The returned `analyser` is intended to be passed to <LiveWaveform>.\n */\nexport function useVoiceInput({\n\tonTranscript,\n\tonError,\n\tonNeedsInstall,\n\tlang = 'en-US',\n}: UseVoiceInputOptions = {}): UseVoiceInputResult {\n\tconst [isListening, setIsListening] = useState(false);\n\tconst [isTranscribing, setIsTranscribing] = useState(false);\n\tconst [analyser, setAnalyser] = useState<AnalyserNode | null>(null);\n\tconst [error, setError] = useState<string | null>(null);\n\n\tconst streamRef = useRef<MediaStream | null>(null);\n\tconst audioContextRef = useRef<AudioContext | null>(null);\n\tconst processorRef = useRef<ScriptProcessorNodeLike | null>(null);\n\tconst sourceRef = useRef<MediaStreamAudioSourceNode | null>(null);\n\tconst socketRef = useRef<WebSocket | null>(null);\n\tconst frameBufferRef = useRef<Uint8Array<ArrayBufferLike>>(new Uint8Array(0));\n\tconst stoppingRef = useRef(false);\n\tconst sessionIdRef = useRef<string | null>(null);\n\n\tconst onTranscriptRef = useRef(onTranscript);\n\tconst onErrorRef = useRef(onError);\n\tconst onNeedsInstallRef = useRef(onNeedsInstall);\n\tuseEffect(() => {\n\t\tonTranscriptRef.current = onTranscript;\n\t\tonErrorRef.current = onError;\n\t\tonNeedsInstallRef.current = onNeedsInstall;\n\t}, [onTranscript, onError, onNeedsInstall]);\n\n\tconst isSupported =\n\t\ttypeof window !== 'undefined' &&\n\t\t!!navigator.mediaDevices?.getUserMedia &&\n\t\t!!getAudioContextConstructor() &&\n\t\ttypeof WebSocket !== 'undefined';\n\n\tconst emitError = useCallback((message: string) => {\n\t\tsetError(message);\n\t\tonErrorRef.current?.(message);\n\t}, []);\n\n\tconst handleMissingModel = useCallback(() => {\n\t\tif (onNeedsInstallRef.current) {\n\t\t\tonNeedsInstallRef.current();\n\t\t\treturn;\n\t\t}\n\t\temitError(\n\t\t\t'Install a local dictation model from Settings before recording.',\n\t\t);\n\t}, [emitError]);\n\n\tconst cleanupAudio = useCallback(() => {\n\t\tif (processorRef.current) {\n\t\t\tprocessorRef.current.onaudioprocess = null;\n\t\t\tprocessorRef.current.disconnect();\n\t\t\tprocessorRef.current = null;\n\t\t}\n\t\tif (sourceRef.current) {\n\t\t\tsourceRef.current.disconnect();\n\t\t\tsourceRef.current = null;\n\t\t}\n\t\tif (streamRef.current) {\n\t\t\tfor (const track of streamRef.current.getTracks()) track.stop();\n\t\t\tstreamRef.current = null;\n\t\t}\n\t\tif (audioContextRef.current && audioContextRef.current.state !== 'closed') {\n\t\t\taudioContextRef.current.close().catch(() => {});\n\t\t}\n\t\taudioContextRef.current = null;\n\t\tframeBufferRef.current = new Uint8Array(0);\n\t\tsetAnalyser(null);\n\t}, []);\n\n\tconst cleanup = useCallback(() => {\n\t\tcleanupAudio();\n\t\tif (socketRef.current) {\n\t\t\tconst socket = socketRef.current;\n\t\t\tsocket.onopen = null;\n\t\t\tsocket.onmessage = null;\n\t\t\tsocket.onerror = null;\n\t\t\tsocket.onclose = null;\n\t\t\tif (socket.readyState === WebSocket.OPEN) {\n\t\t\t\tsocket.close(1000, 'Dictation cleanup');\n\t\t\t}\n\t\t\tsocketRef.current = null;\n\t\t}\n\t\tsessionIdRef.current = null;\n\t\tstoppingRef.current = false;\n\t\tsetIsListening(false);\n\t\tsetIsTranscribing(false);\n\t}, [cleanupAudio]);\n\n\tconst flushFrameBuffer = useCallback((force = false) => {\n\t\tconst socket = socketRef.current;\n\t\tif (!socket || socket.readyState !== WebSocket.OPEN) return;\n\t\tlet buffer = frameBufferRef.current;\n\t\twhile (buffer.byteLength >= PCM_FRAME_BYTES) {\n\t\t\tconst frame = buffer.slice(0, PCM_FRAME_BYTES);\n\t\t\tsocket.send(frame);\n\t\t\tbuffer = buffer.slice(PCM_FRAME_BYTES);\n\t\t}\n\t\tif (force && buffer.byteLength > 0) {\n\t\t\tsocket.send(buffer);\n\t\t\tbuffer = new Uint8Array(0);\n\t\t}\n\t\tframeBufferRef.current = buffer;\n\t}, []);\n\n\tconst handleAudioProcess = useCallback(\n\t\t(event: AudioProcessingEvent) => {\n\t\t\tconst audioContext = audioContextRef.current;\n\t\t\tconst socket = socketRef.current;\n\t\t\tif (\n\t\t\t\t!audioContext ||\n\t\t\t\t!socket ||\n\t\t\t\tsocket.readyState !== WebSocket.OPEN ||\n\t\t\t\tstoppingRef.current\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst input = event.inputBuffer.getChannelData(0);\n\t\t\tconst resampled = resampleLinear(\n\t\t\t\tinput,\n\t\t\t\taudioContext.sampleRate,\n\t\t\t\tTARGET_SAMPLE_RATE,\n\t\t\t);\n\t\t\tframeBufferRef.current = appendBuffer(\n\t\t\t\tframeBufferRef.current,\n\t\t\t\tnew Uint8Array(floatToPcm16(resampled)),\n\t\t\t);\n\t\t\tflushFrameBuffer(false);\n\t\t},\n\t\t[flushFrameBuffer],\n\t);\n\n\tconst stop = useCallback(() => {\n\t\tstoppingRef.current = true;\n\t\tflushFrameBuffer(true);\n\t\tcleanupAudio();\n\t\tconst socket = socketRef.current;\n\t\tif (socket?.readyState === WebSocket.OPEN) {\n\t\t\tsetIsListening(false);\n\t\t\tsetIsTranscribing(true);\n\t\t\tsocket.send(JSON.stringify({ type: 'stop' }));\n\t\t} else {\n\t\t\tsetIsListening(false);\n\t\t\tsetIsTranscribing(false);\n\t\t}\n\t}, [cleanupAudio, flushFrameBuffer]);\n\n\tconst start = useCallback(async () => {\n\t\tif (!isSupported) {\n\t\t\temitError('Voice input is not supported in this browser');\n\t\t\treturn;\n\t\t}\n\n\t\tcleanup();\n\t\tsetError(null);\n\t\tsetIsTranscribing(false);\n\t\tstoppingRef.current = false;\n\n\t\ttry {\n\t\t\tconst status = await apiClient.getDictationStatus();\n\t\t\tconst model = status.models.find(\n\t\t\t\t(item) => item.id === status.defaultModel,\n\t\t\t);\n\t\t\tif (!model?.installed) {\n\t\t\t\thandleMissingModel();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst session = await apiClient.createDictationSession({\n\t\t\t\tmodel: status.defaultModel,\n\t\t\t\tlanguage: toLanguageCode(lang),\n\t\t\t});\n\t\t\tif (!session.modelInstalled) {\n\t\t\t\thandleMissingModel();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst socket = new WebSocket(session.wsUrl);\n\t\t\tsocket.binaryType = 'arraybuffer';\n\t\t\tsocketRef.current = socket;\n\t\t\tsessionIdRef.current = session.id;\n\n\t\t\tawait new Promise<void>((resolve, reject) => {\n\t\t\t\tconst timeout = window.setTimeout(() => {\n\t\t\t\t\treject(new Error('Timed out connecting to local dictation'));\n\t\t\t\t}, 5000);\n\n\t\t\t\tsocket.onopen = () => {\n\t\t\t\t\twindow.clearTimeout(timeout);\n\t\t\t\t\tsocket.send(\n\t\t\t\t\t\tJSON.stringify({\n\t\t\t\t\t\t\ttype: 'start',\n\t\t\t\t\t\t\tmodel: session.model,\n\t\t\t\t\t\t\tlanguage: toLanguageCode(lang),\n\t\t\t\t\t\t\tformat: {\n\t\t\t\t\t\t\t\tencoding: 'pcm_s16le',\n\t\t\t\t\t\t\t\tsampleRate: TARGET_SAMPLE_RATE,\n\t\t\t\t\t\t\t\tchannels: 1,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tpartialResults: false,\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\t\tresolve();\n\t\t\t\t};\n\n\t\t\t\tsocket.onerror = () => {\n\t\t\t\t\twindow.clearTimeout(timeout);\n\t\t\t\t\treject(new Error('Could not connect to local dictation'));\n\t\t\t\t};\n\t\t\t});\n\n\t\t\tsocket.onmessage = (event) => {\n\t\t\t\tif (typeof event.data !== 'string') return;\n\t\t\t\tconst payload = parseServerEvent(event.data);\n\t\t\t\tif (!payload) return;\n\t\t\t\tif (payload.type === 'final') {\n\t\t\t\t\tonTranscriptRef.current?.(payload.text.trim(), true);\n\t\t\t\t\tcleanup();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (payload.type === 'error') {\n\t\t\t\t\temitError(payload.message);\n\t\t\t\t\tcleanup();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tsocket.onclose = () => {\n\t\t\t\tif (!stoppingRef.current) setIsListening(false);\n\t\t\t\tsetIsTranscribing(false);\n\t\t\t};\n\n\t\t\tconst stream = await navigator.mediaDevices.getUserMedia({\n\t\t\t\taudio: {\n\t\t\t\t\techoCancellation: true,\n\t\t\t\t\tnoiseSuppression: true,\n\t\t\t\t\tautoGainControl: true,\n\t\t\t\t},\n\t\t\t});\n\t\t\tstreamRef.current = stream;\n\n\t\t\tconst AudioContextCtor = getAudioContextConstructor();\n\t\t\tif (!AudioContextCtor) throw new Error('AudioContext is unavailable');\n\t\t\tconst audioContext = new AudioContextCtor();\n\t\t\tconst source = audioContext.createMediaStreamSource(stream);\n\t\t\tconst analyserNode = audioContext.createAnalyser();\n\t\t\tanalyserNode.fftSize = 256;\n\t\t\tanalyserNode.smoothingTimeConstant = 0.55;\n\n\t\t\tconst processor = audioContext.createScriptProcessor(\n\t\t\t\t4096,\n\t\t\t\t1,\n\t\t\t\t1,\n\t\t\t) as ScriptProcessorNodeLike;\n\t\t\tprocessor.onaudioprocess = handleAudioProcess;\n\t\t\tsource.connect(analyserNode);\n\t\t\tsource.connect(processor);\n\t\t\tprocessor.connect(audioContext.destination);\n\n\t\t\taudioContextRef.current = audioContext;\n\t\t\tsourceRef.current = source;\n\t\t\tprocessorRef.current = processor;\n\t\t\tsetAnalyser(analyserNode);\n\t\t\tsetIsListening(true);\n\t\t} catch (err) {\n\t\t\tconst name = err instanceof Error ? err.name : '';\n\t\t\tconst msg =\n\t\t\t\tname === 'NotAllowedError'\n\t\t\t\t\t? 'Microphone permission denied'\n\t\t\t\t\t: err instanceof Error\n\t\t\t\t\t\t? err.message\n\t\t\t\t\t\t: 'Could not start voice input';\n\t\t\temitError(msg);\n\t\t\tcleanup();\n\t\t}\n\t}, [\n\t\tcleanup,\n\t\temitError,\n\t\thandleAudioProcess,\n\t\thandleMissingModel,\n\t\tisSupported,\n\t\tlang,\n\t]);\n\n\tuseEffect(() => cleanup, [cleanup]);\n\n\treturn {\n\t\tisListening,\n\t\tisTranscribing,\n\t\tisSupported,\n\t\tanalyser,\n\t\terror,\n\t\tstart,\n\t\tstop,\n\t};\n}\n",
|
|
74
74
|
"import { useCallback, useEffect, useRef, useState } from 'react';\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { apiClient } from '../lib/api-client';\nimport type {\n\tDictationModelInstallEvent,\n\tDictationModelState,\n\tDictationStatusResponse,\n} from '../lib/api-client';\n\nconst DICTATION_STATUS_QUERY_KEY = ['dictation', 'status'] as const;\n\nfunction mergeModelState(\n\tcurrent: DictationStatusResponse | undefined,\n\tmodel: DictationModelState,\n): DictationStatusResponse | undefined {\n\tif (!current) return current;\n\treturn {\n\t\t...current,\n\t\tmodels: current.models.map((item) => (item.id === model.id ? model : item)),\n\t};\n}\n\nfunction parseInstallEvent(raw: string): DictationModelInstallEvent | null {\n\ttry {\n\t\tconst value = JSON.parse(raw) as Partial<DictationModelInstallEvent>;\n\t\tif (value.type !== 'model' || !value.model) return null;\n\t\treturn value as DictationModelInstallEvent;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nexport function useDictationModels() {\n\tconst queryClient = useQueryClient();\n\tconst eventSourceRef = useRef<EventSource | null>(null);\n\tconst [activeInstallModelId, setActiveInstallModelId] = useState<\n\t\tstring | null\n\t>(null);\n\tconst [installProgress, setInstallProgress] =\n\t\tuseState<DictationModelState | null>(null);\n\tconst [installStreamError, setInstallStreamError] = useState<string | null>(\n\t\tnull,\n\t);\n\n\tconst statusQuery = useQuery({\n\t\tqueryKey: DICTATION_STATUS_QUERY_KEY,\n\t\tqueryFn: () => apiClient.getDictationStatus(),\n\t\trefetchInterval: (query) =>\n\t\t\tquery.state.data?.models.some((model) => model.installing) ? 1000 : 30000,\n\t});\n\n\tconst closeInstallStream = useCallback(() => {\n\t\tif (eventSourceRef.current) {\n\t\t\teventSourceRef.current.close();\n\t\t\teventSourceRef.current = null;\n\t\t}\n\t}, []);\n\n\tconst openInstallStream = useCallback(\n\t\t(modelId: string) => {\n\t\t\tif (typeof EventSource === 'undefined') return;\n\t\t\tcloseInstallStream();\n\t\t\tsetActiveInstallModelId(modelId);\n\t\t\tsetInstallStreamError(null);\n\n\t\t\tconst eventSource = new EventSource(\n\t\t\t\tapiClient.getDictationModelInstallEventsUrl(modelId),\n\t\t\t);\n\t\t\teventSourceRef.current = eventSource;\n\n\t\t\teventSource.onmessage = (event) => {\n\t\t\t\tconst payload = parseInstallEvent(event.data);\n\t\t\t\tif (!payload) return;\n\t\t\t\tsetInstallProgress(payload.model);\n\t\t\t\tqueryClient.setQueryData<DictationStatusResponse | undefined>(\n\t\t\t\t\tDICTATION_STATUS_QUERY_KEY,\n\t\t\t\t\t(current) => mergeModelState(current, payload.model),\n\t\t\t\t);\n\t\t\t\tif (!payload.model.installing) {\n\t\t\t\t\tcloseInstallStream();\n\t\t\t\t\tsetActiveInstallModelId(null);\n\t\t\t\t\tvoid queryClient.invalidateQueries({\n\t\t\t\t\t\tqueryKey: DICTATION_STATUS_QUERY_KEY,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\teventSource.onerror = () => {\n\t\t\t\tsetInstallStreamError('Lost dictation model install progress stream');\n\t\t\t\tcloseInstallStream();\n\t\t\t\tsetActiveInstallModelId(null);\n\t\t\t\tvoid queryClient.invalidateQueries({\n\t\t\t\t\tqueryKey: DICTATION_STATUS_QUERY_KEY,\n\t\t\t\t});\n\t\t\t};\n\t\t},\n\t\t[closeInstallStream, queryClient],\n\t);\n\n\tuseEffect(() => closeInstallStream, [closeInstallStream]);\n\n\tconst installMutation = useMutation({\n\t\tmutationFn: (input: { model: string; force?: boolean }) =>\n\t\t\tapiClient.installDictationModel(input),\n\t\tonSuccess: (data) => {\n\t\t\tsetInstallProgress(data.model);\n\t\t\tqueryClient.setQueryData<DictationStatusResponse | undefined>(\n\t\t\t\tDICTATION_STATUS_QUERY_KEY,\n\t\t\t\t(current) => mergeModelState(current, data.model),\n\t\t\t);\n\t\t\tif (data.model.installing) {\n\t\t\t\topenInstallStream(data.model.id);\n\t\t\t} else {\n\t\t\t\tcloseInstallStream();\n\t\t\t\tsetActiveInstallModelId(null);\n\t\t\t\tvoid queryClient.invalidateQueries({\n\t\t\t\t\tqueryKey: DICTATION_STATUS_QUERY_KEY,\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t});\n\n\tconst removeMutation = useMutation({\n\t\tmutationFn: (model: string) => apiClient.removeDictationModel(model),\n\t\tonSuccess: (data) => {\n\t\t\tqueryClient.setQueryData<DictationStatusResponse | undefined>(\n\t\t\t\tDICTATION_STATUS_QUERY_KEY,\n\t\t\t\t(current) => mergeModelState(current, data.model),\n\t\t\t);\n\t\t\tvoid queryClient.invalidateQueries({\n\t\t\t\tqueryKey: DICTATION_STATUS_QUERY_KEY,\n\t\t\t});\n\t\t},\n\t});\n\n\tconst installModel = useCallback(\n\t\t(model: string, options: { force?: boolean } = {}) =>\n\t\t\tinstallMutation.mutateAsync({ model, force: options.force }),\n\t\t[installMutation],\n\t);\n\n\tconst removeModel = useCallback(\n\t\t(model: string) => removeMutation.mutateAsync(model),\n\t\t[removeMutation],\n\t);\n\n\treturn {\n\t\tstatusQuery,\n\t\tstatus: statusQuery.data,\n\t\tmodels: statusQuery.data?.models ?? [],\n\t\tdefaultModel: statusQuery.data?.defaultModel ?? null,\n\t\tisAvailable: statusQuery.data?.available ?? false,\n\t\tactiveInstallModelId,\n\t\tinstallProgress,\n\t\tinstallStreamError,\n\t\tinstallModel,\n\t\tremoveModel,\n\t\tinstallMutation,\n\t\tremoveMutation,\n\t\topenInstallStream,\n\t\tcloseInstallStream,\n\t};\n}\n"
|
|
75
75
|
],
|
|
76
|
-
"mappings": "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",
|
|
77
|
-
"debugId": "
|
|
76
|
+
"mappings": "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",
|
|
77
|
+
"debugId": "21BA48969B41542064756E2164756E21",
|
|
78
78
|
"names": []
|
|
79
79
|
}
|