@ottocode/web-sdk 0.1.287 → 0.1.288

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/dist/components/browser/BrowserPanelToggle.d.ts +2 -0
  2. package/dist/components/browser/BrowserPanelToggle.d.ts.map +1 -0
  3. package/dist/components/browser/BrowserViewerPanel.d.ts +10 -0
  4. package/dist/components/browser/BrowserViewerPanel.d.ts.map +1 -0
  5. package/dist/components/browser/index.d.ts +3 -0
  6. package/dist/components/browser/index.d.ts.map +1 -0
  7. package/dist/components/common/FileTypeIcon.d.ts +14 -0
  8. package/dist/components/common/FileTypeIcon.d.ts.map +1 -0
  9. package/dist/components/index.d.ts +3 -0
  10. package/dist/components/index.d.ts.map +1 -1
  11. package/dist/components/index.js +3230 -2415
  12. package/dist/components/index.js.map +14 -8
  13. package/dist/components/messages/renderers/LoadToolsRenderer.d.ts +3 -0
  14. package/dist/components/messages/renderers/LoadToolsRenderer.d.ts.map +1 -0
  15. package/dist/components/messages/renderers/SimulatorRenderer.d.ts +3 -0
  16. package/dist/components/messages/renderers/SimulatorRenderer.d.ts.map +1 -0
  17. package/dist/components/messages/renderers/index.d.ts.map +1 -1
  18. package/dist/components/workspace/ViewerTabs.d.ts.map +1 -1
  19. package/dist/hooks/index.js +144 -11
  20. package/dist/hooks/index.js.map +4 -4
  21. package/dist/hooks/useSessionStream.d.ts.map +1 -1
  22. package/dist/hooks/useSimulator.d.ts +20 -0
  23. package/dist/hooks/useSimulator.d.ts.map +1 -0
  24. package/dist/index.js +3253 -2438
  25. package/dist/index.js.map +14 -8
  26. package/dist/stores/index.js +116 -11
  27. package/dist/stores/index.js.map +3 -3
  28. package/dist/stores/viewerTabsStore.d.ts +19 -0
  29. package/dist/stores/viewerTabsStore.d.ts.map +1 -1
  30. package/package.json +3 -3
@@ -38,6 +38,25 @@ function viewerPathsMatch(left, right) {
38
38
  function fileTabId(path) {
39
39
  return `file:${normalizeViewerPath(path)}`;
40
40
  }
41
+ function browserTabId(kind) {
42
+ return `browser:${kind}`;
43
+ }
44
+ function newBrowserTabId() {
45
+ return `browser:browser:${Date.now()}:${Math.random().toString(36).slice(2)}`;
46
+ }
47
+ function modeForTab(tab) {
48
+ return tab.type === "browser" ? "preview" : "work";
49
+ }
50
+ function findFallbackTabId(tabs, mode, closingIndex) {
51
+ const next = tabs.slice(closingIndex).find((tab) => modeForTab(tab) === mode);
52
+ if (next)
53
+ return next.id;
54
+ const previous = [...tabs].slice(0, closingIndex).reverse().find((tab) => modeForTab(tab) === mode);
55
+ return previous?.id ?? null;
56
+ }
57
+ function activeIdForWorkUpdate(state, targetId) {
58
+ return state.activeMode === "preview" && state.activePreviewTabId ? state.activePreviewTabId : targetId;
59
+ }
41
60
  function upsertTab(tabs, tab) {
42
61
  const existingIndex = tabs.findIndex((item) => item.id === tab.id);
43
62
  if (existingIndex === -1) {
@@ -117,9 +136,19 @@ function upsertAnnotation(annotations, annotation) {
117
136
  var useViewerTabsStore = create((set) => ({
118
137
  tabs: [],
119
138
  activeTabId: null,
139
+ activeMode: "work",
140
+ activeWorkTabId: null,
141
+ activePreviewTabId: null,
120
142
  followToolActivity: false,
121
143
  toggleFollowToolActivity: () => set((state) => ({ followToolActivity: !state.followToolActivity })),
122
144
  setFollowToolActivity: (enabled) => set({ followToolActivity: enabled }),
145
+ setViewerMode: (mode) => set((state) => {
146
+ const activeTabId = mode === "preview" ? state.activePreviewTabId : state.activeWorkTabId;
147
+ return {
148
+ activeMode: mode,
149
+ activeTabId: activeTabId ?? null
150
+ };
151
+ }),
123
152
  openGitDiffTab: (path, staged) => {
124
153
  const id = `git-diff:${staged ? "staged" : "unstaged"}:${path}`;
125
154
  set((state) => ({
@@ -130,6 +159,8 @@ var useViewerTabsStore = create((set) => ({
130
159
  path,
131
160
  staged
132
161
  }),
162
+ activeMode: "work",
163
+ activeWorkTabId: id,
133
164
  activeTabId: id
134
165
  }));
135
166
  },
@@ -144,6 +175,8 @@ var useViewerTabsStore = create((set) => ({
144
175
  operations,
145
176
  selectedOperationIndex: Math.max(0, operations.length - 1)
146
177
  }),
178
+ activeMode: "work",
179
+ activeWorkTabId: id,
147
180
  activeTabId: id
148
181
  }));
149
182
  },
@@ -166,6 +199,8 @@ var useViewerTabsStore = create((set) => ({
166
199
  patchPreview: existingFile?.patchPreview,
167
200
  writePreview: existingFile?.writePreview
168
201
  }),
202
+ activeMode: "work",
203
+ activeWorkTabId: targetId,
169
204
  activeTabId: targetId
170
205
  };
171
206
  });
@@ -189,7 +224,8 @@ var useViewerTabsStore = create((set) => ({
189
224
  patchPreview: undefined,
190
225
  writePreview: undefined
191
226
  }),
192
- activeTabId: targetId
227
+ activeWorkTabId: targetId,
228
+ activeTabId: activeIdForWorkUpdate(state, targetId)
193
229
  };
194
230
  });
195
231
  },
@@ -238,7 +274,8 @@ var useViewerTabsStore = create((set) => ({
238
274
  error: preview.error ?? existingPatchPreview?.error
239
275
  }
240
276
  }),
241
- activeTabId: targetId
277
+ activeWorkTabId: targetId,
278
+ activeTabId: activeIdForWorkUpdate(state, targetId)
242
279
  };
243
280
  }
244
281
  if (existingFile) {
@@ -261,7 +298,8 @@ var useViewerTabsStore = create((set) => ({
261
298
  error: preview.error ?? existingWritePreview?.error
262
299
  }
263
300
  }),
264
- activeTabId: targetId
301
+ activeWorkTabId: targetId,
302
+ activeTabId: activeIdForWorkUpdate(state, targetId)
265
303
  };
266
304
  }
267
305
  const existingWrite = existing?.toolName === "write" ? existing : undefined;
@@ -285,7 +323,8 @@ var useViewerTabsStore = create((set) => ({
285
323
  error: preview.error ?? existingWrite?.error
286
324
  }
287
325
  }),
288
- activeTabId: id
326
+ activeWorkTabId: id,
327
+ activeTabId: activeIdForWorkUpdate(state, id)
289
328
  };
290
329
  });
291
330
  },
@@ -300,23 +339,89 @@ var useViewerTabsStore = create((set) => ({
300
339
  skill,
301
340
  file
302
341
  }),
342
+ activeMode: "work",
343
+ activeWorkTabId: id,
303
344
  activeTabId: id
304
345
  }));
305
346
  },
306
- setActiveTab: (id) => set({ activeTabId: id }),
347
+ openBrowserTab: (url = "", options = {}) => {
348
+ const kind = options.kind ?? "browser";
349
+ set((state) => {
350
+ const shouldCreate = kind === "browser" && options.newTab === true;
351
+ const id = shouldCreate ? newBrowserTabId() : browserTabId(kind);
352
+ const existing = state.tabs.find((tab) => !shouldCreate && tab.type === "browser" && tab.id === id);
353
+ return {
354
+ tabs: upsertTab(state.tabs, {
355
+ id,
356
+ type: "browser",
357
+ title: options.title ?? existing?.title ?? "Browser",
358
+ url: url || existing?.url || "",
359
+ kind,
360
+ reloadKey: existing?.reloadKey ?? 0
361
+ }),
362
+ activeMode: "preview",
363
+ activePreviewTabId: id,
364
+ activeTabId: id
365
+ };
366
+ });
367
+ },
368
+ updateBrowserTabUrl: (id, url) => set((state) => ({
369
+ tabs: state.tabs.map((tab) => tab.id === id && tab.type === "browser" ? {
370
+ ...tab,
371
+ url,
372
+ title: tab.kind === "simulator" ? "Simulator" : "Browser"
373
+ } : tab)
374
+ })),
375
+ reloadBrowserTab: (id) => set((state) => ({
376
+ tabs: state.tabs.map((tab) => tab.id === id && tab.type === "browser" ? { ...tab, reloadKey: tab.reloadKey + 1 } : tab)
377
+ })),
378
+ setActiveTab: (id) => set((state) => {
379
+ const tab = state.tabs.find((item) => item.id === id);
380
+ const mode = tab ? modeForTab(tab) : state.activeMode;
381
+ return {
382
+ activeMode: mode,
383
+ activeWorkTabId: mode === "work" ? id : state.activeWorkTabId,
384
+ activePreviewTabId: mode === "preview" ? id : state.activePreviewTabId,
385
+ activeTabId: id
386
+ };
387
+ }),
307
388
  closeTab: (id) => set((state) => {
308
389
  const closingIndex = state.tabs.findIndex((tab) => tab.id === id);
390
+ const closingTab = state.tabs[closingIndex];
309
391
  const tabs = state.tabs.filter((tab) => tab.id !== id);
310
- let activeTabId = state.activeTabId;
311
- if (state.activeTabId === id) {
312
- activeTabId = tabs[closingIndex]?.id ?? tabs[closingIndex - 1]?.id ?? null;
392
+ let activeMode = state.activeMode;
393
+ let activeWorkTabId = state.activeWorkTabId;
394
+ let activePreviewTabId = state.activePreviewTabId;
395
+ if (closingTab && modeForTab(closingTab) === "work" && activeWorkTabId === id) {
396
+ activeWorkTabId = findFallbackTabId(tabs, "work", closingIndex);
397
+ }
398
+ if (closingTab && modeForTab(closingTab) === "preview" && activePreviewTabId === id) {
399
+ activePreviewTabId = findFallbackTabId(tabs, "preview", closingIndex);
400
+ }
401
+ if (activeMode === "work" && !activeWorkTabId && activePreviewTabId) {
402
+ activeMode = "preview";
403
+ }
404
+ if (activeMode === "preview" && !activePreviewTabId && activeWorkTabId) {
405
+ activeMode = "work";
313
406
  }
314
- return { tabs, activeTabId };
407
+ return {
408
+ tabs,
409
+ activeMode,
410
+ activeWorkTabId,
411
+ activePreviewTabId,
412
+ activeTabId: activeMode === "preview" ? activePreviewTabId : activeWorkTabId
413
+ };
315
414
  }),
316
415
  updateSessionFileOperationIndex: (id, index) => set((state) => ({
317
416
  tabs: state.tabs.map((tab) => tab.id === id && tab.type === "session-file-diff" ? { ...tab, selectedOperationIndex: index } : tab)
318
417
  })),
319
- closeAllTabs: () => set({ tabs: [], activeTabId: null })
418
+ closeAllTabs: () => set({
419
+ tabs: [],
420
+ activeTabId: null,
421
+ activeMode: "work",
422
+ activeWorkTabId: null,
423
+ activePreviewTabId: null
424
+ })
320
425
  }));
321
426
 
