@ottocode/web-sdk 0.1.306 → 0.1.307

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/dist/components/chat/ChatInput.d.ts.map +1 -1
  2. package/dist/components/chat/ConfigModal.d.ts.map +1 -1
  3. package/dist/components/chat/InputSubagentsBar.d.ts +6 -0
  4. package/dist/components/chat/InputSubagentsBar.d.ts.map +1 -0
  5. package/dist/components/goals/GoalsSidebar.d.ts +6 -0
  6. package/dist/components/goals/GoalsSidebar.d.ts.map +1 -0
  7. package/dist/components/goals/GoalsSidebarToggle.d.ts +6 -0
  8. package/dist/components/goals/GoalsSidebarToggle.d.ts.map +1 -0
  9. package/dist/components/goals/index.d.ts +3 -0
  10. package/dist/components/goals/index.d.ts.map +1 -0
  11. package/dist/components/index.d.ts +4 -0
  12. package/dist/components/index.d.ts.map +1 -1
  13. package/dist/components/index.js +6220 -4751
  14. package/dist/components/index.js.map +25 -13
  15. package/dist/components/messages/GoalStartNotice.d.ts +12 -0
  16. package/dist/components/messages/GoalStartNotice.d.ts.map +1 -0
  17. package/dist/components/messages/SubagentResultsNotice.d.ts +21 -0
  18. package/dist/components/messages/SubagentResultsNotice.d.ts.map +1 -0
  19. package/dist/components/messages/UserMessageGroup.d.ts.map +1 -1
  20. package/dist/components/messages/compactActivity.d.ts.map +1 -1
  21. package/dist/components/messages/renderers/GoalToolRenderer.d.ts +3 -0
  22. package/dist/components/messages/renderers/GoalToolRenderer.d.ts.map +1 -0
  23. package/dist/components/messages/renderers/SubagentToolRenderer.d.ts +3 -0
  24. package/dist/components/messages/renderers/SubagentToolRenderer.d.ts.map +1 -0
  25. package/dist/components/messages/renderers/index.d.ts.map +1 -1
  26. package/dist/components/settings/SettingsSidebar.d.ts.map +1 -1
  27. package/dist/components/subagents/SubagentFloatingViewer.d.ts +6 -0
  28. package/dist/components/subagents/SubagentFloatingViewer.d.ts.map +1 -0
  29. package/dist/hooks/index.d.ts +1 -0
  30. package/dist/hooks/index.d.ts.map +1 -1
  31. package/dist/hooks/index.js +260 -63
  32. package/dist/hooks/index.js.map +9 -7
  33. package/dist/hooks/useAgents.d.ts +2 -1
  34. package/dist/hooks/useAgents.d.ts.map +1 -1
  35. package/dist/hooks/useChatComposer.d.ts +1 -0
  36. package/dist/hooks/useChatComposer.d.ts.map +1 -1
  37. package/dist/hooks/useConfig.d.ts +4 -0
  38. package/dist/hooks/useConfig.d.ts.map +1 -1
  39. package/dist/hooks/useGoals.d.ts +48 -0
  40. package/dist/hooks/useGoals.d.ts.map +1 -0
  41. package/dist/hooks/useSessionStream.d.ts.map +1 -1
  42. package/dist/index.js +6276 -4795
  43. package/dist/index.js.map +25 -13
  44. package/dist/lib/api-client/config.d.ts +3 -0
  45. package/dist/lib/api-client/config.d.ts.map +1 -1
  46. package/dist/lib/api-client/goals.d.ts +70 -0
  47. package/dist/lib/api-client/goals.d.ts.map +1 -0
  48. package/dist/lib/api-client/index.d.ts +35 -0
  49. package/dist/lib/api-client/index.d.ts.map +1 -1
  50. package/dist/lib/index.js +78 -1
  51. package/dist/lib/index.js.map +6 -5
  52. package/dist/stores/goalsPanelStore.d.ts +9 -0
  53. package/dist/stores/goalsPanelStore.d.ts.map +1 -0
  54. package/dist/stores/index.d.ts +2 -0
  55. package/dist/stores/index.d.ts.map +1 -1
  56. package/dist/stores/index.js +61 -9
  57. package/dist/stores/index.js.map +5 -3
  58. package/dist/stores/subagentViewerStore.d.ts +15 -0
  59. package/dist/stores/subagentViewerStore.d.ts.map +1 -0
  60. package/package.json +3 -3
