wave-code 0.7.1 → 0.8.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 (108) hide show
  1. package/dist/cli.d.ts +2 -4
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +24 -52
  4. package/dist/components/App.d.ts +3 -4
  5. package/dist/components/App.d.ts.map +1 -1
  6. package/dist/components/App.js +49 -6
  7. package/dist/components/BackgroundTaskManager.d.ts.map +1 -1
  8. package/dist/components/BackgroundTaskManager.js +12 -20
  9. package/dist/components/BangDisplay.d.ts +9 -0
  10. package/dist/components/BangDisplay.d.ts.map +1 -0
  11. package/dist/components/{CommandOutputDisplay.js → BangDisplay.js} +1 -1
  12. package/dist/components/ChatInterface.d.ts.map +1 -1
  13. package/dist/components/ChatInterface.js +3 -2
  14. package/dist/components/CommandSelector.d.ts.map +1 -1
  15. package/dist/components/CommandSelector.js +18 -2
  16. package/dist/components/ConfirmationSelector.d.ts.map +1 -1
  17. package/dist/components/ConfirmationSelector.js +105 -8
  18. package/dist/components/HelpView.d.ts.map +1 -1
  19. package/dist/components/HelpView.js +2 -0
  20. package/dist/components/HistorySearch.d.ts.map +1 -1
  21. package/dist/components/HistorySearch.js +19 -25
  22. package/dist/components/InputBox.d.ts.map +1 -1
  23. package/dist/components/InputBox.js +9 -3
  24. package/dist/components/MarketplaceAddForm.d.ts.map +1 -1
  25. package/dist/components/MarketplaceAddForm.js +13 -6
  26. package/dist/components/MarketplaceDetail.d.ts.map +1 -1
  27. package/dist/components/MarketplaceDetail.js +8 -3
  28. package/dist/components/MessageBlockItem.js +2 -2
  29. package/dist/components/MessageList.d.ts +4 -1
  30. package/dist/components/MessageList.d.ts.map +1 -1
  31. package/dist/components/MessageList.js +15 -8
  32. package/dist/components/PluginDetail.d.ts.map +1 -1
  33. package/dist/components/PluginDetail.js +14 -3
  34. package/dist/components/PluginManagerShell.d.ts.map +1 -1
  35. package/dist/components/PluginManagerShell.js +3 -3
  36. package/dist/components/PluginManagerTypes.d.ts +2 -0
  37. package/dist/components/PluginManagerTypes.d.ts.map +1 -1
  38. package/dist/components/SessionSelector.d.ts.map +1 -1
  39. package/dist/components/SessionSelector.js +10 -13
  40. package/dist/components/StatusCommand.d.ts +6 -0
  41. package/dist/components/StatusCommand.d.ts.map +1 -0
  42. package/dist/components/StatusCommand.js +28 -0
  43. package/dist/components/WorktreeExitPrompt.d.ts +13 -0
  44. package/dist/components/WorktreeExitPrompt.d.ts.map +1 -0
  45. package/dist/components/WorktreeExitPrompt.js +26 -0
  46. package/dist/contexts/useChat.d.ts +9 -5
  47. package/dist/contexts/useChat.d.ts.map +1 -1
  48. package/dist/contexts/useChat.js +38 -8
  49. package/dist/contracts/status.d.ts +8 -0
  50. package/dist/contracts/status.d.ts.map +1 -0
  51. package/dist/contracts/status.js +1 -0
  52. package/dist/hooks/useInputManager.d.ts +2 -0
  53. package/dist/hooks/useInputManager.d.ts.map +1 -1
  54. package/dist/hooks/useInputManager.js +12 -0
  55. package/dist/hooks/usePluginManager.d.ts.map +1 -1
  56. package/dist/hooks/usePluginManager.js +41 -13
  57. package/dist/hooks/useTasks.js +2 -2
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +53 -4
  60. package/dist/managers/InputManager.d.ts +6 -0
  61. package/dist/managers/InputManager.d.ts.map +1 -1
  62. package/dist/managers/InputManager.js +32 -13
  63. package/dist/print-cli.d.ts +2 -4
  64. package/dist/print-cli.d.ts.map +1 -1
  65. package/dist/print-cli.js +31 -2
  66. package/dist/session-selector-cli.d.ts +3 -1
  67. package/dist/session-selector-cli.d.ts.map +1 -1
  68. package/dist/session-selector-cli.js +2 -2
  69. package/dist/types.d.ts +11 -0
  70. package/dist/types.d.ts.map +1 -0
  71. package/dist/types.js +1 -0
  72. package/dist/utils/worktree.d.ts +23 -0
  73. package/dist/utils/worktree.d.ts.map +1 -0
  74. package/dist/utils/worktree.js +135 -0
  75. package/package.json +2 -2
  76. package/src/cli.tsx +36 -59
  77. package/src/components/App.tsx +99 -11
  78. package/src/components/BackgroundTaskManager.tsx +12 -20
  79. package/src/components/{CommandOutputDisplay.tsx → BangDisplay.tsx} +4 -4
  80. package/src/components/ChatInterface.tsx +8 -0
  81. package/src/components/CommandSelector.tsx +18 -1
  82. package/src/components/ConfirmationSelector.tsx +118 -9
  83. package/src/components/HelpView.tsx +2 -0
  84. package/src/components/HistorySearch.tsx +25 -30
  85. package/src/components/InputBox.tsx +11 -1
  86. package/src/components/MarketplaceAddForm.tsx +21 -8
  87. package/src/components/MarketplaceDetail.tsx +19 -4
  88. package/src/components/MessageBlockItem.tsx +3 -3
  89. package/src/components/MessageList.tsx +47 -23
  90. package/src/components/PluginDetail.tsx +30 -6
  91. package/src/components/PluginManagerShell.tsx +24 -6
  92. package/src/components/PluginManagerTypes.ts +2 -0
  93. package/src/components/SessionSelector.tsx +38 -24
  94. package/src/components/StatusCommand.tsx +94 -0
  95. package/src/components/WorktreeExitPrompt.tsx +86 -0
  96. package/src/contexts/useChat.tsx +57 -13
  97. package/src/contracts/status.ts +7 -0
  98. package/src/hooks/useInputManager.ts +12 -0
  99. package/src/hooks/usePluginManager.ts +47 -13
  100. package/src/hooks/useTasks.ts +2 -2
  101. package/src/index.ts +71 -12
  102. package/src/managers/InputManager.ts +37 -15
  103. package/src/print-cli.ts +48 -5
  104. package/src/session-selector-cli.tsx +6 -2
  105. package/src/types.ts +11 -0
  106. package/src/utils/worktree.ts +164 -0
  107. package/dist/components/CommandOutputDisplay.d.ts +0 -9
  108. package/dist/components/CommandOutputDisplay.d.ts.map +0 -1