322
427
  // src/stores/skillsStore.ts
@@ -1079,4 +1184,4 @@ export {
1079
1184
  toast
1080
1185
  };
1081
1186
 
1082
- //# debugId=6E0E823BACA98FB164756E2164756E21
1187
+ //# debugId=16A1133C5DAB629464756E2164756E21
@@ -10,7 +10,7 @@
10
10
  "import { create } from 'zustand';\nimport { useGitStore } from './gitStore';\nimport { useSessionFilesStore } from './sessionFilesStore';\nimport { useResearchStore } from './researchStore';\nimport { useSettingsStore } from './settingsStore';\nimport { useTunnelStore } from './tunnelStore';\nimport { useMCPStore } from './mcpStore';\nimport { useSkillsStore } from './skillsStore';\nimport { useViewerTabsStore } from './viewerTabsStore';\n\ninterface FileBrowserState {\n\tisExpanded: boolean;\n\tselectedFile: string | null;\n\tisViewerOpen: boolean;\n\texpandedDirs: Set<string>;\n\n\ttoggleSidebar: () => void;\n\texpandSidebar: () => void;\n\tcollapseSidebar: () => void;\n\topenFile: (path: string) => void;\n\trevealFile: (path: string) => void;\n\tcloseViewer: () => void;\n\ttoggleDir: (path: string) => void;\n}\n\nfunction getAncestorDirs(path: string): string[] {\n\tconst normalizedPath = path.replace(/\\\\/g, '/').replace(/^\\.\\//, '');\n\tconst parts = normalizedPath.split('/').filter(Boolean);\n\treturn parts\n\t\t.slice(0, -1)\n\t\t.map((_, index) => parts.slice(0, index + 1).join('/'));\n}\n\nfunction revealFileState(state: FileBrowserState, path: string) {\n\tconst expandedDirs = new Set(state.expandedDirs);\n\tfor (const dir of getAncestorDirs(path)) {\n\t\texpandedDirs.add(dir);\n\t}\n\n\treturn {\n\t\tselectedFile: path,\n\t\texpandedDirs,\n\t};\n}\n\nexport const useFileBrowserStore = create<FileBrowserState>((set) => ({\n\tisExpanded: false,\n\tselectedFile: null,\n\tisViewerOpen: false,\n\texpandedDirs: new Set<string>(),\n\n\ttoggleSidebar: () => {\n\t\tset((state) => {\n\t\t\tconst newExpanded = !state.isExpanded;\n\t\t\tif (newExpanded) {\n\t\t\t\tuseGitStore.getState().collapseSidebar();\n\t\t\t\tuseSessionFilesStore.getState().collapseSidebar();\n\t\t\t\tuseResearchStore.getState().collapseSidebar();\n\t\t\t\tuseSettingsStore.getState().collapseSidebar();\n\t\t\t\tuseTunnelStore.getState().collapseSidebar();\n\t\t\t\tuseMCPStore.getState().collapseSidebar();\n\t\t\t\tuseSkillsStore.getState().collapseSidebar();\n\t\t\t}\n\t\t\treturn { isExpanded: newExpanded };\n\t\t});\n\t},\n\texpandSidebar: () => {\n\t\tuseGitStore.getState().collapseSidebar();\n\t\tuseSessionFilesStore.getState().collapseSidebar();\n\t\tuseResearchStore.getState().collapseSidebar();\n\t\tuseSettingsStore.getState().collapseSidebar();\n\t\tuseTunnelStore.getState().collapseSidebar();\n\t\tuseMCPStore.getState().collapseSidebar();\n\t\tuseSkillsStore.getState().collapseSidebar();\n\t\tset({ isExpanded: true });\n\t},\n\tcollapseSidebar: () =>\n\t\tset({\n\t\t\tisExpanded: false,\n\t\t\tisViewerOpen: false,\n\t\t\tselectedFile: null,\n\t\t}),\n\topenFile: (path) => {\n\t\tuseViewerTabsStore.getState().openFileTab(path);\n\t\tset((state) => ({\n\t\t\t...revealFileState(state, path),\n\t\t\tisViewerOpen: true,\n\t\t}));\n\t},\n\trevealFile: (path) => set((state) => revealFileState(state, path)),\n\tcloseViewer: () =>\n\t\tset({\n\t\t\tisViewerOpen: false,\n\t\t\tselectedFile: null,\n\t\t}),\n\ttoggleDir: (path) =>\n\t\tset((state) => {\n\t\t\tconst next = new Set(state.expandedDirs);\n\t\t\tif (next.has(path)) {\n\t\t\t\tnext.delete(path);\n\t\t\t} else {\n\t\t\t\tnext.add(path);\n\t\t\t}\n\t\t\treturn { expandedDirs: next };\n\t\t}),\n}));\n",
11
11
  "import { create } from 'zustand';\nimport { useGitStore } from './gitStore';\nimport { useSessionFilesStore } from './sessionFilesStore';\nimport { useResearchStore } from './researchStore';\nimport { useSettingsStore } from './settingsStore';\nimport { useTunnelStore } from './tunnelStore';\nimport { useFileBrowserStore } from './fileBrowserStore';\nimport { useSkillsStore } from './skillsStore';\n\nexport type MCPScope = 'global' | 'project';\n\nexport interface MCPServerInfo {\n\tname: string;\n\ttransport: string;\n\tcommand?: string;\n\targs: string[];\n\turl?: string;\n\tdisabled: boolean;\n\tconnected: boolean;\n\ttools: string[];\n\tauthRequired: boolean;\n\tauthenticated: boolean;\n\tscope: MCPScope;\n\tauthType?: string;\n}\n\nexport interface CopilotDeviceInfo {\n\tsessionId: string;\n\tuserCode: string;\n\tverificationUri: string;\n\tinterval: number;\n\tserverName: string;\n}\n\ninterface MCPState {\n\tisExpanded: boolean;\n\tservers: MCPServerInfo[];\n\tloading: Set<string>;\n\tauthUrls: Map<string, string>;\n\tcopilotDevice: CopilotDeviceInfo | null;\n\n\ttoggleSidebar: () => void;\n\texpandSidebar: () => void;\n\tcollapseSidebar: () => void;\n\tsetServers: (servers: MCPServerInfo[]) => void;\n\tsetLoading: (name: string, loading: boolean) => void;\n\tupdateServer: (name: string, updates: Partial<MCPServerInfo>) => void;\n\tsetAuthUrl: (name: string, url: string | null) => void;\n\tsetCopilotDevice: (info: CopilotDeviceInfo | null) => void;\n}\n\nexport const useMCPStore = create<MCPState>((set) => ({\n\tisExpanded: false,\n\tservers: [],\n\tloading: new Set(),\n\tauthUrls: new Map(),\n\tcopilotDevice: null,\n\n\ttoggleSidebar: () => {\n\t\tset((state) => {\n\t\t\tconst newExpanded = !state.isExpanded;\n\t\t\tif (newExpanded) {\n\t\t\t\tuseGitStore.getState().collapseSidebar();\n\t\t\t\tuseSessionFilesStore.getState().collapseSidebar();\n\t\t\t\tuseResearchStore.getState().collapseSidebar();\n\t\t\t\tuseSettingsStore.getState().collapseSidebar();\n\t\t\t\tuseTunnelStore.getState().collapseSidebar();\n\t\t\t\tuseFileBrowserStore.getState().collapseSidebar();\n\t\t\t\tuseSkillsStore.getState().collapseSidebar();\n\t\t\t}\n\t\t\treturn { isExpanded: newExpanded };\n\t\t});\n\t},\n\n\texpandSidebar: () => {\n\t\tuseGitStore.getState().collapseSidebar();\n\t\tuseSessionFilesStore.getState().collapseSidebar();\n\t\tuseResearchStore.getState().collapseSidebar();\n\t\tuseSettingsStore.getState().collapseSidebar();\n\t\tuseTunnelStore.getState().collapseSidebar();\n\t\tuseFileBrowserStore.getState().collapseSidebar();\n\t\tuseSkillsStore.getState().collapseSidebar();\n\t\tset({ isExpanded: true });\n\t},\n\n\tcollapseSidebar: () => set({ isExpanded: false }),\n\n\tsetServers: (servers) => set({ servers }),\n\n\tsetLoading: (name, loading) =>\n\t\tset((state) => {\n\t\t\tconst next = new Set(state.loading);\n\t\t\tif (loading) next.add(name);\n\t\t\telse next.delete(name);\n\t\t\treturn { loading: next };\n\t\t}),\n\n\tupdateServer: (name, updates) =>\n\t\tset((state) => ({\n\t\t\tservers: state.servers.map((s) =>\n\t\t\t\ts.name === name ? { ...s, ...updates } : s,\n\t\t\t),\n\t\t})),\n\n\tsetAuthUrl: (name, url) =>\n\t\tset((state) => {\n\t\t\tconst next = new Map(state.authUrls);\n\t\t\tif (url) next.set(name, url);\n\t\t\telse next.delete(name);\n\t\t\treturn { authUrls: next };\n\t\t}),\n\n\tsetCopilotDevice: (info) => set({ copilotDevice: info }),\n}));\n",
12
12
  "import { create } from 'zustand';\nimport { useGitStore } from './gitStore';\nimport { useSessionFilesStore } from './sessionFilesStore';\nimport { useResearchStore } from './researchStore';\nimport { useSettingsStore } from './settingsStore';\nimport { useTunnelStore } from './tunnelStore';\nimport { useFileBrowserStore } from './fileBrowserStore';\nimport { useMCPStore } from './mcpStore';\nimport { useViewerTabsStore } from './viewerTabsStore';\n\nexport interface SkillInfo {\n\tname: string;\n\tdescription: string;\n\tscope: string;\n\tpath: string;\n\tenabled?: boolean;\n}\n\ninterface SkillsState {\n\tisExpanded: boolean;\n\tskills: SkillInfo[];\n\tglobalEnabled: boolean;\n\ttotalCount: number;\n\tenabledCount: number;\n\tselectedSkill: string | null;\n\n\tisViewerOpen: boolean;\n\tviewingFile: string | null;\n\n\ttoggleSidebar: () => void;\n\texpandSidebar: () => void;\n\tcollapseSidebar: () => void;\n\tsetSkills: (skills: SkillInfo[]) => void;\n\tsetSkillsConfig: (input: {\n\t\tskills: SkillInfo[];\n\t\tglobalEnabled: boolean;\n\t\ttotalCount: number;\n\t\tenabledCount: number;\n\t}) => void;\n\tselectSkill: (name: string | null) => void;\n\topenViewer: (file: string | null) => void;\n\tcloseViewer: () => void;\n}\n\nexport const useSkillsStore = create<SkillsState>((set, get) => ({\n\tisExpanded: false,\n\tskills: [],\n\tglobalEnabled: true,\n\ttotalCount: 0,\n\tenabledCount: 0,\n\tselectedSkill: null,\n\tisViewerOpen: false,\n\tviewingFile: null,\n\n\ttoggleSidebar: () => {\n\t\tset((state) => {\n\t\t\tconst newExpanded = !state.isExpanded;\n\t\t\tif (newExpanded) {\n\t\t\t\tuseGitStore.getState().collapseSidebar();\n\t\t\t\tuseSessionFilesStore.getState().collapseSidebar();\n\t\t\t\tuseResearchStore.getState().collapseSidebar();\n\t\t\t\tuseSettingsStore.getState().collapseSidebar();\n\t\t\t\tuseTunnelStore.getState().collapseSidebar();\n\t\t\t\tuseFileBrowserStore.getState().collapseSidebar();\n\t\t\t\tuseMCPStore.getState().collapseSidebar();\n\t\t\t}\n\t\t\treturn { isExpanded: newExpanded };\n\t\t});\n\t},\n\n\texpandSidebar: () => {\n\t\tuseGitStore.getState().collapseSidebar();\n\t\tuseSessionFilesStore.getState().collapseSidebar();\n\t\tuseResearchStore.getState().collapseSidebar();\n\t\tuseSettingsStore.getState().collapseSidebar();\n\t\tuseTunnelStore.getState().collapseSidebar();\n\t\tuseFileBrowserStore.getState().collapseSidebar();\n\t\tuseMCPStore.getState().collapseSidebar();\n\t\tset({ isExpanded: true });\n\t},\n\n\tcollapseSidebar: () => set({ isExpanded: false }),\n\n\tsetSkills: (skills) => set({ skills }),\n\tsetSkillsConfig: ({ skills, globalEnabled, totalCount, enabledCount }) =>\n\t\tset({ skills, globalEnabled, totalCount, enabledCount }),\n\n\tselectSkill: (name) =>\n\t\tset({ selectedSkill: name, isViewerOpen: false, viewingFile: null }),\n\n\topenViewer: (file) => {\n\t\tconst selectedSkill = get().selectedSkill;\n\t\tif (selectedSkill) {\n\t\t\tuseViewerTabsStore.getState().openSkillFileTab(selectedSkill, file);\n\t\t}\n\t\tset({ isViewerOpen: true, viewingFile: file });\n\t},\n\n\tcloseViewer: () => set({ isViewerOpen: false, viewingFile: null }),\n}));\n",
