@ottocode/web-sdk 0.1.269 → 0.1.271

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/dist/components/chat/ChatInput.d.ts.map +1 -1
  2. package/dist/components/chat/InputQueueBar.d.ts +6 -0
  3. package/dist/components/chat/InputQueueBar.d.ts.map +1 -0
  4. package/dist/components/chat/InputTodosBar.d.ts +6 -0
  5. package/dist/components/chat/InputTodosBar.d.ts.map +1 -0
  6. package/dist/components/chat/ShortcutsModal.d.ts.map +1 -1
  7. package/dist/components/file-browser/FileBrowserSidebar.d.ts.map +1 -1
  8. package/dist/components/file-browser/FileBrowserSidebarToggle.d.ts.map +1 -1
  9. package/dist/components/file-browser/FileViewerPanel.d.ts +3 -0
  10. package/dist/components/file-browser/FileViewerPanel.d.ts.map +1 -1
  11. package/dist/components/file-browser/QuickFilePicker.d.ts.map +1 -1
  12. package/dist/components/git/GitDiffPanel.d.ts +4 -0
  13. package/dist/components/git/GitDiffPanel.d.ts.map +1 -1
  14. package/dist/components/git/GitDiffViewer.d.ts.map +1 -1
  15. package/dist/components/git/GitFileItem.d.ts.map +1 -1
  16. package/dist/components/git/GitSidebarToggle.d.ts.map +1 -1
  17. package/dist/components/index.d.ts +3 -0
  18. package/dist/components/index.d.ts.map +1 -1
  19. package/dist/components/index.js +5092 -3747
  20. package/dist/components/index.js.map +61 -55
  21. package/dist/components/mcp/MCPSidebarToggle.d.ts.map +1 -1
  22. package/dist/components/messages/ActionToolBox.d.ts +2 -1
  23. package/dist/components/messages/ActionToolBox.d.ts.map +1 -1
  24. package/dist/components/messages/AssistantMessageGroup.d.ts.map +1 -1
  25. package/dist/components/messages/CompactActivityGroup.d.ts +2 -1
  26. package/dist/components/messages/CompactActivityGroup.d.ts.map +1 -1
  27. package/dist/components/messages/MessagePartItem.d.ts.map +1 -1
  28. package/dist/components/messages/MessageThread.d.ts.map +1 -1
  29. package/dist/components/messages/UserMessageGroup.d.ts.map +1 -1
  30. package/dist/components/messages/renderers/ProgressUpdateRenderer.d.ts.map +1 -1
  31. package/dist/components/messages/renderers/index.d.ts.map +1 -1
  32. package/dist/components/onboarding/OnboardingModal.d.ts.map +1 -1
  33. package/dist/components/onboarding/steps/ProviderSetupStep.d.ts.map +1 -1
  34. package/dist/components/session-files/SessionFilesDiffPanel.d.ts +7 -0
  35. package/dist/components/session-files/SessionFilesDiffPanel.d.ts.map +1 -1
  36. package/dist/components/session-files/SessionFilesSidebar.d.ts.map +1 -1
  37. package/dist/components/session-files/SessionFilesSidebarToggle.d.ts.map +1 -1
  38. package/dist/components/sessions/SessionItem.d.ts.map +1 -1
  39. package/dist/components/sessions/SessionListContainer.d.ts.map +1 -1
  40. package/dist/components/sessions/session-time.d.ts.map +1 -1
  41. package/dist/components/settings/SettingsSidebarToggle.d.ts.map +1 -1
  42. package/dist/components/sidebar/SidebarShortcutBadge.d.ts +6 -0
  43. package/dist/components/sidebar/SidebarShortcutBadge.d.ts.map +1 -0
  44. package/dist/components/skills/SkillViewerPanel.d.ts +4 -0
  45. package/dist/components/skills/SkillViewerPanel.d.ts.map +1 -1
  46. package/dist/components/skills/SkillsSidebarToggle.d.ts.map +1 -1
  47. package/dist/components/tunnel/TunnelSidebarToggle.d.ts.map +1 -1
  48. package/dist/components/ui/Modal.d.ts.map +1 -1
  49. package/dist/components/workspace/ViewerTabs.d.ts +2 -0
  50. package/dist/components/workspace/ViewerTabs.d.ts.map +1 -0
  51. package/dist/hooks/index.js +365 -74
  52. package/dist/hooks/index.js.map +17 -15
  53. package/dist/hooks/useClientEvents.d.ts.map +1 -1
  54. package/dist/hooks/useKeyboardShortcuts.d.ts.map +1 -1
  55. package/dist/hooks/useMessages.d.ts.map +1 -1
  56. package/dist/hooks/useQueueState.d.ts.map +1 -1
  57. package/dist/hooks/useSessions.d.ts +1 -0
  58. package/dist/hooks/useSessions.d.ts.map +1 -1
  59. package/dist/hooks/useShortcutHintsVisible.d.ts +5 -0
  60. package/dist/hooks/useShortcutHintsVisible.d.ts.map +1 -0
  61. package/dist/index.js +5287 -3843
  62. package/dist/index.js.map +63 -57
  63. package/dist/lib/api-client/index.d.ts +1 -0
  64. package/dist/lib/api-client/index.d.ts.map +1 -1
  65. package/dist/lib/api-client/sessions.d.ts +1 -0
  66. package/dist/lib/api-client/sessions.d.ts.map +1 -1
  67. package/dist/lib/api-client/utils.d.ts.map +1 -1
  68. package/dist/lib/index.js +11 -2
  69. package/dist/lib/index.js.map +5 -5
  70. package/dist/stores/fileBrowserStore.d.ts +1 -0
  71. package/dist/stores/fileBrowserStore.d.ts.map +1 -1
  72. package/dist/stores/gitStore.d.ts.map +1 -1
  73. package/dist/stores/index.d.ts +2 -0
  74. package/dist/stores/index.d.ts.map +1 -1
  75. package/dist/stores/index.js +201 -60
  76. package/dist/stores/index.js.map +9 -7
  77. package/dist/stores/sessionFilesStore.d.ts.map +1 -1
  78. package/dist/stores/skillsStore.d.ts.map +1 -1
  79. package/dist/stores/todoStore.d.ts +18 -0
  80. package/dist/stores/todoStore.d.ts.map +1 -0
  81. package/dist/stores/viewerTabsStore.d.ts +41 -0
  82. package/dist/stores/viewerTabsStore.d.ts.map +1 -0
  83. package/dist/types/api.d.ts +7 -0
  84. package/dist/types/api.d.ts.map +1 -1
  85. package/package.json +3 -3