@@ -13,7 +13,7 @@ export const useChat = () => {
13
13
  }
14
14
  return context;
15
15
  };
16
- export const ChatProvider = ({ children, bypassPermissions, pluginDirs, tools, }) => {
16
+ export const ChatProvider = ({ children, bypassPermissions, pluginDirs, tools, workdir, worktreeSession, version, model, }) => {
17
17
  const { restoreSessionId, continueLastSession } = useAppConfig();
18
18
  // Message Display State
19
19
  const [isExpanded, setIsExpanded] = useState(false);
@@ -34,8 +34,8 @@ export const ChatProvider = ({ children, bypassPermissions, pluginDirs, tools, }
34
34
  const [mcpServers, setMcpServers] = useState([]);
35
35
  // Background tasks state
36
36
  const [backgroundTasks, setBackgroundTasks] = useState([]);
37
- // Session tasks state
38
- const [sessionTasks, setSessionTasks] = useState([]);
37
+ // Tasks state
38
+ const [tasks, setTasks] = useState([]);
39
39
  // Command state
40
40
  const [slashCommands, setSlashCommands] = useState([]);
41
41
  // Subagent messages state
@@ -50,6 +50,8 @@ export const ChatProvider = ({ children, bypassPermissions, pluginDirs, tools, }
50
50
  const [currentConfirmation, setCurrentConfirmation] = useState(null);
51
51
  // Rewind state
52
52
  const [rewindId, setRewindId] = useState(0);
53
+ // Status metadata state
54
+ const [workingDirectory, setWorkingDirectory] = useState("");
53
55
  // Confirmation too tall state
54
56
  const [wasLastDetailsTooTall, setWasLastDetailsTooTall] = useState(0);
55
57
  const agentRef = useRef(null);
@@ -80,7 +82,7 @@ export const ChatProvider = ({ children, bypassPermissions, pluginDirs, tools, }
80
82
  setMessages([...agentRef.current.messages]);
81
83
  }
82
84
  messagesUpdateTimerRef.current = null;
83
- }, 50);
85
+ }, 100);
84
86
  }