@@ -1,15 +1,16 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../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/lib/sse-client.ts"],
3
+ "sources": ["../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/goals.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/lib/sse-client.ts"],
4
4
  "sourcesContent": [
5
5
  "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",
6
6
  "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",
7
7
  "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",
8
8
  "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",
9
9
  "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",
10
- "import {\n\tgetConfig as apiGetConfig,\n\tgetProviderModels as apiGetProviderModels,\n\tgetAllModels as apiGetAllModels,\n\tgetAgentDetails as apiGetAgentDetails,\n\tgetAgent as apiGetAgent,\n\tgetConfigTools as apiGetConfigTools,\n\tupsertAgent as apiUpsertAgent,\n\tdeleteAgent as apiDeleteAgent,\n\tdiscoverProviderModels as apiDiscoverProviderModels,\n\tupdateDefaults as apiUpdateDefaults,\n\tupdateProviderSettings as apiUpdateProviderSettings,\n\tdeleteProviderSettings as apiDeleteProviderSettings,\n} from '@ottocode/api';\nimport type {\n\tGetAgentDetailsResponse,\n\tGetAgentResponse,\n\tGetConfigToolsResponse,\n\tUpsertAgentData,\n\tUpsertAgentResponse,\n\tDeleteAgentResponse,\n} from '@ottocode/api';\nimport type { AllModelsResponse } from '../../types/api';\nimport { extractErrorMessage } from './utils';\n\ntype ProviderCompatibility =\n\t| 'openai'\n\t| 'anthropic'\n\t| 'google'\n\t| 'openrouter'\n\t| 'ollama'\n\t| 'openai-compatible';\n\nexport type DiscoveredProviderModel = {\n\tid: string;\n\tlabel: string;\n\ttoolCall?: boolean;\n\treasoningText?: boolean;\n\tvision?: boolean;\n\tattachment?: boolean;\n\tcontextWindow?: number;\n\tmaxOutputTokens?: number;\n};\n\nexport type AgentDetail = GetAgentResponse['agent'];\n\nexport type AgentToolGroups = {\n\tfirstClass?: string[];\n\tloadable?: string[];\n};\n\nexport type AgentToolConfig = AgentToolGroups;\n\nexport type UpdateAgentInput = UpsertAgentData['body'];\n\nexport type ToolDetail = GetConfigToolsResponse['tools'][number];\n\nexport const configMixin = {\n\tasync getConfig(): Promise<{\n\t\tagents: string[];\n\t\tproviders: string[];\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\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};\n\t}> {\n\t\tconst response = await apiGetConfig();\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 getAgentDetails(): Promise<GetAgentDetailsResponse> {\n\t\tconst response = await apiGetAgentDetails();\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as GetAgentDetailsResponse;\n\t},\n\n\tasync getAgent(name: string): Promise<GetAgentResponse> {\n\t\tconst response = await apiGetAgent({ path: { agent: name } });\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as GetAgentResponse;\n\t},\n\n\tasync getConfigTools(): Promise<GetConfigToolsResponse> {\n\t\tconst response = await apiGetConfigTools();\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as GetConfigToolsResponse;\n\t},\n\n\tasync updateAgent(\n\t\tname: string,\n\t\tinput: UpdateAgentInput,\n\t): Promise<UpsertAgentResponse> {\n\t\tconst response = await apiUpsertAgent({\n\t\t\tpath: { agent: name },\n\t\t\tbody: input,\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as UpsertAgentResponse;\n\t},\n\n\tasync deleteAgent(\n\t\tname: string,\n\t\tscope: 'local' | 'global' = 'local',\n\t): Promise<DeleteAgentResponse> {\n\t\tconst response = await apiDeleteAgent({\n\t\t\tpath: { agent: name },\n\t\t\tquery: { scope },\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as DeleteAgentResponse;\n\t},\n\n\tasync getModels(providerId: string): Promise<{\n\t\tmodels: Array<{\n\t\t\tid: string;\n\t\t\tlabel: string;\n\t\t\ttoolCall?: boolean;\n\t\t\treasoningText?: boolean;\n\t\t\tvision?: boolean;\n\t\t\tattachment?: boolean;\n\t\t\tfree?: boolean;\n\t\t\tcontextWindow?: number;\n\t\t\tmaxOutputTokens?: number;\n\t\t\tavailable?: boolean;\n\t\t\tunavailableReason?: string;\n\t\t}>;\n\t\tdefault: string;\n\t\tallowAnyModel?: boolean;\n\t\tdynamicModels?: boolean;\n\t\tlabel?: string;\n\t}> {\n\t\tconst response = await apiGetProviderModels({\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: API type mismatch\n\t\t\tpath: { provider: providerId 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 getAllModels(): Promise<AllModelsResponse> {\n\t\tconst response = await apiGetAllModels();\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as AllModelsResponse;\n\t},\n\n\tasync discoverProviderModels(data: {\n\t\tcompatibility: ProviderCompatibility;\n\t\tbaseURL: string;\n\t\tapiKey?: string;\n\t}): Promise<{\n\t\tbaseURL?: string;\n\t\tmodels: DiscoveredProviderModel[];\n\t\tunsupported?: boolean;\n\t\tmessage?: string;\n\t}> {\n\t\tconst response = await apiDiscoverProviderModels({\n\t\t\tbody: data,\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as {\n\t\t\tbaseURL?: string;\n\t\t\tmodels: DiscoveredProviderModel[];\n\t\t\tunsupported?: boolean;\n\t\t\tmessage?: string;\n\t\t};\n\t},\n\n\tasync updateProviderSettings(\n\t\tprovider: string,\n\t\tdata: {\n\t\t\tenabled?: boolean;\n\t\t\tcustom?: boolean;\n\t\t\tlabel?: string;\n\t\t\tcompatibility?: ProviderCompatibility;\n\t\t\tbaseURL?: string | null;\n\t\t\tapiKey?: string | null;\n\t\t\tmodels?: string[];\n\t\t\tallowAnyModel?: boolean;\n\t\t},\n\t): Promise<{ success: boolean; provider: string }> {\n\t\tconst response = await apiUpdateProviderSettings({\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: API type mismatch\n\t\t\tpath: { provider: provider as any },\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\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn response.data as any;\n\t},\n\n\tasync deleteProviderSettings(\n\t\tprovider: string,\n\t): Promise<{ success: boolean; provider: string }> {\n\t\tconst response = await apiDeleteProviderSettings({\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: API type mismatch\n\t\t\tpath: { provider: provider 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 updateDefaults(data: {\n\t\tagent?: string;\n\t\tprovider?: string;\n\t\tmodel?: string;\n\t\ttoolApproval?: 'auto' | 'dangerous' | 'all' | 'yolo';\n\t\tguidedMode?: boolean;\n\t\treasoningText?: boolean;\n\t\treasoningLevel?: 'minimal' | 'low' | 'medium' | 'high' | 'max' | 'xhigh';\n\t\ttheme?: 'light' | 'dark';\n\t\tvimMode?: boolean;\n\t\tcompactThread?: boolean;\n\t\tfontFamily?: string;\n\t\tsmartEdges?: boolean;\n\t\treleaseToSend?: boolean;\n\t\tfullWidthContent?: boolean;\n\t\tautoCompactThresholdTokens?: number | null;\n\t\tscope?: 'global' | 'local';\n\t}): Promise<{\n\t\tsuccess: boolean;\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\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};\n\t}> {\n\t\tconst response = await apiUpdateDefaults({\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: API type mismatch\n\t\t\tbody: { scope: 'global', ...data } 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",
10
+ "import {\n\tgetConfig as apiGetConfig,\n\tgetProviderModels as apiGetProviderModels,\n\tgetAllModels as apiGetAllModels,\n\tgetAgentDetails as apiGetAgentDetails,\n\tgetAgent as apiGetAgent,\n\tgetConfigTools as apiGetConfigTools,\n\tupsertAgent as apiUpsertAgent,\n\tdeleteAgent as apiDeleteAgent,\n\tdiscoverProviderModels as apiDiscoverProviderModels,\n\tupdateDefaults as apiUpdateDefaults,\n\tupdateProviderSettings as apiUpdateProviderSettings,\n\tdeleteProviderSettings as apiDeleteProviderSettings,\n} from '@ottocode/api';\nimport type {\n\tGetAgentDetailsResponse,\n\tGetAgentResponse,\n\tGetConfigToolsResponse,\n\tUpsertAgentData,\n\tUpsertAgentResponse,\n\tDeleteAgentResponse,\n} from '@ottocode/api';\nimport type { AllModelsResponse } from '../../types/api';\nimport { extractErrorMessage } from './utils';\n\ntype ProviderCompatibility =\n\t| 'openai'\n\t| 'anthropic'\n\t| 'google'\n\t| 'openrouter'\n\t| 'ollama'\n\t| 'openai-compatible';\n\nexport type DiscoveredProviderModel = {\n\tid: string;\n\tlabel: string;\n\ttoolCall?: boolean;\n\treasoningText?: boolean;\n\tvision?: boolean;\n\tattachment?: boolean;\n\tcontextWindow?: number;\n\tmaxOutputTokens?: number;\n};\n\nexport type AgentDetail = GetAgentResponse['agent'];\n\nexport type AgentToolGroups = {\n\tfirstClass?: string[];\n\tloadable?: string[];\n};\n\nexport type AgentToolConfig = AgentToolGroups;\n\nexport type UpdateAgentInput = UpsertAgentData['body'];\n\nexport type ToolDetail = GetConfigToolsResponse['tools'][number];\n\nexport const configMixin = {\n\tasync getConfig(): Promise<{\n\t\tagents: string[];\n\t\tproviders: string[];\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\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\tottoEnabled?: boolean;\n\t\t};\n\t}> {\n\t\tconst response = await apiGetConfig();\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 getAgentDetails(): Promise<GetAgentDetailsResponse> {\n\t\tconst response = await apiGetAgentDetails();\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as GetAgentDetailsResponse;\n\t},\n\n\tasync getAgent(name: string): Promise<GetAgentResponse> {\n\t\tconst response = await apiGetAgent({ path: { agent: name } });\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as GetAgentResponse;\n\t},\n\n\tasync getConfigTools(): Promise<GetConfigToolsResponse> {\n\t\tconst response = await apiGetConfigTools();\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as GetConfigToolsResponse;\n\t},\n\n\tasync updateAgent(\n\t\tname: string,\n\t\tinput: UpdateAgentInput,\n\t): Promise<UpsertAgentResponse> {\n\t\tconst response = await apiUpsertAgent({\n\t\t\tpath: { agent: name },\n\t\t\tbody: input,\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as UpsertAgentResponse;\n\t},\n\n\tasync deleteAgent(\n\t\tname: string,\n\t\tscope: 'local' | 'global' = 'local',\n\t): Promise<DeleteAgentResponse> {\n\t\tconst response = await apiDeleteAgent({\n\t\t\tpath: { agent: name },\n\t\t\tquery: { scope },\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as DeleteAgentResponse;\n\t},\n\n\tasync getModels(providerId: string): Promise<{\n\t\tmodels: Array<{\n\t\t\tid: string;\n\t\t\tlabel: string;\n\t\t\ttoolCall?: boolean;\n\t\t\treasoningText?: boolean;\n\t\t\tvision?: boolean;\n\t\t\tattachment?: boolean;\n\t\t\tfree?: boolean;\n\t\t\tcontextWindow?: number;\n\t\t\tmaxOutputTokens?: number;\n\t\t\tavailable?: boolean;\n\t\t\tunavailableReason?: string;\n\t\t}>;\n\t\tdefault: string;\n\t\tallowAnyModel?: boolean;\n\t\tdynamicModels?: boolean;\n\t\tlabel?: string;\n\t}> {\n\t\tconst response = await apiGetProviderModels({\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: API type mismatch\n\t\t\tpath: { provider: providerId 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 getAllModels(): Promise<AllModelsResponse> {\n\t\tconst response = await apiGetAllModels();\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as AllModelsResponse;\n\t},\n\n\tasync discoverProviderModels(data: {\n\t\tcompatibility: ProviderCompatibility;\n\t\tbaseURL: string;\n\t\tapiKey?: string;\n\t}): Promise<{\n\t\tbaseURL?: string;\n\t\tmodels: DiscoveredProviderModel[];\n\t\tunsupported?: boolean;\n\t\tmessage?: string;\n\t}> {\n\t\tconst response = await apiDiscoverProviderModels({\n\t\t\tbody: data,\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as {\n\t\t\tbaseURL?: string;\n\t\t\tmodels: DiscoveredProviderModel[];\n\t\t\tunsupported?: boolean;\n\t\t\tmessage?: string;\n\t\t};\n\t},\n\n\tasync updateProviderSettings(\n\t\tprovider: string,\n\t\tdata: {\n\t\t\tenabled?: boolean;\n\t\t\tcustom?: boolean;\n\t\t\tlabel?: string;\n\t\t\tcompatibility?: ProviderCompatibility;\n\t\t\tbaseURL?: string | null;\n\t\t\tapiKey?: string | null;\n\t\t\tmodels?: string[];\n\t\t\tallowAnyModel?: boolean;\n\t\t},\n\t): Promise<{ success: boolean; provider: string }> {\n\t\tconst response = await apiUpdateProviderSettings({\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: API type mismatch\n\t\t\tpath: { provider: provider as any },\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\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn response.data as any;\n\t},\n\n\tasync deleteProviderSettings(\n\t\tprovider: string,\n\t): Promise<{ success: boolean; provider: string }> {\n\t\tconst response = await apiDeleteProviderSettings({\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: API type mismatch\n\t\t\tpath: { provider: provider 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 updateDefaults(data: {\n\t\tagent?: string;\n\t\tprovider?: string;\n\t\tmodel?: string;\n\t\ttoolApproval?: 'auto' | 'dangerous' | 'all' | 'yolo';\n\t\tguidedMode?: boolean;\n\t\treasoningText?: boolean;\n\t\treasoningLevel?: 'minimal' | 'low' | 'medium' | 'high' | 'max' | 'xhigh';\n\t\ttheme?: 'light' | 'dark';\n\t\tvimMode?: boolean;\n\t\tcompactThread?: boolean;\n\t\tfontFamily?: string;\n\t\tsmartEdges?: boolean;\n\t\treleaseToSend?: boolean;\n\t\tfullWidthContent?: boolean;\n\t\tautoCompactThresholdTokens?: number | null;\n\t\tottoEnabled?: boolean;\n\t\tscope?: 'global' | 'local';\n\t}): Promise<{\n\t\tsuccess: boolean;\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\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\tottoEnabled?: boolean;\n\t\t};\n\t}> {\n\t\tconst response = await apiUpdateDefaults({\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: API type mismatch\n\t\t\tbody: { scope: 'global', ...data } 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",
11
11
  "import {\n\tlistFiles as apiListFiles,\n\tsearchFiles as apiSearchFiles,\n\tgetFileTree as apiGetFileTree,\n\treadFile as apiReadFile,\n\tgetSessionFiles as apiGetSessionFiles,\n} from '@ottocode/api';\nimport type { SessionFilesResponse } from '../../types/api';\nimport { extractErrorMessage } from './utils';\n\nexport const filesMixin = {\n\tasync listFiles() {\n\t\tconst response = await apiListFiles();\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as {\n\t\t\tfiles: string[];\n\t\t\tignoredFiles?: string[];\n\t\t\tchangedFiles: Array<{ path: string; status: string }>;\n\t\t\ttruncated: boolean;\n\t\t};\n\t},\n\n\tasync searchFiles(query = '') {\n\t\tconst response = await apiSearchFiles({ query: { q: query } });\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as {\n\t\t\tfiles: string[];\n\t\t\tignoredFiles?: string[];\n\t\t\tchangedFiles: Array<{ path: string; status: string }>;\n\t\t\ttruncated: boolean;\n\t\t};\n\t},\n\n\tasync getFileTree(dirPath = '.'): Promise<{\n\t\titems: Array<{\n\t\t\tname: string;\n\t\t\tpath: string;\n\t\t\ttype: 'file' | 'directory';\n\t\t\tgitignored?: boolean;\n\t\t\tvendor?: boolean;\n\t\t\tsearchable?: boolean;\n\t\t}>;\n\t\tpath: string;\n\t\ttruncated: boolean;\n\t}> {\n\t\tconst response = await apiGetFileTree({\n\t\t\tquery: { path: dirPath },\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 readFileContent(filePath: string): Promise<{\n\t\tcontent: string;\n\t\tpath: string;\n\t\textension: string;\n\t\tlineCount: number;\n\t}> {\n\t\tconst response = await apiReadFile({\n\t\t\tquery: { path: filePath },\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 getSessionFiles(sessionId: string): Promise<SessionFilesResponse> {\n\t\tconst response = await apiGetSessionFiles({ path: { sessionId } });\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as SessionFilesResponse;\n\t},\n};\n",
12
12
  "import {\n\tcreateBranch as apiCreateBranch,\n\tlistBranches as apiListBranches,\n\tgetParentSession as apiGetParentSession,\n\tgetShareStatus as apiGetShareStatus,\n\tshareSession as apiShareSession,\n\tsyncShare as apiSyncShare,\n} from '@ottocode/api';\nimport type {\n\tCreateBranchRequest,\n\tBranchResult,\n\tListBranchesResponse,\n\tParentSessionResponse,\n\tShareStatus,\n\tShareSessionResponse,\n\tSyncSessionResponse,\n} from '../../types/api';\nimport { extractErrorMessage } from './utils';\n\nexport const branchesMixin = {\n\tasync createBranch(\n\t\tsessionId: string,\n\t\tdata: CreateBranchRequest,\n\t): Promise<BranchResult> {\n\t\tconst response = await apiCreateBranch({\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 response.data as unknown as BranchResult;\n\t},\n\n\tasync listBranches(sessionId: string): Promise<ListBranchesResponse> {\n\t\tconst response = await apiListBranches({ path: { sessionId } });\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as unknown as ListBranchesResponse;\n\t},\n\n\tasync getParentSession(sessionId: string): Promise<ParentSessionResponse> {\n\t\tconst response = await apiGetParentSession({ path: { sessionId } });\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as ParentSessionResponse;\n\t},\n\n\tasync getShareStatus(sessionId: string): Promise<ShareStatus> {\n\t\tconst response = await apiGetShareStatus({ path: { sessionId } });\n\t\tif (response.error) return { shared: false };\n\t\treturn response.data as ShareStatus;\n\t},\n\n\tasync shareSession(sessionId: string): Promise<ShareSessionResponse> {\n\t\tconst response = await apiShareSession({ path: { sessionId } });\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as ShareSessionResponse;\n\t},\n\n\tasync syncSession(sessionId: string): Promise<SyncSessionResponse> {\n\t\tconst response = await apiSyncShare({ path: { sessionId } });\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as SyncSessionResponse;\n\t},\n};\n",
13
+ "import {\n\tgetSessionGoal as apiGetSessionGoal,\n\tcreateSessionGoal as apiCreateSessionGoal,\n\tupdateGoal as apiUpdateGoal,\n\taddGoalTasks as apiAddGoalTasks,\n\tupdateGoalTask as apiUpdateGoalTask,\n\tstartGoal as apiStartGoal,\n\tlistSessionSubagents as apiListSessionSubagents,\n} from '@ottocode/api';\nimport { extractErrorMessage } from './utils';\n\nexport type GoalTaskStatus =\n\t| 'pending'\n\t| 'in_progress'\n\t| 'done_pending'\n\t| 'completed'\n\t| 'blocked'\n\t| 'cancelled';\n\nexport type GoalStatus = 'active' | 'completed' | 'abandoned';\n\nexport type GoalTask = {\n\tid: string;\n\tgoalId: string;\n\tposition: number;\n\tcontent: string;\n\tstatus: GoalTaskStatus;\n\tnote: string | null;\n\tcreatedAt: number;\n\tupdatedAt: number;\n};\n\nexport type Goal = {\n\tid: string;\n\tprojectPath: string;\n\tsessionId: string | null;\n\ttitle: string;\n\tstatus: GoalStatus;\n\tstartedAt: number | null;\n\tcreatedAt: number;\n\tupdatedAt: number;\n\ttasks: GoalTask[];\n};\n\nexport type SubagentStatus = 'running' | 'completed' | 'failed' | 'cancelled';\n\nexport type Subagent = {\n\tid: string;\n\tparentSessionId: string;\n\tchildSessionId: string;\n\tagent: string;\n\ttask: string;\n\tstatus: SubagentStatus;\n\tsummary: string | null;\n\treported: boolean;\n\tcreatedAt: number;\n\tupdatedAt: number;\n};\n\nexport const goalsMixin = {\n\tasync getSessionGoal(sessionId: string): Promise<{ goal: Goal | null }> {\n\t\tconst response = await apiGetSessionGoal({ path: { sessionId } });\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as unknown as { goal: Goal | null };\n\t},\n\n\tasync createSessionGoal(\n\t\tsessionId: string,\n\t\tdata: { title: string; tasks?: string[] },\n\t): Promise<{ goal: Goal }> {\n\t\tconst response = await apiCreateSessionGoal({\n\t\t\tpath: { sessionId },\n\t\t\tbody: data,\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as unknown as { goal: Goal };\n\t},\n\n\tasync updateGoal(\n\t\tgoalId: string,\n\t\tdata: { title?: string; status?: GoalStatus },\n\t): Promise<{ goal: Goal }> {\n\t\tconst response = await apiUpdateGoal({\n\t\t\tpath: { goalId },\n\t\t\tbody: data,\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as unknown as { goal: Goal };\n\t},\n\n\tasync addGoalTasks(goalId: string, tasks: string[]): Promise<{ goal: Goal }> {\n\t\tconst response = await apiAddGoalTasks({\n\t\t\tpath: { goalId },\n\t\t\tbody: { tasks },\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as unknown as { goal: Goal };\n\t},\n\n\tasync updateGoalTask(\n\t\tgoalId: string,\n\t\ttaskId: string,\n\t\tdata: {\n\t\t\tcontent?: string;\n\t\t\tstatus?: GoalTaskStatus;\n\t\t\tnote?: string | null;\n\t\t},\n\t): Promise<{ task: GoalTask }> {\n\t\tconst response = await apiUpdateGoalTask({\n\t\t\tpath: { goalId, taskId },\n\t\t\tbody: data,\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as unknown as { task: GoalTask };\n\t},\n\n\tasync startGoal(goalId: string): Promise<{ goal: Goal }> {\n\t\tconst response = await apiStartGoal({ path: { goalId } });\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as unknown as { goal: Goal };\n\t},\n\n\tasync listSessionSubagents(\n\t\tsessionId: string,\n\t\tstatus?: SubagentStatus,\n\t): Promise<{ subagents: Subagent[] }> {\n\t\tconst response = await apiListSessionSubagents({\n\t\t\tpath: { sessionId },\n\t\t\tquery: status ? { status } : undefined,\n\t\t});\n\t\tif (response.error) throw new Error(extractErrorMessage(response.error));\n\t\treturn response.data as unknown as { subagents: Subagent[] };\n\t},\n};\n",
13
14
  "import {\n\tresolveApproval as apiResolveApproval,\n\tgetPendingApprovals as apiGetPendingApprovals,\n} from '@ottocode/api';\n\nexport const approvalMixin = {\n\tasync approveToolCall(\n\t\tsessionId: string,\n\t\tcallId: string,\n\t\tapproved: boolean,\n\t): Promise<{ ok: boolean; callId: string; approved: boolean }> {\n\t\tconst response = await apiResolveApproval({\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: API path type mismatch\n\t\t\tpath: { id: sessionId } as any,\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: API type mismatch\n\t\t\tbody: { callId, approved, sessionId } as any,\n\t\t});\n\t\tif (response.error) throw new Error('Failed to send tool approval');\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn response.data as any;\n\t},\n\n\tasync getPendingApprovals(sessionId: string): Promise<{\n\t\tok: boolean;\n\t\tpending: Array<{\n\t\t\tcallId: string;\n\t\t\ttoolName: string;\n\t\t\targs: unknown;\n\t\t\tmessageId: string;\n\t\t\tcreatedAt: number;\n\t\t}>;\n\t}> {\n\t\tconst response = await apiGetPendingApprovals({\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: API path type mismatch\n\t\t\tpath: { id: sessionId } as any,\n\t\t});\n\t\tif (response.error) return { ok: false, pending: [] };\n\t\t// biome-ignore lint/suspicious/noExplicitAny: API response structure\n\t\treturn response.data as any;\n\t},\n};\n",
14
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",
15
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,10 +18,10 @@
17
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",
18
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",
19
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",
20
- "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\tgetAgentDetails = configMixin.getAgentDetails;\n\tgetAgent = configMixin.getAgent;\n\tgetConfigTools = configMixin.getConfigTools;\n\tupdateAgent = configMixin.updateAgent;\n\tdeleteAgent = configMixin.deleteAgent;\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",
21
+ "import { sessionsMixin } from './sessions';\nimport { gitMixin } from './git';\nimport { configMixin } from './config';\nimport { filesMixin } from './files';\nimport { branchesMixin } from './branches';\nimport { goalsMixin } from './goals';\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\tGoal,\n\tGoalStatus,\n\tGoalTask,\n\tGoalTaskStatus,\n\tSubagent,\n\tSubagentStatus,\n} from './goals';\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\tgetAgentDetails = configMixin.getAgentDetails;\n\tgetAgent = configMixin.getAgent;\n\tgetConfigTools = configMixin.getConfigTools;\n\tupdateAgent = configMixin.updateAgent;\n\tdeleteAgent = configMixin.deleteAgent;\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\tgetSessionGoal = goalsMixin.getSessionGoal;\n\tcreateSessionGoal = goalsMixin.createSessionGoal;\n\tupdateGoal = goalsMixin.updateGoal;\n\taddGoalTasks = goalsMixin.addGoalTasks;\n\tupdateGoalTask = goalsMixin.updateGoalTask;\n\tstartGoal = goalsMixin.startGoal;\n\tlistSessionSubagents = goalsMixin.listSessionSubagents;\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",
21
22
  "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"
22
23
  ],
