wave-code 1.0.10 → 1.1.0

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 (242) hide show
  1. package/bin/wave-code.js +8 -2
  2. package/dist/bundle/wave.mjs +3207 -0
  3. package/package.json +24 -25
  4. package/src/commands/update.ts +2 -7
  5. package/src/components/App.tsx +3 -7
  6. package/src/components/BtwDisplay.tsx +10 -1
  7. package/src/components/ChatInterface.tsx +21 -52
  8. package/src/components/ConfirmationDetails.tsx +144 -37
  9. package/src/components/DiffDisplay.tsx +335 -301
  10. package/src/components/InputBox.tsx +3 -1
  11. package/src/components/LoadingIndicator.tsx +16 -2
  12. package/src/components/MessageBlockItem.tsx +2 -4
  13. package/src/components/MessageList.tsx +75 -14
  14. package/src/components/ReasoningDisplay.tsx +2 -4
  15. package/src/components/SessionSelector.tsx +82 -11
  16. package/src/components/StatusCommand.tsx +2 -9
  17. package/src/components/ToolDisplay.tsx +2 -4
  18. package/src/contexts/useChat.tsx +156 -335
  19. package/src/daemon/commands.ts +57 -27
  20. package/src/daemon/jsonRpcClient.ts +1 -1
  21. package/src/daemon/socketClient.ts +2 -2
  22. package/src/hooks/useInputManager.ts +1 -1
  23. package/src/index.ts +57 -10
  24. package/src/managers/inputReducer.ts +186 -104
  25. package/src/print-cli.ts +21 -17
  26. package/src/reducers/selectorReducer.ts +10 -0
  27. package/src/session-selector-cli.tsx +269 -28
  28. package/src/stdio/agentBridge.ts +22 -21
  29. package/src/stdio/daemonServer.ts +3 -1
  30. package/src/utils/clipboard.ts +21 -0
  31. package/src/utils/highlightUtils.ts +46 -1
  32. package/src/utils/readPackageJson.ts +29 -0
  33. package/src/utils/streamingText.ts +11 -0
  34. package/src/utils/worktree.ts +191 -43
  35. package/dist/cli.d.ts +0 -6
  36. package/dist/cli.js +0 -53
  37. package/dist/commands/plugin/disable.d.ts +0 -5
  38. package/dist/commands/plugin/disable.js +0 -15
  39. package/dist/commands/plugin/enable.d.ts +0 -5
  40. package/dist/commands/plugin/enable.js +0 -15
  41. package/dist/commands/plugin/install.d.ts +0 -5
  42. package/dist/commands/plugin/install.js +0 -21
  43. package/dist/commands/plugin/list.d.ts +0 -1
  44. package/dist/commands/plugin/list.js +0 -31
  45. package/dist/commands/plugin/marketplace.d.ts +0 -10
  46. package/dist/commands/plugin/marketplace.js +0 -90
  47. package/dist/commands/plugin/uninstall.d.ts +0 -3
  48. package/dist/commands/plugin/uninstall.js +0 -16
  49. package/dist/commands/plugin/update.d.ts +0 -3
  50. package/dist/commands/plugin/update.js +0 -15
  51. package/dist/commands/update.d.ts +0 -1
  52. package/dist/commands/update.js +0 -97
  53. package/dist/components/AgentsManager.d.ts +0 -7
  54. package/dist/components/AgentsManager.js +0 -109
  55. package/dist/components/App.d.ts +0 -9
  56. package/dist/components/App.js +0 -76
  57. package/dist/components/BackgroundTaskManager.d.ts +0 -5
  58. package/dist/components/BackgroundTaskManager.js +0 -99
  59. package/dist/components/BangDisplay.d.ts +0 -8
  60. package/dist/components/BangDisplay.js +0 -17
  61. package/dist/components/BtwDisplay.d.ts +0 -7
  62. package/dist/components/BtwDisplay.js +0 -19
  63. package/dist/components/ChatInterface.d.ts +0 -2
  64. package/dist/components/ChatInterface.js +0 -61
  65. package/dist/components/CommandSelector.d.ts +0 -10
  66. package/dist/components/CommandSelector.js +0 -66
  67. package/dist/components/CompactDisplay.d.ts +0 -8
  68. package/dist/components/CompactDisplay.js +0 -13
  69. package/dist/components/ConfirmationDetails.d.ts +0 -9
  70. package/dist/components/ConfirmationDetails.js +0 -45
  71. package/dist/components/ConfirmationSelector.d.ts +0 -13
  72. package/dist/components/ConfirmationSelector.js +0 -127
  73. package/dist/components/DiffDisplay.d.ts +0 -8
  74. package/dist/components/DiffDisplay.js +0 -201
  75. package/dist/components/DiscoverView.d.ts +0 -2
  76. package/dist/components/DiscoverView.js +0 -37
  77. package/dist/components/FileSelector.d.ts +0 -11
  78. package/dist/components/FileSelector.js +0 -50
  79. package/dist/components/HelpView.d.ts +0 -7
  80. package/dist/components/HelpView.js +0 -74
  81. package/dist/components/HistorySearch.d.ts +0 -8
  82. package/dist/components/HistorySearch.js +0 -66
  83. package/dist/components/InputBox.d.ts +0 -24
  84. package/dist/components/InputBox.js +0 -149
  85. package/dist/components/InstalledView.d.ts +0 -2
  86. package/dist/components/InstalledView.js +0 -45
  87. package/dist/components/LoadingIndicator.d.ts +0 -10
  88. package/dist/components/LoadingIndicator.js +0 -6
  89. package/dist/components/LoginCommand.d.ts +0 -5
  90. package/dist/components/LoginCommand.js +0 -153
  91. package/dist/components/Markdown.d.ts +0 -5
  92. package/dist/components/Markdown.js +0 -127
  93. package/dist/components/MarketplaceAddForm.d.ts +0 -2
  94. package/dist/components/MarketplaceAddForm.js +0 -55
  95. package/dist/components/MarketplaceDetail.d.ts +0 -2
  96. package/dist/components/MarketplaceDetail.js +0 -74
  97. package/dist/components/MarketplaceList.d.ts +0 -8
  98. package/dist/components/MarketplaceList.js +0 -17
  99. package/dist/components/MarketplaceView.d.ts +0 -2
  100. package/dist/components/MarketplaceView.js +0 -41
  101. package/dist/components/McpManager.d.ts +0 -9
  102. package/dist/components/McpManager.js +0 -88
  103. package/dist/components/MessageBlockItem.d.ts +0 -8
  104. package/dist/components/MessageBlockItem.js +0 -15
  105. package/dist/components/MessageList.d.ts +0 -10
  106. package/dist/components/MessageList.js +0 -80
  107. package/dist/components/ModelSelector.d.ts +0 -8
  108. package/dist/components/ModelSelector.js +0 -45
  109. package/dist/components/Notifications.d.ts +0 -7
  110. package/dist/components/Notifications.js +0 -9
  111. package/dist/components/PlanDisplay.d.ts +0 -7
  112. package/dist/components/PlanDisplay.js +0 -6
  113. package/dist/components/PluginDetail.d.ts +0 -2
  114. package/dist/components/PluginDetail.js +0 -87
  115. package/dist/components/PluginList.d.ts +0 -13
  116. package/dist/components/PluginList.js +0 -15
  117. package/dist/components/PluginManagerShell.d.ts +0 -6
  118. package/dist/components/PluginManagerShell.js +0 -92
  119. package/dist/components/PluginManagerTypes.d.ts +0 -35
  120. package/dist/components/PluginManagerTypes.js +0 -1
  121. package/dist/components/QueuedMessageList.d.ts +0 -2
  122. package/dist/components/QueuedMessageList.js +0 -18
  123. package/dist/components/ReasoningDisplay.d.ts +0 -8
  124. package/dist/components/ReasoningDisplay.js +0 -13
  125. package/dist/components/RewindCommand.d.ts +0 -12
  126. package/dist/components/RewindCommand.js +0 -78
  127. package/dist/components/SessionSelector.d.ts +0 -12
  128. package/dist/components/SessionSelector.js +0 -47
  129. package/dist/components/StatusCommand.d.ts +0 -5
  130. package/dist/components/StatusCommand.js +0 -28
  131. package/dist/components/StatusLine.d.ts +0 -6
  132. package/dist/components/StatusLine.js +0 -9
  133. package/dist/components/TaskList.d.ts +0 -5
  134. package/dist/components/TaskList.js +0 -197
  135. package/dist/components/TaskNotificationMessage.d.ts +0 -5
  136. package/dist/components/TaskNotificationMessage.js +0 -12
  137. package/dist/components/ToolDisplay.d.ts +0 -9
  138. package/dist/components/ToolDisplay.js +0 -55
  139. package/dist/components/WorkflowManager.d.ts +0 -5
  140. package/dist/components/WorkflowManager.js +0 -102
  141. package/dist/components/WorktreeExitPrompt.d.ts +0 -12
  142. package/dist/components/WorktreeExitPrompt.js +0 -35
  143. package/dist/constants/commands.d.ts +0 -2
  144. package/dist/constants/commands.js +0 -92
  145. package/dist/contexts/PluginManagerContext.d.ts +0 -3
  146. package/dist/contexts/PluginManagerContext.js +0 -9
  147. package/dist/contexts/useAppConfig.d.ts +0 -10
  148. package/dist/contexts/useAppConfig.js +0 -13
  149. package/dist/contexts/useChat.d.ts +0 -101
  150. package/dist/contexts/useChat.js +0 -993
  151. package/dist/contracts/status.d.ts +0 -7
  152. package/dist/contracts/status.js +0 -1
  153. package/dist/daemon/commands.d.ts +0 -49
  154. package/dist/daemon/commands.js +0 -341
  155. package/dist/daemon/jsonRpcClient.d.ts +0 -38
  156. package/dist/daemon/jsonRpcClient.js +0 -129
  157. package/dist/daemon/socketClient.d.ts +0 -13
  158. package/dist/daemon/socketClient.js +0 -26
  159. package/dist/daemon-cli.d.ts +0 -10
  160. package/dist/daemon-cli.js +0 -15
  161. package/dist/hooks/useInputManager.d.ts +0 -75
  162. package/dist/hooks/useInputManager.js +0 -583
  163. package/dist/hooks/usePluginManager.d.ts +0 -4
  164. package/dist/hooks/usePluginManager.js +0 -265
  165. package/dist/hooks/useTasks.d.ts +0 -1
  166. package/dist/hooks/useTasks.js +0 -5
  167. package/dist/index.d.ts +0 -4
  168. package/dist/index.js +0 -447
  169. package/dist/managers/inputHandlers.d.ts +0 -30
  170. package/dist/managers/inputHandlers.js +0 -625
  171. package/dist/managers/inputReducer.d.ts +0 -271
  172. package/dist/managers/inputReducer.js +0 -1121
  173. package/dist/plugin-manager-cli.d.ts +0 -5
  174. package/dist/plugin-manager-cli.js +0 -12
  175. package/dist/print-cli.d.ts +0 -10
  176. package/dist/print-cli.js +0 -209
  177. package/dist/reducers/agentsManagerReducer.d.ts +0 -26
  178. package/dist/reducers/agentsManagerReducer.js +0 -54
  179. package/dist/reducers/backgroundTaskManagerReducer.d.ts +0 -62
  180. package/dist/reducers/backgroundTaskManagerReducer.js +0 -106
  181. package/dist/reducers/confirmationReducer.d.ts +0 -37
  182. package/dist/reducers/confirmationReducer.js +0 -193
  183. package/dist/reducers/helpSelectorReducer.d.ts +0 -25
  184. package/dist/reducers/helpSelectorReducer.js +0 -52
  185. package/dist/reducers/marketplaceAddFormReducer.d.ts +0 -24
  186. package/dist/reducers/marketplaceAddFormReducer.js +0 -58
  187. package/dist/reducers/mcpManagerReducer.d.ts +0 -37
  188. package/dist/reducers/mcpManagerReducer.js +0 -74
  189. package/dist/reducers/pluginDetailReducer.d.ts +0 -32
  190. package/dist/reducers/pluginDetailReducer.js +0 -70
  191. package/dist/reducers/questionReducer.d.ts +0 -82
  192. package/dist/reducers/questionReducer.js +0 -375
  193. package/dist/reducers/rewindSelectorReducer.d.ts +0 -21
  194. package/dist/reducers/rewindSelectorReducer.js +0 -37
  195. package/dist/reducers/selectorReducer.d.ts +0 -23
  196. package/dist/reducers/selectorReducer.js +0 -42
  197. package/dist/reducers/workflowManagerReducer.d.ts +0 -40
  198. package/dist/reducers/workflowManagerReducer.js +0 -100
  199. package/dist/session-selector-cli.d.ts +0 -3
  200. package/dist/session-selector-cli.js +0 -25
  201. package/dist/stdio/agentBridge.d.ts +0 -139
  202. package/dist/stdio/agentBridge.js +0 -999
  203. package/dist/stdio/daemonServer.d.ts +0 -67
  204. package/dist/stdio/daemonServer.js +0 -191
  205. package/dist/stdio/index.d.ts +0 -5
  206. package/dist/stdio/index.js +0 -5
  207. package/dist/stdio/jsonRpcConnection.d.ts +0 -39
  208. package/dist/stdio/jsonRpcConnection.js +0 -135
  209. package/dist/stdio/protocol.d.ts +0 -41
  210. package/dist/stdio/protocol.js +0 -26
  211. package/dist/stdio/stdioServer.d.ts +0 -36
  212. package/dist/stdio/stdioServer.js +0 -51
  213. package/dist/stdio-cli.d.ts +0 -8
  214. package/dist/stdio-cli.js +0 -15
  215. package/dist/types.d.ts +0 -20
  216. package/dist/types.js +0 -1
  217. package/dist/utils/bracketedPaste.d.ts +0 -39
  218. package/dist/utils/bracketedPaste.js +0 -122
  219. package/dist/utils/clipboard.d.ts +0 -21
  220. package/dist/utils/clipboard.js +0 -347
  221. package/dist/utils/constants.d.ts +0 -16
  222. package/dist/utils/constants.js +0 -18
  223. package/dist/utils/highlightUtils.d.ts +0 -1
  224. package/dist/utils/highlightUtils.js +0 -93
  225. package/dist/utils/inputUtils.d.ts +0 -17
  226. package/dist/utils/inputUtils.js +0 -67
  227. package/dist/utils/logger.d.ts +0 -71
  228. package/dist/utils/logger.js +0 -259
  229. package/dist/utils/markdownTable.d.ts +0 -34
  230. package/dist/utils/markdownTable.js +0 -302
  231. package/dist/utils/rewindCheckpoints.d.ts +0 -8
  232. package/dist/utils/rewindCheckpoints.js +0 -17
  233. package/dist/utils/throttle.d.ts +0 -14
  234. package/dist/utils/throttle.js +0 -55
  235. package/dist/utils/toolParameterTransforms.d.ts +0 -18
  236. package/dist/utils/toolParameterTransforms.js +0 -73
  237. package/dist/utils/usageSummary.d.ts +0 -28
  238. package/dist/utils/usageSummary.js +0 -121
  239. package/dist/utils/version.d.ts +0 -1
  240. package/dist/utils/version.js +0 -4
  241. package/dist/utils/worktree.d.ts +0 -35
  242. package/dist/utils/worktree.js +0 -219