13
- "import { create } from 'zustand';\nimport type { SessionFileOperation } from '../types/api';\n\nexport interface ToolActivityHighlight {\n\tstartLine?: number;\n\tendLine?: number;\n\treason: 'read' | 'write' | 'apply_patch';\n\tcallId?: string;\n\tstatus: 'streaming' | 'success' | 'error';\n}\n\nexport interface ToolActivityAnnotation {\n\tid: string;\n\treason: 'write' | 'apply_patch';\n\tcallId?: string;\n\tstatus: 'streaming' | 'success' | 'error';\n\tlineTones: Array<[number, 'add' | 'remove']>;\n\tcreatedAt: number;\n}\n\nexport interface ToolChangeCount {\n\tadditions: number;\n\tremovals: number;\n}\n\nexport interface ToolPreviewTabInput {\n\tpath: string;\n\ttoolName: 'write' | 'apply_patch';\n\tcallId?: string;\n\tcontent?: string;\n\tbaseContent?: string;\n\tpatch?: string;\n\tchangedLines?: number[];\n\tpreviewContent?: string;\n\tresultContent?: string;\n\tpreviewLineTones?: Array<[number, 'add' | 'remove']>;\n\tpreviewFirstLine?: number;\n\tpreviewLatestLine?: number;\n\tchangeCount?: ToolChangeCount;\n\tstatus: 'streaming' | 'success' | 'error';\n\terror?: string;\n}\n\nexport type ToolPatchPreview = Omit<\n\tToolPreviewTabInput,\n\t'toolName' | 'content'\n> & {\n\ttoolName: 'apply_patch';\n};\n\nexport type ToolWritePreview = Omit<\n\tToolPreviewTabInput,\n\t| 'toolName'\n\t| 'baseContent'\n\t| 'patch'\n\t| 'changedLines'\n\t| 'previewContent'\n\t| 'resultContent'\n\t| 'previewLineTones'\n\t| 'previewFirstLine'\n\t| 'previewLatestLine'\n> & {\n\ttoolName: 'write';\n};\n\nexport type ViewerTab =\n\t| {\n\t\t\tid: string;\n\t\t\ttype: 'git-diff';\n\t\t\ttitle: string;\n\t\t\tpath: string;\n\t\t\tstaged: boolean;\n\t }\n\t| {\n\t\t\tid: string;\n\t\t\ttype: 'session-file-diff';\n\t\t\ttitle: string;\n\t\t\tpath: string;\n\t\t\toperations: SessionFileOperation[];\n\t\t\tselectedOperationIndex: number;\n\t }\n\t| {\n\t\t\tid: string;\n\t\t\ttype: 'file';\n\t\t\ttitle: string;\n\t\t\tpath: string;\n\t\t\thighlight?: ToolActivityHighlight;\n\t\t\tannotations?: ToolActivityAnnotation[];\n\t\t\tpatchPreview?: ToolPatchPreview;\n\t\t\twritePreview?: ToolWritePreview;\n\t }\n\t| {\n\t\t\tid: string;\n\t\t\ttype: 'tool-preview';\n\t\t\ttitle: string;\n\t\t\tpath: string;\n\t\t\ttoolName: 'write' | 'apply_patch';\n\t\t\tcallId?: string;\n\t\t\tcontent?: string;\n\t\t\tbaseContent?: string;\n\t\t\tpatch?: string;\n\t\t\tchangedLines?: number[];\n\t\t\tpreviewContent?: string;\n\t\t\tresultContent?: string;\n\t\t\tpreviewLineTones?: Array<[number, 'add' | 'remove']>;\n\t\t\tpreviewFirstLine?: number;\n\t\t\tpreviewLatestLine?: number;\n\t\t\tchangeCount?: ToolChangeCount;\n\t\t\tstatus: 'streaming' | 'success' | 'error';\n\t\t\terror?: string;\n\t }\n\t| {\n\t\t\tid: string;\n\t\t\ttype: 'skill-file';\n\t\t\ttitle: string;\n\t\t\tskill: string;\n\t\t\tfile: string | null;\n\t };\n\ninterface ViewerTabsState {\n\ttabs: ViewerTab[];\n\tactiveTabId: string | null;\n\tfollowToolActivity: boolean;\n\ttoggleFollowToolActivity: () => void;\n\tsetFollowToolActivity: (enabled: boolean) => void;\n\topenGitDiffTab: (path: string, staged: boolean) => void;\n\topenSessionFileDiffTab: (\n\t\tpath: string,\n\t\toperations: SessionFileOperation[],\n\t) => void;\n\topenFileTab: (path: string) => void;\n\topenToolReadTab: (path: string, highlight: ToolActivityHighlight) => void;\n\topenToolPreviewTab: (preview: ToolPreviewTabInput) => void;\n\topenSkillFileTab: (skill: string, file: string | null) => void;\n\tsetActiveTab: (id: string) => void;\n\tcloseTab: (id: string) => void;\n\tupdateSessionFileOperationIndex: (id: string, index: number) => void;\n\tcloseAllTabs: () => void;\n}\n\nfunction titleFromPath(path: string): string {\n\treturn path.split('/').pop() || path;\n}\n\nfunction normalizeViewerPath(path: string): string {\n\treturn path\n\t\t.trim()\n\t\t.replace(/^a\\//, '')\n\t\t.replace(/^b\\//, '')\n\t\t.replace(/^\\.\\//, '')\n\t\t.replace(/\\/+/g, '/')\n\t\t.replace(/\\/+$/, '');\n}\n\nfunction viewerPathsMatch(left: string, right: string): boolean {\n\tconst normalizedLeft = normalizeViewerPath(left);\n\tconst normalizedRight = normalizeViewerPath(right);\n\treturn (\n\t\tnormalizedLeft === normalizedRight ||\n\t\tnormalizedLeft.endsWith(`/${normalizedRight}`) ||\n\t\tnormalizedRight.endsWith(`/${normalizedLeft}`)\n\t);\n}\n\nfunction fileTabId(path: string): string {\n\treturn `file:${normalizeViewerPath(path)}`;\n}\n\nfunction upsertTab(tabs: ViewerTab[], tab: ViewerTab): ViewerTab[] {\n\tconst existingIndex = tabs.findIndex((item) => item.id === tab.id);\n\tif (existingIndex === -1) {\n\t\treturn [...tabs, tab];\n\t}\n\n\tconst next = [...tabs];\n\tnext[existingIndex] = tab;\n\treturn next;\n}\n\nfunction isSamePatchCall(\n\texisting: Pick<ToolPatchPreview, 'callId' | 'patch' | 'status'> | undefined,\n\tpreview: Pick<ToolPreviewTabInput, 'callId' | 'patch' | 'status'>,\n): boolean {\n\tif (!existing) return false;\n\tif (preview.callId || existing.callId) {\n\t\treturn Boolean(preview.callId && existing.callId === preview.callId);\n\t}\n\tif (preview.status === 'streaming' && existing.status !== 'streaming') {\n\t\treturn false;\n\t}\n\tif (!preview.patch || !existing.patch) return existing.status === 'streaming';\n\treturn (\n\t\tpreview.patch === existing.patch ||\n\t\tpreview.patch.startsWith(existing.patch) ||\n\t\texisting.patch.startsWith(preview.patch)\n\t);\n}\n\nfunction mergeChangedLines(\n\texisting: number[] | undefined,\n\tincoming: number[] | undefined,\n): number[] | undefined {\n\tif (!existing?.length) return incoming;\n\tif (!incoming?.length) return existing;\n\treturn [...new Set([...existing, ...incoming])].sort((a, b) => a - b);\n}\n\nfunction countContentLines(content: string): number {\n\treturn content.length === 0 ? 1 : content.split('\\n').length;\n}\n\nfunction annotationId(\n\tpreview: ToolPreviewTabInput,\n\ttargetPath: string,\n): string {\n\treturn `${preview.toolName}:${preview.callId ?? `${normalizeViewerPath(targetPath)}:${preview.patch ?? preview.content ?? ''}`}`;\n}\n\nfunction buildAnnotation(\n\tpreview: ToolPreviewTabInput,\n\ttargetPath: string,\n\texisting?: ToolActivityAnnotation,\n): ToolActivityAnnotation | undefined {\n\tif (preview.status === 'error') return existing;\n\tconst id = annotationId(preview, targetPath);\n\tif (preview.toolName === 'write') {\n\t\tconst content = preview.content;\n\t\tif (content === undefined) return existing;\n\t\treturn {\n\t\t\tid,\n\t\t\treason: 'write',\n\t\t\tcallId: preview.callId,\n\t\t\tstatus: preview.status,\n\t\t\tlineTones: Array.from(\n\t\t\t\t{ length: countContentLines(content) },\n\t\t\t\t(_, index) => [index + 1, 'add' as const],\n\t\t\t),\n\t\t\tcreatedAt: existing?.createdAt ?? Date.now(),\n\t\t};\n\t}\n\n\tconst lineTones: Array<[number, 'add' | 'remove']> | undefined = preview\n\t\t.previewLineTones?.length\n\t\t? preview.previewLineTones\n\t\t: preview.changedLines?.length\n\t\t\t? preview.changedLines.map((line) => [line, 'add'])\n\t\t\t: existing?.lineTones;\n\tif (!lineTones?.length) return existing;\n\treturn {\n\t\tid,\n\t\treason: 'apply_patch',\n\t\tcallId: preview.callId,\n\t\tstatus: preview.status,\n\t\tlineTones,\n\t\tcreatedAt: existing?.createdAt ?? Date.now(),\n\t};\n}\n\nfunction upsertAnnotation(\n\tannotations: ToolActivityAnnotation[] | undefined,\n\tannotation: ToolActivityAnnotation | undefined,\n): ToolActivityAnnotation[] | undefined {\n\tif (!annotation) return annotations;\n\tconst existing = annotations ?? [];\n\tconst index = existing.findIndex((item) => item.id === annotation.id);\n\tif (index === -1) return [...existing, annotation];\n\tconst next = [...existing];\n\tnext[index] = annotation;\n\treturn next;\n}\n\nexport const useViewerTabsStore = create<ViewerTabsState>((set) => ({\n\ttabs: [],\n\tactiveTabId: null,\n\tfollowToolActivity: false,\n\n\ttoggleFollowToolActivity: () =>\n\t\tset((state) => ({ followToolActivity: !state.followToolActivity })),\n\n\tsetFollowToolActivity: (enabled) => set({ followToolActivity: enabled }),\n\n\topenGitDiffTab: (path, staged) => {\n\t\tconst id = `git-diff:${staged ? 'staged' : 'unstaged'}:${path}`;\n\t\tset((state) => ({\n\t\t\ttabs: upsertTab(state.tabs, {\n\t\t\t\tid,\n\t\t\t\ttype: 'git-diff',\n\t\t\t\ttitle: titleFromPath(path),\n\t\t\t\tpath,\n\t\t\t\tstaged,\n\t\t\t}),\n\t\t\tactiveTabId: id,\n\t\t}));\n\t},\n\n\topenSessionFileDiffTab: (path, operations) => {\n\t\tconst id = `session-file-diff:${path}`;\n\t\tset((state) => ({\n\t\t\ttabs: upsertTab(state.tabs, {\n\t\t\t\tid,\n\t\t\t\ttype: 'session-file-diff',\n\t\t\t\ttitle: titleFromPath(path),\n\t\t\t\tpath,\n\t\t\t\toperations,\n\t\t\t\tselectedOperationIndex: Math.max(0, operations.length - 1),\n\t\t\t}),\n\t\t\tactiveTabId: id,\n\t\t}));\n\t},\n\n\topenFileTab: (path) => {\n\t\tconst id = fileTabId(path);\n\t\tset((state) => {\n\t\t\tconst matchingFileTabs = state.tabs.filter(\n\t\t\t\t(tab): tab is Extract<ViewerTab, { type: 'file' }> =>\n\t\t\t\t\ttab.type === 'file' && viewerPathsMatch(tab.path, path),\n\t\t\t);\n\t\t\tconst existingFile =\n\t\t\t\tmatchingFileTabs.find((tab) => tab.id === state.activeTabId) ??\n\t\t\t\tmatchingFileTabs[0];\n\t\t\tconst targetId = existingFile?.id ?? id;\n\t\t\tconst targetPath = existingFile?.path ?? path;\n\t\t\tconst tabs = state.tabs.filter(\n\t\t\t\t(tab) =>\n\t\t\t\t\t!(\n\t\t\t\t\t\t(tab.type === 'tool-preview' || tab.type === 'file') &&\n\t\t\t\t\t\ttab.id !== targetId &&\n\t\t\t\t\t\tviewerPathsMatch(tab.path, path)\n\t\t\t\t\t),\n\t\t\t);\n\t\t\treturn {\n\t\t\t\ttabs: upsertTab(tabs, {\n\t\t\t\t\tid: targetId,\n\t\t\t\t\ttype: 'file',\n\t\t\t\t\ttitle: existingFile?.title ?? titleFromPath(targetPath),\n\t\t\t\t\tpath: targetPath,\n\t\t\t\t\thighlight: existingFile?.highlight,\n\t\t\t\t\tannotations: existingFile?.annotations,\n\t\t\t\t\tpatchPreview: existingFile?.patchPreview,\n\t\t\t\t\twritePreview: existingFile?.writePreview,\n\t\t\t\t}),\n\t\t\t\tactiveTabId: targetId,\n\t\t\t};\n\t\t});\n\t},\n\n\topenToolReadTab: (path, highlight) => {\n\t\tconst id = fileTabId(path);\n\t\tset((state) => {\n\t\t\tconst matchingFileTabs = state.tabs.filter(\n\t\t\t\t(tab): tab is Extract<ViewerTab, { type: 'file' }> =>\n\t\t\t\t\ttab.type === 'file' && viewerPathsMatch(tab.path, path),\n\t\t\t);\n\t\t\tconst existingFile =\n\t\t\t\tmatchingFileTabs.find((tab) => tab.id === state.activeTabId) ??\n\t\t\t\tmatchingFileTabs[0];\n\t\t\tconst targetId = existingFile?.id ?? id;\n\t\t\tconst targetPath = existingFile?.path ?? path;\n\t\t\tconst tabs = state.tabs.filter(\n\t\t\t\t(tab) =>\n\t\t\t\t\t!(\n\t\t\t\t\t\t(tab.type === 'tool-preview' || tab.type === 'file') &&\n\t\t\t\t\t\ttab.id !== targetId &&\n\t\t\t\t\t\tviewerPathsMatch(tab.path, path)\n\t\t\t\t\t),\n\t\t\t);\n\t\t\treturn {\n\t\t\t\ttabs: upsertTab(tabs, {\n\t\t\t\t\tid: targetId,\n\t\t\t\t\ttype: 'file',\n\t\t\t\t\ttitle: existingFile?.title ?? titleFromPath(targetPath),\n\t\t\t\t\tpath: targetPath,\n\t\t\t\t\thighlight,\n\t\t\t\t\tannotations: existingFile?.annotations,\n\t\t\t\t\tpatchPreview: undefined,\n\t\t\t\t\twritePreview: undefined,\n\t\t\t\t}),\n\t\t\t\tactiveTabId: targetId,\n\t\t\t};\n\t\t});\n\t},\n\n\topenToolPreviewTab: (preview) => {\n\t\tconst id = fileTabId(preview.path);\n\t\tset((state) => {\n\t\t\tconst matchingFileTabs = state.tabs.filter(\n\t\t\t\t(tab): tab is Extract<ViewerTab, { type: 'file' }> =>\n\t\t\t\t\ttab.type === 'file' && viewerPathsMatch(tab.path, preview.path),\n\t\t\t);\n\t\t\tconst existingFile =\n\t\t\t\tmatchingFileTabs.find((tab) => tab.id === state.activeTabId) ??\n\t\t\t\tmatchingFileTabs[0];\n\t\t\tconst targetId = existingFile?.id ?? id;\n\t\t\tconst targetPath = existingFile?.path ?? preview.path;\n\t\t\tconst existing = state.tabs.find(\n\t\t\t\t(tab): tab is Extract<ViewerTab, { type: 'tool-preview' }> =>\n\t\t\t\t\ttab.type === 'tool-preview' &&\n\t\t\t\t\tviewerPathsMatch(tab.path, preview.path),\n\t\t\t);\n\t\t\tconst tabs = state.tabs.filter(\n\t\t\t\t(tab) =>\n\t\t\t\t\t!(\n\t\t\t\t\t\t(tab.type === 'tool-preview' || tab.type === 'file') &&\n\t\t\t\t\t\ttab.id !== targetId &&\n\t\t\t\t\t\t(viewerPathsMatch(tab.path, preview.path) ||\n\t\t\t\t\t\t\tBoolean(\n\t\t\t\t\t\t\t\tpreview.callId &&\n\t\t\t\t\t\t\t\t\t'toolName' in tab &&\n\t\t\t\t\t\t\t\t\ttab.callId === preview.callId,\n\t\t\t\t\t\t\t))\n\t\t\t\t\t),\n\t\t\t);\n\t\t\tif (preview.toolName === 'apply_patch') {\n\t\t\t\tconst existingPatchPreview =\n\t\t\t\t\texistingFile?.patchPreview ??\n\t\t\t\t\t(existing?.toolName === 'apply_patch' ? existing : undefined);\n\t\t\t\tconst samePatchCall = isSamePatchCall(existingPatchPreview, preview);\n\t\t\t\tconst baseContent =\n\t\t\t\t\tpreview.baseContent ??\n\t\t\t\t\t(samePatchCall\n\t\t\t\t\t\t? existingPatchPreview?.baseContent\n\t\t\t\t\t\t: (existingPatchPreview?.resultContent ??\n\t\t\t\t\t\t\texistingPatchPreview?.baseContent));\n\t\t\t\tconst changedLines = samePatchCall\n\t\t\t\t\t? (preview.changedLines ?? existingPatchPreview?.changedLines)\n\t\t\t\t\t: mergeChangedLines(\n\t\t\t\t\t\t\texistingPatchPreview?.changedLines,\n\t\t\t\t\t\t\tpreview.changedLines,\n\t\t\t\t\t\t);\n\t\t\t\tconst annotationPreview = {\n\t\t\t\t\t...preview,\n\t\t\t\t\tchangedLines: preview.changedLines,\n\t\t\t\t};\n\t\t\t\tconst existingAnnotation = existingFile?.annotations?.find(\n\t\t\t\t\t(annotation) =>\n\t\t\t\t\t\tannotation.id === annotationId(annotationPreview, targetPath),\n\t\t\t\t);\n\t\t\t\tconst annotations = upsertAnnotation(\n\t\t\t\t\texistingFile?.annotations,\n\t\t\t\t\tbuildAnnotation(annotationPreview, targetPath, existingAnnotation),\n\t\t\t\t);\n\t\t\t\treturn {\n\t\t\t\t\ttabs: upsertTab(tabs, {\n\t\t\t\t\t\tid: targetId,\n\t\t\t\t\t\ttype: 'file',\n\t\t\t\t\t\ttitle: existingFile?.title ?? titleFromPath(targetPath),\n\t\t\t\t\t\tpath: targetPath,\n\t\t\t\t\t\thighlight: undefined,\n\t\t\t\t\t\tannotations,\n\t\t\t\t\t\twritePreview: undefined,\n\t\t\t\t\t\tpatchPreview: {\n\t\t\t\t\t\t\tpath: targetPath,\n\t\t\t\t\t\t\ttoolName: 'apply_patch',\n\t\t\t\t\t\t\tcallId: preview.callId ?? existingPatchPreview?.callId,\n\t\t\t\t\t\t\tbaseContent,\n\t\t\t\t\t\t\tpatch: preview.patch ?? existingPatchPreview?.patch,\n\t\t\t\t\t\t\tchangedLines,\n\t\t\t\t\t\t\tpreviewContent:\n\t\t\t\t\t\t\t\tpreview.previewContent ??\n\t\t\t\t\t\t\t\t(samePatchCall\n\t\t\t\t\t\t\t\t\t? existingPatchPreview?.previewContent\n\t\t\t\t\t\t\t\t\t: undefined),\n\t\t\t\t\t\t\tresultContent:\n\t\t\t\t\t\t\t\tpreview.resultContent ??\n\t\t\t\t\t\t\t\t(samePatchCall\n\t\t\t\t\t\t\t\t\t? existingPatchPreview?.resultContent\n\t\t\t\t\t\t\t\t\t: undefined),\n\t\t\t\t\t\t\tpreviewLineTones:\n\t\t\t\t\t\t\t\tpreview.previewLineTones ??\n\t\t\t\t\t\t\t\t(samePatchCall\n\t\t\t\t\t\t\t\t\t? existingPatchPreview?.previewLineTones\n\t\t\t\t\t\t\t\t\t: undefined),\n\t\t\t\t\t\t\tpreviewFirstLine:\n\t\t\t\t\t\t\t\tpreview.previewFirstLine ??\n\t\t\t\t\t\t\t\t(samePatchCall\n\t\t\t\t\t\t\t\t\t? existingPatchPreview?.previewFirstLine\n\t\t\t\t\t\t\t\t\t: undefined),\n\t\t\t\t\t\t\tpreviewLatestLine:\n\t\t\t\t\t\t\t\tpreview.previewLatestLine ??\n\t\t\t\t\t\t\t\t(samePatchCall\n\t\t\t\t\t\t\t\t\t? existingPatchPreview?.previewLatestLine\n\t\t\t\t\t\t\t\t\t: undefined),\n\t\t\t\t\t\t\tstatus: preview.status,\n\t\t\t\t\t\t\terror: preview.error ?? existingPatchPreview?.error,\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t\tactiveTabId: targetId,\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (existingFile) {\n\t\t\t\tconst existingWritePreview = existingFile.writePreview;\n\t\t\t\tconst existingAnnotation = existingFile.annotations?.find(\n\t\t\t\t\t(annotation) => annotation.id === annotationId(preview, targetPath),\n\t\t\t\t);\n\t\t\t\tconst annotations = upsertAnnotation(\n\t\t\t\t\texistingFile.annotations,\n\t\t\t\t\tbuildAnnotation(preview, targetPath, existingAnnotation),\n\t\t\t\t);\n\t\t\t\treturn {\n\t\t\t\t\ttabs: upsertTab(tabs, {\n\t\t\t\t\t\t...existingFile,\n\t\t\t\t\t\thighlight: undefined,\n\t\t\t\t\t\tannotations,\n\t\t\t\t\t\tpatchPreview: undefined,\n\t\t\t\t\t\twritePreview: {\n\t\t\t\t\t\t\tpath: targetPath,\n\t\t\t\t\t\t\ttoolName: 'write',\n\t\t\t\t\t\t\tcallId: preview.callId ?? existingWritePreview?.callId,\n\t\t\t\t\t\t\tcontent: preview.content ?? existingWritePreview?.content,\n\t\t\t\t\t\t\tchangeCount:\n\t\t\t\t\t\t\t\tpreview.changeCount ?? existingWritePreview?.changeCount,\n\t\t\t\t\t\t\tstatus: preview.status,\n\t\t\t\t\t\t\terror: preview.error ?? existingWritePreview?.error,\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t\tactiveTabId: targetId,\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst existingWrite =\n\t\t\t\texisting?.toolName === 'write' ? existing : undefined;\n\t\t\tconst annotation = buildAnnotation(preview, preview.path);\n\t\t\treturn {\n\t\t\t\ttabs: upsertTab(tabs, {\n\t\t\t\t\tid,\n\t\t\t\t\ttype: 'file',\n\t\t\t\t\ttitle: titleFromPath(preview.path),\n\t\t\t\t\tpath: preview.path,\n\t\t\t\t\thighlight: undefined,\n\t\t\t\t\tannotations: annotation ? [annotation] : undefined,\n\t\t\t\t\tpatchPreview: undefined,\n\t\t\t\t\twritePreview: {\n\t\t\t\t\t\tpath: preview.path,\n\t\t\t\t\t\ttoolName: 'write',\n\t\t\t\t\t\tcallId: preview.callId,\n\t\t\t\t\t\tcontent: preview.content ?? existingWrite?.content,\n\t\t\t\t\t\tchangeCount: preview.changeCount ?? existingWrite?.changeCount,\n\t\t\t\t\t\tstatus: preview.status,\n\t\t\t\t\t\terror: preview.error ?? existingWrite?.error,\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t\tactiveTabId: id,\n\t\t\t};\n\t\t});\n\t},\n\n\topenSkillFileTab: (skill, file) => {\n\t\tconst displayFile = file ?? 'SKILL.md';\n\t\tconst id = `skill-file:${skill}:${displayFile}`;\n\t\tset((state) => ({\n\t\t\ttabs: upsertTab(state.tabs, {\n\t\t\t\tid,\n\t\t\t\ttype: 'skill-file',\n\t\t\t\ttitle: titleFromPath(displayFile),\n\t\t\t\tskill,\n\t\t\t\tfile,\n\t\t\t}),\n\t\t\tactiveTabId: id,\n\t\t}));\n\t},\n\n\tsetActiveTab: (id) => set({ activeTabId: id }),\n\n\tcloseTab: (id) =>\n\t\tset((state) => {\n\t\t\tconst closingIndex = state.tabs.findIndex((tab) => tab.id === id);\n\t\t\tconst tabs = state.tabs.filter((tab) => tab.id !== id);\n\t\t\tlet activeTabId = state.activeTabId;\n\n\t\t\tif (state.activeTabId === id) {\n\t\t\t\tactiveTabId =\n\t\t\t\t\ttabs[closingIndex]?.id ?? tabs[closingIndex - 1]?.id ?? null;\n\t\t\t}\n\n\t\t\treturn { tabs, activeTabId };\n\t\t}),\n\n\tupdateSessionFileOperationIndex: (id, index) =>\n\t\tset((state) => ({\n\t\t\ttabs: state.tabs.map((tab) =>\n\t\t\t\ttab.id === id && tab.type === 'session-file-diff'\n\t\t\t\t\t? { ...tab, selectedOperationIndex: index }\n\t\t\t\t\t: tab,\n\t\t\t),\n\t\t})),\n\n\tcloseAllTabs: () => set({ tabs: [], activeTabId: null }),\n}));\n",
13
+ "import { create } from 'zustand';\nimport type { SessionFileOperation } from '../types/api';\n\nexport interface ToolActivityHighlight {\n\tstartLine?: number;\n\tendLine?: number;\n\treason: 'read' | 'write' | 'apply_patch';\n\tcallId?: string;\n\tstatus: 'streaming' | 'success' | 'error';\n}\n\nexport interface ToolActivityAnnotation {\n\tid: string;\n\treason: 'write' | 'apply_patch';\n\tcallId?: string;\n\tstatus: 'streaming' | 'success' | 'error';\n\tlineTones: Array<[number, 'add' | 'remove']>;\n\tcreatedAt: number;\n}\n\nexport interface ToolChangeCount {\n\tadditions: number;\n\tremovals: number;\n}\n\nexport interface ToolPreviewTabInput {\n\tpath: string;\n\ttoolName: 'write' | 'apply_patch';\n\tcallId?: string;\n\tcontent?: string;\n\tbaseContent?: string;\n\tpatch?: string;\n\tchangedLines?: number[];\n\tpreviewContent?: string;\n\tresultContent?: string;\n\tpreviewLineTones?: Array<[number, 'add' | 'remove']>;\n\tpreviewFirstLine?: number;\n\tpreviewLatestLine?: number;\n\tchangeCount?: ToolChangeCount;\n\tstatus: 'streaming' | 'success' | 'error';\n\terror?: string;\n}\n\nexport type ToolPatchPreview = Omit<\n\tToolPreviewTabInput,\n\t'toolName' | 'content'\n> & {\n\ttoolName: 'apply_patch';\n};\n\nexport type ToolWritePreview = Omit<\n\tToolPreviewTabInput,\n\t| 'toolName'\n\t| 'baseContent'\n\t| 'patch'\n\t| 'changedLines'\n\t| 'previewContent'\n\t| 'resultContent'\n\t| 'previewLineTones'\n\t| 'previewFirstLine'\n\t| 'previewLatestLine'\n> & {\n\ttoolName: 'write';\n};\n\nexport type ViewerTab =\n\t| {\n\t\t\tid: string;\n\t\t\ttype: 'git-diff';\n\t\t\ttitle: string;\n\t\t\tpath: string;\n\t\t\tstaged: boolean;\n\t }\n\t| {\n\t\t\tid: string;\n\t\t\ttype: 'session-file-diff';\n\t\t\ttitle: string;\n\t\t\tpath: string;\n\t\t\toperations: SessionFileOperation[];\n\t\t\tselectedOperationIndex: number;\n\t }\n\t| {\n\t\t\tid: string;\n\t\t\ttype: 'file';\n\t\t\ttitle: string;\n\t\t\tpath: string;\n\t\t\thighlight?: ToolActivityHighlight;\n\t\t\tannotations?: ToolActivityAnnotation[];\n\t\t\tpatchPreview?: ToolPatchPreview;\n\t\t\twritePreview?: ToolWritePreview;\n\t }\n\t| {\n\t\t\tid: string;\n\t\t\ttype: 'tool-preview';\n\t\t\ttitle: string;\n\t\t\tpath: string;\n\t\t\ttoolName: 'write' | 'apply_patch';\n\t\t\tcallId?: string;\n\t\t\tcontent?: string;\n\t\t\tbaseContent?: string;\n\t\t\tpatch?: string;\n\t\t\tchangedLines?: number[];\n\t\t\tpreviewContent?: string;\n\t\t\tresultContent?: string;\n\t\t\tpreviewLineTones?: Array<[number, 'add' | 'remove']>;\n\t\t\tpreviewFirstLine?: number;\n\t\t\tpreviewLatestLine?: number;\n\t\t\tchangeCount?: ToolChangeCount;\n\t\t\tstatus: 'streaming' | 'success' | 'error';\n\t\t\terror?: string;\n\t }\n\t| {\n\t\t\tid: string;\n\t\t\ttype: 'skill-file';\n\t\t\ttitle: string;\n\t\t\tskill: string;\n\t\t\tfile: string | null;\n\t }\n\t| {\n\t\t\tid: string;\n\t\t\ttype: 'browser';\n\t\t\ttitle: string;\n\t\t\turl: string;\n\t\t\tkind: 'browser' | 'simulator';\n\t\t\treloadKey: number;\n\t };\n\nexport type ViewerMode = 'work' | 'preview';\n\ninterface ViewerTabsState {\n\ttabs: ViewerTab[];\n\tactiveTabId: string | null;\n\tactiveMode: ViewerMode;\n\tactiveWorkTabId: string | null;\n\tactivePreviewTabId: string | null;\n\tfollowToolActivity: boolean;\n\ttoggleFollowToolActivity: () => void;\n\tsetFollowToolActivity: (enabled: boolean) => void;\n\tsetViewerMode: (mode: ViewerMode) => void;\n\topenGitDiffTab: (path: string, staged: boolean) => void;\n\topenSessionFileDiffTab: (\n\t\tpath: string,\n\t\toperations: SessionFileOperation[],\n\t) => void;\n\topenFileTab: (path: string) => void;\n\topenToolReadTab: (path: string, highlight: ToolActivityHighlight) => void;\n\topenToolPreviewTab: (preview: ToolPreviewTabInput) => void;\n\topenSkillFileTab: (skill: string, file: string | null) => void;\n\topenBrowserTab: (\n\t\turl?: string,\n\t\toptions?: {\n\t\t\tkind?: 'browser' | 'simulator';\n\t\t\ttitle?: string;\n\t\t\tnewTab?: boolean;\n\t\t},\n\t) => void;\n\tupdateBrowserTabUrl: (id: string, url: string) => void;\n\treloadBrowserTab: (id: string) => void;\n\tsetActiveTab: (id: string) => void;\n\tcloseTab: (id: string) => void;\n\tupdateSessionFileOperationIndex: (id: string, index: number) => void;\n\tcloseAllTabs: () => void;\n}\n\nfunction titleFromPath(path: string): string {\n\treturn path.split('/').pop() || path;\n}\n\nfunction normalizeViewerPath(path: string): string {\n\treturn path\n\t\t.trim()\n\t\t.replace(/^a\\//, '')\n\t\t.replace(/^b\\//, '')\n\t\t.replace(/^\\.\\//, '')\n\t\t.replace(/\\/+/g, '/')\n\t\t.replace(/\\/+$/, '');\n}\n\nfunction viewerPathsMatch(left: string, right: string): boolean {\n\tconst normalizedLeft = normalizeViewerPath(left);\n\tconst normalizedRight = normalizeViewerPath(right);\n\treturn (\n\t\tnormalizedLeft === normalizedRight ||\n\t\tnormalizedLeft.endsWith(`/${normalizedRight}`) ||\n\t\tnormalizedRight.endsWith(`/${normalizedLeft}`)\n\t);\n}\n\nfunction fileTabId(path: string): string {\n\treturn `file:${normalizeViewerPath(path)}`;\n}\n\nfunction browserTabId(kind: 'browser' | 'simulator'): string {\n\treturn `browser:${kind}`;\n}\n\nfunction newBrowserTabId(): string {\n\treturn `browser:browser:${Date.now()}:${Math.random().toString(36).slice(2)}`;\n}\n\nfunction modeForTab(tab: ViewerTab): ViewerMode {\n\treturn tab.type === 'browser' ? 'preview' : 'work';\n}\n\nfunction findFallbackTabId(\n\ttabs: ViewerTab[],\n\tmode: ViewerMode,\n\tclosingIndex: number,\n): string | null {\n\tconst next = tabs.slice(closingIndex).find((tab) => modeForTab(tab) === mode);\n\tif (next) return next.id;\n\tconst previous = [...tabs]\n\t\t.slice(0, closingIndex)\n\t\t.reverse()\n\t\t.find((tab) => modeForTab(tab) === mode);\n\treturn previous?.id ?? null;\n}\n\nfunction activeIdForWorkUpdate(\n\tstate: ViewerTabsState,\n\ttargetId: string,\n): string {\n\treturn state.activeMode === 'preview' && state.activePreviewTabId\n\t\t? state.activePreviewTabId\n\t\t: targetId;\n}\n\nfunction upsertTab(tabs: ViewerTab[], tab: ViewerTab): ViewerTab[] {\n\tconst existingIndex = tabs.findIndex((item) => item.id === tab.id);\n\tif (existingIndex === -1) {\n\t\treturn [...tabs, tab];\n\t}\n\n\tconst next = [...tabs];\n\tnext[existingIndex] = tab;\n\treturn next;\n}\n\nfunction isSamePatchCall(\n\texisting: Pick<ToolPatchPreview, 'callId' | 'patch' | 'status'> | undefined,\n\tpreview: Pick<ToolPreviewTabInput, 'callId' | 'patch' | 'status'>,\n): boolean {\n\tif (!existing) return false;\n\tif (preview.callId || existing.callId) {\n\t\treturn Boolean(preview.callId && existing.callId === preview.callId);\n\t}\n\tif (preview.status === 'streaming' && existing.status !== 'streaming') {\n\t\treturn false;\n\t}\n\tif (!preview.patch || !existing.patch) return existing.status === 'streaming';\n\treturn (\n\t\tpreview.patch === existing.patch ||\n\t\tpreview.patch.startsWith(existing.patch) ||\n\t\texisting.patch.startsWith(preview.patch)\n\t);\n}\n\nfunction mergeChangedLines(\n\texisting: number[] | undefined,\n\tincoming: number[] | undefined,\n): number[] | undefined {\n\tif (!existing?.length) return incoming;\n\tif (!incoming?.length) return existing;\n\treturn [...new Set([...existing, ...incoming])].sort((a, b) => a - b);\n}\n\nfunction countContentLines(content: string): number {\n\treturn content.length === 0 ? 1 : content.split('\\n').length;\n}\n\nfunction annotationId(\n\tpreview: ToolPreviewTabInput,\n\ttargetPath: string,\n): string {\n\treturn `${preview.toolName}:${preview.callId ?? `${normalizeViewerPath(targetPath)}:${preview.patch ?? preview.content ?? ''}`}`;\n}\n\nfunction buildAnnotation(\n\tpreview: ToolPreviewTabInput,\n\ttargetPath: string,\n\texisting?: ToolActivityAnnotation,\n): ToolActivityAnnotation | undefined {\n\tif (preview.status === 'error') return existing;\n\tconst id = annotationId(preview, targetPath);\n\tif (preview.toolName === 'write') {\n\t\tconst content = preview.content;\n\t\tif (content === undefined) return existing;\n\t\treturn {\n\t\t\tid,\n\t\t\treason: 'write',\n\t\t\tcallId: preview.callId,\n\t\t\tstatus: preview.status,\n\t\t\tlineTones: Array.from(\n\t\t\t\t{ length: countContentLines(content) },\n\t\t\t\t(_, index) => [index + 1, 'add' as const],\n\t\t\t),\n\t\t\tcreatedAt: existing?.createdAt ?? Date.now(),\n\t\t};\n\t}\n\n\tconst lineTones: Array<[number, 'add' | 'remove']> | undefined = preview\n\t\t.previewLineTones?.length\n\t\t? preview.previewLineTones\n\t\t: preview.changedLines?.length\n\t\t\t? preview.changedLines.map((line) => [line, 'add'])\n\t\t\t: existing?.lineTones;\n\tif (!lineTones?.length) return existing;\n\treturn {\n\t\tid,\n\t\treason: 'apply_patch',\n\t\tcallId: preview.callId,\n\t\tstatus: preview.status,\n\t\tlineTones,\n\t\tcreatedAt: existing?.createdAt ?? Date.now(),\n\t};\n}\n\nfunction upsertAnnotation(\n\tannotations: ToolActivityAnnotation[] | undefined,\n\tannotation: ToolActivityAnnotation | undefined,\n): ToolActivityAnnotation[] | undefined {\n\tif (!annotation) return annotations;\n\tconst existing = annotations ?? [];\n\tconst index = existing.findIndex((item) => item.id === annotation.id);\n\tif (index === -1) return [...existing, annotation];\n\tconst next = [...existing];\n\tnext[index] = annotation;\n\treturn next;\n}\n\nexport const useViewerTabsStore = create<ViewerTabsState>((set) => ({\n\ttabs: [],\n\tactiveTabId: null,\n\tactiveMode: 'work',\n\tactiveWorkTabId: null,\n\tactivePreviewTabId: null,\n\tfollowToolActivity: false,\n\n\ttoggleFollowToolActivity: () =>\n\t\tset((state) => ({ followToolActivity: !state.followToolActivity })),\n\n\tsetFollowToolActivity: (enabled) => set({ followToolActivity: enabled }),\n\n\tsetViewerMode: (mode) =>\n\t\tset((state) => {\n\t\t\tconst activeTabId =\n\t\t\t\tmode === 'preview' ? state.activePreviewTabId : state.activeWorkTabId;\n\t\t\treturn {\n\t\t\t\tactiveMode: mode,\n\t\t\t\tactiveTabId: activeTabId ?? null,\n\t\t\t};\n\t\t}),\n\n\topenGitDiffTab: (path, staged) => {\n\t\tconst id = `git-diff:${staged ? 'staged' : 'unstaged'}:${path}`;\n\t\tset((state) => ({\n\t\t\ttabs: upsertTab(state.tabs, {\n\t\t\t\tid,\n\t\t\t\ttype: 'git-diff',\n\t\t\t\ttitle: titleFromPath(path),\n\t\t\t\tpath,\n\t\t\t\tstaged,\n\t\t\t}),\n\t\t\tactiveMode: 'work',\n\t\t\tactiveWorkTabId: id,\n\t\t\tactiveTabId: id,\n\t\t}));\n\t},\n\n\topenSessionFileDiffTab: (path, operations) => {\n\t\tconst id = `session-file-diff:${path}`;\n\t\tset((state) => ({\n\t\t\ttabs: upsertTab(state.tabs, {\n\t\t\t\tid,\n\t\t\t\ttype: 'session-file-diff',\n\t\t\t\ttitle: titleFromPath(path),\n\t\t\t\tpath,\n\t\t\t\toperations,\n\t\t\t\tselectedOperationIndex: Math.max(0, operations.length - 1),\n\t\t\t}),\n\t\t\tactiveMode: 'work',\n\t\t\tactiveWorkTabId: id,\n\t\t\tactiveTabId: id,\n\t\t}));\n\t},\n\n\topenFileTab: (path) => {\n\t\tconst id = fileTabId(path);\n\t\tset((state) => {\n\t\t\tconst matchingFileTabs = state.tabs.filter(\n\t\t\t\t(tab): tab is Extract<ViewerTab, { type: 'file' }> =>\n\t\t\t\t\ttab.type === 'file' && viewerPathsMatch(tab.path, path),\n\t\t\t);\n\t\t\tconst existingFile =\n\t\t\t\tmatchingFileTabs.find((tab) => tab.id === state.activeTabId) ??\n\t\t\t\tmatchingFileTabs[0];\n\t\t\tconst targetId = existingFile?.id ?? id;\n\t\t\tconst targetPath = existingFile?.path ?? path;\n\t\t\tconst tabs = state.tabs.filter(\n\t\t\t\t(tab) =>\n\t\t\t\t\t!(\n\t\t\t\t\t\t(tab.type === 'tool-preview' || tab.type === 'file') &&\n\t\t\t\t\t\ttab.id !== targetId &&\n\t\t\t\t\t\tviewerPathsMatch(tab.path, path)\n\t\t\t\t\t),\n\t\t\t);\n\t\t\treturn {\n\t\t\t\ttabs: upsertTab(tabs, {\n\t\t\t\t\tid: targetId,\n\t\t\t\t\ttype: 'file',\n\t\t\t\t\ttitle: existingFile?.title ?? titleFromPath(targetPath),\n\t\t\t\t\tpath: targetPath,\n\t\t\t\t\thighlight: existingFile?.highlight,\n\t\t\t\t\tannotations: existingFile?.annotations,\n\t\t\t\t\tpatchPreview: existingFile?.patchPreview,\n\t\t\t\t\twritePreview: existingFile?.writePreview,\n\t\t\t\t}),\n\t\t\t\tactiveMode: 'work',\n\t\t\t\tactiveWorkTabId: targetId,\n\t\t\t\tactiveTabId: targetId,\n\t\t\t};\n\t\t});\n\t},\n\n\topenToolReadTab: (path, highlight) => {\n\t\tconst id = fileTabId(path);\n\t\tset((state) => {\n\t\t\tconst matchingFileTabs = state.tabs.filter(\n\t\t\t\t(tab): tab is Extract<ViewerTab, { type: 'file' }> =>\n\t\t\t\t\ttab.type === 'file' && viewerPathsMatch(tab.path, path),\n\t\t\t);\n\t\t\tconst existingFile =\n\t\t\t\tmatchingFileTabs.find((tab) => tab.id === state.activeTabId) ??\n\t\t\t\tmatchingFileTabs[0];\n\t\t\tconst targetId = existingFile?.id ?? id;\n\t\t\tconst targetPath = existingFile?.path ?? path;\n\t\t\tconst tabs = state.tabs.filter(\n\t\t\t\t(tab) =>\n\t\t\t\t\t!(\n\t\t\t\t\t\t(tab.type === 'tool-preview' || tab.type === 'file') &&\n\t\t\t\t\t\ttab.id !== targetId &&\n\t\t\t\t\t\tviewerPathsMatch(tab.path, path)\n\t\t\t\t\t),\n\t\t\t);\n\t\t\treturn {\n\t\t\t\ttabs: upsertTab(tabs, {\n\t\t\t\t\tid: targetId,\n\t\t\t\t\ttype: 'file',\n\t\t\t\t\ttitle: existingFile?.title ?? titleFromPath(targetPath),\n\t\t\t\t\tpath: targetPath,\n\t\t\t\t\thighlight,\n\t\t\t\t\tannotations: existingFile?.annotations,\n\t\t\t\t\tpatchPreview: undefined,\n\t\t\t\t\twritePreview: undefined,\n\t\t\t\t}),\n\t\t\t\tactiveWorkTabId: targetId,\n\t\t\t\tactiveTabId: activeIdForWorkUpdate(state, targetId),\n\t\t\t};\n\t\t});\n\t},\n\n\topenToolPreviewTab: (preview) => {\n\t\tconst id = fileTabId(preview.path);\n\t\tset((state) => {\n\t\t\tconst matchingFileTabs = state.tabs.filter(\n\t\t\t\t(tab): tab is Extract<ViewerTab, { type: 'file' }> =>\n\t\t\t\t\ttab.type === 'file' && viewerPathsMatch(tab.path, preview.path),\n\t\t\t);\n\t\t\tconst existingFile =\n\t\t\t\tmatchingFileTabs.find((tab) => tab.id === state.activeTabId) ??\n\t\t\t\tmatchingFileTabs[0];\n\t\t\tconst targetId = existingFile?.id ?? id;\n\t\t\tconst targetPath = existingFile?.path ?? preview.path;\n\t\t\tconst existing = state.tabs.find(\n\t\t\t\t(tab): tab is Extract<ViewerTab, { type: 'tool-preview' }> =>\n\t\t\t\t\ttab.type === 'tool-preview' &&\n\t\t\t\t\tviewerPathsMatch(tab.path, preview.path),\n\t\t\t);\n\t\t\tconst tabs = state.tabs.filter(\n\t\t\t\t(tab) =>\n\t\t\t\t\t!(\n\t\t\t\t\t\t(tab.type === 'tool-preview' || tab.type === 'file') &&\n\t\t\t\t\t\ttab.id !== targetId &&\n\t\t\t\t\t\t(viewerPathsMatch(tab.path, preview.path) ||\n\t\t\t\t\t\t\tBoolean(\n\t\t\t\t\t\t\t\tpreview.callId &&\n\t\t\t\t\t\t\t\t\t'toolName' in tab &&\n\t\t\t\t\t\t\t\t\ttab.callId === preview.callId,\n\t\t\t\t\t\t\t))\n\t\t\t\t\t),\n\t\t\t);\n\t\t\tif (preview.toolName === 'apply_patch') {\n\t\t\t\tconst existingPatchPreview =\n\t\t\t\t\texistingFile?.patchPreview ??\n\t\t\t\t\t(existing?.toolName === 'apply_patch' ? existing : undefined);\n\t\t\t\tconst samePatchCall = isSamePatchCall(existingPatchPreview, preview);\n\t\t\t\tconst baseContent =\n\t\t\t\t\tpreview.baseContent ??\n\t\t\t\t\t(samePatchCall\n\t\t\t\t\t\t? existingPatchPreview?.baseContent\n\t\t\t\t\t\t: (existingPatchPreview?.resultContent ??\n\t\t\t\t\t\t\texistingPatchPreview?.baseContent));\n\t\t\t\tconst changedLines = samePatchCall\n\t\t\t\t\t? (preview.changedLines ?? existingPatchPreview?.changedLines)\n\t\t\t\t\t: mergeChangedLines(\n\t\t\t\t\t\t\texistingPatchPreview?.changedLines,\n\t\t\t\t\t\t\tpreview.changedLines,\n\t\t\t\t\t\t);\n\t\t\t\tconst annotationPreview = {\n\t\t\t\t\t...preview,\n\t\t\t\t\tchangedLines: preview.changedLines,\n\t\t\t\t};\n\t\t\t\tconst existingAnnotation = existingFile?.annotations?.find(\n\t\t\t\t\t(annotation) =>\n\t\t\t\t\t\tannotation.id === annotationId(annotationPreview, targetPath),\n\t\t\t\t);\n\t\t\t\tconst annotations = upsertAnnotation(\n\t\t\t\t\texistingFile?.annotations,\n\t\t\t\t\tbuildAnnotation(annotationPreview, targetPath, existingAnnotation),\n\t\t\t\t);\n\t\t\t\treturn {\n\t\t\t\t\ttabs: upsertTab(tabs, {\n\t\t\t\t\t\tid: targetId,\n\t\t\t\t\t\ttype: 'file',\n\t\t\t\t\t\ttitle: existingFile?.title ?? titleFromPath(targetPath),\n\t\t\t\t\t\tpath: targetPath,\n\t\t\t\t\t\thighlight: undefined,\n\t\t\t\t\t\tannotations,\n\t\t\t\t\t\twritePreview: undefined,\n\t\t\t\t\t\tpatchPreview: {\n\t\t\t\t\t\t\tpath: targetPath,\n\t\t\t\t\t\t\ttoolName: 'apply_patch',\n\t\t\t\t\t\t\tcallId: preview.callId ?? existingPatchPreview?.callId,\n\t\t\t\t\t\t\tbaseContent,\n\t\t\t\t\t\t\tpatch: preview.patch ?? existingPatchPreview?.patch,\n\t\t\t\t\t\t\tchangedLines,\n\t\t\t\t\t\t\tpreviewContent:\n\t\t\t\t\t\t\t\tpreview.previewContent ??\n\t\t\t\t\t\t\t\t(samePatchCall\n\t\t\t\t\t\t\t\t\t? existingPatchPreview?.previewContent\n\t\t\t\t\t\t\t\t\t: undefined),\n\t\t\t\t\t\t\tresultContent:\n\t\t\t\t\t\t\t\tpreview.resultContent ??\n\t\t\t\t\t\t\t\t(samePatchCall\n\t\t\t\t\t\t\t\t\t? existingPatchPreview?.resultContent\n\t\t\t\t\t\t\t\t\t: undefined),\n\t\t\t\t\t\t\tpreviewLineTones:\n\t\t\t\t\t\t\t\tpreview.previewLineTones ??\n\t\t\t\t\t\t\t\t(samePatchCall\n\t\t\t\t\t\t\t\t\t? existingPatchPreview?.previewLineTones\n\t\t\t\t\t\t\t\t\t: undefined),\n\t\t\t\t\t\t\tpreviewFirstLine:\n\t\t\t\t\t\t\t\tpreview.previewFirstLine ??\n\t\t\t\t\t\t\t\t(samePatchCall\n\t\t\t\t\t\t\t\t\t? existingPatchPreview?.previewFirstLine\n\t\t\t\t\t\t\t\t\t: undefined),\n\t\t\t\t\t\t\tpreviewLatestLine:\n\t\t\t\t\t\t\t\tpreview.previewLatestLine ??\n\t\t\t\t\t\t\t\t(samePatchCall\n\t\t\t\t\t\t\t\t\t? existingPatchPreview?.previewLatestLine\n\t\t\t\t\t\t\t\t\t: undefined),\n\t\t\t\t\t\t\tstatus: preview.status,\n\t\t\t\t\t\t\terror: preview.error ?? existingPatchPreview?.error,\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t\tactiveWorkTabId: targetId,\n\t\t\t\t\tactiveTabId: activeIdForWorkUpdate(state, targetId),\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (existingFile) {\n\t\t\t\tconst existingWritePreview = existingFile.writePreview;\n\t\t\t\tconst existingAnnotation = existingFile.annotations?.find(\n\t\t\t\t\t(annotation) => annotation.id === annotationId(preview, targetPath),\n\t\t\t\t);\n\t\t\t\tconst annotations = upsertAnnotation(\n\t\t\t\t\texistingFile.annotations,\n\t\t\t\t\tbuildAnnotation(preview, targetPath, existingAnnotation),\n\t\t\t\t);\n\t\t\t\treturn {\n\t\t\t\t\ttabs: upsertTab(tabs, {\n\t\t\t\t\t\t...existingFile,\n\t\t\t\t\t\thighlight: undefined,\n\t\t\t\t\t\tannotations,\n\t\t\t\t\t\tpatchPreview: undefined,\n\t\t\t\t\t\twritePreview: {\n\t\t\t\t\t\t\tpath: targetPath,\n\t\t\t\t\t\t\ttoolName: 'write',\n\t\t\t\t\t\t\tcallId: preview.callId ?? existingWritePreview?.callId,\n\t\t\t\t\t\t\tcontent: preview.content ?? existingWritePreview?.content,\n\t\t\t\t\t\t\tchangeCount:\n\t\t\t\t\t\t\t\tpreview.changeCount ?? existingWritePreview?.changeCount,\n\t\t\t\t\t\t\tstatus: preview.status,\n\t\t\t\t\t\t\terror: preview.error ?? existingWritePreview?.error,\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t\tactiveWorkTabId: targetId,\n\t\t\t\t\tactiveTabId: activeIdForWorkUpdate(state, targetId),\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst existingWrite =\n\t\t\t\texisting?.toolName === 'write' ? existing : undefined;\n\t\t\tconst annotation = buildAnnotation(preview, preview.path);\n\t\t\treturn {\n\t\t\t\ttabs: upsertTab(tabs, {\n\t\t\t\t\tid,\n\t\t\t\t\ttype: 'file',\n\t\t\t\t\ttitle: titleFromPath(preview.path),\n\t\t\t\t\tpath: preview.path,\n\t\t\t\t\thighlight: undefined,\n\t\t\t\t\tannotations: annotation ? [annotation] : undefined,\n\t\t\t\t\tpatchPreview: undefined,\n\t\t\t\t\twritePreview: {\n\t\t\t\t\t\tpath: preview.path,\n\t\t\t\t\t\ttoolName: 'write',\n\t\t\t\t\t\tcallId: preview.callId,\n\t\t\t\t\t\tcontent: preview.content ?? existingWrite?.content,\n\t\t\t\t\t\tchangeCount: preview.changeCount ?? existingWrite?.changeCount,\n\t\t\t\t\t\tstatus: preview.status,\n\t\t\t\t\t\terror: preview.error ?? existingWrite?.error,\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t\tactiveWorkTabId: id,\n\t\t\t\tactiveTabId: activeIdForWorkUpdate(state, id),\n\t\t\t};\n\t\t});\n\t},\n\n\topenSkillFileTab: (skill, file) => {\n\t\tconst displayFile = file ?? 'SKILL.md';\n\t\tconst id = `skill-file:${skill}:${displayFile}`;\n\t\tset((state) => ({\n\t\t\ttabs: upsertTab(state.tabs, {\n\t\t\t\tid,\n\t\t\t\ttype: 'skill-file',\n\t\t\t\ttitle: titleFromPath(displayFile),\n\t\t\t\tskill,\n\t\t\t\tfile,\n\t\t\t}),\n\t\t\tactiveMode: 'work',\n\t\t\tactiveWorkTabId: id,\n\t\t\tactiveTabId: id,\n\t\t}));\n\t},\n\n\topenBrowserTab: (url = '', options = {}) => {\n\t\tconst kind = options.kind ?? 'browser';\n\t\tset((state) => {\n\t\t\tconst shouldCreate = kind === 'browser' && options.newTab === true;\n\t\t\tconst id = shouldCreate ? newBrowserTabId() : browserTabId(kind);\n\t\t\tconst existing = state.tabs.find(\n\t\t\t\t(tab): tab is Extract<ViewerTab, { type: 'browser' }> =>\n\t\t\t\t\t!shouldCreate && tab.type === 'browser' && tab.id === id,\n\t\t\t);\n\t\t\treturn {\n\t\t\t\ttabs: upsertTab(state.tabs, {\n\t\t\t\t\tid,\n\t\t\t\t\ttype: 'browser',\n\t\t\t\t\ttitle: options.title ?? existing?.title ?? 'Browser',\n\t\t\t\t\turl: url || existing?.url || '',\n\t\t\t\t\tkind,\n\t\t\t\t\treloadKey: existing?.reloadKey ?? 0,\n\t\t\t\t}),\n\t\t\t\tactiveMode: 'preview',\n\t\t\t\tactivePreviewTabId: id,\n\t\t\t\tactiveTabId: id,\n\t\t\t};\n\t\t});\n\t},\n\n\tupdateBrowserTabUrl: (id, url) =>\n\t\tset((state) => ({\n\t\t\ttabs: state.tabs.map((tab) =>\n\t\t\t\ttab.id === id && tab.type === 'browser'\n\t\t\t\t\t? {\n\t\t\t\t\t\t\t...tab,\n\t\t\t\t\t\t\turl,\n\t\t\t\t\t\t\ttitle: tab.kind === 'simulator' ? 'Simulator' : 'Browser',\n\t\t\t\t\t\t}\n\t\t\t\t\t: tab,\n\t\t\t),\n\t\t})),\n\n\treloadBrowserTab: (id) =>\n\t\tset((state) => ({\n\t\t\ttabs: state.tabs.map((tab) =>\n\t\t\t\ttab.id === id && tab.type === 'browser'\n\t\t\t\t\t? { ...tab, reloadKey: tab.reloadKey + 1 }\n\t\t\t\t\t: tab,\n\t\t\t),\n\t\t})),\n\n\tsetActiveTab: (id) =>\n\t\tset((state) => {\n\t\t\tconst tab = state.tabs.find((item) => item.id === id);\n\t\t\tconst mode = tab ? modeForTab(tab) : state.activeMode;\n\t\t\treturn {\n\t\t\t\tactiveMode: mode,\n\t\t\t\tactiveWorkTabId: mode === 'work' ? id : state.activeWorkTabId,\n\t\t\t\tactivePreviewTabId: mode === 'preview' ? id : state.activePreviewTabId,\n\t\t\t\tactiveTabId: id,\n\t\t\t};\n\t\t}),\n\n\tcloseTab: (id) =>\n\t\tset((state) => {\n\t\t\tconst closingIndex = state.tabs.findIndex((tab) => tab.id === id);\n\t\t\tconst closingTab = state.tabs[closingIndex];\n\t\t\tconst tabs = state.tabs.filter((tab) => tab.id !== id);\n\t\t\tlet activeMode = state.activeMode;\n\t\t\tlet activeWorkTabId = state.activeWorkTabId;\n\t\t\tlet activePreviewTabId = state.activePreviewTabId;\n\n\t\t\tif (\n\t\t\t\tclosingTab &&\n\t\t\t\tmodeForTab(closingTab) === 'work' &&\n\t\t\t\tactiveWorkTabId === id\n\t\t\t) {\n\t\t\t\tactiveWorkTabId = findFallbackTabId(tabs, 'work', closingIndex);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tclosingTab &&\n\t\t\t\tmodeForTab(closingTab) === 'preview' &&\n\t\t\t\tactivePreviewTabId === id\n\t\t\t) {\n\t\t\t\tactivePreviewTabId = findFallbackTabId(tabs, 'preview', closingIndex);\n\t\t\t}\n\n\t\t\tif (activeMode === 'work' && !activeWorkTabId && activePreviewTabId) {\n\t\t\t\tactiveMode = 'preview';\n\t\t\t}\n\n\t\t\tif (activeMode === 'preview' && !activePreviewTabId && activeWorkTabId) {\n\t\t\t\tactiveMode = 'work';\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ttabs,\n\t\t\t\tactiveMode,\n\t\t\t\tactiveWorkTabId,\n\t\t\t\tactivePreviewTabId,\n\t\t\t\tactiveTabId:\n\t\t\t\t\tactiveMode === 'preview' ? activePreviewTabId : activeWorkTabId,\n\t\t\t};\n\t\t}),\n\n\tupdateSessionFileOperationIndex: (id, index) =>\n\t\tset((state) => ({\n\t\t\ttabs: state.tabs.map((tab) =>\n\t\t\t\ttab.id === id && tab.type === 'session-file-diff'\n\t\t\t\t\t? { ...tab, selectedOperationIndex: index }\n\t\t\t\t\t: tab,\n\t\t\t),\n\t\t})),\n\n\tcloseAllTabs: () =>\n\t\tset({\n\t\t\ttabs: [],\n\t\t\tactiveTabId: null,\n\t\t\tactiveMode: 'work',\n\t\t\tactiveWorkTabId: null,\n\t\t\tactivePreviewTabId: null,\n\t\t}),\n}));\n",
14
14
  "import { create } from 'zustand';\nimport { persist } from 'zustand/middleware';\n\ninterface SidebarState {\n\tisCollapsed: boolean;\n\ttoggleCollapse: () => void;\n\tsetCollapsed: (collapsed: boolean) => void;\n}\n\nexport const useSidebarStore = create<SidebarState>()(\n\tpersist(\n\t\t(set) => ({\n\t\t\tisCollapsed: false,\n\t\t\ttoggleCollapse: () =>\n\t\t\t\tset((state) => ({ isCollapsed: !state.isCollapsed })),\n\t\t\tsetCollapsed: (collapsed) => set({ isCollapsed: collapsed }),\n\t\t}),\n\t\t{\n\t\t\tname: 'sidebar-storage',\n\t\t},\n\t),\n);\n",