23
- "mappings": "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",
24
- "debugId": "AF146CE56B0026F664756E2164756E21",
24
+ "mappings": "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",
25
+ "debugId": "90F090F40272FCC864756E2164756E21",
25
26
  "names": []
26
27
  }
@@ -0,0 +1,9 @@
1
+ interface GoalsPanelState {
2
+ isExpanded: boolean;
3
+ toggleSidebar: () => void;
4
+ expandSidebar: () => void;
5
+ collapseSidebar: () => void;
6
+ }
7
+ export declare const useGoalsPanelStore: import("zustand").UseBoundStore<import("zustand").StoreApi<GoalsPanelState>>;
8
+ export {};
9
+ //# sourceMappingURL=goalsPanelStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"goalsPanelStore.d.ts","sourceRoot":"","sources":["../../src/stores/goalsPanelStore.ts"],"names":[],"mappings":"AAUA,UAAU,eAAe;IACxB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,eAAe,EAAE,MAAM,IAAI,CAAC;CAC5B;AAmBD,eAAO,MAAM,kBAAkB,8EAe5B,CAAC"}
@@ -20,6 +20,8 @@ export * from './usageStore';
20
20
  export * from './fileBrowserStore';
21
21
  export * from './fileSelectionStore';
22
22
  export * from './btwStore';