@@ -1,27 +1,115 @@
1
1
  // src/stores/gitStore.ts
2
- import { create as create8 } from "zustand";
2
+ import { create as create9 } from "zustand";
3
3
 
4
4
  // src/stores/sessionFilesStore.ts
5
- import { create as create7 } from "zustand";
5
+ import { create as create8 } from "zustand";
6
6
 
7
7
  // src/stores/researchStore.ts
8
- import { create as create6 } from "zustand";
8
+ import { create as create7 } from "zustand";
9
9
 
10
10
  // src/stores/settingsStore.ts
11
- import { create as create5 } from "zustand";
11
+ import { create as create6 } from "zustand";
12
12
 
13
13
  // src/stores/tunnelStore.ts
14
- import { create as create4 } from "zustand";
14
+ import { create as create5 } from "zustand";
15
15
 
16
16
  // src/stores/fileBrowserStore.ts
17
- import { create as create3 } from "zustand";
17
+ import { create as create4 } from "zustand";
18
18
 
19
19
  // src/stores/mcpStore.ts
20
- import { create as create2 } from "zustand";
20
+ import { create as create3 } from "zustand";
21
21
 
22
22
  // src/stores/skillsStore.ts
23
+ import { create as create2 } from "zustand";
24
+
25
+ // src/stores/viewerTabsStore.ts
23
26
  import { create } from "zustand";