15
15
  "import { create } from 'zustand';\n\ntype FocusArea = 'input' | 'sessions' | 'git' | null;\n\ninterface FocusState {\n\tcurrentFocus: FocusArea;\n\tsessionIndex: number;\n\tgitFileIndex: number;\n\n\tsetFocus: (area: FocusArea) => void;\n\tsetSessionIndex: (index: number) => void;\n\tsetGitFileIndex: (index: number) => void;\n\tresetGitFileIndex: () => void;\n\tresetSessionIndex: () => void;\n}\n\nexport const useFocusStore = create<FocusState>((set) => ({\n\tcurrentFocus: null,\n\tsessionIndex: 0,\n\tgitFileIndex: 0,\n\n\tsetFocus: (area) => set({ currentFocus: area }),\n\tsetSessionIndex: (index) => set({ sessionIndex: index }),\n\tsetGitFileIndex: (index) => set({ gitFileIndex: index }),\n\tresetGitFileIndex: () => set({ gitFileIndex: 0 }),\n\tresetSessionIndex: () => set({ sessionIndex: 0 }),\n}));\n",
16
16
  "import { create } from 'zustand';\n\ninterface ConfirmationState {\n\tisOpen: boolean;\n\ttitle: string;\n\tmessage: string;\n\tconfirmLabel: string;\n\tcancelLabel: string;\n\tvariant: 'default' | 'destructive';\n\tonConfirm: () => void | Promise<void>;\n\tonCancel?: () => void;\n\n\topenConfirmation: (options: {\n\t\ttitle?: string;\n\t\tmessage: string;\n\t\tconfirmLabel?: string;\n\t\tcancelLabel?: string;\n\t\tvariant?: 'default' | 'destructive';\n\t\tonConfirm: () => void | Promise<void>;\n\t\tonCancel?: () => void;\n\t}) => void;\n\tcloseConfirmation: () => void;\n}\n\nexport const useConfirmationStore = create<ConfirmationState>((set) => ({\n\tisOpen: false,\n\ttitle: 'Confirm Action',\n\tmessage: '',\n\tconfirmLabel: 'Confirm',\n\tcancelLabel: 'Cancel',\n\tvariant: 'default',\n\tonConfirm: () => {},\n\tonCancel: undefined,\n\n\topenConfirmation: (options) =>\n\t\tset({\n\t\t\tisOpen: true,\n\t\t\ttitle: options.title || 'Confirm Action',\n\t\t\tmessage: options.message,\n\t\t\tconfirmLabel: options.confirmLabel || 'Confirm',\n\t\t\tcancelLabel: options.cancelLabel || 'Cancel',\n\t\t\tvariant: options.variant || 'default',\n\t\t\tonConfirm: options.onConfirm,\n\t\t\tonCancel: options.onCancel,\n\t\t}),\n\n\tcloseConfirmation: () =>\n\t\tset({\n\t\t\tisOpen: false,\n\t\t\tonConfirm: () => {},\n\t\t\tonCancel: undefined,\n\t\t}),\n}));\n",
