@ottocode/web-sdk 0.1.226 → 0.1.227

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 (405) hide show
  1. package/dist/components/chat/FileMentionPopup.d.ts.map +1 -1
  2. package/dist/components/index.js +25148 -80
  3. package/dist/components/index.js.map +180 -1
  4. package/dist/components/messages/AssistantMessageGroup.d.ts.map +1 -1
  5. package/dist/components/messages/CompactActivityGroup.d.ts +10 -0
  6. package/dist/components/messages/CompactActivityGroup.d.ts.map +1 -0
  7. package/dist/components/messages/MessagePartItem.d.ts.map +1 -1
  8. package/dist/components/messages/MessageThread.d.ts +1 -0
  9. package/dist/components/messages/MessageThread.d.ts.map +1 -1
  10. package/dist/components/messages/MessageThreadContainer.d.ts.map +1 -1
  11. package/dist/components/messages/compactActivity.d.ts +34 -0
  12. package/dist/components/messages/compactActivity.d.ts.map +1 -0
  13. package/dist/components/messages/renderers/EditRenderer.d.ts +1 -1
  14. package/dist/components/messages/renderers/EditRenderer.d.ts.map +1 -1
  15. package/dist/components/messages/renderers/index.d.ts.map +1 -1
  16. package/dist/components/messages/renderers/types.d.ts +3 -1
  17. package/dist/components/messages/renderers/types.d.ts.map +1 -1
  18. package/dist/components/settings/SettingsSidebar.d.ts.map +1 -1
  19. package/dist/components/settings/SetuTopupModal.d.ts.map +1 -1
  20. package/dist/hooks/index.js +4812 -29
  21. package/dist/hooks/index.js.map +67 -1
  22. package/dist/hooks/useAuthStatus.d.ts.map +1 -1
  23. package/dist/hooks/useMCP.d.ts +9 -0
  24. package/dist/hooks/useMCP.d.ts.map +1 -1
  25. package/dist/hooks/usePreferences.d.ts +1 -0
  26. package/dist/hooks/usePreferences.d.ts.map +1 -1
  27. package/dist/hooks/useSessionStream.d.ts.map +1 -1
  28. package/dist/index.js +25918 -7
  29. package/dist/index.js.map +185 -1
  30. package/dist/lib/api-client/approval.d.ts.map +1 -1
  31. package/dist/lib/index.js +1007 -5
  32. package/dist/lib/index.js.map +22 -1
  33. package/dist/stores/index.js +693 -22
  34. package/dist/stores/index.js.map +30 -1
  35. package/dist/stores/toastStore.d.ts +1 -0
  36. package/dist/stores/toastStore.d.ts.map +1 -1
  37. package/dist/types/api.js +2 -2
  38. package/dist/types/api.js.map +9 -1
  39. package/package.json +4 -4
  40. package/dist/assets/provider-logos.js +0 -43
  41. package/dist/assets/provider-logos.js.map +0 -1
  42. package/dist/components/branch/BranchModal.js +0 -45
  43. package/dist/components/branch/BranchModal.js.map +0 -1
  44. package/dist/components/chat/ChatInput.js +0 -267
  45. package/dist/components/chat/ChatInput.js.map +0 -1
  46. package/dist/components/chat/ChatInputContainer.js +0 -295
  47. package/dist/components/chat/ChatInputContainer.js.map +0 -1
  48. package/dist/components/chat/ChatInputKeyHandler.js +0 -75
  49. package/dist/components/chat/ChatInputKeyHandler.js.map +0 -1
  50. package/dist/components/chat/CommandSuggestionsPopup.js +0 -45
  51. package/dist/components/chat/CommandSuggestionsPopup.js.map +0 -1
  52. package/dist/components/chat/ConfigModal.js +0 -46
  53. package/dist/components/chat/ConfigModal.js.map +0 -1
  54. package/dist/components/chat/ConfigSelector.js +0 -47
  55. package/dist/components/chat/ConfigSelector.js.map +0 -1
  56. package/dist/components/chat/FileMentionPopup.js +0 -138
  57. package/dist/components/chat/FileMentionPopup.js.map +0 -1
  58. package/dist/components/chat/ShortcutsModal.js +0 -275
  59. package/dist/components/chat/ShortcutsModal.js.map +0 -1
  60. package/dist/components/chat/StopButton.js +0 -25
  61. package/dist/components/chat/StopButton.js.map +0 -1
  62. package/dist/components/chat/UnifiedAgentSelector.js +0 -107
  63. package/dist/components/chat/UnifiedAgentSelector.js.map +0 -1
  64. package/dist/components/chat/UnifiedModelSelector.js +0 -209
  65. package/dist/components/chat/UnifiedModelSelector.js.map +0 -1
  66. package/dist/components/common/ProviderLogo.js +0 -30
  67. package/dist/components/common/ProviderLogo.js.map +0 -1
  68. package/dist/components/common/StatusIndicator.js +0 -54
  69. package/dist/components/common/StatusIndicator.js.map +0 -1
  70. package/dist/components/common/UsageModal.js +0 -55
  71. package/dist/components/common/UsageModal.js.map +0 -1
  72. package/dist/components/common/UsageRing.js +0 -22
  73. package/dist/components/common/UsageRing.js.map +0 -1
  74. package/dist/components/file-browser/FileBrowserSidebar.js +0 -50
  75. package/dist/components/file-browser/FileBrowserSidebar.js.map +0 -1
  76. package/dist/components/file-browser/FileBrowserSidebarToggle.js +0 -12
  77. package/dist/components/file-browser/FileBrowserSidebarToggle.js.map +0 -1
  78. package/dist/components/file-browser/FileViewerPanel.js +0 -85
  79. package/dist/components/file-browser/FileViewerPanel.js.map +0 -1
  80. package/dist/components/file-browser/QuickFilePicker.js +0 -118
  81. package/dist/components/file-browser/QuickFilePicker.js.map +0 -1
  82. package/dist/components/git/GitCommitModal.js +0 -70
  83. package/dist/components/git/GitCommitModal.js.map +0 -1
  84. package/dist/components/git/GitDiffPanel.js +0 -60
  85. package/dist/components/git/GitDiffPanel.js.map +0 -1
  86. package/dist/components/git/GitDiffViewer.js +0 -224
  87. package/dist/components/git/GitDiffViewer.js.map +0 -1
  88. package/dist/components/git/GitFileItem.js +0 -145
  89. package/dist/components/git/GitFileItem.js.map +0 -1
  90. package/dist/components/git/GitFileList.js +0 -108
  91. package/dist/components/git/GitFileList.js.map +0 -1
  92. package/dist/components/git/GitSidebar.js +0 -156
  93. package/dist/components/git/GitSidebar.js.map +0 -1
  94. package/dist/components/git/GitSidebarToggle.js +0 -18
  95. package/dist/components/git/GitSidebarToggle.js.map +0 -1
  96. package/dist/components/mcp/AddMCPServerModal.js +0 -166
  97. package/dist/components/mcp/AddMCPServerModal.js.map +0 -1
  98. package/dist/components/mcp/MCPSidebar.js +0 -192
  99. package/dist/components/mcp/MCPSidebar.js.map +0 -1
  100. package/dist/components/mcp/MCPSidebarToggle.js +0 -14
  101. package/dist/components/mcp/MCPSidebarToggle.js.map +0 -1
  102. package/dist/components/mcp/index.js +0 -4
  103. package/dist/components/mcp/index.js.map +0 -1
  104. package/dist/components/messages/AssistantMessageGroup.js +0 -176
  105. package/dist/components/messages/AssistantMessageGroup.js.map +0 -1
  106. package/dist/components/messages/MessagePartItem.js +0 -362
  107. package/dist/components/messages/MessagePartItem.js.map +0 -1
  108. package/dist/components/messages/MessageThread.js +0 -239
  109. package/dist/components/messages/MessageThread.js.map +0 -1
  110. package/dist/components/messages/MessageThreadContainer.js +0 -22
  111. package/dist/components/messages/MessageThreadContainer.js.map +0 -1
  112. package/dist/components/messages/ToolApprovalCard.js +0 -143
  113. package/dist/components/messages/ToolApprovalCard.js.map +0 -1
  114. package/dist/components/messages/TopupApprovalCard.js +0 -52
  115. package/dist/components/messages/TopupApprovalCard.js.map +0 -1
  116. package/dist/components/messages/UserMessageGroup.js +0 -132
  117. package/dist/components/messages/UserMessageGroup.js.map +0 -1
  118. package/dist/components/messages/renderers/ApplyPatchRenderer.js +0 -55
  119. package/dist/components/messages/renderers/ApplyPatchRenderer.js.map +0 -1
  120. package/dist/components/messages/renderers/BashRenderer.js +0 -55
  121. package/dist/components/messages/renderers/BashRenderer.js.map +0 -1
  122. package/dist/components/messages/renderers/DatabaseToolRenderer.js +0 -151
  123. package/dist/components/messages/renderers/DatabaseToolRenderer.js.map +0 -1
  124. package/dist/components/messages/renderers/DebugRenderer.js +0 -5
  125. package/dist/components/messages/renderers/DebugRenderer.js.map +0 -1
  126. package/dist/components/messages/renderers/DiffView.js +0 -206
  127. package/dist/components/messages/renderers/DiffView.js.map +0 -1
  128. package/dist/components/messages/renderers/EditRenderer.js +0 -25
  129. package/dist/components/messages/renderers/EditRenderer.js.map +0 -1
  130. package/dist/components/messages/renderers/ErrorRenderer.js +0 -162
  131. package/dist/components/messages/renderers/ErrorRenderer.js.map +0 -1
  132. package/dist/components/messages/renderers/FinishRenderer.js +0 -7
  133. package/dist/components/messages/renderers/FinishRenderer.js.map +0 -1
  134. package/dist/components/messages/renderers/GenericRenderer.js +0 -50
  135. package/dist/components/messages/renderers/GenericRenderer.js.map +0 -1
  136. package/dist/components/messages/renderers/GitCommitRenderer.js +0 -21
  137. package/dist/components/messages/renderers/GitCommitRenderer.js.map +0 -1
  138. package/dist/components/messages/renderers/GitDiffRenderer.js +0 -34
  139. package/dist/components/messages/renderers/GitDiffRenderer.js.map +0 -1
  140. package/dist/components/messages/renderers/GitStatusRenderer.js +0 -60
  141. package/dist/components/messages/renderers/GitStatusRenderer.js.map +0 -1
  142. package/dist/components/messages/renderers/ListRenderer.js +0 -28
  143. package/dist/components/messages/renderers/ListRenderer.js.map +0 -1
  144. package/dist/components/messages/renderers/LoadMcpToolsRenderer.js +0 -20
  145. package/dist/components/messages/renderers/LoadMcpToolsRenderer.js.map +0 -1
  146. package/dist/components/messages/renderers/McpToolRenderer.js +0 -68
  147. package/dist/components/messages/renderers/McpToolRenderer.js.map +0 -1
  148. package/dist/components/messages/renderers/ProgressUpdateRenderer.js +0 -9
  149. package/dist/components/messages/renderers/ProgressUpdateRenderer.js.map +0 -1
  150. package/dist/components/messages/renderers/ReadRenderer.js +0 -87
  151. package/dist/components/messages/renderers/ReadRenderer.js.map +0 -1
  152. package/dist/components/messages/renderers/ReasoningRenderer.js +0 -34
  153. package/dist/components/messages/renderers/ReasoningRenderer.js.map +0 -1
  154. package/dist/components/messages/renderers/SearchRenderer.js +0 -52
  155. package/dist/components/messages/renderers/SearchRenderer.js.map +0 -1
  156. package/dist/components/messages/renderers/SkillRenderer.js +0 -36
  157. package/dist/components/messages/renderers/SkillRenderer.js.map +0 -1
  158. package/dist/components/messages/renderers/TerminalRenderer.js +0 -84
  159. package/dist/components/messages/renderers/TerminalRenderer.js.map +0 -1
  160. package/dist/components/messages/renderers/TodosRenderer.js +0 -15
  161. package/dist/components/messages/renderers/TodosRenderer.js.map +0 -1
  162. package/dist/components/messages/renderers/ToolErrorDisplay.js +0 -10
  163. package/dist/components/messages/renderers/ToolErrorDisplay.js.map +0 -1
  164. package/dist/components/messages/renderers/TreeRenderer.js +0 -33
  165. package/dist/components/messages/renderers/TreeRenderer.js.map +0 -1
  166. package/dist/components/messages/renderers/WebSearchRenderer.js +0 -29
  167. package/dist/components/messages/renderers/WebSearchRenderer.js.map +0 -1
  168. package/dist/components/messages/renderers/WriteRenderer.js +0 -28
  169. package/dist/components/messages/renderers/WriteRenderer.js.map +0 -1
  170. package/dist/components/messages/renderers/index.js +0 -129
  171. package/dist/components/messages/renderers/index.js.map +0 -1
  172. package/dist/components/messages/renderers/shared/CopyButton.js +0 -27
  173. package/dist/components/messages/renderers/shared/CopyButton.js.map +0 -1
  174. package/dist/components/messages/renderers/shared/ImagePreview.js +0 -14
  175. package/dist/components/messages/renderers/shared/ImagePreview.js.map +0 -1
  176. package/dist/components/messages/renderers/shared/ToolContentBox.js +0 -9
  177. package/dist/components/messages/renderers/shared/ToolContentBox.js.map +0 -1
  178. package/dist/components/messages/renderers/shared/ToolHeader.js +0 -69
  179. package/dist/components/messages/renderers/shared/ToolHeader.js.map +0 -1
  180. package/dist/components/messages/renderers/shared/index.js +0 -5
  181. package/dist/components/messages/renderers/shared/index.js.map +0 -1
  182. package/dist/components/messages/renderers/types.js +0 -2
  183. package/dist/components/messages/renderers/types.js.map +0 -1
  184. package/dist/components/messages/renderers/utils.js +0 -60
  185. package/dist/components/messages/renderers/utils.js.map +0 -1
  186. package/dist/components/onboarding/OnboardingModal.js +0 -22
  187. package/dist/components/onboarding/OnboardingModal.js.map +0 -1
  188. package/dist/components/onboarding/index.js +0 -4
  189. package/dist/components/onboarding/index.js.map +0 -1
  190. package/dist/components/onboarding/steps/DefaultsStep.js +0 -104
  191. package/dist/components/onboarding/steps/DefaultsStep.js.map +0 -1
  192. package/dist/components/onboarding/steps/ProviderSetupStep.js +0 -398
  193. package/dist/components/onboarding/steps/ProviderSetupStep.js.map +0 -1
  194. package/dist/components/research/ResearchSidebar.js +0 -288
  195. package/dist/components/research/ResearchSidebar.js.map +0 -1
  196. package/dist/components/research/ResearchSidebarToggle.js +0 -15
  197. package/dist/components/research/ResearchSidebarToggle.js.map +0 -1
  198. package/dist/components/research/index.js +0 -3
  199. package/dist/components/research/index.js.map +0 -1
  200. package/dist/components/session-files/SessionFilesDiffPanel.js +0 -345
  201. package/dist/components/session-files/SessionFilesDiffPanel.js.map +0 -1
  202. package/dist/components/session-files/SessionFilesSidebar.js +0 -87
  203. package/dist/components/session-files/SessionFilesSidebar.js.map +0 -1
  204. package/dist/components/session-files/SessionFilesSidebarToggle.js +0 -15
  205. package/dist/components/session-files/SessionFilesSidebarToggle.js.map +0 -1
  206. package/dist/components/session-files/index.js +0 -4
  207. package/dist/components/session-files/index.js.map +0 -1
  208. package/dist/components/sessions/EditableTitle.js +0 -40
  209. package/dist/components/sessions/EditableTitle.js.map +0 -1
  210. package/dist/components/sessions/LeanHeader.js +0 -70
  211. package/dist/components/sessions/LeanHeader.js.map +0 -1
  212. package/dist/components/sessions/SessionHeader.js +0 -75
  213. package/dist/components/sessions/SessionHeader.js.map +0 -1
  214. package/dist/components/sessions/SessionItem.js +0 -28
  215. package/dist/components/sessions/SessionItem.js.map +0 -1
  216. package/dist/components/sessions/SessionListContainer.js +0 -86
  217. package/dist/components/sessions/SessionListContainer.js.map +0 -1
  218. package/dist/components/settings/SettingsSidebar.js +0 -212
  219. package/dist/components/settings/SettingsSidebar.js.map +0 -1
  220. package/dist/components/settings/SettingsSidebarToggle.js +0 -12
  221. package/dist/components/settings/SettingsSidebarToggle.js.map +0 -1
  222. package/dist/components/settings/SetuTopupModal.js +0 -306
  223. package/dist/components/settings/SetuTopupModal.js.map +0 -1
  224. package/dist/components/skills/SkillViewerPanel.js +0 -89
  225. package/dist/components/skills/SkillViewerPanel.js.map +0 -1
  226. package/dist/components/skills/SkillsSidebar.js +0 -59
  227. package/dist/components/skills/SkillsSidebar.js.map +0 -1
  228. package/dist/components/skills/SkillsSidebarToggle.js +0 -12
  229. package/dist/components/skills/SkillsSidebarToggle.js.map +0 -1
  230. package/dist/components/skills/index.js +0 -4
  231. package/dist/components/skills/index.js.map +0 -1
  232. package/dist/components/terminals/TerminalPanelToggle.js +0 -13
  233. package/dist/components/terminals/TerminalPanelToggle.js.map +0 -1
  234. package/dist/components/terminals/TerminalTabBar.js +0 -22
  235. package/dist/components/terminals/TerminalTabBar.js.map +0 -1
  236. package/dist/components/terminals/TerminalViewer.js +0 -371
  237. package/dist/components/terminals/TerminalViewer.js.map +0 -1
  238. package/dist/components/terminals/TerminalsPanel.js +0 -134
  239. package/dist/components/terminals/TerminalsPanel.js.map +0 -1
  240. package/dist/components/terminals/index.js +0 -11
  241. package/dist/components/terminals/index.js.map +0 -1
  242. package/dist/components/tunnel/TunnelSidebar.js +0 -55
  243. package/dist/components/tunnel/TunnelSidebar.js.map +0 -1
  244. package/dist/components/tunnel/TunnelSidebarToggle.js +0 -14
  245. package/dist/components/tunnel/TunnelSidebarToggle.js.map +0 -1
  246. package/dist/components/tunnel/index.js +0 -3
  247. package/dist/components/tunnel/index.js.map +0 -1
  248. package/dist/components/ui/Button.js +0 -19
  249. package/dist/components/ui/Button.js.map +0 -1
  250. package/dist/components/ui/Card.js +0 -7
  251. package/dist/components/ui/Card.js.map +0 -1
  252. package/dist/components/ui/ConfirmationDialog.js +0 -72
  253. package/dist/components/ui/ConfirmationDialog.js.map +0 -1
  254. package/dist/components/ui/Input.js +0 -7
  255. package/dist/components/ui/Input.js.map +0 -1
  256. package/dist/components/ui/Modal.js +0 -51
  257. package/dist/components/ui/Modal.js.map +0 -1
  258. package/dist/components/ui/ResizeHandle.js +0 -39
  259. package/dist/components/ui/ResizeHandle.js.map +0 -1
  260. package/dist/components/ui/Textarea.js +0 -7
  261. package/dist/components/ui/Textarea.js.map +0 -1
  262. package/dist/components/ui/Toaster.js +0 -41
  263. package/dist/components/ui/Toaster.js.map +0 -1
  264. package/dist/components/ui/ToolApprovalDialog.js +0 -57
  265. package/dist/components/ui/ToolApprovalDialog.js.map +0 -1
  266. package/dist/hooks/useAuthStatus.js +0 -287
  267. package/dist/hooks/useAuthStatus.js.map +0 -1
  268. package/dist/hooks/useBranch.js +0 -44
  269. package/dist/hooks/useBranch.js.map +0 -1
  270. package/dist/hooks/useCommandSuggestions.js +0 -86
  271. package/dist/hooks/useCommandSuggestions.js.map +0 -1
  272. package/dist/hooks/useConfig.js +0 -32
  273. package/dist/hooks/useConfig.js.map +0 -1
  274. package/dist/hooks/useFileBrowser.js +0 -30
  275. package/dist/hooks/useFileBrowser.js.map +0 -1
  276. package/dist/hooks/useFileMention.js +0 -56
  277. package/dist/hooks/useFileMention.js.map +0 -1
  278. package/dist/hooks/useFileUpload.js +0 -317
  279. package/dist/hooks/useFileUpload.js.map +0 -1
  280. package/dist/hooks/useFiles.js +0 -15
  281. package/dist/hooks/useFiles.js.map +0 -1
  282. package/dist/hooks/useGit.js +0 -149
  283. package/dist/hooks/useGit.js.map +0 -1
  284. package/dist/hooks/useImageUpload.js +0 -197
  285. package/dist/hooks/useImageUpload.js.map +0 -1
  286. package/dist/hooks/useKeyboardShortcuts.js +0 -249
  287. package/dist/hooks/useKeyboardShortcuts.js.map +0 -1
  288. package/dist/hooks/useMCP.js +0 -202
  289. package/dist/hooks/useMCP.js.map +0 -1
  290. package/dist/hooks/useMessages.js +0 -26
  291. package/dist/hooks/useMessages.js.map +0 -1
  292. package/dist/hooks/usePreferences.js +0 -61
  293. package/dist/hooks/usePreferences.js.map +0 -1
  294. package/dist/hooks/useProviderUsage.js +0 -44
  295. package/dist/hooks/useProviderUsage.js.map +0 -1
  296. package/dist/hooks/useQueueState.js +0 -31
  297. package/dist/hooks/useQueueState.js.map +0 -1
  298. package/dist/hooks/useResearch.js +0 -139
  299. package/dist/hooks/useResearch.js.map +0 -1
  300. package/dist/hooks/useSessionFiles.js +0 -15
  301. package/dist/hooks/useSessionFiles.js.map +0 -1
  302. package/dist/hooks/useSessionStream.js +0 -572
  303. package/dist/hooks/useSessionStream.js.map +0 -1
  304. package/dist/hooks/useSessions.js +0 -83
  305. package/dist/hooks/useSessions.js.map +0 -1
  306. package/dist/hooks/useSetuBalance.js +0 -71
  307. package/dist/hooks/useSetuBalance.js.map +0 -1
  308. package/dist/hooks/useSetuPayments.js +0 -171
  309. package/dist/hooks/useSetuPayments.js.map +0 -1
  310. package/dist/hooks/useShareStatus.js +0 -12
  311. package/dist/hooks/useShareStatus.js.map +0 -1
  312. package/dist/hooks/useSkills.js +0 -54
  313. package/dist/hooks/useSkills.js.map +0 -1
  314. package/dist/hooks/useTerminals.js +0 -67
  315. package/dist/hooks/useTerminals.js.map +0 -1
  316. package/dist/hooks/useTheme.js +0 -57
  317. package/dist/hooks/useTheme.js.map +0 -1
  318. package/dist/hooks/useToolApprovalShortcuts.js +0 -88
  319. package/dist/hooks/useToolApprovalShortcuts.js.map +0 -1
  320. package/dist/hooks/useTopupCallback.js +0 -74
  321. package/dist/hooks/useTopupCallback.js.map +0 -1
  322. package/dist/hooks/useTunnel.js +0 -158
  323. package/dist/hooks/useTunnel.js.map +0 -1
  324. package/dist/hooks/useVimMode.js +0 -298
  325. package/dist/hooks/useVimMode.js.map +0 -1
  326. package/dist/hooks/useWorkingDirectory.js +0 -34
  327. package/dist/hooks/useWorkingDirectory.js.map +0 -1
  328. package/dist/lib/api-client/approval.js +0 -25
  329. package/dist/lib/api-client/approval.js.map +0 -1
  330. package/dist/lib/api-client/auth.js +0 -139
  331. package/dist/lib/api-client/auth.js.map +0 -1
  332. package/dist/lib/api-client/branches.js +0 -45
  333. package/dist/lib/api-client/branches.js.map +0 -1
  334. package/dist/lib/api-client/config.js +0 -38
  335. package/dist/lib/api-client/config.js.map +0 -1
  336. package/dist/lib/api-client/files.js +0 -35
  337. package/dist/lib/api-client/files.js.map +0 -1
  338. package/dist/lib/api-client/git.js +0 -154
  339. package/dist/lib/api-client/git.js.map +0 -1
  340. package/dist/lib/api-client/index.js +0 -92
  341. package/dist/lib/api-client/index.js.map +0 -1
  342. package/dist/lib/api-client/sessions.js +0 -106
  343. package/dist/lib/api-client/sessions.js.map +0 -1
  344. package/dist/lib/api-client/setu.js +0 -144
  345. package/dist/lib/api-client/setu.js.map +0 -1
  346. package/dist/lib/api-client/skills.js +0 -31
  347. package/dist/lib/api-client/skills.js.map +0 -1
  348. package/dist/lib/api-client/utils.js +0 -65
  349. package/dist/lib/api-client/utils.js.map +0 -1
  350. package/dist/lib/commands.js +0 -124
  351. package/dist/lib/commands.js.map +0 -1
  352. package/dist/lib/config.js +0 -28
  353. package/dist/lib/config.js.map +0 -1
  354. package/dist/lib/nerd-font.js +0 -55
  355. package/dist/lib/nerd-font.js.map +0 -1
  356. package/dist/lib/open-url.js +0 -9
  357. package/dist/lib/open-url.js.map +0 -1
  358. package/dist/lib/parseResearchContext.js +0 -30
  359. package/dist/lib/parseResearchContext.js.map +0 -1
  360. package/dist/lib/sse-client.js +0 -113
  361. package/dist/lib/sse-client.js.map +0 -1
  362. package/dist/stores/confirmationStore.js +0 -27
  363. package/dist/stores/confirmationStore.js.map +0 -1
  364. package/dist/stores/fileBrowserStore.js +0 -63
  365. package/dist/stores/fileBrowserStore.js.map +0 -1
  366. package/dist/stores/filePickerStore.js +0 -8
  367. package/dist/stores/filePickerStore.js.map +0 -1
  368. package/dist/stores/focusStore.js +0 -12
  369. package/dist/stores/focusStore.js.map +0 -1
  370. package/dist/stores/gitStore.js +0 -63
  371. package/dist/stores/gitStore.js.map +0 -1
  372. package/dist/stores/mcpStore.js +0 -63
  373. package/dist/stores/mcpStore.js.map +0 -1
  374. package/dist/stores/onboardingStore.js +0 -38
  375. package/dist/stores/onboardingStore.js.map +0 -1
  376. package/dist/stores/panelWidthStore.js +0 -12
  377. package/dist/stores/panelWidthStore.js.map +0 -1
  378. package/dist/stores/pendingResearchStore.js +0 -38
  379. package/dist/stores/pendingResearchStore.js.map +0 -1
  380. package/dist/stores/queueStore.js +0 -11
  381. package/dist/stores/queueStore.js.map +0 -1
  382. package/dist/stores/researchStore.js +0 -54
  383. package/dist/stores/researchStore.js.map +0 -1
  384. package/dist/stores/sessionFilesStore.js +0 -62
  385. package/dist/stores/sessionFilesStore.js.map +0 -1
  386. package/dist/stores/settingsStore.js +0 -29
  387. package/dist/stores/settingsStore.js.map +0 -1
  388. package/dist/stores/setuStore.js +0 -29
  389. package/dist/stores/setuStore.js.map +0 -1
  390. package/dist/stores/sidebarStore.js +0 -10
  391. package/dist/stores/sidebarStore.js.map +0 -1
  392. package/dist/stores/skillsStore.js +0 -46
  393. package/dist/stores/skillsStore.js.map +0 -1
  394. package/dist/stores/terminalStore.js +0 -32
  395. package/dist/stores/terminalStore.js.map +0 -1
  396. package/dist/stores/toastStore.js +0 -46
  397. package/dist/stores/toastStore.js.map +0 -1
  398. package/dist/stores/toolApprovalStore.js +0 -16
  399. package/dist/stores/toolApprovalStore.js.map +0 -1
  400. package/dist/stores/topupApprovalStore.js +0 -11
  401. package/dist/stores/topupApprovalStore.js.map +0 -1
  402. package/dist/stores/tunnelStore.js +0 -55
  403. package/dist/stores/tunnelStore.js.map +0 -1
  404. package/dist/stores/usageStore.js +0 -14
  405. package/dist/stores/usageStore.js.map +0 -1