24
- var useSkillsStore = create((set) => ({
27
+ function titleFromPath(path) {
28
+ return path.split("/").pop() || path;
29
+ }
30
+ function upsertTab(tabs, tab) {
31
+ const existingIndex = tabs.findIndex((item) => item.id === tab.id);
32
+ if (existingIndex === -1) {
33
+ return [...tabs, tab];
34
+ }
35
+ const next = [...tabs];
36
+ next[existingIndex] = tab;
37
+ return next;
38
+ }
39
+ var useViewerTabsStore = create((set) => ({
40
+ tabs: [],
41
+ activeTabId: null,
42
+ openGitDiffTab: (path, staged) => {
43
+ const id = `git-diff:${staged ? "staged" : "unstaged"}:${path}`;
44
+ set((state) => ({
45
+ tabs: upsertTab(state.tabs, {
46
+ id,
47
+ type: "git-diff",
48
+ title: titleFromPath(path),
49
+ path,
50
+ staged
51
+ }),
52
+ activeTabId: id
53
+ }));
54
+ },
55
+ openSessionFileDiffTab: (path, operations) => {
56
+ const id = `session-file-diff:${path}`;
57
+ set((state) => ({
58
+ tabs: upsertTab(state.tabs, {
59
+ id,
60
+ type: "session-file-diff",
61
+ title: titleFromPath(path),
62
+ path,
63
+ operations,
64
+ selectedOperationIndex: Math.max(0, operations.length - 1)
65
+ }),
66
+ activeTabId: id
67
+ }));
68
+ },
69
+ openFileTab: (path) => {
70
+ const id = `file:${path}`;
71
+ set((state) => ({
72
+ tabs: upsertTab(state.tabs, {
73
+ id,
74
+ type: "file",
75
+ title: titleFromPath(path),
76
+ path
77
+ }),
78
+ activeTabId: id
79
+ }));
80
+ },
81
+ openSkillFileTab: (skill, file) => {
82
+ const displayFile = file ?? "SKILL.md";
83
+ const id = `skill-file:${skill}:${displayFile}`;
84
+ set((state) => ({
85
+ tabs: upsertTab(state.tabs, {
86
+ id,
87
+ type: "skill-file",
88
+ title: titleFromPath(displayFile),
89
+ skill,
90
+ file
91
+ }),
92
+ activeTabId: id
93
+ }));
94
+ },
95
+ setActiveTab: (id) => set({ activeTabId: id }),
96
+ closeTab: (id) => set((state) => {
97
+ const closingIndex = state.tabs.findIndex((tab) => tab.id === id);
98
+ const tabs = state.tabs.filter((tab) => tab.id !== id);
99
+ let activeTabId = state.activeTabId;
100
+ if (state.activeTabId === id) {
101
+ activeTabId = tabs[closingIndex]?.id ?? tabs[closingIndex - 1]?.id ?? null;
102
+ }
103
+ return { tabs, activeTabId };
104
+ }),
105
+ updateSessionFileOperationIndex: (id, index) => set((state) => ({
106
+ tabs: state.tabs.map((tab) => tab.id === id && tab.type === "session-file-diff" ? { ...tab, selectedOperationIndex: index } : tab)
107
+ })),
108
+ closeAllTabs: () => set({ tabs: [], activeTabId: null })
109
+ }));
110
+
111
+ // src/stores/skillsStore.ts
112
+ var useSkillsStore = create2((set, get) => ({
25
113
  isExpanded: false,
26
114
  skills: [],
27
115
  globalEnabled: true,
@@ -59,12 +147,18 @@ var useSkillsStore = create((set) => ({
59
147
  setSkills: (skills) => set({ skills }),
60
148
  setSkillsConfig: ({ skills, globalEnabled, totalCount, enabledCount }) => set({ skills, globalEnabled, totalCount, enabledCount }),
61
149
  selectSkill: (name) => set({ selectedSkill: name, isViewerOpen: false, viewingFile: null }),
62
- openViewer: (file) => set({ isViewerOpen: true, viewingFile: file }),
150
+ openViewer: (file) => {
151
+ const selectedSkill = get().selectedSkill;
152
+ if (selectedSkill) {
153
+ useViewerTabsStore.getState().openSkillFileTab(selectedSkill, file);
154
+ }
155
+ set({ isViewerOpen: true, viewingFile: file });
156
+ },
63
157
  closeViewer: () => set({ isViewerOpen: false, viewingFile: null })
64
158
  }));
65
159
 
66
160
  // src/stores/mcpStore.ts
67
- var useMCPStore = create2((set) => ({
161
+ var useMCPStore = create3((set) => ({
68
162
  isExpanded: false,
69
163
  servers: [],
70
164
  loading: new Set,
@@ -120,7 +214,22 @@ var useMCPStore = create2((set) => ({
120
214
  }));
121
215
 
122
216
  // src/stores/fileBrowserStore.ts
123
- var useFileBrowserStore = create3((set) => ({
217
+ function getAncestorDirs(path) {
218
+ const normalizedPath = path.replace(/\\/g, "/").replace(/^\.\//, "");
219
+ const parts = normalizedPath.split("/").filter(Boolean);
220
+ return parts.slice(0, -1).map((_, index) => parts.slice(0, index + 1).join("/"));
221
+ }
222
+ function revealFileState(state, path) {
223
+ const expandedDirs = new Set(state.expandedDirs);
224
+ for (const dir of getAncestorDirs(path)) {
225
+ expandedDirs.add(dir);
226
+ }
227
+ return {
228
+ selectedFile: path,
229
+ expandedDirs
230
+ };
231
+ }
232
+ var useFileBrowserStore = create4((set) => ({
124
233
  isExpanded: false,
125
234
  selectedFile: null,
126
235
  isViewerOpen: false,
@@ -155,10 +264,14 @@ var useFileBrowserStore = create3((set) => ({
155
264
  isViewerOpen: false,
156
265
  selectedFile: null
157
266
  }),
158
- openFile: (path) => set({
159
- selectedFile: path,
160
- isViewerOpen: true
161
- }),
267
+ openFile: (path) => {
268
+ useViewerTabsStore.getState().openFileTab(path);
269
+ set((state) => ({
270
+ ...revealFileState(state, path),
271
+ isViewerOpen: true
272
+ }));
273
+ },
274
+ revealFile: (path) => set((state) => revealFileState(state, path)),
162
275
  closeViewer: () => set({
163
276
  isViewerOpen: false,
164
277
  selectedFile: null
@@ -175,7 +288,7 @@ var useFileBrowserStore = create3((set) => ({
175
288
  }));
176
289
 
177
290
  // src/stores/tunnelStore.ts
178
- var useTunnelStore = create4((set) => ({
291
+ var useTunnelStore = create5((set) => ({
179
292
  isExpanded: false,
180
293
  status: "idle",
181
294
  url: null,
@@ -223,7 +336,7 @@ var useTunnelStore = create4((set) => ({
223
336
  }));
224
337
 
225
338
  // src/stores/settingsStore.ts
226
- var useSettingsStore = create5((set) => ({
339
+ var useSettingsStore = create6((set) => ({
227
340
  isExpanded: false,
228
341
  toggleSidebar: () => {
229
342
  set((state) => {
@@ -245,7 +358,7 @@ var useSettingsStore = create5((set) => ({
245
358
  }));
246
359
 
247
360
  // src/stores/researchStore.ts
248
- var useResearchStore = create6((set, get) => ({
361
+ var useResearchStore = create7((set, get) => ({
249
362
  isExpanded: false,
250
363
  activeResearchSessionId: null,
251
364
  parentSessionId: null,
@@ -292,7 +405,7 @@ var useResearchStore = create6((set, get) => ({
292
405
  }));
293
406
 
294
407
  // src/stores/sessionFilesStore.ts
295
- var useSessionFilesStore = create7((set) => ({
408
+ var useSessionFilesStore = create8((set) => ({
296
409
  isExpanded: false,
297
410
  selectedFile: null,
298
411
  allOperations: [],
@@ -330,13 +443,16 @@ var useSessionFilesStore = create7((set) => ({
330
443
  allOperations: [],
331
444
  selectedOperationIndex: 0
332
445
  }),
333
- openDiff: (file, operations) => set({
334
- selectedFile: file,
335
- allOperations: operations,
336
- selectedOperationIndex: operations.length - 1,
337
- isDiffOpen: true,
338
- isExpanded: true
339
- }),
446
+ openDiff: (file, operations) => {
447
+ useViewerTabsStore.getState().openSessionFileDiffTab(file, operations);
448
+ set({
449
+ selectedFile: file,
450
+ allOperations: operations,
451
+ selectedOperationIndex: operations.length - 1,
452
+ isDiffOpen: true,
453
+ isExpanded: true
454
+ });
455
+ },
340
456
  selectOperation: (index) => set({ selectedOperationIndex: index }),
341
457
  closeDiff: () => set({
342
458
  isDiffOpen: false,
@@ -347,7 +463,7 @@ var useSessionFilesStore = create7((set) => ({
347
463
  }));
348
464
 
349
465
  // src/stores/gitStore.ts
350
- var useGitStore = create8((set) => ({
466
+ var useGitStore = create9((set) => ({
351
467
  isExpanded: false,
352
468
  activeSessionId: null,
353
469
  selectedFile: null,
@@ -373,12 +489,15 @@ var useGitStore = create8((set) => ({
373
489
  },
374
490
  expandSidebar: () => set({ isExpanded: true }),
375
491
  collapseSidebar: () => set({ isExpanded: false, isDiffOpen: false, selectedFile: null }),
376
- openDiff: (file, staged) => set({
377
- selectedFile: file,
378
- selectedFileStaged: staged,
379
- isDiffOpen: true,
380
- isExpanded: true
381
- }),
492
+ openDiff: (file, staged) => {
493
+ useViewerTabsStore.getState().openGitDiffTab(file, staged);
494
+ set({
495
+ selectedFile: file,
496
+ selectedFileStaged: staged,
497
+ isDiffOpen: true,
498
+ isExpanded: true
499
+ });
500
+ },
382
501
  closeDiff: () => set({
383
502
  isDiffOpen: false,
384
503
  selectedFile: null
@@ -397,9 +516,9 @@ var useGitStore = create8((set) => ({
397
516
  setSessionListCollapsed: (collapsed) => set({ wasSessionListCollapsed: collapsed })
398
517
  }));
399
518
  // src/stores/sidebarStore.ts
400
- import { create as create9 } from "zustand";
519
+ import { create as create10 } from "zustand";
401
520
  import { persist } from "zustand/middleware";
402
- var useSidebarStore = create9()(persist((set) => ({
521
+ var useSidebarStore = create10()(persist((set) => ({
403
522
  isCollapsed: false,
404
523
  toggleCollapse: () => set((state) => ({ isCollapsed: !state.isCollapsed })),
405
524
  setCollapsed: (collapsed) => set({ isCollapsed: collapsed })
@@ -407,8 +526,8 @@ var useSidebarStore = create9()(persist((set) => ({
407
526
  name: "sidebar-storage"
408
527
  }));
409
528
  // src/stores/focusStore.ts
410
- import { create as create10 } from "zustand";
411
- var useFocusStore = create10((set) => ({
529
+ import { create as create11 } from "zustand";
530
+ var useFocusStore = create11((set) => ({
412
531
  currentFocus: null,
413
532
  sessionIndex: 0,
414
533
  gitFileIndex: 0,
@@ -419,8 +538,8 @@ var useFocusStore = create10((set) => ({
419
538
  resetSessionIndex: () => set({ sessionIndex: 0 })
420
539
  }));
421
540
  // src/stores/confirmationStore.ts
422
- import { create as create11 } from "zustand";
423
- var useConfirmationStore = create11((set) => ({
541
+ import { create as create12 } from "zustand";
542
+ var useConfirmationStore = create12((set) => ({
424
543
  isOpen: false,
425
544
  title: "Confirm Action",
426
545
  message: "",
@@ -446,8 +565,8 @@ var useConfirmationStore = create11((set) => ({
446
565
  })
447
566
  }));
448
567
  // src/stores/queueStore.ts
449
- import { create as create12 } from "zustand";
450
- var useQueueStore = create12((set, get) => ({
568
+ import { create as create13 } from "zustand";
569
+ var useQueueStore = create13((set, get) => ({
451
570
  pendingRestoreText: null,
452
571
  setPendingRestoreText: (text) => set({ pendingRestoreText: text }),
453
572
  consumeRestoreText: () => {
@@ -457,8 +576,8 @@ var useQueueStore = create12((set, get) => ({
457
576
  }
458
577
  }));
459
578
  // src/stores/pendingResearchStore.ts
460
- import { create as create13 } from "zustand";
461
- var usePendingResearchStore = create13((set, get) => ({
579
+ import { create as create14 } from "zustand";
580
+ var usePendingResearchStore = create14((set, get) => ({
462
581
  pendingContexts: new Map,
463
582
  addContext: (parentSessionId, context) => {
464
583
  set((state) => {
@@ -495,9 +614,9 @@ var usePendingResearchStore = create13((set, get) => ({
495
614
  }
496
615
  }));
497
616
  // src/stores/toastStore.ts
498
- import { create as create14 } from "zustand";
617
+ import { create as create15 } from "zustand";
499
618
  var toastId = 0;
500
- var useToastStore = create14((set) => ({
619
+ var useToastStore = create15((set) => ({
501
620
  toasts: [],
502
621
  addToast: (toast) => {
503
622
  const id = `toast-${++toastId}`;
@@ -542,8 +661,8 @@ toast.successWithAction = (message, action, duration = 6000) => {
542
661
  return id;
543
662
  };
544
663
  // src/stores/ottorouterStore.ts
545
- import { create as create15 } from "zustand";
546
- var useOttoRouterStore = create15((set) => ({
664
+ import { create as create16 } from "zustand";
665
+ var useOttoRouterStore = create16((set) => ({
547
666
  balance: null,
548
667
  usdcBalance: null,
549
668
  network: "mainnet",
@@ -571,8 +690,8 @@ var useOttoRouterStore = create15((set) => ({
571
690
  setLimits: (limits) => set({ limits })
572
691
  }));
573
692
  // src/stores/toolApprovalStore.ts
574
- import { create as create16 } from "zustand";
575
- var useToolApprovalStore = create16((set) => ({
693
+ import { create as create17 } from "zustand";
694
+ var useToolApprovalStore = create17((set) => ({
576
695
  pendingApprovals: [],
577
696
  addPendingApproval: (approval) => set((state) => ({
578
697
  pendingApprovals: [...state.pendingApprovals, approval]
@@ -587,8 +706,8 @@ var useToolApprovalStore = create16((set) => ({
587
706
  setPendingApprovals: (approvals) => set({ pendingApprovals: approvals })
588
707
  }));
589
708
  // src/stores/topupApprovalStore.ts
590
- import { create as create17 } from "zustand";
591
- var useTopupApprovalStore = create17((set) => ({
709
+ import { create as create18 } from "zustand";
710
+ var useTopupApprovalStore = create18((set) => ({
592
711
  pendingTopup: null,
593
712
  isProcessing: false,
594
713
  selectedMethod: null,
@@ -597,10 +716,30 @@ var useTopupApprovalStore = create17((set) => ({
597
716
  setSelectedMethod: (selectedMethod) => set({ selectedMethod }),
598
717
  clearPendingTopup: () => set({ pendingTopup: null, isProcessing: false, selectedMethod: null })
599
718
  }));
719
+ // src/stores/todoStore.ts
720
+ import { create as create19 } from "zustand";
721
+ var useTodoStore = create19((set) => ({
722
+ todosBySession: {},
723
+ setSessionTodos: (sessionId, snapshot) => set((state) => ({
724
+ todosBySession: {
725
+ ...state.todosBySession,
726
+ [sessionId]: snapshot ? {
727
+ ...snapshot,
728
+ updatedAt: Date.now()
729
+ } : undefined
730
+ }
731
+ })),
732
+ clearSessionTodos: (sessionId) => set((state) => ({
733
+ todosBySession: {
734
+ ...state.todosBySession,
735
+ [sessionId]: undefined
736
+ }
737
+ }))
738
+ }));
600
739
  // src/stores/onboardingStore.ts
601
- import { create as create18 } from "zustand";
740
+ import { create as create20 } from "zustand";
602
741
  var STEPS = ["wallet", "defaults"];
603
- var useOnboardingStore = create18((set, get) => ({
742
+ var useOnboardingStore = create20((set, get) => ({
604
743
  isOpen: false,
605
744
  currentStep: "wallet",
606
745
  manageMode: false,
@@ -636,9 +775,9 @@ var useOnboardingStore = create18((set, get) => ({
636
775
  })
637
776
  }));
638
777
  // src/stores/panelWidthStore.ts
639
- import { create as create19 } from "zustand";
778
+ import { create as create21 } from "zustand";
640
779
  import { persist as persist2 } from "zustand/middleware";
641
- var usePanelWidthStore = create19()(persist2((set, get) => ({
780
+ var usePanelWidthStore = create21()(persist2((set, get) => ({
642
781
  widths: {},
643
782
  setWidth: (key, width) => set((state) => ({
644
783
  widths: { ...state.widths, [key]: width }
@@ -648,8 +787,8 @@ var usePanelWidthStore = create19()(persist2((set, get) => ({
648
787
  name: "panel-widths"
649
788
  }));
650
789
  // src/stores/usageStore.ts
651
- import { create as create20 } from "zustand";
652
- var useUsageStore = create20((set) => ({
790
+ import { create as create22 } from "zustand";
791
+ var useUsageStore = create22((set) => ({
653
792
  usage: {},
654
793
  isLoading: {},
655
794
  lastFetched: {},
@@ -662,18 +801,20 @@ var useUsageStore = create20((set) => ({
662
801
  closeModal: () => set({ isModalOpen: false, modalProvider: null })
663
802
  }));
664
803
  // src/stores/filePickerStore.ts
665
- import { create as create21 } from "zustand";
666
- var useFilePickerStore = create21((set) => ({
804
+ import { create as create23 } from "zustand";
805
+ var useFilePickerStore = create23((set) => ({
667
806
  isOpen: false,
668
807
  open: () => set({ isOpen: true }),
669
808
  close: () => set({ isOpen: false }),
670
809
  toggle: () => set((state) => ({ isOpen: !state.isOpen }))
671
810
  }));
672
811
  export {
812
+ useViewerTabsStore,
673
813
  useUsageStore,
674
814
  useTunnelStore,
675
815
  useTopupApprovalStore,
676
816
  useToolApprovalStore,
817
+ useTodoStore,
677
818
  useToastStore,
678
819
  useSkillsStore,
679
820
  useSidebarStore,
@@ -694,4 +835,4 @@ export {
694
835
  toast
695
836
  };
696
837
 
697
- //# debugId=6B9694B684F7078B64756E2164756E21
838
+ //# debugId=823DA055B05D9CB464756E2164756E21