85
87
  }
86
88
  },
@@ -96,11 +98,11 @@ export const ChatProvider = ({ children, bypassPermissions, pluginDirs, tools, }
96
98
  onCompressionStateChange: (isCompressingState) => {
97
99
  setIsCompressing(isCompressingState);
98
100
  },
99
- onTasksChange: (tasks) => {
101
+ onBackgroundTasksChange: (tasks) => {
100
102
  setBackgroundTasks([...tasks]);
101
103
  },
102
- onSessionTasksChange: (tasks) => {
103
- setSessionTasks([...tasks]);
104
+ onTasksChange: (tasks) => {
105
+ setTasks([...tasks]);
104
106
  },
105
107
  onSubagentMessagesChange: (subagentId, messages) => {
106
108
  logger.debug("onSubagentMessagesChange", subagentId, messages.length);
@@ -148,6 +150,10 @@ export const ChatProvider = ({ children, bypassPermissions, pluginDirs, tools, }
148
150
  stream: false, // 关闭流式模式
149
151
  plugins: pluginDirs?.map((path) => ({ type: "local", path })),
150
152
  tools,
153
+ workdir,
154
+ worktreeName: worktreeSession?.name,
155
+ isNewWorktree: worktreeSession?.isNew,
156
+ model,
151
157
  });
152
158
  agentRef.current = agent;
153
159
  // Get initial state
@@ -158,6 +164,7 @@ export const ChatProvider = ({ children, bypassPermissions, pluginDirs, tools, }
158
164
  setIsCommandRunning(agent.isCommandRunning);
159
165
  setIsCompressing(agent.isCompressing);
160
166
  setPermissionModeState(agent.getPermissionMode());
167
+ setWorkingDirectory(agent.workingDirectory);
161
168
  // Get initial MCP servers state
162
169
  const mcpServers = agent.getMcpServers?.() || [];
163
170
  setMcpServers(mcpServers);
@@ -177,6 +184,8 @@ export const ChatProvider = ({ children, bypassPermissions, pluginDirs, tools, }
177
184
  showConfirmation,
178
185
  pluginDirs,
179
186
  tools,
187
+ workdir,
188
+ worktreeSession,
180
189
  ]);
181
190
  // Cleanup on unmount
182
191
  useEffect(() => {
@@ -245,6 +254,9 @@ export const ChatProvider = ({ children, bypassPermissions, pluginDirs, tools, }
245
254
  const abortMessage = useCallback(() => {
246
255
  agentRef.current?.abortMessage();
247
256
  }, []);
257
+ const clearMessages = useCallback(() => {
258
+ agentRef.current?.clearMessages();
259
+ }, []);
248
260
  // Permission management methods
249
261
  const setPermissionMode = useCallback((mode) => {
250
262
  setPermissionModeState((prev) => {
@@ -336,6 +348,18 @@ export const ChatProvider = ({ children, bypassPermissions, pluginDirs, tools, }
336
348
  }
337
349
  return { messages: [], sessionIds: [] };
338
350
  }, []);
351
+ const getGatewayConfig = useCallback(() => {
352
+ if (!agentRef.current) {
353
+ return { baseURL: "" };
354
+ }
355
+ return agentRef.current.getGatewayConfig();
356
+ }, []);
357
+ const getModelConfig = useCallback(() => {
358
+ if (!agentRef.current) {
359
+ return { model: "", fastModel: "" };
360
+ }
361
+ return agentRef.current.getModelConfig();
362
+ }, []);
339
363
  // Listen for Ctrl+O hotkey to toggle collapse/expand state and ESC to cancel confirmation
340
364
  useInput((input, key) => {
341
365
  if (key.ctrl && input === "o") {
@@ -384,13 +408,14 @@ export const ChatProvider = ({ children, bypassPermissions, pluginDirs, tools, }
384
408
  sessionId,
385
409
  sendMessage,
386
410
  abortMessage,
411
+ clearMessages,
387
412
  latestTotalTokens,
388
413
  isCompressing,
389
414
  mcpServers,
390
415
  connectMcpServer,
391
416
  disconnectMcpServer,
392
417
  backgroundTasks,
393
- sessionTasks,
418
+ tasks,
394
419
  getBackgroundTaskOutput,
395
420
  stopBackgroundTask,
396
421
  slashCommands,
@@ -411,6 +436,11 @@ export const ChatProvider = ({ children, bypassPermissions, pluginDirs, tools, }
411
436
  getFullMessageThread,
412
437
  wasLastDetailsTooTall,
413
438
  setWasLastDetailsTooTall,
439
+ getGatewayConfig,
440
+ getModelConfig,
441
+ workingDirectory,
442
+ version,
443
+ workdir,
414
444
  };
415
445
  return (_jsx(ChatContext.Provider, { value: contextValue, children: children }));
416
446
  };
@@ -0,0 +1,8 @@
1
+ export interface AgentStatus {
2
+ version: string;
3
+ sessionId: string;
4
+ cwd: string;
5
+ baseURL: string;
6
+ model: string;
7
+ }
8
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/contracts/status.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf"}
@@ -0,0 +1 @@
1
+ export {};
@@ -18,6 +18,7 @@ export declare const useInputManager: (callbacks?: Partial<InputManagerCallbacks
18
18
  showMcpManager: boolean;
19
19
  showRewindManager: boolean;
20
20
  showHelp: boolean;
21
+ showStatusCommand: boolean;
21
22
  permissionMode: PermissionMode;
22
23
  attachedImages: AttachedImage[];
23
24
  isManagerReady: boolean;
@@ -53,6 +54,7 @@ export declare const useInputManager: (callbacks?: Partial<InputManagerCallbacks
53
54
  setShowMcpManager: (show: boolean) => void;
54
55
  setShowRewindManager: (show: boolean) => void;
55
56
  setShowHelp: (show: boolean) => void;
57
+ setShowStatusCommand: (show: boolean) => void;
56
58
  setPermissionMode: (mode: PermissionMode) => void;
57
59
  addImage: (imagePath: string, mimeType: string) => AttachedImage | undefined;
58
60
  removeImage: (imageId: number) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"useInputManager.d.ts","sourceRoot":"","sources":["../../src/hooks/useInputManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,aAAa,EACd,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhD,eAAO,MAAM,eAAe,GAC1B,YAAW,OAAO,CAAC,qBAAqB,CAAM;;;;;;;;;;;;;;;;;;;+BAwHpC,MAAM,aACD,CAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,KAAK,IAAI;oCAQrD,CAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,KAAK,IAAI;;;;qCAmBd,MAAM;iCAK7C,MAAM;;;;;mCAe+B,MAAM;oCAIL,MAAM;wCAKF,MAAM;mCAKjD,MAAM;;;;mCAYN,MAAM;;;;;sCAemC,MAAM;uCAIL,MAAM;wCAKL,MAAM;;mCASX,MAAM;yCAiEL,OAAO;8BAGlB,OAAO;iCAGJ,OAAO;wBAIhB,OAAO;8BAID,cAAc;0BAMlB,MAAM,YAAY,MAAM;2BAGvB,MAAM;;;8BAWH,MAAM;mCAKxB,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,cAC1D,OAAO,qBACA,OAAO;uCAUkB,MAAM;;yBAU1C,MAAM,OACR,GAAG,kBACQ,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,cAC1D,OAAO,qBACA,OAAO,gBACX,MAAM,IAAI;yBA9HgB,MAAM;kCAIG,MAAM;;CAiJ9D,CAAC"}
1
+ {"version":3,"file":"useInputManager.d.ts","sourceRoot":"","sources":["../../src/hooks/useInputManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,aAAa,EACd,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhD,eAAO,MAAM,eAAe,GAC1B,YAAW,OAAO,CAAC,qBAAqB,CAAM;;;;;;;;;;;;;;;;;;;;+BA+HpC,MAAM,aACD,CAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,KAAK,IAAI;oCAQrD,CAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,KAAK,IAAI;;;;qCAmBd,MAAM;iCAK7C,MAAM;;;;;mCAe+B,MAAM;oCAIL,MAAM;wCAKF,MAAM;mCAKjD,MAAM;;;;mCAYN,MAAM;;;;;sCAemC,MAAM;uCAIL,MAAM;wCAKL,MAAM;;mCASX,MAAM;yCAkEL,OAAO;8BAGlB,OAAO;iCAGJ,OAAO;wBAIhB,OAAO;iCAIE,OAAO;8BAIV,cAAc;0BAMlB,MAAM,YAAY,MAAM;2BAGvB,MAAM;;;8BAWH,MAAM;mCAKxB,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,cAC1D,OAAO,qBACA,OAAO;uCAUkB,MAAM;;yBAU1C,MAAM,OACR,GAAG,kBACQ,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,cAC1D,OAAO,qBACA,OAAO,gBACX,MAAM,IAAI;yBAnIgB,MAAM;kCAIG,MAAM;;CAsJ9D,CAAC"}
@@ -26,6 +26,7 @@ export const useInputManager = (callbacks = {}) => {
26
26
  const [showMcpManager, setShowMcpManager] = useState(false);
27
27
  const [showRewindManager, setShowRewindManager] = useState(false);
28
28
  const [showHelp, setShowHelp] = useState(false);
29
+ const [showStatusCommand, setShowStatusCommand] = useState(false);
29
30
  const [permissionMode, setPermissionModeState] = useState("default");
30
31
  const [attachedImages, setAttachedImages] = useState([]);
31
32
  // Create InputManager on mount and update callbacks when they change
@@ -57,6 +58,9 @@ export const useInputManager = (callbacks = {}) => {
57
58
  onHelpStateChange: (show) => {
58
59
  setShowHelp(show);
59
60
  },
61
+ onStatusCommandStateChange: (show) => {
62
+ setShowStatusCommand(show);
63
+ },
60
64
  onPermissionModeChange: (mode) => {
61
65
  setPermissionModeState(mode);
62
66
  callbacks.onPermissionModeChange?.(mode);
@@ -94,6 +98,9 @@ export const useInputManager = (callbacks = {}) => {
94
98
  onHelpStateChange: (show) => {
95
99
  setShowHelp(show);
96
100
  },
101
+ onStatusCommandStateChange: (show) => {
102
+ setShowStatusCommand(show);
103
+ },
97
104
  onPermissionModeChange: (mode) => {
98
105
  setPermissionModeState(mode);
99
106
  callbacks.onPermissionModeChange?.(mode);
@@ -207,6 +214,7 @@ export const useInputManager = (callbacks = {}) => {
207
214
  showMcpManager,
208
215
  showRewindManager,
209
216
  showHelp,
217
+ showStatusCommand,
210
218
  permissionMode,
211
219
  attachedImages,
212
220
  isManagerReady,
@@ -249,6 +257,10 @@ export const useInputManager = (callbacks = {}) => {
249
257
  managerRef.current?.setShowHelp(show);
250
258
  setShowHelp(show);
251
259
  }, []),
260
+ setShowStatusCommand: useCallback((show) => {
261
+ managerRef.current?.setShowStatusCommand(show);
262
+ setShowStatusCommand(show);
263
+ }, []),
252
264
  setPermissionMode: useCallback((mode) => {
253
265
  setPermissionModeState(mode);
254
266
  managerRef.current?.setPermissionMode(mode);
@@ -1 +1 @@
1
- {"version":3,"file":"usePluginManager.d.ts","sourceRoot":"","sources":["../../src/hooks/usePluginManager.ts"],"names":[],"mappings":"AAOA,OAAO,EAGL,wBAAwB,EACzB,MAAM,qCAAqC,CAAC;AAE7C,wBAAgB,gBAAgB,IAAI,wBAAwB,CA4P3D"}
1
+ {"version":3,"file":"usePluginManager.d.ts","sourceRoot":"","sources":["../../src/hooks/usePluginManager.ts"],"names":[],"mappings":"AAOA,OAAO,EAGL,wBAAwB,EACzB,MAAM,qCAAqC,CAAC;AAE7C,wBAAgB,gBAAgB,IAAI,wBAAwB,CA8R3D"}
@@ -6,17 +6,38 @@ export function usePluginManager() {
6
6
  selectedId: null,
7
7
  isLoading: true,
8
8
  error: null,
9
+ successMessage: null,
9
10
  searchQuery: "",
10
11
  });
11
12
  const [marketplaces, setMarketplaces] = useState([]);
12
13
  const [installedPlugins, setInstalledPlugins] = useState([]);
13
14
  const [discoverablePlugins, setDiscoverablePlugins] = useState([]);
14
15
  const pluginCore = useMemo(() => new PluginCore(), []);
16
+ const clearPluginFeedback = useCallback(() => {
17
+ setState((prev) => ({
18
+ ...prev,
19
+ error: null,
20
+ successMessage: null,
21
+ }));
22
+ }, []);
23
+ const setSuccessMessage = useCallback((message) => {
24
+ setState((prev) => ({
25
+ ...prev,
26
+ successMessage: message,
27
+ error: null,
28
+ }));
29
+ setTimeout(() => {
30
+ setState((prev) => ({
31
+ ...prev,
32
+ successMessage: prev.successMessage === message ? null : prev.successMessage,
33
+ }));
34
+ }, 5000);
35
+ }, [setState]);
15
36
  const refresh = useCallback(async () => {
37
+ clearPluginFeedback();
16
38
  setState((prev) => ({
17
39
  ...prev,
18
40
  isLoading: true,
19
- error: null,
20
41
  }));
21
42
  try {
22
43
  const [mks, installed, enabledMap] = await Promise.all([
@@ -78,14 +99,15 @@ export function usePluginManager() {
78
99
  setState((prev) => ({ ...prev, selectedId: id }));
79
100
  }, []);
80
101
  const addMarketplace = useCallback(async (source) => {
102
+ clearPluginFeedback();
81
103
  setState((prev) => ({
82
104
  ...prev,
83
105
  isLoading: true,
84
- error: null,
85
106
  }));
86
107
  try {
87
108
  await pluginCore.addMarketplace(source);
88
109
  await refresh();
110
+ setSuccessMessage(`Marketplace added successfully`);
89
111
  }
90
112
  catch (error) {
91
113
  setState((prev) => ({
@@ -94,16 +116,17 @@ export function usePluginManager() {
94
116
  error: error instanceof Error ? error.message : String(error),
95
117
  }));
96
118
  }
97
- }, [pluginCore, refresh]);
119
+ }, [pluginCore, refresh, clearPluginFeedback, setSuccessMessage]);
98
120
  const removeMarketplace = useCallback(async (name) => {
121
+ clearPluginFeedback();
99
122
  setState((prev) => ({
100
123
  ...prev,
101
124
  isLoading: true,
102
- error: null,
103
125
  }));
104
126
  try {
105
127
  await pluginCore.removeMarketplace(name);
106
128
  await refresh();
129
+ setSuccessMessage(`Marketplace '${name}' removed successfully`);
107
130
  }
108
131
  catch (error) {
109
132
  setState((prev) => ({
@@ -112,16 +135,17 @@ export function usePluginManager() {
112
135
  error: error instanceof Error ? error.message : String(error),
113
136
  }));
114
137
  }
115
- }, [pluginCore, refresh]);
138
+ }, [pluginCore, refresh, clearPluginFeedback, setSuccessMessage]);
116
139
  const updateMarketplace = useCallback(async (name) => {
140
+ clearPluginFeedback();
117
141
  setState((prev) => ({
118
142
  ...prev,
119
143
  isLoading: true,
120
- error: null,
121
144
  }));
122
145
  try {
123
146
  await pluginCore.updateMarketplace(name);
124
147
  await refresh();
148
+ setSuccessMessage(`Marketplace '${name}' updated successfully`);
125
149
  }
126
150
  catch (error) {
127
151
  setState((prev) => ({
@@ -130,17 +154,18 @@ export function usePluginManager() {
130
154
  error: error instanceof Error ? error.message : String(error),
131
155
  }));
132
156
  }
133
- }, [pluginCore, refresh]);
157
+ }, [pluginCore, refresh, clearPluginFeedback, setSuccessMessage]);
134
158
  const installPlugin = useCallback(async (name, marketplace, scope = "project") => {
159
+ clearPluginFeedback();
135
160
  setState((prev) => ({
136
161
  ...prev,
137
162
  isLoading: true,
138
- error: null,
139
163
  }));
140
164
  try {
141
165
  const pluginId = `${name}@${marketplace}`;
142
166
  await pluginCore.installPlugin(pluginId, scope);
143
167
  await refresh();
168
+ setSuccessMessage(`Plugin '${name}' installed successfully`);
144
169
  }
145
170
  catch (error) {
146
171
  setState((prev) => ({
@@ -149,17 +174,18 @@ export function usePluginManager() {
149
174
  error: error instanceof Error ? error.message : String(error),
150
175
  }));
151
176
  }
152
- }, [pluginCore, refresh]);
177
+ }, [pluginCore, refresh, clearPluginFeedback, setSuccessMessage]);
153
178
  const uninstallPlugin = useCallback(async (name, marketplace) => {
179
+ clearPluginFeedback();
154
180
  setState((prev) => ({
155
181
  ...prev,
156
182
  isLoading: true,
157
- error: null,
158
183
  }));
159
184
  try {
160
185
  const pluginId = `${name}@${marketplace}`;
161
186
  await pluginCore.uninstallPlugin(pluginId);
162
187
  await refresh();
188
+ setSuccessMessage(`Plugin '${name}' uninstalled successfully`);
163
189
  }
164
190
  catch (error) {
165
191
  setState((prev) => ({
@@ -168,17 +194,18 @@ export function usePluginManager() {
168
194
  error: error instanceof Error ? error.message : String(error),
169
195
  }));
170
196
  }
171
- }, [pluginCore, refresh]);
197
+ }, [pluginCore, refresh, clearPluginFeedback, setSuccessMessage]);
172
198
  const updatePlugin = useCallback(async (name, marketplace) => {
199
+ clearPluginFeedback();
173
200
  setState((prev) => ({
174
201
  ...prev,
175
202
  isLoading: true,
176
- error: null,
177
203
  }));
178
204
  try {
179
205
  const pluginId = `${name}@${marketplace}`;
180
206
  await pluginCore.updatePlugin(pluginId);
181
207
  await refresh();
208
+ setSuccessMessage(`Plugin '${name}' updated successfully`);
182
209
  }
183
210
  catch (error) {
184
211
  setState((prev) => ({
@@ -187,7 +214,7 @@ export function usePluginManager() {
187
214
  error: error instanceof Error ? error.message : String(error),
188
215
  }));
189
216
  }
190
- }, [pluginCore, refresh]);
217
+ }, [pluginCore, refresh, clearPluginFeedback, setSuccessMessage]);
191
218
  return {
192
219
  state,
193
220
  marketplaces,
@@ -203,6 +230,7 @@ export function usePluginManager() {
203
230
  uninstallPlugin,
204
231
  updatePlugin,
205
232
  refresh,
233
+ clearPluginFeedback,
206
234
  },
207
235
  };
208
236
  }
@@ -1,5 +1,5 @@
1
1
  import { useChat } from "../contexts/useChat.js";
2
2
  export const useTasks = () => {
3
- const { sessionTasks } = useChat();
4
- return sessionTasks;
3
+ const { tasks } = useChat();
4
+ return tasks;
5
5
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,wBAAsB,IAAI,kBAmRzB;AAGD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGpC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAG3C,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAeA,wBAAsB,IAAI,kBAqUzB;AAGD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGpC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAG3C,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -1,9 +1,19 @@
1
1
  import yargs from "yargs";
2
2
  import { hideBin } from "yargs/helpers";
3
3
  import { startCli } from "./cli.js";
4
+ import { generateRandomName } from "wave-agent-sdk";
5
+ import { createWorktree } from "./utils/worktree.js";
6
+ import path from "path";
7
+ import { readFileSync } from "fs";
8
+ import { fileURLToPath } from "url";
9
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
10
+ const packageJsonPath = path.resolve(__dirname, "../package.json");
11
+ const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
12
+ const version = packageJson.version;
4
13
  // Export main function for external use
5
14
  export async function main() {
6
15
  try {
16
+ const originalCwd = process.cwd();
7
17
  const argv = await yargs(hideBin(process.argv))
8
18
  .option("restore", {
9
19
  alias: "r",
@@ -16,6 +26,12 @@ export async function main() {
16
26
  description: "Continue from last session",
17
27
  type: "boolean",
18
28
  global: false,
29
+ })
30
+ .option("worktree", {
31
+ alias: "w",
32
+ description: "Start session in a git worktree (optional name)",
33
+ type: "string",
34
+ global: false,
19
35
  })
20
36
  .option("print", {
21
37
  alias: "p",
@@ -44,6 +60,11 @@ export async function main() {
44
60
  description: 'Specify a comma-separated list of tools to enable (e.g., \'Bash,Read,Write\'). Use "" to disable all, "default" for all.',
45
61
  type: "string",
46
62
  global: false,
63
+ })
64
+ .option("model", {
65
+ description: "Specify the AI model to use",
66
+ type: "string",
67
+ global: false,
47
68
  })
48
69
  .command("plugin", "Manage plugins and marketplaces", (yargs) => {
49
70
  return yargs
@@ -149,13 +170,29 @@ export async function main() {
149
170
  return tools.split(",").map((t) => t.trim());
150
171
  };
151
172
  const tools = parseTools(argv.tools);
173
+ // Resolve plugin directories to absolute paths before any worktree logic
174
+ const pluginDirs = argv.pluginDir?.map((dir) => path.resolve(originalCwd, dir));
175
+ let worktreeSession;
176
+ if (argv.worktree !== undefined ||
177
+ process.argv.includes("-w") ||
178
+ process.argv.includes("--worktree")) {
179
+ let name = argv.worktree;
180
+ if (!name || name === "") {
181
+ name = generateRandomName();
182
+ }
183
+ worktreeSession = createWorktree(name, originalCwd);
184
+ }
185
+ const workdir = worktreeSession?.path || originalCwd;
186
+ if (worktreeSession) {
187
+ process.chdir(workdir);
188
+ }
152
189
  // Handle restore session command
153
190
  if (argv.restore === "" ||
154
191
  (process.argv.includes("-r") && argv.restore === undefined) ||
155
192
  (process.argv.includes("--restore") && argv.restore === undefined)) {
156
193
  // Interactive session selection
157
194
  const { startSessionSelectorCli } = await import("./session-selector-cli.js");
158
- const selectedSessionId = await startSessionSelectorCli();
195
+ const selectedSessionId = await startSessionSelectorCli({ workdir });
159
196
  if (!selectedSessionId) {
160
197
  return;
161
198
  }
@@ -163,8 +200,12 @@ export async function main() {
163
200
  return startCli({
164
201
  restoreSessionId: selectedSessionId,
165
202
  bypassPermissions: argv.dangerouslySkipPermissions,
166
- pluginDirs: argv.pluginDir,
203
+ pluginDirs,
167
204
  tools,
205
+ worktreeSession,
206
+ workdir,
207
+ version,
208
+ model: argv.model,
168
209
  });
169
210
  }
170
211
  // Handle print mode directly
@@ -176,16 +217,24 @@ export async function main() {
176
217
  message: argv.print,
177
218
  showStats: argv.showStats,
178
219
  bypassPermissions: argv.dangerouslySkipPermissions,
179
- pluginDirs: argv.pluginDir,
220
+ pluginDirs,
180
221
  tools,
222
+ worktreeSession,
223
+ workdir,
224
+ version,
225
+ model: argv.model,
181
226
  });
182
227
  }
183
228
  await startCli({
184
229
  restoreSessionId: argv.restore,
185
230
  continueLastSession: argv.continue,
186
231
  bypassPermissions: argv.dangerouslySkipPermissions,
187
- pluginDirs: argv.pluginDir,
232
+ pluginDirs,
188
233
  tools,
234
+ worktreeSession,
235
+ workdir,
236
+ version,
237
+ model: argv.model,
189
238
  });
190
239
  }
191
240
  catch (error) {
@@ -16,6 +16,7 @@ export interface InputManagerCallbacks {
16
16
  onMcpManagerStateChange?: (show: boolean) => void;
17
17
  onRewindManagerStateChange?: (show: boolean) => void;
18
18
  onHelpStateChange?: (show: boolean) => void;
19
+ onStatusCommandStateChange?: (show: boolean) => void;
19
20
  onImagesStateChange?: (images: AttachedImage[]) => void;
20
21
  onSendMessage?: (content: string, images?: Array<{
21
22
  path: string;
@@ -23,6 +24,7 @@ export interface InputManagerCallbacks {
23
24
  }>) => void | Promise<void>;
24
25
  onHasSlashCommand?: (commandId: string) => boolean;
25
26
  onAbortMessage?: () => void;
27
+ onClearMessages?: () => void;
26
28
  onBackgroundCurrentTask?: () => void;
27
29
  onResetHistoryNavigation?: () => void;
28
30
  onPermissionModeChange?: (mode: PermissionMode) => void;
@@ -53,6 +55,7 @@ export declare class InputManager {
53
55
  private showMcpManager;
54
56
  private showRewindManager;
55
57
  private showHelp;
58
+ private showStatusCommand;
56
59
  private permissionMode;
57
60
  private selectorJustUsed;
58
61
  private callbacks;
@@ -122,7 +125,10 @@ export declare class InputManager {
122
125
  setShowRewindManager(show: boolean): void;
123
126
  getShowHelp(): boolean;
124
127
  setShowHelp(show: boolean): void;
128
+ getShowStatusCommand(): boolean;
129
+ setShowStatusCommand(show: boolean): void;
125
130
  getPermissionMode(): PermissionMode;
131
+ isAnySelectorOrManagerActive(): boolean;
126
132
  setPermissionMode(mode: PermissionMode): void;
127
133
  cyclePermissionMode(): void;
128
134
  handleSubmit(attachedImages: Array<{
@@ -1 +1 @@
1
- {"version":3,"file":"InputManager.d.ts","sourceRoot":"","sources":["../../src/managers/InputManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"InputManager.d.ts","sourceRoot":"","sources":["../../src/managers/InputManager.ts"],"names":[],"mappings":"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"}