@@ -27,7 +27,7 @@
27
27
  "import { create } from 'zustand';\n\ninterface FilePickerState {\n\tisOpen: boolean;\n\topen: () => void;\n\tclose: () => void;\n\ttoggle: () => void;\n}\n\nexport const useFilePickerStore = create<FilePickerState>((set) => ({\n\tisOpen: false,\n\topen: () => set({ isOpen: true }),\n\tclose: () => set({ isOpen: false }),\n\ttoggle: () => set((state) => ({ isOpen: !state.isOpen })),\n}));\n",
28
28
  "import { create } from 'zustand';\nimport { persist } from 'zustand/middleware';\n\ninterface RightRailState {\n\tisPinned: boolean;\n\ttogglePinned: () => void;\n\tsetPinned: (pinned: boolean) => void;\n}\n\nexport const useRightRailStore = create<RightRailState>()(\n\tpersist(\n\t\t(set) => ({\n\t\t\tisPinned: false,\n\t\t\ttogglePinned: () => set((state) => ({ isPinned: !state.isPinned })),\n\t\t\tsetPinned: (pinned) => set({ isPinned: pinned }),\n\t\t}),\n\t\t{\n\t\t\tname: 'right-rail-storage',\n\t\t},\n\t),\n);\n"
29
29
  ],