@@ -1,345 +0,0 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEffect, useMemo, memo, useRef } from 'react';
3
- import { X, ChevronLeft, ChevronRight } from 'lucide-react';
4
- import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter';
5
- import { prism, vscDarkPlus, } from 'react-syntax-highlighter/dist/esm/styles/prism';
6
- import { useSessionFilesStore } from '../../stores/sessionFilesStore';
7
- import { useSidebarStore } from '../../stores/sidebarStore';
8
- import { Button } from '../ui/Button';
9
- function transformToUnifiedDiff(patch) {
10
- const lines = patch.split('\n');
11
- const result = [];
12
- let addCount = 0;
13
- let removeCount = 0;
14
- const diffLines = [];
15
- for (const line of lines) {
16
- if (line.startsWith('*** Begin Patch') ||
17
- line.startsWith('*** End Patch') ||
18
- line.startsWith('*** Update File:') ||
19
- line.startsWith('*** Add File:') ||
20
- line.startsWith('*** Delete File:')) {
21
- if (diffLines.length > 0) {
22
- result.push(`@@ -1,${removeCount} +1,${addCount} @@`);
23
- result.push(...diffLines);
24
- diffLines.length = 0;
25
- addCount = 0;
26
- removeCount = 0;
27
- }
28
- result.push(line);
29
- continue;
30
- }
31
- if (line.match(/^@@ -\d+(?:,\d+)? \+\d+(?:,\d+)? @@/)) {
32
- if (diffLines.length > 0) {
33
- result.push(`@@ -1,${removeCount} +1,${addCount} @@`);
34
- result.push(...diffLines);
35
- diffLines.length = 0;
36
- addCount = 0;
37
- removeCount = 0;
38
- }
39
- result.push(line);
40
- continue;
41
- }
42
- if (line.startsWith('@@')) {
43
- result.push(line);
44
- continue;
45
- }
46
- if (line.startsWith('+')) {
47
- addCount++;
48
- diffLines.push(line);
49
- }
50
- else if (line.startsWith('-')) {
51
- removeCount++;
52
- diffLines.push(line);
53
- }
54
- else if (line.startsWith(' ') || line.startsWith('\t')) {
55
- addCount++;
56
- removeCount++;
57
- diffLines.push(line.startsWith('\t') ? ` ${line}` : line);
58
- }
59
- else if (line.trim() === '') {
60
- diffLines.push(' ');
61
- addCount++;
62
- removeCount++;
63
- }
64
- else {
65
- addCount++;
66
- removeCount++;
67
- diffLines.push(` ${line}`);
68
- }
69
- }
70
- if (diffLines.length > 0) {
71
- result.push(`@@ -1,${removeCount} +1,${addCount} @@`);
72
- result.push(...diffLines);
73
- }
74
- return result.join('\n');
75
- }
76
- function getLanguageFromPath(path) {
77
- const ext = path.split('.').pop()?.toLowerCase();
78
- const langMap = {
79
- js: 'javascript',
80
- jsx: 'jsx',
81
- ts: 'typescript',
82
- tsx: 'tsx',
83
- py: 'python',
84
- rb: 'ruby',
85
- go: 'go',
86
- rs: 'rust',
87
- java: 'java',
88
- c: 'c',
89
- cpp: 'cpp',
90
- h: 'c',
91
- hpp: 'cpp',
92
- cs: 'csharp',
93
- php: 'php',
94
- sh: 'bash',
95
- bash: 'bash',
96
- zsh: 'bash',
97
- sql: 'sql',
98
- json: 'json',
99
- yaml: 'yaml',
100
- yml: 'yaml',
101
- xml: 'xml',
102
- html: 'html',
103
- css: 'css',
104
- scss: 'scss',
105
- md: 'markdown',
106
- txt: 'text',
107
- svelte: 'svelte',
108
- };
109
- return langMap[ext || ''] || 'javascript';
110
- }
111
- function parseDiff(patch) {
112
- const lines = patch.split('\n');
113
- const result = [];
114
- let oldLineNum = 0;
115
- let newLineNum = 0;
116
- let inHunk = false;
117
- let filePath = '';
118
- for (const line of lines) {
119
- if (line.startsWith('+++') || line.startsWith('*** Update File:')) {
120
- const match = line.match(/\+\+\+ b\/(.+)/) || line.match(/\*\*\* Update File: (.+)/);
121
- if (match)
122
- filePath = match[1];
123
- }
124
- if (line.startsWith('*** Add File:')) {
125
- const match = line.match(/\*\*\* Add File: (.+)/);
126
- if (match)
127
- filePath = match[1];
128
- }
129
- const hunkMatch = line.match(/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/);
130
- if (hunkMatch) {
131
- oldLineNum = Number.parseInt(hunkMatch[1], 10);
132
- newLineNum = Number.parseInt(hunkMatch[2], 10);
133
- inHunk = true;
134
- result.push({
135
- content: line,
136
- codeContent: line,
137
- type: 'header',
138
- });
139
- continue;
140
- }
141
- if (line.startsWith('***') ||
142
- line.startsWith('diff ') ||
143
- line.startsWith('index ') ||
144
- line.startsWith('---') ||
145
- line.startsWith('+++') ||
146
- (line.startsWith('@@') && !inHunk)) {
147
- result.push({
148
- content: line,
149
- codeContent: line,
150
- type: 'meta',
151
- });
152
- continue;
153
- }
154
- if (inHunk) {
155
- if (line.startsWith('+')) {
156
- result.push({
157
- content: line,
158
- codeContent: line.slice(1),
159
- type: 'add',
160
- newLineNum: newLineNum++,
161
- });
162
- }
163
- else if (line.startsWith('-')) {
164
- result.push({
165
- content: line,
166
- codeContent: line.slice(1),
167
- type: 'remove',
168
- oldLineNum: oldLineNum++,
169
- });
170
- }
171
- else if (line.startsWith(' ') || line === '') {
172
- result.push({
173
- content: line,
174
- codeContent: line.startsWith(' ') ? line.slice(1) : line,
175
- type: 'context',
176
- oldLineNum: oldLineNum++,
177
- newLineNum: newLineNum++,
178
- });
179
- }
180
- else {
181
- result.push({
182
- content: line,
183
- codeContent: line,
184
- type: 'context',
185
- oldLineNum: oldLineNum++,
186
- newLineNum: newLineNum++,
187
- });
188
- }
189
- }
190
- else {
191
- result.push({
192
- content: line,
193
- codeContent: line,
194
- type: 'meta',
195
- });
196
- }
197
- }
198
- return { lines: result, filePath };
199
- }
200
- function FullHeightDiffView({ patch }) {
201
- const { lines: diffLines, filePath } = parseDiff(patch);
202
- const language = getLanguageFromPath(filePath);
203
- const syntaxTheme = document?.documentElement.classList.contains('dark')
204
- ? vscDarkPlus
205
- : prism;
206
- return (_jsx("div", { className: "bg-card/60 border border-border rounded-lg overflow-hidden h-full", children: _jsx("div", { className: "overflow-x-auto overflow-y-auto h-full text-xs font-mono", children: diffLines.map((line, i) => {
207
- const key = `line-${i}-${line.content.slice(0, 20)}`;
208
- if (line.type === 'meta' || line.type === 'header') {
209
- return (_jsx("div", { className: `px-3 py-0.5 whitespace-pre-wrap break-all ${line.type === 'header'
210
- ? 'text-muted-foreground/80 bg-muted/20'
211
- : 'text-muted-foreground/80'}`, children: line.content }, key));
212
- }
213
- let lineClass = '';
214
- let bgClass = '';
215
- switch (line.type) {
216
- case 'add':
217
- lineClass = 'text-emerald-700 dark:text-emerald-300';
218
- bgClass = 'bg-emerald-500/10';
219
- break;
220
- case 'remove':
221
- lineClass = 'text-red-600 dark:text-red-300';
222
- bgClass = 'bg-red-500/10';
223
- break;
224
- default:
225
- lineClass = 'text-foreground/80';
226
- }
227
- let renderedContent = line.content;
228
- if (line.codeContent.trim() && language !== 'text') {
229
- renderedContent = (_jsx(SyntaxHighlighter, { language: language, style: syntaxTheme, customStyle: {
230
- margin: 0,
231
- padding: 0,
232
- background: 'transparent',
233
- display: 'inline',
234
- fontSize: 'inherit',
235
- lineHeight: 'inherit',
236
- }, codeTagProps: {
237
- style: {
238
- fontFamily: 'inherit',
239
- background: 'transparent',
240
- },
241
- }, PreTag: "span", children: line.codeContent }));
242
- if (line.type === 'add') {
243
- renderedContent = (_jsxs(_Fragment, { children: [_jsx("span", { className: "select-none", children: "+" }), renderedContent] }));
244
- }
245
- else if (line.type === 'remove') {
246
- renderedContent = (_jsxs(_Fragment, { children: [_jsx("span", { className: "select-none", children: "-" }), renderedContent] }));
247
- }
248
- else if (line.type === 'context') {
249
- renderedContent = (_jsxs(_Fragment, { children: [_jsx("span", { className: "select-none", children: " " }), renderedContent] }));
250
- }
251
- }
252
- return (_jsxs("div", { className: `flex ${bgClass}`, children: [_jsx("div", { className: "px-2 py-0.5 text-right text-muted-foreground/40 select-none w-12 flex-shrink-0", "aria-hidden": "true", style: { pointerEvents: 'none' }, children: line.oldLineNum || '' }), _jsx("div", { className: "px-2 py-0.5 text-right text-muted-foreground/40 select-none w-12 flex-shrink-0 border-r border-border/50", "aria-hidden": "true", style: { pointerEvents: 'none' }, children: line.newLineNum || '' }), _jsx("div", { className: `px-3 py-0.5 flex-1 min-w-0 whitespace-pre-wrap break-all ${lineClass}`, children: renderedContent })] }, key));
253
- }) }) }));
254
- }
255
- function formatTimestamp(timestamp) {
256
- const date = new Date(timestamp);
257
- return date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });
258
- }
259
- export const SessionFilesDiffPanel = memo(function SessionFilesDiffPanel() {
260
- const isDiffOpen = useSessionFilesStore((state) => state.isDiffOpen);
261
- const selectedFile = useSessionFilesStore((state) => state.selectedFile);
262
- const allOperations = useSessionFilesStore((state) => state.allOperations);
263
- const selectedOperationIndex = useSessionFilesStore((state) => state.selectedOperationIndex);
264
- const selectOperation = useSessionFilesStore((state) => state.selectOperation);
265
- const closeDiff = useSessionFilesStore((state) => state.closeDiff);
266
- const setCollapsed = useSidebarStore((state) => state.setCollapsed);
267
- const wasCollapsedRef = useRef(null);
268
- const prevDiffOpenRef = useRef(false);
269
- const selectedOperation = allOperations[selectedOperationIndex];
270
- const patchContent = useMemo(() => {
271
- if (!selectedOperation || !selectedFile)
272
- return null;
273
- let rawPatch = null;
274
- if (selectedOperation.artifact?.patch) {
275
- rawPatch = selectedOperation.artifact.patch;
276
- }
277
- else if (selectedOperation.patch) {
278
- rawPatch = selectedOperation.patch;
279
- }
280
- else if (selectedOperation.content) {
281
- const contentLines = selectedOperation.content.split('\n');
282
- rawPatch = `*** Add File: ${selectedFile}\n${contentLines.map((line) => `+${line}`).join('\n')}`;
283
- }
284
- if (!rawPatch)
285
- return null;
286
- const hasProperHunkHeader = /@@ -\d+(?:,\d+)? \+\d+(?:,\d+)? @@/.test(rawPatch);
287
- if (!hasProperHunkHeader) {
288
- return transformToUnifiedDiff(rawPatch);
289
- }
290
- return rawPatch;
291
- }, [selectedOperation, selectedFile]);
292
- useEffect(() => {
293
- // Only act on transitions
294
- if (isDiffOpen && !prevDiffOpenRef.current) {
295
- // Diff just opened - save current state and collapse
296
- const { isCollapsed } = useSidebarStore.getState();
297
- wasCollapsedRef.current = isCollapsed;
298
- setCollapsed(true);
299
- }
300
- else if (!isDiffOpen && prevDiffOpenRef.current) {
301
- // Diff just closed - restore previous state
302
- if (wasCollapsedRef.current !== null) {
303
- setCollapsed(wasCollapsedRef.current);
304
- wasCollapsedRef.current = null;
305
- }
306
- }
307
- prevDiffOpenRef.current = isDiffOpen;
308
- }, [isDiffOpen, setCollapsed]);
309
- useEffect(() => {
310
- const handleKeyDown = (e) => {
311
- const target = e.target;
312
- const isInInput = target.tagName === 'INPUT' ||
313
- target.tagName === 'TEXTAREA' ||
314
- target.isContentEditable;
315
- if ((e.key === 'Escape' || (e.key === 'q' && !isInInput)) && isDiffOpen) {
316
- closeDiff();
317
- }
318
- if (!isInInput && isDiffOpen && allOperations.length > 1) {
319
- if (e.key === 'ArrowLeft' || e.key === '[') {
320
- e.preventDefault();
321
- selectOperation(Math.max(0, selectedOperationIndex - 1));
322
- }
323
- else if (e.key === 'ArrowRight' || e.key === ']') {
324
- e.preventDefault();
325
- selectOperation(Math.min(allOperations.length - 1, selectedOperationIndex + 1));
326
- }
327
- }
328
- };
329
- document.addEventListener('keydown', handleKeyDown);
330
- return () => document.removeEventListener('keydown', handleKeyDown);
331
- }, [
332
- isDiffOpen,
333
- closeDiff,
334
- allOperations.length,
335
- selectedOperationIndex,
336
- selectOperation,
337
- ]);
338
- if (!isDiffOpen || !selectedFile || !selectedOperation)
339
- return null;
340
- const hasMultipleOps = allOperations.length > 1;
341
- return (_jsxs("div", { className: "absolute inset-0 bg-background z-50 flex flex-col animate-in slide-in-from-left duration-300", children: [_jsxs("div", { className: "h-14 border-b border-border px-4 flex items-center gap-3 shrink-0", children: [_jsx(Button, { variant: "ghost", size: "icon", onClick: closeDiff, title: "Close diff viewer (ESC)", children: _jsx(X, { className: "w-4 h-4" }) }), _jsxs("div", { className: "flex-1 flex items-center gap-2 min-w-0", children: [_jsx("span", { className: "text-sm font-medium text-foreground font-mono truncate", title: selectedFile, children: selectedFile }), _jsx("span", { className: "text-xs px-2 py-0.5 rounded bg-primary/10 text-primary flex-shrink-0 capitalize", children: selectedOperation.operation }), selectedOperation.artifact?.summary && (_jsxs("div", { className: "flex items-center gap-1 text-xs flex-shrink-0", children: [_jsxs("span", { className: "text-green-500", children: ["+", selectedOperation.artifact.summary.additions] }), _jsxs("span", { className: "text-red-500", children: ["-", selectedOperation.artifact.summary.deletions] })] }))] }), hasMultipleOps && (_jsxs("div", { className: "flex items-center gap-2 shrink-0", children: [_jsx(Button, { variant: "ghost", size: "icon", onClick: () => selectOperation(Math.max(0, selectedOperationIndex - 1)), disabled: selectedOperationIndex === 0, title: "Previous operation (\u2190)", children: _jsx(ChevronLeft, { className: "w-4 h-4" }) }), _jsxs("span", { className: "text-xs text-muted-foreground min-w-[60px] text-center", children: [selectedOperationIndex + 1, " / ", allOperations.length] }), _jsx(Button, { variant: "ghost", size: "icon", onClick: () => selectOperation(Math.min(allOperations.length - 1, selectedOperationIndex + 1)), disabled: selectedOperationIndex === allOperations.length - 1, title: "Next operation (\u2192)", children: _jsx(ChevronRight, { className: "w-4 h-4" }) })] }))] }), hasMultipleOps && (_jsx("div", { className: "border-b border-border px-4 py-2 flex gap-2 overflow-x-auto shrink-0", children: allOperations.map((op, idx) => (_jsxs("button", { type: "button", onClick: () => selectOperation(idx), className: `px-3 py-1.5 text-xs rounded-md flex items-center gap-2 shrink-0 transition-colors ${idx === selectedOperationIndex
342
- ? 'bg-primary text-primary-foreground'
343
- : 'bg-muted hover:bg-muted/80 text-muted-foreground'}`, children: [_jsx("span", { className: "capitalize", children: op.operation }), _jsx("span", { className: "opacity-70", children: formatTimestamp(op.timestamp) }), op.artifact?.summary && (_jsxs("span", { className: "opacity-70", children: ["+", op.artifact.summary.additions, "/-", op.artifact.summary.deletions] }))] }, op.toolCallId))) })), _jsx("div", { className: "flex-1 overflow-hidden p-4", children: patchContent ? (_jsx(FullHeightDiffView, { patch: patchContent })) : (_jsx("div", { className: "h-full flex items-center justify-center text-muted-foreground", children: "No diff content available" })) })] }));
344
- });
345
- //# sourceMappingURL=SessionFilesDiffPanel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SessionFilesDiffPanel.js","sourceRoot":"","sources":["../../../src/components/session-files/SessionFilesDiffPanel.tsx"],"names":[],"mappings":"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"}
@@ -1,87 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { memo, useMemo } from 'react';
3
- import { ChevronRight, FilePen, FileCode, FilePlus, FileEdit, RefreshCw, } from 'lucide-react';
4
- import { useSessionFilesStore } from '../../stores/sessionFilesStore';
5
- import { usePanelWidthStore } from '../../stores/panelWidthStore';
6
- import { useSessionFiles } from '../../hooks/useSessionFiles';
7
- import { Button } from '../ui/Button';
8
- import { ResizeHandle } from '../ui/ResizeHandle';
9
- const PANEL_KEY = 'session-files';
10
- const DEFAULT_WIDTH = 320;
11
- const MIN_WIDTH = 320;
12
- const MAX_WIDTH = 600;
13
- function getOperationIcon(operation) {
14
- switch (operation) {
15
- case 'write':
16
- return _jsx(FilePlus, { className: "w-3 h-3 text-green-500" });
17
- case 'patch':
18
- return _jsx(FileEdit, { className: "w-3 h-3 text-blue-500" });
19
- case 'edit':
20
- return _jsx(FileCode, { className: "w-3 h-3 text-yellow-500" });
21
- default:
22
- return _jsx(FilePen, { className: "w-3 h-3 text-muted-foreground" });
23
- }
24
- }
25
- function getFileName(path) {
26
- return path.split('/').pop() || path;
27
- }
28
- function countLinesFromPatch(op) {
29
- if (op.artifact?.summary) {
30
- return {
31
- additions: op.artifact.summary.additions,
32
- deletions: op.artifact.summary.deletions,
33
- };
34
- }
35
- const patch = op.artifact?.patch || op.patch;
36
- if (patch) {
37
- let additions = 0;
38
- let deletions = 0;
39
- const lines = patch.split('\n');
40
- for (const line of lines) {
41
- if (line.startsWith('+') && !line.startsWith('+++')) {
42
- additions++;
43
- }
44
- else if (line.startsWith('-') && !line.startsWith('---')) {
45
- deletions++;
46
- }
47
- }
48
- return { additions, deletions };
49
- }
50
- if (op.content) {
51
- const lineCount = op.content.split('\n').length;
52
- return { additions: lineCount, deletions: 0 };
53
- }
54
- return { additions: 0, deletions: 0 };
55
- }
56
- function SessionFileItem({ file }) {
57
- const openDiff = useSessionFilesStore((state) => state.openDiff);
58
- const selectedFile = useSessionFilesStore((state) => state.selectedFile);
59
- const isSelected = selectedFile === file.path;
60
- const lastOp = file.operations[file.operations.length - 1];
61
- const { totalAdditions, totalDeletions } = useMemo(() => {
62
- let additions = 0;
63
- let deletions = 0;
64
- for (const op of file.operations) {
65
- const stats = countLinesFromPatch(op);
66
- additions += stats.additions;
67
- deletions += stats.deletions;
68
- }
69
- return { totalAdditions: additions, totalDeletions: deletions };
70
- }, [file.operations]);
71
- const handleClick = () => {
72
- if (file.operations.length > 0) {
73
- openDiff(file.path, file.operations);
74
- }
75
- };
76
- return (_jsx("button", { type: "button", onClick: handleClick, className: `w-full text-left px-3 py-2 hover:bg-muted/50 transition-colors ${isSelected ? 'bg-muted' : ''}`, children: _jsxs("div", { className: "flex items-center gap-2", children: [getOperationIcon(lastOp?.operation || 'write'), _jsx("div", { className: "flex-1 min-w-0", children: _jsx("div", { className: "text-sm font-medium truncate", children: getFileName(file.path) }) }), _jsxs("div", { className: "flex items-center gap-1 text-xs shrink-0", children: [file.operationCount > 1 && (_jsxs("span", { className: "bg-muted text-muted-foreground px-1 rounded mr-1", children: [file.operationCount, "x"] })), _jsxs("span", { className: "text-green-500", children: ["+", totalAdditions] }), _jsxs("span", { className: "text-red-500", children: ["-", totalDeletions] })] })] }) }));
77
- }
78
- export const SessionFilesSidebar = memo(function SessionFilesSidebar({ sessionId, }) {
79
- const isExpanded = useSessionFilesStore((state) => state.isExpanded);
80
- const collapseSidebar = useSessionFilesStore((state) => state.collapseSidebar);
81
- const panelWidth = usePanelWidthStore((s) => s.widths[PANEL_KEY] ?? DEFAULT_WIDTH);
82
- const { data, isLoading, error, refetch } = useSessionFiles(sessionId);
83
- if (!isExpanded)
84
- return null;
85
- return (_jsxs("div", { className: "border-l border-border bg-background flex h-full relative", style: { width: panelWidth }, children: [_jsx(ResizeHandle, { panelKey: PANEL_KEY, side: "right", minWidth: MIN_WIDTH, maxWidth: MAX_WIDTH, defaultWidth: DEFAULT_WIDTH }), _jsxs("div", { className: "flex-1 flex flex-col h-full min-w-0", children: [_jsxs("div", { className: "h-14 border-b border-border px-3 flex items-center justify-between shrink-0", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(FilePen, { className: "w-4 h-4 text-muted-foreground" }), _jsx("span", { className: "font-medium", children: "Session Files" }), data && data.totalFiles > 0 && (_jsxs("span", { className: "text-xs text-muted-foreground", children: ["(", data.totalFiles, ")"] }))] }), _jsx(Button, { variant: "ghost", size: "icon", onClick: collapseSidebar, children: _jsx(ChevronRight, { className: "w-4 h-4" }) })] }), _jsx("div", { className: "flex-1 overflow-y-auto", children: isLoading ? (_jsx("div", { className: "p-4 text-sm text-muted-foreground", children: "Loading session files..." })) : error ? (_jsx("div", { className: "p-4 text-sm text-orange-500", children: error instanceof Error ? error.message : 'Failed to load files' })) : !data || data.totalFiles === 0 ? (_jsx("div", { className: "p-4 text-sm text-muted-foreground", children: "No files modified in this session" })) : (_jsx("div", { className: "divide-y divide-border", children: data.files.map((file) => (_jsx(SessionFileItem, { file: file }, file.path))) })) }), _jsxs("div", { className: "h-12 px-4 border-t border-border text-xs text-muted-foreground flex items-center justify-between gap-2", children: [_jsxs("div", { className: "flex items-center gap-2 min-w-0 flex-1", children: [_jsx(FilePen, { className: "w-3 h-3 flex-shrink-0" }), data && data.totalOperations > 0 ? (_jsxs("span", { className: "truncate", children: [data.totalFiles, " file", data.totalFiles !== 1 ? 's' : '', " \u2022", ' ', data.totalOperations, " op", data.totalOperations !== 1 ? 's' : ''] })) : (_jsx("span", { className: "truncate", children: "No changes" }))] }), _jsx("div", { className: "flex items-center gap-1 flex-shrink-0", children: _jsx(Button, { variant: "ghost", size: "icon", onClick: () => refetch(), title: "Refresh session files", className: "h-6 w-6 transition-transform duration-200 hover:scale-110", disabled: isLoading, children: _jsx(RefreshCw, { className: `w-3 h-3 ${isLoading ? 'animate-spin' : ''}` }) }) })] })] })] }));
86
- });
87
- //# sourceMappingURL=SessionFilesSidebar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SessionFilesSidebar.js","sourceRoot":"","sources":["../../../src/components/session-files/SessionFilesSidebar.tsx"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { memo } from 'react';
3
- import { FilePen } from 'lucide-react';
4
- import { useSessionFilesStore } from '../../stores/sessionFilesStore';
5
- import { useSessionFiles } from '../../hooks/useSessionFiles';
6
- export const SessionFilesSidebarToggle = memo(function SessionFilesSidebarToggle({ sessionId, }) {
7
- const isExpanded = useSessionFilesStore((state) => state.isExpanded);
8
- const toggleSidebar = useSessionFilesStore((state) => state.toggleSidebar);
9
- const { data } = useSessionFiles(sessionId);
10
- const fileCount = data?.totalFiles ?? 0;
11
- return (_jsxs("button", { type: "button", onClick: toggleSidebar, className: `relative h-14 w-full transition-colors touch-manipulation flex items-center justify-center border-r-2 ${isExpanded
12
- ? 'bg-muted border-primary'
13
- : 'border-transparent hover:bg-muted/50'}`, title: "Session Files", children: [_jsx(FilePen, { className: "w-5 h-5 text-muted-foreground mx-auto" }), fileCount > 0 && (_jsx("span", { className: "absolute top-1 right-1 w-5 h-5 bg-primary text-primary-foreground text-xs rounded-full flex items-center justify-center font-semibold", children: fileCount > 9 ? '9+' : fileCount }))] }));
14
- });
15
- //# sourceMappingURL=SessionFilesSidebarToggle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SessionFilesSidebarToggle.js","sourceRoot":"","sources":["../../../src/components/session-files/SessionFilesSidebarToggle.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAM9D,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAC5C,SAAS,yBAAyB,CAAC,EAClC,SAAS,GACuB;IAChC,MAAM,UAAU,GAAG,oBAAoB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACrE,MAAM,aAAa,GAAG,oBAAoB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC3E,MAAM,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAE5C,MAAM,SAAS,GAAG,IAAI,EAAE,UAAU,IAAI,CAAC,CAAC;IAExC,OAAO,CACN,kBACC,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,yGACV,UAAU;YACT,CAAC,CAAC,yBAAyB;YAC3B,CAAC,CAAC,sCACJ,EAAE,EACF,KAAK,EAAC,eAAe,aAErB,KAAC,OAAO,IAAC,SAAS,EAAC,uCAAuC,GAAG,EAC5D,SAAS,GAAG,CAAC,IAAI,CACjB,eAAM,SAAS,EAAC,uIAAuI,YACrJ,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,GAC3B,CACP,IACO,CACT,CAAC;AACH,CAAC,CACD,CAAC"}
@@ -1,4 +0,0 @@
1
- export * from './SessionFilesSidebar';
2
- export * from './SessionFilesSidebarToggle';
3
- export * from './SessionFilesDiffPanel';
4
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/session-files/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC"}
@@ -1,40 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState, useRef, useEffect, useCallback } from 'react';
3
- import { Pencil } from 'lucide-react';
4
- import { useUpdateSession } from '../../hooks/useSessions';
5
- export function EditableTitle({ sessionId, title, className = '', }) {
6
- const [isEditing, setIsEditing] = useState(false);
7
- const [draft, setDraft] = useState(title || '');
8
- const inputRef = useRef(null);
9
- const { mutate: updateSession } = useUpdateSession(sessionId);
10
- useEffect(() => {
11
- if (isEditing && inputRef.current) {
12
- inputRef.current.focus();
13
- inputRef.current.select();
14
- }
15
- }, [isEditing]);
16
- useEffect(() => {
17
- setDraft(title || '');
18
- }, [title]);
19
- const save = useCallback(() => {
20
- const trimmed = draft.trim();
21
- if (trimmed && trimmed !== (title || '')) {
22
- updateSession({ title: trimmed });
23
- }
24
- setIsEditing(false);
25
- }, [draft, title, updateSession]);
26
- const cancel = useCallback(() => {
27
- setDraft(title || '');
28
- setIsEditing(false);
29
- }, [title]);
30
- if (isEditing) {
31
- return (_jsx("input", { ref: inputRef, type: "text", value: draft, onChange: (e) => setDraft(e.target.value), onBlur: save, onKeyDown: (e) => {
32
- if (e.key === 'Enter')
33
- save();
34
- if (e.key === 'Escape')
35
- cancel();
36
- }, className: `w-full bg-muted/30 text-foreground rounded px-2 py-1 outline-none ring-1 ring-primary/50 focus:ring-primary ${className}` }));
37
- }
38
- return (_jsxs("button", { type: "button", onClick: () => setIsEditing(true), className: `group flex items-center gap-2 hover:opacity-80 transition-opacity truncate text-left ${className}`, title: "Click to edit title", children: [_jsx("span", { className: "truncate", children: title || 'Untitled Session' }), _jsx(Pencil, { className: "h-3.5 w-3.5 opacity-0 group-hover:opacity-50 flex-shrink-0 transition-opacity" })] }));
39
- }
40
- //# sourceMappingURL=EditableTitle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EditableTitle.js","sourceRoot":"","sources":["../../../src/components/sessions/EditableTitle.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAQ3D,MAAM,UAAU,aAAa,CAAC,EAC7B,SAAS,EACT,KAAK,EACL,SAAS,GAAG,EAAE,GACM;IACpB,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAC;IAChD,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAE9D,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,SAAS,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACnC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACzB,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAC3B,CAAC;IACF,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,SAAS,CAAC,GAAG,EAAE;QACd,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACvB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,OAAO,IAAI,OAAO,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;YAC1C,aAAa,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,YAAY,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;IAElC,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE;QAC/B,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QACtB,YAAY,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,IAAI,SAAS,EAAE,CAAC;QACf,OAAO,CACN,gBACC,GAAG,EAAE,QAAQ,EACb,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACzC,MAAM,EAAE,IAAI,EACZ,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;gBAChB,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO;oBAAE,IAAI,EAAE,CAAC;gBAC9B,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ;oBAAE,MAAM,EAAE,CAAC;YAClC,CAAC,EACD,SAAS,EAAE,+GAA+G,SAAS,EAAE,GACpI,CACF,CAAC;IACH,CAAC;IAED,OAAO,CACN,kBACC,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EACjC,SAAS,EAAE,wFAAwF,SAAS,EAAE,EAC9G,KAAK,EAAC,qBAAqB,aAE3B,eAAM,SAAS,EAAC,UAAU,YAAE,KAAK,IAAI,kBAAkB,GAAQ,EAC/D,KAAC,MAAM,IAAC,SAAS,EAAC,+EAA+E,GAAG,IAC5F,CACT,CAAC;AACH,CAAC"}
@@ -1,70 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { useMemo } from 'react';
3
- import { estimateModelCostUsd, getModelInfo, } from '@ottocode/sdk/browser';
4
- import { DollarSign, MessageSquare, GitBranch, ArrowUpRight, Share2, ExternalLink, RefreshCw, } from 'lucide-react';
5
- import { StopButton } from '../chat/StopButton';
6
- import { useParentSession } from '../../hooks/useBranch';
7
- import { useShareStatus } from '../../hooks/useShareStatus';
8
- import { ProviderLogo } from '../common/ProviderLogo';
9
- import { openUrl } from '../../lib/open-url';
10
- import { UsageRing } from '../common/UsageRing';
11
- import { UsageModal } from '../common/UsageModal';
12
- import { useProviderUsage } from '../../hooks/useProviderUsage';
13
- import { useAllModels } from '../../hooks/useConfig';
14
- import { EditableTitle } from './EditableTitle';
15
- export function LeanHeader({ session, isVisible, isGenerating, onNavigateToSession, }) {
16
- const { data: parentData } = useParentSession(session.sessionType === 'branch' ? session.id : undefined);
17
- const { data: shareStatus } = useShareStatus(session.id);
18
- const estimatedCost = useMemo(() => {
19
- const inputTokens = session.totalInputTokens || 0;
20
- const outputTokens = session.totalOutputTokens || 0;
21
- const cachedInputTokens = session.totalCachedTokens || 0;
22
- const cacheCreationInputTokens = session.totalCacheCreationTokens || 0;
23
- return (estimateModelCostUsd(session.provider, session.model, {
24
- inputTokens,
25
- outputTokens,
26
- cachedInputTokens,
27
- cacheCreationInputTokens,
28
- }) ?? 0);
29
- }, [
30
- session.provider,
31
- session.model,
32
- session.totalInputTokens,
33
- session.totalOutputTokens,
34
- session.totalCachedTokens,
35
- session.totalCacheCreationTokens,
36
- ]);
37
- const formatCompactNumber = (num) => {
38
- if (num >= 1000000)
39
- return `${(num / 1000000).toFixed(1)}M`;
40
- if (num >= 1000)
41
- return `${(num / 1000).toFixed(1)}K`;
42
- return num.toString();
43
- };
44
- const contextTokens = session.currentContextTokens || 0;
45
- const isBranch = session.sessionType === 'branch';
46
- const parentSession = parentData?.parent;
47
- // Calculate context usage for color indication
48
- const contextLimit = useMemo(() => {
49
- const info = getModelInfo(session.provider, session.model);
50
- return info?.limit?.context;
51
- }, [session.provider, session.model]);
52
- const contextUsagePercent = contextLimit
53
- ? (contextTokens / contextLimit) * 100
54
- : 0;
55
- const getContextColorClass = () => {
56
- if (contextUsagePercent >= 90)
57
- return 'text-red-600 dark:text-red-400';
58
- if (contextUsagePercent >= 70)
59
- return 'text-amber-600 dark:text-amber-400';
60
- return 'text-foreground';
61
- };
62
- const { data: allModels } = useAllModels();
63
- const providerAuthType = allModels?.[session.provider]?.authType;
64
- const { usage, isOAuthProvider } = useProviderUsage(session.provider, providerAuthType);
65
- return (_jsxs(_Fragment, { children: [_jsx("div", { className: `absolute top-0 left-0 right-0 h-14 border-b border-border bg-background/95 backdrop-blur-sm z-10 transition-transform duration-200 ${isVisible ? 'translate-y-0' : '-translate-y-full'}`, children: _jsxs("div", { className: "h-full px-6 flex items-center justify-between gap-4 text-sm", children: [_jsxs("div", { className: "flex-1 min-w-0 flex items-center gap-2 text-muted-foreground", children: [isBranch ? (_jsx(GitBranch, { className: "w-4 h-4 flex-shrink-0 text-violet-500" })) : (_jsx(MessageSquare, { className: "w-4 h-4 flex-shrink-0" })), _jsx(EditableTitle, { sessionId: session.id, title: session.title, className: "text-foreground font-medium text-sm" }), shareStatus?.shared && (_jsxs("button", { type: "button", onClick: () => openUrl(shareStatus.url), className: "flex items-center gap-1 px-1.5 py-0.5 rounded bg-emerald-500/10 text-emerald-600 dark:text-emerald-400 hover:bg-emerald-500/20 transition-colors text-xs font-medium flex-shrink-0", children: [_jsx(Share2, { className: "h-3 w-3" }), shareStatus.pendingMessages &&
66
- shareStatus.pendingMessages > 0 ? (_jsxs("span", { className: "flex items-center gap-0.5 text-amber-600 dark:text-amber-400", children: [_jsx(RefreshCw, { className: "h-2.5 w-2.5" }), shareStatus.pendingMessages] })) : (_jsx(ExternalLink, { className: "h-2.5 w-2.5 opacity-60" }))] })), isBranch && parentSession && (_jsxs(_Fragment, { children: [_jsx("span", { className: "text-muted-foreground hidden sm:inline", children: "from" }), _jsxs("button", { type: "button", onClick: () => onNavigateToSession?.(parentSession.id), className: "text-primary hover:underline flex items-center gap-0.5 truncate max-w-32", title: parentSession.title ||
67
- `Session ${parentSession.id.slice(0, 8)}`, children: [_jsx("span", { className: "truncate", children: parentSession.title ||
68
- `Session ${parentSession.id.slice(0, 8)}` }), _jsx(ArrowUpRight, { className: "h-3 w-3 flex-shrink-0" })] })] }))] }), _jsxs("div", { className: "flex-shrink-0 flex items-center gap-5 text-muted-foreground", children: [isGenerating && _jsx(StopButton, { sessionId: session.id }), isOAuthProvider && usage && (_jsx(UsageRing, { usage: usage, provider: session.provider })), _jsx("div", { className: "flex items-center gap-3", children: _jsxs("div", { className: "flex items-center gap-1", title: `Current context window: ${contextTokens.toLocaleString()} tokens`, children: [_jsx("span", { className: "text-xs opacity-70", children: "ctx" }), _jsx("span", { className: `font-medium ${getContextColorClass()}`, children: formatCompactNumber(contextTokens) })] }) }), estimatedCost > 0 && (_jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx(DollarSign, { className: "w-4 h-4" }), _jsx("span", { className: "text-foreground font-medium", children: estimatedCost.toFixed(4) })] })), _jsxs("div", { className: "hidden sm:flex items-center gap-2", children: [_jsx(ProviderLogo, { provider: session.provider, size: 16 }), _jsx("span", { className: "font-medium text-foreground truncate max-w-40", children: session.model })] })] })] }) }), _jsx(UsageModal, {})] }));
69
- }
70
- //# sourceMappingURL=LeanHeader.js.map