@ottocode/web-sdk 0.1.298 → 0.1.300
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/agents/AgentEditor.d.ts +9 -0
- package/dist/components/agents/AgentEditor.d.ts.map +1 -0
- package/dist/components/agents/AgentList.d.ts +10 -0
- package/dist/components/agents/AgentList.d.ts.map +1 -0
- package/dist/components/agents/AgentProviderModelFields.d.ts +10 -0
- package/dist/components/agents/AgentProviderModelFields.d.ts.map +1 -0
- package/dist/components/agents/AgentToolList.d.ts +14 -0
- package/dist/components/agents/AgentToolList.d.ts.map +1 -0
- package/dist/components/agents/AgentsManagerModal.d.ts +2 -0
- package/dist/components/agents/AgentsManagerModal.d.ts.map +1 -0
- package/dist/components/agents/AgentsSidebar.d.ts +3 -0
- package/dist/components/agents/AgentsSidebar.d.ts.map +1 -0
- package/dist/components/agents/AgentsSidebarToggle.d.ts +2 -0
- package/dist/components/agents/AgentsSidebarToggle.d.ts.map +1 -0
- package/dist/components/agents/CreateAgentModal.d.ts +8 -0
- package/dist/components/agents/CreateAgentModal.d.ts.map +1 -0
- package/dist/components/agents/agentConstants.d.ts +50 -0
- package/dist/components/agents/agentConstants.d.ts.map +1 -0
- package/dist/components/agents/index.d.ts +10 -0
- package/dist/components/agents/index.d.ts.map +1 -0
- package/dist/components/chat/UnifiedModelSelector.d.ts +2 -1
- package/dist/components/chat/UnifiedModelSelector.d.ts.map +1 -1
- package/dist/components/common/UsageModal.d.ts.map +1 -1
- package/dist/components/common/UsageRing.d.ts.map +1 -1
- package/dist/components/file-browser/FileViewerPanel.d.ts.map +1 -1
- package/dist/components/index.d.ts +4 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +3355 -1313
- package/dist/components/index.js.map +26 -17
- package/dist/components/messages/UserMessageGroup.d.ts.map +1 -1
- package/dist/components/ui/Modal.d.ts +1 -1
- package/dist/components/ui/Modal.d.ts.map +1 -1
- package/dist/components/workspace/ToolPreviewPanel.d.ts.map +1 -1
- package/dist/components/workspace/ViewerTabs.d.ts.map +1 -1
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +344 -20
- package/dist/hooks/index.js.map +10 -8
- package/dist/hooks/useAgents.d.ts +156 -0
- package/dist/hooks/useAgents.d.ts.map +1 -0
- package/dist/hooks/useConfig.d.ts.map +1 -1
- package/dist/hooks/useProviderUsage.d.ts.map +1 -1
- package/dist/hooks/useSessionStream.d.ts.map +1 -1
- package/dist/index.js +3406 -1356
- package/dist/index.js.map +26 -17
- package/dist/lib/api-client/config.d.ts +14 -0
- package/dist/lib/api-client/config.d.ts.map +1 -1
- package/dist/lib/api-client/index.d.ts +5 -0
- package/dist/lib/api-client/index.d.ts.map +1 -1
- package/dist/lib/index.js +48 -2
- package/dist/lib/index.js.map +4 -4
- package/dist/stores/agentsStore.d.ts +28 -0
- package/dist/stores/agentsStore.d.ts.map +1 -0
- package/dist/stores/index.d.ts +1 -0
- package/dist/stores/index.d.ts.map +1 -1
- package/dist/stores/index.js +74 -10
- package/dist/stores/index.js.map +5 -4
- package/dist/stores/viewerTabsStore.d.ts +4 -3
- package/dist/stores/viewerTabsStore.d.ts.map +1 -1
- package/package.json +3 -3
package/dist/stores/index.js
CHANGED
|
@@ -66,6 +66,9 @@ function upsertTab(tabs, tab) {
|
|
|
66
66
|
next[existingIndex] = tab;
|
|
67
67
|
return next;
|
|
68
68
|
}
|
|
69
|
+
function isPatchPreviewTool(toolName) {
|
|
70
|
+
return toolName === "apply_patch" || toolName === "edit" || toolName === "multiedit";
|
|
71
|
+
}
|
|
69
72
|
function isSamePatchCall(existing, preview) {
|
|
70
73
|
if (!existing)
|
|
71
74
|
return false;
|
|
@@ -238,8 +241,8 @@ var useViewerTabsStore = create((set) => ({
|
|
|
238
241
|
const targetPath = existingFile?.path ?? preview.path;
|
|
239
242
|
const existing = state.tabs.find((tab) => tab.type === "tool-preview" && viewerPathsMatch(tab.path, preview.path));
|
|
240
243
|
const tabs = state.tabs.filter((tab) => !((tab.type === "tool-preview" || tab.type === "file") && tab.id !== targetId && (viewerPathsMatch(tab.path, preview.path) || Boolean(preview.callId && "toolName" in tab && tab.callId === preview.callId))));
|
|
241
|
-
if (preview.toolName
|
|
242
|
-
const existingPatchPreview = existingFile?.patchPreview ?? (existing
|
|
244
|
+
if (isPatchPreviewTool(preview.toolName)) {
|
|
245
|
+
const existingPatchPreview = existingFile?.patchPreview ?? (existing && isPatchPreviewTool(existing.toolName) ? existing : undefined);
|
|
243
246
|
const samePatchCall = isSamePatchCall(existingPatchPreview, preview);
|
|
244
247
|
const baseContent = preview.baseContent ?? (samePatchCall ? existingPatchPreview?.baseContent : existingPatchPreview?.resultContent ?? existingPatchPreview?.baseContent);
|
|
245
248
|
const changedLines = samePatchCall ? preview.changedLines ?? existingPatchPreview?.changedLines : mergeChangedLines(existingPatchPreview?.changedLines, preview.changedLines);
|
|
@@ -260,7 +263,7 @@ var useViewerTabsStore = create((set) => ({
|
|
|
260
263
|
writePreview: undefined,
|
|
261
264
|
patchPreview: {
|
|
262
265
|
path: targetPath,
|
|
263
|
-
toolName:
|
|
266
|
+
toolName: preview.toolName,
|
|
264
267
|
callId: preview.callId ?? existingPatchPreview?.callId,
|
|
265
268
|
baseContent,
|
|
266
269
|
patch: preview.patch ?? existingPatchPreview?.patch,
|
|
@@ -1161,18 +1164,78 @@ var useUsageStore = create23((set) => ({
|
|
|
1161
1164
|
openModal: (provider) => set({ isModalOpen: true, modalProvider: provider }),
|
|
1162
1165
|
closeModal: () => set({ isModalOpen: false, modalProvider: null })
|
|
1163
1166
|
}));
|
|
1164
|
-
// src/stores/
|
|
1167
|
+
// src/stores/agentsStore.ts
|
|
1165
1168
|
import { create as create24 } from "zustand";
|
|
1166
|
-
|
|
1169
|
+
function collapseOtherRightPanels() {
|
|
1170
|
+
useGitStore.getState().collapseSidebar();
|
|
1171
|
+
useSessionFilesStore.getState().collapseSidebar();
|
|
1172
|
+
useResearchStore.getState().collapseSidebar();
|
|
1173
|
+
useSettingsStore.getState().collapseSidebar();
|
|
1174
|
+
useTunnelStore.getState().collapseSidebar();
|
|
1175
|
+
useFileBrowserStore.getState().collapseSidebar();
|
|
1176
|
+
useMCPStore.getState().collapseSidebar();
|
|
1177
|
+
useSkillsStore.getState().collapseSidebar();
|
|
1178
|
+
}
|
|
1179
|
+
var useAgentsStore = create24((set) => ({
|
|
1180
|
+
isExpanded: false,
|
|
1181
|
+
isManagerOpen: false,
|
|
1182
|
+
managerMode: "library",
|
|
1183
|
+
editorPage: "overview",
|
|
1184
|
+
agents: [],
|
|
1185
|
+
defaultAgent: null,
|
|
1186
|
+
selectedAgent: null,
|
|
1187
|
+
isCreateModalOpen: false,
|
|
1188
|
+
setManagerMode: (mode) => set({ managerMode: mode }),
|
|
1189
|
+
openManager: () => {
|
|
1190
|
+
collapseOtherRightPanels();
|
|
1191
|
+
set({ isManagerOpen: true, isExpanded: true, managerMode: "library" });
|
|
1192
|
+
},
|
|
1193
|
+
closeManager: () => set({
|
|
1194
|
+
isManagerOpen: false,
|
|
1195
|
+
isExpanded: false,
|
|
1196
|
+
isCreateModalOpen: false,
|
|
1197
|
+
managerMode: "library",
|
|
1198
|
+
editorPage: "overview"
|
|
1199
|
+
}),
|
|
1200
|
+
toggleManager: () => {
|
|
1201
|
+
const open = useAgentsStore.getState().isManagerOpen;
|
|
1202
|
+
if (open) {
|
|
1203
|
+
useAgentsStore.getState().closeManager();
|
|
1204
|
+
} else {
|
|
1205
|
+
useAgentsStore.getState().openManager();
|
|
1206
|
+
}
|
|
1207
|
+
},
|
|
1208
|
+
setAgents: (agents, defaultAgent) => set((state) => ({
|
|
1209
|
+
agents,
|
|
1210
|
+
defaultAgent,
|
|
1211
|
+
selectedAgent: state.selectedAgent && agents.some((a) => a.name === state.selectedAgent) ? state.selectedAgent : agents.find((a) => a.name === defaultAgent)?.name ?? agents[0]?.name ?? null
|
|
1212
|
+
})),
|
|
1213
|
+
selectAgent: (agent) => set({ selectedAgent: agent }),
|
|
1214
|
+
backToList: () => set({ selectedAgent: null, editorPage: "overview" }),
|
|
1215
|
+
openAgentInManager: (agent) => set({
|
|
1216
|
+
isManagerOpen: true,
|
|
1217
|
+
isExpanded: true,
|
|
1218
|
+
managerMode: "workspace",
|
|
1219
|
+
selectedAgent: agent,
|
|
1220
|
+
editorPage: "overview",
|
|
1221
|
+
isCreateModalOpen: false
|
|
1222
|
+
}),
|
|
1223
|
+
setEditorPage: (page) => set({ editorPage: page }),
|
|
1224
|
+
openCreateModal: () => set({ isManagerOpen: true, isExpanded: true, isCreateModalOpen: true }),
|
|
1225
|
+
closeCreateModal: () => set({ isCreateModalOpen: false })
|
|
1226
|
+
}));
|
|
1227
|
+
// src/stores/filePickerStore.ts
|
|
1228
|
+
import { create as create25 } from "zustand";
|
|
1229
|
+
var useFilePickerStore = create25((set) => ({
|
|
1167
1230
|
isOpen: false,
|
|
1168
1231
|
open: () => set({ isOpen: true }),
|
|
1169
1232
|
close: () => set({ isOpen: false }),
|
|
1170
1233
|
toggle: () => set((state) => ({ isOpen: !state.isOpen }))
|
|
1171
1234
|
}));
|
|
1172
1235
|
// src/stores/rightRailStore.ts
|
|
1173
|
-
import { create as
|
|
1236
|
+
import { create as create26 } from "zustand";
|
|
1174
1237
|
import { persist as persist3 } from "zustand/middleware";
|
|
1175
|
-
var useRightRailStore =
|
|
1238
|
+
var useRightRailStore = create26()(persist3((set) => ({
|
|
1176
1239
|
isPinned: false,
|
|
1177
1240
|
togglePinned: () => set((state) => ({ isPinned: !state.isPinned })),
|
|
1178
1241
|
setPinned: (pinned) => set({ isPinned: pinned })
|
|
@@ -1180,10 +1243,10 @@ var useRightRailStore = create25()(persist3((set) => ({
|
|
|
1180
1243
|
name: "right-rail-storage"
|
|
1181
1244
|
}));
|
|
1182
1245
|
// src/stores/terminalStore.ts
|
|
1183
|
-
import { create as
|
|
1246
|
+
import { create as create27 } from "zustand";
|
|
1184
1247
|
var DEFAULT_HEIGHT = 300;
|
|
1185
1248
|
var MIN_HEIGHT = 150;
|
|
1186
|
-
var useTerminalStore =
|
|
1249
|
+
var useTerminalStore = create27((set) => ({
|
|
1187
1250
|
isOpen: false,
|
|
1188
1251
|
panelHeight: DEFAULT_HEIGHT,
|
|
1189
1252
|
activeTabId: null,
|
|
@@ -1238,7 +1301,8 @@ export {
|
|
|
1238
1301
|
useFilePickerStore,
|
|
1239
1302
|
useFileBrowserStore,
|
|
1240
1303
|
useConfirmationStore,
|
|
1304
|
+
useAgentsStore,
|
|
1241
1305
|
toast
|
|
1242
1306
|
};
|
|
1243
1307
|
|
|
1244
|
-
//# debugId=
|
|
1308
|
+
//# debugId=33EA34F13A056B9D64756E2164756E21
|
package/dist/stores/index.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/stores/gitStore.ts", "../src/stores/sessionFilesStore.ts", "../src/stores/researchStore.ts", "../src/stores/settingsStore.ts", "../src/stores/tunnelStore.ts", "../src/stores/fileBrowserStore.ts", "../src/stores/mcpStore.ts", "../src/stores/skillsStore.ts", "../src/stores/viewerTabsStore.ts", "../src/stores/sidebarStore.ts", "../src/stores/focusStore.ts", "../src/stores/confirmationStore.ts", "../src/stores/queueStore.ts", "../src/stores/pendingResearchStore.ts", "../src/stores/toastStore.ts", "../src/stores/ottorouterStore.ts", "../src/stores/toolApprovalStore.ts", "../src/stores/secureInputStore.ts", "../src/stores/topupApprovalStore.ts", "../src/stores/todoStore.ts", "../src/stores/onboardingStore.ts", "../src/stores/panelWidthStore.ts", "../src/stores/usageStore.ts", "../src/stores/filePickerStore.ts", "../src/stores/rightRailStore.ts", "../src/stores/terminalStore.ts"],
|
|
3
|
+
"sources": ["../src/stores/gitStore.ts", "../src/stores/sessionFilesStore.ts", "../src/stores/researchStore.ts", "../src/stores/settingsStore.ts", "../src/stores/tunnelStore.ts", "../src/stores/fileBrowserStore.ts", "../src/stores/mcpStore.ts", "../src/stores/skillsStore.ts", "../src/stores/viewerTabsStore.ts", "../src/stores/sidebarStore.ts", "../src/stores/focusStore.ts", "../src/stores/confirmationStore.ts", "../src/stores/queueStore.ts", "../src/stores/pendingResearchStore.ts", "../src/stores/toastStore.ts", "../src/stores/ottorouterStore.ts", "../src/stores/toolApprovalStore.ts", "../src/stores/secureInputStore.ts", "../src/stores/topupApprovalStore.ts", "../src/stores/todoStore.ts", "../src/stores/onboardingStore.ts", "../src/stores/panelWidthStore.ts", "../src/stores/usageStore.ts", "../src/stores/agentsStore.ts", "../src/stores/filePickerStore.ts", "../src/stores/rightRailStore.ts", "../src/stores/terminalStore.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import { create } from 'zustand';\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 { useSkillsStore } from './skillsStore';\nimport { useViewerTabsStore } from './viewerTabsStore';\n\nexport interface GitTreeRow {\n\tid: string;\n\ttype: 'file' | 'folder';\n\tpath: string;\n\tstaged: boolean;\n\tstatus?: string;\n\tactionPaths: string[];\n\topen?: () => void;\n\ttoggleExpanded?: () => void;\n}\n\nconst GIT_TREE_SECTION_ORDER = ['conflicts', 'staged', 'changes'];\n\nfunction areGitTreeRowsEqual(\n\tleft: GitTreeRow[] = [],\n\tright: GitTreeRow[] = [],\n) {\n\tif (left.length !== right.length) return false;\n\n\treturn left.every((row, index) => {\n\t\tconst other = right[index];\n\t\treturn (\n\t\t\trow.id === other.id &&\n\t\t\trow.type === other.type &&\n\t\t\trow.path === other.path &&\n\t\t\trow.staged === other.staged &&\n\t\t\trow.status === other.status &&\n\t\t\trow.actionPaths.length === other.actionPaths.length &&\n\t\t\trow.actionPaths.every(\n\t\t\t\t(path, pathIndex) => path === other.actionPaths[pathIndex],\n\t\t\t)\n\t\t);\n\t});\n}\n\ninterface GitState {\n\t// Sidebar state\n\tisExpanded: boolean;\n\n\t// Active session tracking (for commit message generation)\n\tactiveSessionId: string | null;\n\n\t// Diff panel state\n\tselectedFile: string | null;\n\tselectedFileStaged: boolean;\n\tisDiffOpen: boolean;\n\n\t// Commit modal state\n\tisCommitModalOpen: boolean;\n\tcommitSessionId: string | null;\n\n\t// Session list collapse state (when diff is open)\n\twasSessionListCollapsed: boolean;\n\n\t// Visible Git tree rows for keyboard navigation\n\tgitTreeSections: Record<string, GitTreeRow[]>;\n\tgitTreeRows: GitTreeRow[];\n\n\t// Actions\n\ttoggleSidebar: () => void;\n\texpandSidebar: () => void;\n\tcollapseSidebar: () => void;\n\n\topenDiff: (file: string, staged: boolean) => void;\n\tcloseDiff: () => void;\n\tswitchFile: (file: string, staged: boolean) => void;\n\n\topenCommitModal: () => void;\n\topenCommitModalForSession: (sessionId: string) => void;\n\tcloseCommitModal: () => void;\n\n\tsetActiveSessionId: (sessionId: string | null) => void;\n\tsetSessionListCollapsed: (collapsed: boolean) => void;\n\tsetGitTreeSectionRows: (sectionId: string, rows: GitTreeRow[]) => void;\n}\n\nexport const useGitStore = create<GitState>((set) => ({\n\t// Initial state\n\tisExpanded: false,\n\tactiveSessionId: null,\n\tselectedFile: null,\n\tselectedFileStaged: false,\n\tisDiffOpen: false,\n\tisCommitModalOpen: false,\n\tcommitSessionId: null,\n\twasSessionListCollapsed: false,\n\tgitTreeSections: {},\n\tgitTreeRows: [],\n\n\t// Sidebar actions\n\ttoggleSidebar: () => {\n\t\tset((state) => {\n\t\t\tconst newExpanded = !state.isExpanded;\n\t\t\tif (newExpanded) {\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\tuseSkillsStore.getState().collapseSidebar();\n\t\t\t}\n\t\t\treturn { isExpanded: newExpanded };\n\t\t});\n\t},\n\texpandSidebar: () => set({ isExpanded: true }),\n\tcollapseSidebar: () =>\n\t\tset({ isExpanded: false, isDiffOpen: false, selectedFile: null }),\n\n\t// Diff panel actions\n\topenDiff: (file, staged) => {\n\t\tuseViewerTabsStore.getState().openGitDiffTab(file, staged);\n\t\tset({\n\t\t\tselectedFile: file,\n\t\t\tselectedFileStaged: staged,\n\t\t\tisDiffOpen: true,\n\t\t\tisExpanded: true,\n\t\t});\n\t},\n\tcloseDiff: () =>\n\t\tset({\n\t\t\tisDiffOpen: false,\n\t\t\tselectedFile: null,\n\t\t}),\n\tswitchFile: (file, staged) =>\n\t\tset({\n\t\t\tselectedFile: file,\n\t\t\tselectedFileStaged: staged,\n\t\t}),\n\n\t// Commit modal actions\n\topenCommitModal: () =>\n\t\tset((state) => ({\n\t\t\tisCommitModalOpen: true,\n\t\t\tcommitSessionId: state.activeSessionId,\n\t\t})),\n\topenCommitModalForSession: (sessionId: string) =>\n\t\tset({ isCommitModalOpen: true, commitSessionId: sessionId }),\n\tcloseCommitModal: () =>\n\t\tset({ isCommitModalOpen: false, commitSessionId: null }),\n\n\t// Session list collapse\n\tsetActiveSessionId: (sessionId) => set({ activeSessionId: sessionId }),\n\tsetSessionListCollapsed: (collapsed) =>\n\t\tset({ wasSessionListCollapsed: collapsed }),\n\tsetGitTreeSectionRows: (sectionId, rows) =>\n\t\tset((state) => {\n\t\t\tif (areGitTreeRowsEqual(state.gitTreeSections[sectionId], rows)) {\n\t\t\t\treturn state;\n\t\t\t}\n\n\t\t\tconst gitTreeSections = {\n\t\t\t\t...state.gitTreeSections,\n\t\t\t\t[sectionId]: rows,\n\t\t\t};\n\t\t\tconst gitTreeRows = GIT_TREE_SECTION_ORDER.flatMap(\n\t\t\t\t(id) => gitTreeSections[id] ?? [],\n\t\t\t);\n\n\t\t\treturn { gitTreeSections, gitTreeRows };\n\t\t}),\n}));\n",
|
|
6
6
|
"import { create } from 'zustand';\nimport { useGitStore } from './gitStore';\nimport { useResearchStore } from './researchStore';\nimport { useSettingsStore } from './settingsStore';\nimport { useTunnelStore } from './tunnelStore';\nimport { useFileBrowserStore } from './fileBrowserStore';\nimport { useMCPStore } from './mcpStore';\nimport { useSkillsStore } from './skillsStore';\nimport { useViewerTabsStore } from './viewerTabsStore';\nimport type { SessionFileOperation } from '../types/api';\n\ninterface SessionFilesState {\n\tisExpanded: boolean;\n\tselectedFile: string | null;\n\tallOperations: SessionFileOperation[];\n\tselectedOperationIndex: number;\n\tisDiffOpen: boolean;\n\n\ttoggleSidebar: () => void;\n\texpandSidebar: () => void;\n\tcollapseSidebar: () => void;\n\topenDiff: (file: string, operations: SessionFileOperation[]) => void;\n\tselectOperation: (index: number) => void;\n\tcloseDiff: () => void;\n}\n\nexport const useSessionFilesStore = create<SessionFilesState>((set) => ({\n\tisExpanded: false,\n\tselectedFile: null,\n\tallOperations: [],\n\tselectedOperationIndex: 0,\n\tisDiffOpen: false,\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\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\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\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\tuseSkillsStore.getState().collapseSidebar();\n\t\tset({ isExpanded: true });\n\t},\n\tcollapseSidebar: () =>\n\t\tset({\n\t\t\tisExpanded: false,\n\t\t\tisDiffOpen: false,\n\t\t\tselectedFile: null,\n\t\t\tallOperations: [],\n\t\t\tselectedOperationIndex: 0,\n\t\t}),\n\topenDiff: (file, operations) => {\n\t\tuseViewerTabsStore.getState().openSessionFileDiffTab(file, operations);\n\t\tset({\n\t\t\tselectedFile: file,\n\t\t\tallOperations: operations,\n\t\t\tselectedOperationIndex: operations.length - 1,\n\t\t\tisDiffOpen: true,\n\t\t\tisExpanded: true,\n\t\t});\n\t},\n\tselectOperation: (index) => set({ selectedOperationIndex: index }),\n\tcloseDiff: () =>\n\t\tset({\n\t\t\tisDiffOpen: false,\n\t\t\tselectedFile: null,\n\t\t\tallOperations: [],\n\t\t\tselectedOperationIndex: 0,\n\t\t}),\n}));\n",
|
|
@@ -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\tif (name) {\n\t\t\tuseViewerTabsStore.getState().openSkillFileTab(name, null);\n\t\t\tset({ selectedSkill: name, isViewerOpen: true, viewingFile: null });\n\t\t\treturn;\n\t\t}\n\t\tset({ selectedSkill: null, isViewerOpen: false, viewingFile: null });\n\t},\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\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",
|
|
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 type ToolPatchPreviewName = 'apply_patch' | 'edit' | 'multiedit';\n\nexport interface ToolPreviewTabInput {\n\tpath: string;\n\ttoolName: 'write' | ToolPatchPreviewName;\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: ToolPatchPreviewName;\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' | ToolPatchPreviewName;\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 isPatchPreviewTool(\n\ttoolName: ToolPreviewTabInput['toolName'],\n): toolName is ToolPatchPreviewName {\n\treturn (\n\t\ttoolName === 'apply_patch' ||\n\t\ttoolName === 'edit' ||\n\t\ttoolName === 'multiedit'\n\t);\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 (isPatchPreviewTool(preview.toolName)) {\n\t\t\t\tconst existingPatchPreview =\n\t\t\t\t\texistingFile?.patchPreview ??\n\t\t\t\t\t(existing && isPatchPreviewTool(existing.toolName)\n\t\t\t\t\t\t? existing\n\t\t\t\t\t\t: 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: preview.toolName,\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",
|
|
@@ -25,11 +25,12 @@
|
|
|
25
25
|
"import { create } from 'zustand';\n\nexport type OnboardingStep = 'wallet' | 'defaults';\n\nexport interface ProviderInfo {\n\tconfigured: boolean;\n\ttype?: 'api' | 'oauth' | 'wallet';\n\tlabel: string;\n\tsupportsOAuth: boolean;\n\tsupportsToken?: boolean;\n\tsupportsGhImport?: boolean;\n\tcustom?: boolean;\n\tmodelCount: number;\n\tcostRange?: { min: number; max: number };\n}\n\nexport interface AuthStatus {\n\tonboardingComplete: boolean;\n\tottorouter: { configured: boolean; publicKey?: string };\n\tproviders: Record<string, ProviderInfo>;\n\tdefaults: {\n\t\tagent: string;\n\t\tprovider: string;\n\t\tmodel: string;\n\t\ttoolApproval?: 'auto' | 'dangerous' | 'all' | 'yolo';\n\t};\n}\n\ninterface OnboardingState {\n\tisOpen: boolean;\n\tcurrentStep: OnboardingStep;\n\tmanageMode: boolean;\n\tisLoading: boolean;\n\terror: string | null;\n\tauthStatus: AuthStatus | null;\n\tsetOpen: (open: boolean) => void;\n\tsetStep: (step: OnboardingStep) => void;\n\tsetManageMode: (manageMode: boolean) => void;\n\tsetLoading: (loading: boolean) => void;\n\tsetError: (error: string | null) => void;\n\tsetAuthStatus: (status: AuthStatus | null) => void;\n\tnextStep: () => void;\n\tprevStep: () => void;\n\treset: () => void;\n}\n\nconst STEPS: OnboardingStep[] = ['wallet', 'defaults'];\n\nexport const useOnboardingStore = create<OnboardingState>((set, get) => ({\n\tisOpen: false,\n\tcurrentStep: 'wallet',\n\tmanageMode: false,\n\tisLoading: false,\n\terror: null,\n\tauthStatus: null,\n\tsetOpen: (isOpen) => set({ isOpen }),\n\tsetStep: (currentStep) => set({ currentStep }),\n\tsetManageMode: (manageMode) => set({ manageMode }),\n\tsetLoading: (isLoading) => set({ isLoading }),\n\tsetError: (error) => set({ error }),\n\tsetAuthStatus: (authStatus) => set({ authStatus }),\n\tnextStep: () => {\n\t\tconst { currentStep } = get();\n\t\tconst currentIndex = STEPS.indexOf(currentStep);\n\t\tif (currentIndex < STEPS.length - 1) {\n\t\t\tset({ currentStep: STEPS[currentIndex + 1] });\n\t\t}\n\t},\n\tprevStep: () => {\n\t\tconst { currentStep } = get();\n\t\tconst currentIndex = STEPS.indexOf(currentStep);\n\t\tif (currentIndex > 0) {\n\t\t\tset({ currentStep: STEPS[currentIndex - 1] });\n\t\t}\n\t},\n\treset: () =>\n\t\tset({\n\t\t\tisOpen: false,\n\t\t\tcurrentStep: 'wallet',\n\t\t\tmanageMode: false,\n\t\t\tisLoading: false,\n\t\t\terror: null,\n\t\t}),\n}));\n",
|
|
26
26
|
"import { create } from 'zustand';\nimport { persist } from 'zustand/middleware';\n\ninterface PanelWidthState {\n\twidths: Record<string, number>;\n\tsetWidth: (key: string, width: number) => void;\n\tgetWidth: (key: string, defaultWidth: number) => number;\n}\n\nexport const usePanelWidthStore = create<PanelWidthState>()(\n\tpersist(\n\t\t(set, get) => ({\n\t\t\twidths: {},\n\t\t\tsetWidth: (key, width) =>\n\t\t\t\tset((state) => ({\n\t\t\t\t\twidths: { ...state.widths, [key]: width },\n\t\t\t\t})),\n\t\t\tgetWidth: (key, defaultWidth) => get().widths[key] ?? defaultWidth,\n\t\t}),\n\t\t{\n\t\t\tname: 'panel-widths',\n\t\t},\n\t),\n);\n",
|
|
27
27
|
"import { create } from 'zustand';\nimport type { ProviderUsageResponse } from '../types/api';\n\ninterface UsageState {\n\tusage: Record<string, ProviderUsageResponse>;\n\tisLoading: Record<string, boolean>;\n\tlastFetched: Record<string, number>;\n\tisModalOpen: boolean;\n\tmodalProvider: string | null;\n\tsetUsage: (provider: string, data: ProviderUsageResponse) => void;\n\tsetLoading: (provider: string, loading: boolean) => void;\n\tsetLastFetched: (provider: string, time: number) => void;\n\topenModal: (provider: string) => void;\n\tcloseModal: () => void;\n}\n\nexport const useUsageStore = create<UsageState>((set) => ({\n\tusage: {},\n\tisLoading: {},\n\tlastFetched: {},\n\tisModalOpen: false,\n\tmodalProvider: null,\n\tsetUsage: (provider, data) =>\n\t\tset((s) => ({ usage: { ...s.usage, [provider]: data } })),\n\tsetLoading: (provider, loading) =>\n\t\tset((s) => ({ isLoading: { ...s.isLoading, [provider]: loading } })),\n\tsetLastFetched: (provider, time) =>\n\t\tset((s) => ({ lastFetched: { ...s.lastFetched, [provider]: time } })),\n\topenModal: (provider) => set({ isModalOpen: true, modalProvider: provider }),\n\tcloseModal: () => set({ isModalOpen: false, modalProvider: null }),\n}));\n",
|
|
28
|
+
"import { create } from 'zustand';\nimport type { AgentDetail } from '../lib/api-client/config';\nimport type { AgentEditorPage } from '../components/agents/agentConstants';\nimport { useFileBrowserStore } from './fileBrowserStore';\nimport { useGitStore } from './gitStore';\nimport { useMCPStore } from './mcpStore';\nimport { useResearchStore } from './researchStore';\nimport { useSessionFilesStore } from './sessionFilesStore';\nimport { useSettingsStore } from './settingsStore';\nimport { useSkillsStore } from './skillsStore';\nimport { useTunnelStore } from './tunnelStore';\n\nexport type AgentsManagerMode = 'library' | 'workspace';\n\ninterface AgentsState {\n\t/** Rail toggle highlight (manager open). */\n\tisExpanded: boolean;\n\tisManagerOpen: boolean;\n\tmanagerMode: AgentsManagerMode;\n\teditorPage: AgentEditorPage;\n\tagents: AgentDetail[];\n\tdefaultAgent: string | null;\n\tselectedAgent: string | null;\n\tisCreateModalOpen: boolean;\n\tsetManagerMode: (mode: AgentsManagerMode) => void;\n\topenManager: () => void;\n\tcloseManager: () => void;\n\ttoggleManager: () => void;\n\tsetAgents: (agents: AgentDetail[], defaultAgent: string) => void;\n\tselectAgent: (agent: string | null) => void;\n\tbackToList: () => void;\n\topenAgentInManager: (agent: string) => void;\n\tsetEditorPage: (page: AgentEditorPage) => void;\n\topenCreateModal: () => void;\n\tcloseCreateModal: () => void;\n}\n\nfunction collapseOtherRightPanels() {\n\tuseGitStore.getState().collapseSidebar();\n\tuseSessionFilesStore.getState().collapseSidebar();\n\tuseResearchStore.getState().collapseSidebar();\n\tuseSettingsStore.getState().collapseSidebar();\n\tuseTunnelStore.getState().collapseSidebar();\n\tuseFileBrowserStore.getState().collapseSidebar();\n\tuseMCPStore.getState().collapseSidebar();\n\tuseSkillsStore.getState().collapseSidebar();\n}\n\nexport const useAgentsStore = create<AgentsState>((set) => ({\n\tisExpanded: false,\n\tisManagerOpen: false,\n\tmanagerMode: 'library',\n\teditorPage: 'overview',\n\tagents: [],\n\tdefaultAgent: null,\n\tselectedAgent: null,\n\tisCreateModalOpen: false,\n\n\tsetManagerMode: (mode) => set({ managerMode: mode }),\n\n\topenManager: () => {\n\t\tcollapseOtherRightPanels();\n\t\tset({ isManagerOpen: true, isExpanded: true, managerMode: 'library' });\n\t},\n\n\tcloseManager: () =>\n\t\tset({\n\t\t\tisManagerOpen: false,\n\t\t\tisExpanded: false,\n\t\t\tisCreateModalOpen: false,\n\t\t\tmanagerMode: 'library',\n\t\t\teditorPage: 'overview',\n\t\t}),\n\n\ttoggleManager: () => {\n\t\tconst open = useAgentsStore.getState().isManagerOpen;\n\t\tif (open) {\n\t\t\tuseAgentsStore.getState().closeManager();\n\t\t} else {\n\t\t\tuseAgentsStore.getState().openManager();\n\t\t}\n\t},\n\n\tsetAgents: (agents, defaultAgent) =>\n\t\tset((state) => ({\n\t\t\tagents,\n\t\t\tdefaultAgent,\n\t\t\tselectedAgent:\n\t\t\t\tstate.selectedAgent &&\n\t\t\t\tagents.some((a) => a.name === state.selectedAgent)\n\t\t\t\t\t? state.selectedAgent\n\t\t\t\t\t: (agents.find((a) => a.name === defaultAgent)?.name ??\n\t\t\t\t\t\tagents[0]?.name ??\n\t\t\t\t\t\tnull),\n\t\t})),\n\n\tselectAgent: (agent) => set({ selectedAgent: agent }),\n\n\tbackToList: () => set({ selectedAgent: null, editorPage: 'overview' }),\n\n\topenAgentInManager: (agent) =>\n\t\tset({\n\t\t\tisManagerOpen: true,\n\t\t\tisExpanded: true,\n\t\t\tmanagerMode: 'workspace',\n\t\t\tselectedAgent: agent,\n\t\t\teditorPage: 'overview',\n\t\t\tisCreateModalOpen: false,\n\t\t}),\n\n\tsetEditorPage: (page) => set({ editorPage: page }),\n\n\topenCreateModal: () =>\n\t\tset({ isManagerOpen: true, isExpanded: true, isCreateModalOpen: true }),\n\n\tcloseCreateModal: () => set({ isCreateModalOpen: false }),\n}));\n",
|
|
28
29
|
"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",
|
|
29
30
|
"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",
|
|
30
31
|
"import { create } from 'zustand';\n\ninterface TerminalState {\n\tisOpen: boolean;\n\tpanelHeight: number;\n\tactiveTabId: string | null;\n\tisMaximized: boolean;\n\n\t/** @deprecated Use isOpen instead */\n\tisExpanded: boolean;\n\t/** @deprecated Use activeTabId instead */\n\tselectedTerminalId: string | null;\n\n\topenPanel: () => void;\n\tclosePanel: () => void;\n\ttogglePanel: () => void;\n\tsetPanelHeight: (height: number) => void;\n\tselectTab: (id: string | null) => void;\n\ttoggleMaximize: () => void;\n\n\t/** @deprecated Use openPanel instead */\n\texpandSidebar: () => void;\n\t/** @deprecated Use closePanel instead */\n\tcollapseSidebar: () => void;\n\t/** @deprecated Use togglePanel instead */\n\ttoggleSidebar: () => void;\n\t/** @deprecated Use selectTab instead */\n\tselectTerminal: (id: string | null) => void;\n}\n\nconst DEFAULT_HEIGHT = 300;\nconst MIN_HEIGHT = 150;\n\nexport const useTerminalStore = create<TerminalState>((set) => ({\n\tisOpen: false,\n\tpanelHeight: DEFAULT_HEIGHT,\n\tactiveTabId: null,\n\tisMaximized: false,\n\n\tget isExpanded() {\n\t\treturn this.isOpen;\n\t},\n\tget selectedTerminalId() {\n\t\treturn this.activeTabId;\n\t},\n\n\topenPanel: () => set({ isOpen: true }),\n\tclosePanel: () => set({ isOpen: false, isMaximized: false }),\n\ttogglePanel: () =>\n\t\tset((s) => ({\n\t\t\tisOpen: !s.isOpen,\n\t\t\tisMaximized: !s.isOpen ? s.isMaximized : false,\n\t\t})),\n\tsetPanelHeight: (height: number) =>\n\t\tset({ panelHeight: Math.max(MIN_HEIGHT, height) }),\n\tselectTab: (id) => set({ activeTabId: id, isOpen: true }),\n\ttoggleMaximize: () => set((s) => ({ isMaximized: !s.isMaximized })),\n\n\texpandSidebar: () => set({ isOpen: true }),\n\tcollapseSidebar: () =>\n\t\tset({ isOpen: false, activeTabId: null, isMaximized: false }),\n\ttoggleSidebar: () =>\n\t\tset((s) => ({\n\t\t\tisOpen: !s.isOpen,\n\t\t\tisMaximized: !s.isOpen ? s.isMaximized : false,\n\t\t})),\n\tselectTerminal: (id) => set({ activeTabId: id, isOpen: true }),\n}));\n"
|
|
31
32
|
],
|
|
32
|
-
"mappings": "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",
|
|
33
|
-
"debugId": "
|
|
33
|
+
"mappings": "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",
|
|
34
|
+
"debugId": "33EA34F13A056B9D64756E2164756E21",
|
|
34
35
|
"names": []
|
|
35
36
|
}
|
|
@@ -18,9 +18,10 @@ export interface ToolChangeCount {
|
|
|
18
18
|
additions: number;
|
|
19
19
|
removals: number;
|
|
20
20
|
}
|
|
21
|
+
export type ToolPatchPreviewName = 'apply_patch' | 'edit' | 'multiedit';
|
|
21
22
|
export interface ToolPreviewTabInput {
|
|
22
23
|
path: string;
|
|
23
|
-
toolName: 'write' |
|
|
24
|
+
toolName: 'write' | ToolPatchPreviewName;
|
|
24
25
|
callId?: string;
|
|
25
26
|
content?: string;
|
|
26
27
|
baseContent?: string;
|
|
@@ -36,7 +37,7 @@ export interface ToolPreviewTabInput {
|
|
|
36
37
|
error?: string;
|
|
37
38
|
}
|
|
38
39
|
export type ToolPatchPreview = Omit<ToolPreviewTabInput, 'toolName' | 'content'> & {
|
|
39
|
-
toolName:
|
|
40
|
+
toolName: ToolPatchPreviewName;
|
|
40
41
|
};
|
|
41
42
|
export type ToolWritePreview = Omit<ToolPreviewTabInput, 'toolName' | 'baseContent' | 'patch' | 'changedLines' | 'previewContent' | 'resultContent' | 'previewLineTones' | 'previewFirstLine' | 'previewLatestLine'> & {
|
|
42
43
|
toolName: 'write';
|
|
@@ -68,7 +69,7 @@ export type ViewerTab = {
|
|
|
68
69
|
type: 'tool-preview';
|
|
69
70
|
title: string;
|
|
70
71
|
path: string;
|
|
71
|
-
toolName: 'write' |
|
|
72
|
+
toolName: 'write' | ToolPatchPreviewName;
|
|
72
73
|
callId?: string;
|
|
73
74
|
content?: string;
|
|
74
75
|
baseContent?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewerTabsStore.d.ts","sourceRoot":"","sources":["../../src/stores/viewerTabsStore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,WAAW,qBAAqB;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,aAAa,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC;CAC1C;AAED,MAAM,WAAW,sBAAsB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,GAAG,aAAa,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC;IAC1C,SAAS,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC;IAC7C,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,GAAG,
|
|
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.
|
|
3
|
+
"version": "0.1.300",
|
|
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.
|
|
78
|
-
"@ottocode/sdk": "0.1.
|
|
77
|
+
"@ottocode/api": "0.1.300",
|
|
78
|
+
"@ottocode/sdk": "0.1.300",
|
|
79
79
|
"axios": "^1.7.9",
|
|
80
80
|
"fuse.js": "^7.1.0",
|
|
81
81
|
"ghostty-web": "^0.4.0",
|