@@ -1,35 +0,0 @@
1
- export interface WorktreeSession {
2
- name: string;
3
- path: string;
4
- branch: string;
5
- repoRoot: string;
6
- hasUncommittedChanges: boolean;
7
- hasNewCommits: boolean;
8
- isNew: boolean;
9
- }
10
- /**
11
- * Validate a worktree name before any side effects. Names are slash-separated
12
- * slugs: every segment must be non-empty and contain only letters, digits,
13
- * dots, underscores, and dashes. The total length is capped at 64 characters
14
- * and "." / ".." segments are rejected (path traversal protection).
15
- * @throws {Error} When the name is not a valid slug
16
- */
17
- export declare function validateWorktreeSlug(name: string): void;
18
- /**
19
- * Create a new git worktree
20
- * @param name Worktree name
21
- * @param cwd Current working directory
22
- * @param options Optional creation options
23
- * @param options.baseRef "fresh" (default, origin/<default-branch>) | "head" (local HEAD)
24
- * @param options.baseBranch Explicit base branch (overrides baseRef)
25
- * @returns Worktree session details
26
- */
27
- export declare function createWorktree(name: string, cwd: string, options?: {
28
- baseRef?: "fresh" | "head";
29
- baseBranch?: string;
30
- }): Promise<WorktreeSession>;
31
- /**
32
- * Remove a git worktree and its associated branch
33
- * @param session Worktree session details
34
- */
35
- export declare function removeWorktree(session: WorktreeSession): Promise<void>;
@@ -1,219 +0,0 @@
1
- import { execFile } from "node:child_process";
2
- import { promisify } from "node:util";
3
- import * as path from "node:path";
4
- import * as fs from "node:fs";
5
- import { getDefaultRemoteBranch, getGitMainRepoRoot, performPostCreationSetup, } from "wave-agent-sdk";
6
- // Never use execFileSync here: the shared `wave --stdio` process handles all
7
- // desktop sessions, so a synchronous git call (especially a multi-second
8
- // recursive worktree delete or a network fetch) freezes every session.
9
- const execFileAsync = promisify(execFile);
10
- // --- Worktree name validation ------------------------------------------------
11
- const VALID_WORKTREE_SLUG_SEGMENT = /^[a-zA-Z0-9._-]+$/;
12
- const MAX_WORKTREE_SLUG_LENGTH = 64;
13
- /**
14
- * Validate a worktree name before any side effects. Names are slash-separated
15
- * slugs: every segment must be non-empty and contain only letters, digits,
16
- * dots, underscores, and dashes. The total length is capped at 64 characters
17
- * and "." / ".." segments are rejected (path traversal protection).
18
- * @throws {Error} When the name is not a valid slug
19
- */
20
- export function validateWorktreeSlug(name) {
21
- if (name.length > MAX_WORKTREE_SLUG_LENGTH) {
22
- throw new Error(`Invalid worktree name: "${name}" must be ${MAX_WORKTREE_SLUG_LENGTH} characters or fewer (got ${name.length})`);
23
- }
24
- for (const segment of name.split("/")) {
25
- if (segment === "." || segment === "..") {
26
- throw new Error(`Invalid worktree name: "${name}" must not contain "." or ".." path segments`);
27
- }
28
- if (segment.length === 0 || !VALID_WORKTREE_SLUG_SEGMENT.test(segment)) {
29
- throw new Error(`Invalid worktree name: "${name}" each "/"-separated segment must be non-empty and contain only letters, digits, dots, underscores, and dashes`);
30
- }
31
- }
32
- }
33
- /**
34
- * Create a new git worktree
35
- * @param name Worktree name
36
- * @param cwd Current working directory
37
- * @param options Optional creation options
38
- * @param options.baseRef "fresh" (default, origin/<default-branch>) | "head" (local HEAD)
39
- * @param options.baseBranch Explicit base branch (overrides baseRef)
40
- * @returns Worktree session details
41
- */
42
- export async function createWorktree(name, cwd, options) {
43
- validateWorktreeSlug(name);
44
- const session = await createWorktreeInternal(name, cwd, options);
45
- if (session.isNew) {
46
- await performPostCreationSetup(session.path, session.repoRoot);
47
- }
48
- return session;
49
- }
50
- async function createWorktreeInternal(name, cwd, options) {
51
- const repoRoot = getGitMainRepoRoot(cwd);
52
- const worktreePath = path.join(repoRoot, ".wave", "worktrees", name);
53
- const branchName = `worktree-${name}`;
54
- const useHead = options?.baseRef === "head";
55
- const resolvedBaseBranch = options?.baseBranch ?? (useHead ? "HEAD" : getDefaultRemoteBranch(cwd));
56
- // Ensure parent directory exists
57
- const parentDir = path.dirname(worktreePath);
58
- if (!fs.existsSync(parentDir)) {
59
- fs.mkdirSync(parentDir, { recursive: true });
60
- }
61
- // Check if worktree already exists
62
- if (fs.existsSync(worktreePath)) {
63
- // If it exists, we assume it's already set up correctly
64
- return {
65
- name,
66
- path: worktreePath,
67
- branch: branchName,
68
- repoRoot,
69
- hasUncommittedChanges: false,
70
- hasNewCommits: false,
71
- isNew: false,
72
- };
73
- }
74
- try {
75
- // Create worktree and branch
76
- await execFileAsync("git", ["worktree", "add", "-b", branchName, worktreePath, resolvedBaseBranch], {
77
- cwd: repoRoot,
78
- });
79
- return {
80
- name,
81
- path: worktreePath,
82
- branch: branchName,
83
- repoRoot,
84
- hasUncommittedChanges: false,
85
- hasNewCommits: false,
86
- isNew: true,
87
- };
88
- }
89
- catch (error) {
90
- const stderr = error.stderr?.toString() || "";
91
- if (stderr.includes("already exists")) {
92
- // If branch already exists, try to add worktree without -b
93
- try {
94
- await execFileAsync("git", ["worktree", "add", worktreePath, branchName], {
95
- cwd: repoRoot,
96
- });
97
- return {
98
- name,
99
- path: worktreePath,
100
- branch: branchName,
101
- repoRoot,
102
- hasUncommittedChanges: false,
103
- hasNewCommits: false,
104
- isNew: true,
105
- };
106
- }
107
- catch (innerError) {
108
- throw new Error(`Failed to add existing worktree branch: ${innerError.message}`);
109
- }
110
- }
111
- if (!useHead &&
112
- (stderr.includes("not a valid object name") ||
113
- stderr.includes("unknown revision"))) {
114
- // Base branch not fetched yet — try fetching then retrying
115
- const branchNameOnly = resolvedBaseBranch.split("/").pop();
116
- try {
117
- await execFileAsync("git", ["fetch", "origin", branchNameOnly], {
118
- cwd: repoRoot,
119
- });
120
- await execFileAsync("git", [
121
- "worktree",
122
- "add",
123
- "-b",
124
- branchName,
125
- worktreePath,
126
- resolvedBaseBranch,
127
- ], {
128
- cwd: repoRoot,
129
- });
130
- return {
131
- name,
132
- path: worktreePath,
133
- branch: branchName,
134
- repoRoot,
135
- hasUncommittedChanges: false,
136
- hasNewCommits: false,
137
- isNew: true,
138
- };
139
- }
140
- catch {
141
- // Fetch or retry failed — fall back to HEAD
142
- try {
143
- await execFileAsync("git", ["worktree", "add", "-b", branchName, worktreePath, "HEAD"], {
144
- cwd: repoRoot,
145
- });
146
- return {
147
- name,
148
- path: worktreePath,
149
- branch: branchName,
150
- repoRoot,
151
- hasUncommittedChanges: false,
152
- hasNewCommits: false,
153
- isNew: true,
154
- };
155
- }
156
- catch {
157
- throw new Error(`Failed to create worktree: ${error.message}\n${stderr}`);
158
- }
159
- }
160
- }
161
- throw new Error(`Failed to create worktree: ${error.message}\n${stderr}`);
162
- }
163
- }
164
- /**
165
- * Remove a git worktree and its associated branch
166
- * @param session Worktree session details
167
- */
168
- export async function removeWorktree(session) {
169
- const repoRoot = session.repoRoot;
170
- try {
171
- // Get current branch in worktree before removing it
172
- let currentBranch;
173
- try {
174
- const { stdout } = await execFileAsync("git", ["rev-parse", "--abbrev-ref", "HEAD"], {
175
- cwd: session.path,
176
- encoding: "utf8",
177
- });
178
- currentBranch = stdout.trim();
179
- }
180
- catch {
181
- // Ignore errors getting current branch
182
- }
183
- // Remove worktree
184
- await execFileAsync("git", ["worktree", "remove", "--force", session.path], {
185
- cwd: repoRoot,
186
- });
187
- // Delete original branch
188
- try {
189
- await execFileAsync("git", ["branch", "-D", session.branch], {
190
- cwd: repoRoot,
191
- });
192
- }
193
- catch {
194
- // Ignore errors deleting original branch
195
- }
196
- // Delete current branch if it's different and not a protected branch
197
- if (currentBranch &&
198
- currentBranch !== session.branch &&
199
- currentBranch !== "HEAD") {
200
- const defaultRemoteBranch = getDefaultRemoteBranch(repoRoot);
201
- const defaultBranchName = defaultRemoteBranch.split("/").pop();
202
- if (currentBranch !== defaultBranchName &&
203
- currentBranch !== "main" &&
204
- currentBranch !== "master") {
205
- try {
206
- await execFileAsync("git", ["branch", "-D", currentBranch], {
207
- cwd: repoRoot,
208
- });
209
- }
210
- catch {
211
- // Ignore errors deleting current branch
212
- }
213
- }
214
- }
215
- }
216
- catch (error) {
217
- console.error(`Failed to remove worktree or branch: ${error.message}`);
218
- }
219
- }