30
- "mappings": "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",
31
- "debugId": "6E0E823BACA98FB164756E2164756E21",
30
+ "mappings": "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",
31
+ "debugId": "16A1133C5DAB629464756E2164756E21",
32
32
  "names": []
33
33
  }
@@ -88,19 +88,38 @@ export type ViewerTab = {
88
88
  title: string;
89
89
  skill: string;
90
90
  file: string | null;
91
+ } | {
92
+ id: string;
93
+ type: 'browser';
94
+ title: string;
95
+ url: string;
96
+ kind: 'browser' | 'simulator';
97
+ reloadKey: number;
91
98
  };
99
+ export type ViewerMode = 'work' | 'preview';
92
100
  interface ViewerTabsState {
93
101
  tabs: ViewerTab[];
94
102
  activeTabId: string | null;
103
+ activeMode: ViewerMode;
104
+ activeWorkTabId: string | null;
105
+ activePreviewTabId: string | null;
95
106
  followToolActivity: boolean;
96
107
  toggleFollowToolActivity: () => void;
97
108
  setFollowToolActivity: (enabled: boolean) => void;
109
+ setViewerMode: (mode: ViewerMode) => void;
98
110
  openGitDiffTab: (path: string, staged: boolean) => void;
99
111
  openSessionFileDiffTab: (path: string, operations: SessionFileOperation[]) => void;
100
112
  openFileTab: (path: string) => void;
101
113
  openToolReadTab: (path: string, highlight: ToolActivityHighlight) => void;
102
114
  openToolPreviewTab: (preview: ToolPreviewTabInput) => void;
103
115
  openSkillFileTab: (skill: string, file: string | null) => void;
116
+ openBrowserTab: (url?: string, options?: {
117
+ kind?: 'browser' | 'simulator';
118
+ title?: string;
119
+ newTab?: boolean;
120
+ }) => void;
121
+ updateBrowserTabUrl: (id: string, url: string) => void;
122
+ reloadBrowserTab: (id: string) => void;
104
123
  setActiveTab: (id: string) => void;
105
124
  closeTab: (id: string) => void;
106
125
  updateSessionFileOperationIndex: (id: string, index: number) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"viewerTabsStore.d.ts","sourceRoot":"","sources":["../../src/stores/viewerTabsStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"viewerTabsStore.d.ts","sourceRoot":"","sources":["../../src/stores/viewerTabsStore.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ottocode/web-sdk",
3
- "version": "0.1.287",
3
+ "version": "0.1.288",
4
4
  "description": "Reusable React components, hooks, and utilities for building ottocode web interfaces",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -74,8 +74,8 @@
74
74
  "@iconify-json/material-icon-theme": "^1.2.65",
75
75
  "@iconify/react": "^6.0.2",
76
76
  "@lezer/highlight": "^1.2.3",
77
- "@ottocode/api": "0.1.287",
78
- "@ottocode/sdk": "0.1.287",
77
+ "@ottocode/api": "0.1.288",
78
+ "@ottocode/sdk": "0.1.288",
79
79
  "axios": "^1.7.9",
80
80
  "fuse.js": "^7.1.0",
81
81
  "ghostty-web": "^0.4.0",