23
+ export * from './goalsPanelStore';
24
+ export * from './subagentViewerStore';
23
25
  export * from './mcpStore';
24
26
  export * from './skillsStore';
25
27
  export * from './agentsStore';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/stores/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/stores/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC"}
@@ -1274,8 +1274,58 @@ var useBtwStore = create25((set) => ({
1274
1274
  anchorRect: null
1275
1275
  })
1276
1276
  }));
1277
- // src/stores/agentsStore.ts
1277
+ // src/stores/goalsPanelStore.ts
1278
1278
  import { create as create26 } from "zustand";
1279
+ var otherPanelStores = [
1280
+ useGitStore,
1281
+ useSessionFilesStore,
1282
+ useResearchStore,
1283
+ useSettingsStore,
1284
+ useTunnelStore,
1285
+ useFileBrowserStore,
1286
+ useMCPStore,
1287
+ useSkillsStore
1288
+ ];
1289
+ function collapseOtherPanels() {
1290
+ for (const store of otherPanelStores) {
1291
+ store.getState().collapseSidebar();
1292
+ }
1293
+ }
1294
+ var useGoalsPanelStore = create26((set) => ({
1295
+ isExpanded: false,
1296
+ toggleSidebar: () => {
1297
+ set((state) => {
1298
+ const newExpanded = !state.isExpanded;
1299
+ if (newExpanded)
1300
+ collapseOtherPanels();
1301
+ return { isExpanded: newExpanded };
1302
+ });
1303
+ },
1304
+ expandSidebar: () => {
1305
+ collapseOtherPanels();
1306
+ set({ isExpanded: true });
1307
+ },
1308
+ collapseSidebar: () => set({ isExpanded: false })
1309
+ }));
1310
+ for (const store of otherPanelStores) {
1311
+ store.subscribe((state, prevState) => {
1312
+ if (state.isExpanded && !prevState.isExpanded) {
1313
+ useGoalsPanelStore.getState().collapseSidebar();
1314
+ }
1315
+ });
1316
+ }
1317
+ // src/stores/subagentViewerStore.ts
1318
+ import { create as create27 } from "zustand";
1319
+ var useSubagentViewerStore = create27((set) => ({
1320
+ isOpen: false,
1321
+ childSessionId: null,
1322
+ agent: null,
1323
+ task: null,
1324
+ open: ({ childSessionId, agent, task }) => set({ isOpen: true, childSessionId, agent, task }),
1325
+ close: () => set({ isOpen: false, childSessionId: null, agent: null, task: null })
1326
+ }));
1327
+ // src/stores/agentsStore.ts
1328
+ import { create as create28 } from "zustand";
1279
1329
  function collapseOtherRightPanels() {
1280
1330
  useGitStore.getState().collapseSidebar();
1281
1331
  useSessionFilesStore.getState().collapseSidebar();
@@ -1286,7 +1336,7 @@ function collapseOtherRightPanels() {
1286
1336
  useMCPStore.getState().collapseSidebar();
1287
1337
  useSkillsStore.getState().collapseSidebar();
1288
1338
  }
1289
- var useAgentsStore = create26((set) => ({
1339
+ var useAgentsStore = create28((set) => ({
1290
1340
  isExpanded: false,
1291
1341
  isManagerOpen: false,
1292
1342
  managerMode: "library",
@@ -1339,17 +1389,17 @@ var useAgentsStore = create26((set) => ({
1339
1389
  })
1340
1390
  }));
1341
1391
  // src/stores/filePickerStore.ts
1342
- import { create as create27 } from "zustand";
1343
- var useFilePickerStore = create27((set) => ({
1392
+ import { create as create29 } from "zustand";
1393
+ var useFilePickerStore = create29((set) => ({
1344
1394
  isOpen: false,
1345
1395
  open: () => set({ isOpen: true }),
1346
1396
  close: () => set({ isOpen: false }),
1347
1397
  toggle: () => set((state) => ({ isOpen: !state.isOpen }))
1348
1398
  }));
1349
1399
  // src/stores/rightRailStore.ts
1350
- import { create as create28 } from "zustand";
1400
+ import { create as create30 } from "zustand";
1351
1401
  import { persist as persist3 } from "zustand/middleware";
1352
- var useRightRailStore = create28()(persist3((set) => ({
1402
+ var useRightRailStore = create30()(persist3((set) => ({
1353
1403
  isPinned: false,
1354
1404
  togglePinned: () => set((state) => ({ isPinned: !state.isPinned })),
1355
1405
  setPinned: (pinned) => set({ isPinned: pinned })
@@ -1357,10 +1407,10 @@ var useRightRailStore = create28()(persist3((set) => ({
1357
1407
  name: "right-rail-storage"
1358
1408
  }));
1359
1409
  // src/stores/terminalStore.ts
1360
- import { create as create29 } from "zustand";
1410
+ import { create as create31 } from "zustand";
1361
1411
  var DEFAULT_HEIGHT = 300;
1362
1412
  var MIN_HEIGHT = 150;
1363
- var useTerminalStore = create29((set) => ({
1413
+ var useTerminalStore = create31((set) => ({
1364
1414
  isOpen: false,
1365
1415
  panelHeight: DEFAULT_HEIGHT,
1366
1416
  activeTabId: null,
@@ -1397,6 +1447,7 @@ export {
1397
1447
  useTodoStore,
1398
1448
  useToastStore,
1399
1449
  useTerminalStore,
1450
+ useSubagentViewerStore,
1400
1451
  useSkillsStore,
1401
1452
  useSidebarStore,
1402
1453
  useSettingsStore,
@@ -1410,6 +1461,7 @@ export {
1410
1461
  useOttoRouterStore,
1411
1462
  useOnboardingStore,
1412
1463
  useMCPStore,
1464
+ useGoalsPanelStore,
1413
1465
  useGitStore,
1414
1466
  useFocusStore,
1415
1467
  useFileSelectionStore,
@@ -1422,4 +1474,4 @@ export {
1422
1474
  NEW_SESSION_FILE_SELECTIONS_KEY
1423
1475
  };
1424
1476
 
1425
- //# debugId=3C60469F75D00ADA64756E2164756E21
1477
+ //# debugId=D5EF40EBCD0B01E164756E2164756E21