wave-code 0.11.6 → 0.12.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.
- package/dist/acp/agent.d.ts.map +1 -1
- package/dist/acp/agent.js +9 -0
- package/dist/commands/update.d.ts +2 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +97 -0
- package/dist/components/App.js +1 -1
- package/dist/components/BtwDisplay.d.ts +8 -0
- package/dist/components/BtwDisplay.d.ts.map +1 -0
- package/dist/components/BtwDisplay.js +9 -0
- package/dist/components/ChatInterface.d.ts.map +1 -1
- package/dist/components/ChatInterface.js +3 -5
- package/dist/components/ConfirmationDetails.d.ts.map +1 -1
- package/dist/components/ConfirmationDetails.js +7 -1
- package/dist/components/InputBox.d.ts.map +1 -1
- package/dist/components/InputBox.js +18 -4
- package/dist/components/MessageBlockItem.d.ts.map +1 -1
- package/dist/components/MessageBlockItem.js +2 -1
- package/dist/components/MessageList.d.ts +1 -2
- package/dist/components/MessageList.d.ts.map +1 -1
- package/dist/components/MessageList.js +9 -6
- package/dist/components/ModelSelector.d.ts +9 -0
- package/dist/components/ModelSelector.d.ts.map +1 -0
- package/dist/components/ModelSelector.js +34 -0
- package/dist/components/RewindCommand.js +2 -2
- package/dist/components/SlashDisplay.d.ts +9 -0
- package/dist/components/SlashDisplay.d.ts.map +1 -0
- package/dist/components/SlashDisplay.js +20 -0
- package/dist/components/StatusLine.d.ts +8 -0
- package/dist/components/StatusLine.d.ts.map +1 -0
- package/dist/components/StatusLine.js +5 -0
- package/dist/constants/commands.d.ts.map +1 -1
- package/dist/constants/commands.js +12 -0
- package/dist/contexts/useChat.d.ts +8 -0
- package/dist/contexts/useChat.d.ts.map +1 -1
- package/dist/contexts/useChat.js +61 -1
- package/dist/hooks/useInputManager.d.ts +5 -0
- package/dist/hooks/useInputManager.d.ts.map +1 -1
- package/dist/hooks/useInputManager.js +58 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/managers/inputHandlers.d.ts +1 -1
- package/dist/managers/inputHandlers.d.ts.map +1 -1
- package/dist/managers/inputHandlers.js +74 -5
- package/dist/managers/inputReducer.d.ts +22 -0
- package/dist/managers/inputReducer.d.ts.map +1 -1
- package/dist/managers/inputReducer.js +23 -0
- package/dist/utils/version.d.ts +2 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/dist/utils/version.js +4 -0
- package/package.json +4 -2
- package/src/acp/agent.ts +10 -0
- package/src/commands/update.ts +116 -0
- package/src/components/App.tsx +1 -1
- package/src/components/BtwDisplay.tsx +33 -0
- package/src/components/ChatInterface.tsx +25 -29
- package/src/components/ConfirmationDetails.tsx +14 -0
- package/src/components/InputBox.tsx +47 -17
- package/src/components/MessageBlockItem.tsx +5 -5
- package/src/components/MessageList.tsx +9 -10
- package/src/components/ModelSelector.tsx +109 -0
- package/src/components/RewindCommand.tsx +2 -2
- package/src/components/SlashDisplay.tsx +70 -0
- package/src/components/StatusLine.tsx +36 -0
- package/src/constants/commands.ts +12 -0
- package/src/contexts/useChat.tsx +82 -1
- package/src/hooks/useInputManager.ts +69 -0
- package/src/index.ts +9 -0
- package/src/managers/inputHandlers.ts +92 -4
- package/src/managers/inputReducer.ts +41 -1
- package/src/utils/version.ts +8 -0
package/dist/contexts/useChat.js
CHANGED
|
@@ -31,6 +31,8 @@ export const ChatProvider = ({ children, bypassPermissions, permissionMode: init
|
|
|
31
31
|
const [sessionId, setSessionId] = useState("");
|
|
32
32
|
const [isCommandRunning, setIsCommandRunning] = useState(false);
|
|
33
33
|
const [isCompressing, setIsCompressing] = useState(false);
|
|
34
|
+
const [currentModel, setCurrentModelState] = useState("");
|
|
35
|
+
const [configuredModels, setConfiguredModels] = useState([]);
|
|
34
36
|
// MCP State
|
|
35
37
|
const [mcpServers, setMcpServers] = useState([]);
|
|
36
38
|
// Background tasks state
|
|
@@ -54,8 +56,24 @@ export const ChatProvider = ({ children, bypassPermissions, permissionMode: init
|
|
|
54
56
|
const [rewindId, setRewindId] = useState(0);
|
|
55
57
|
// Status metadata state
|
|
56
58
|
const [workingDirectory, setWorkingDirectory] = useState("");
|
|
59
|
+
// /btw state
|
|
60
|
+
const [btwState, setBtwStateInternal] = useState({
|
|
61
|
+
isActive: false,
|
|
62
|
+
question: "",
|
|
63
|
+
isLoading: false,
|
|
64
|
+
});
|
|
65
|
+
const setBtwState = useCallback((payload) => {
|
|
66
|
+
setBtwStateInternal((prev) => {
|
|
67
|
+
const newState = { ...prev, ...payload };
|
|
68
|
+
if (process.env.NODE_ENV === "test") {
|
|
69
|
+
// console.log("setBtwState", newState);
|
|
70
|
+
}
|
|
71
|
+
return newState;
|
|
72
|
+
});
|
|
73
|
+
}, []);
|
|
57
74
|
// Confirmation too tall state
|
|
58
75
|
const [wasLastDetailsTooTall, setWasLastDetailsTooTall] = useState(0);
|
|
76
|
+
const allowBypassInCycle = !!bypassPermissions || initialPermissionMode === "bypassPermissions";
|
|
59
77
|
const agentRef = useRef(null);
|
|
60
78
|
const taskUpdateTimerRef = useRef(null);
|
|
61
79
|
const debouncedSetTasks = useCallback((newTasks) => {
|
|
@@ -126,6 +144,12 @@ export const ChatProvider = ({ children, bypassPermissions, permissionMode: init
|
|
|
126
144
|
onPermissionModeChange: (mode) => {
|
|
127
145
|
setPermissionModeState(mode);
|
|
128
146
|
},
|
|
147
|
+
onModelChange: (model) => {
|
|
148
|
+
setCurrentModelState(model);
|
|
149
|
+
},
|
|
150
|
+
onConfiguredModelsChange: (models) => {
|
|
151
|
+
setConfiguredModels(models);
|
|
152
|
+
},
|
|
129
153
|
};
|
|
130
154
|
try {
|
|
131
155
|
// Create the permission callback inside the try block to access showConfirmation
|
|
@@ -171,6 +195,8 @@ export const ChatProvider = ({ children, bypassPermissions, permissionMode: init
|
|
|
171
195
|
setIsCompressing(agent.isCompressing);
|
|
172
196
|
setPermissionModeState(agent.getPermissionMode());
|
|
173
197
|
setWorkingDirectory(agent.workingDirectory);
|
|
198
|
+
setCurrentModelState(agent.getModelConfig().model);
|
|
199
|
+
setConfiguredModels(agent.getConfiguredModels());
|
|
174
200
|
// Get initial MCP servers state
|
|
175
201
|
const mcpServers = agent.getMcpServers?.() || [];
|
|
176
202
|
setMcpServers(mcpServers);
|
|
@@ -267,6 +293,12 @@ export const ChatProvider = ({ children, bypassPermissions, permissionMode: init
|
|
|
267
293
|
// Loading state will be automatically updated by the useEffect that watches messages
|
|
268
294
|
}
|
|
269
295
|
}, [isLoading, isCommandRunning]);
|
|
296
|
+
const askBtw = useCallback(async (question) => {
|
|
297
|
+
if (!agentRef.current) {
|
|
298
|
+
throw new Error("Agent not initialized");
|
|
299
|
+
}
|
|
300
|
+
return await agentRef.current.askBtw(question);
|
|
301
|
+
}, []);
|
|
270
302
|
// Process queued messages when idle
|
|
271
303
|
useEffect(() => {
|
|
272
304
|
if (!isLoading && !isCommandRunning && queuedMessages.length > 0) {
|
|
@@ -384,6 +416,18 @@ export const ChatProvider = ({ children, bypassPermissions, permissionMode: init
|
|
|
384
416
|
}
|
|
385
417
|
return agentRef.current.getModelConfig();
|
|
386
418
|
}, []);
|
|
419
|
+
const getConfiguredModels = useCallback(() => {
|
|
420
|
+
if (!agentRef.current) {
|
|
421
|
+
return [];
|
|
422
|
+
}
|
|
423
|
+
return agentRef.current.getConfiguredModels();
|
|
424
|
+
}, []);
|
|
425
|
+
const setModel = useCallback((model) => {
|
|
426
|
+
if (agentRef.current) {
|
|
427
|
+
agentRef.current.setModel(model);
|
|
428
|
+
setCurrentModelState(model);
|
|
429
|
+
}
|
|
430
|
+
}, []);
|
|
387
431
|
// Listen for Ctrl+O hotkey to toggle collapse/expand state and ESC to cancel confirmation
|
|
388
432
|
useInput((input, key) => {
|
|
389
433
|
if (key.ctrl && input === "o") {
|
|
@@ -413,11 +457,19 @@ export const ChatProvider = ({ children, bypassPermissions, permissionMode: init
|
|
|
413
457
|
if (key.ctrl && input === "t") {
|
|
414
458
|
setIsTaskListVisible((prev) => !prev);
|
|
415
459
|
}
|
|
416
|
-
// Handle ESC key to cancel confirmation
|
|
460
|
+
// Handle ESC key to cancel confirmation or dismiss BTW
|
|
417
461
|
if (key.escape) {
|
|
418
462
|
if (isConfirmationVisible) {
|
|
419
463
|
handleConfirmationCancel();
|
|
420
464
|
}
|
|
465
|
+
else if (btwState.isActive) {
|
|
466
|
+
setBtwState({
|
|
467
|
+
isActive: false,
|
|
468
|
+
question: "",
|
|
469
|
+
answer: undefined,
|
|
470
|
+
isLoading: false,
|
|
471
|
+
});
|
|
472
|
+
}
|
|
421
473
|
}
|
|
422
474
|
});
|
|
423
475
|
const contextValue = {
|
|
@@ -430,8 +482,13 @@ export const ChatProvider = ({ children, bypassPermissions, permissionMode: init
|
|
|
430
482
|
queuedMessages,
|
|
431
483
|
sessionId,
|
|
432
484
|
sendMessage,
|
|
485
|
+
askBtw,
|
|
433
486
|
abortMessage,
|
|
434
487
|
latestTotalTokens,
|
|
488
|
+
currentModel,
|
|
489
|
+
configuredModels,
|
|
490
|
+
getConfiguredModels,
|
|
491
|
+
setModel,
|
|
435
492
|
isCompressing,
|
|
436
493
|
mcpServers,
|
|
437
494
|
connectMcpServer,
|
|
@@ -446,6 +503,7 @@ export const ChatProvider = ({ children, bypassPermissions, permissionMode: init
|
|
|
446
503
|
subagentLatestTokens,
|
|
447
504
|
permissionMode,
|
|
448
505
|
setPermissionMode,
|
|
506
|
+
allowBypassInCycle,
|
|
449
507
|
isConfirmationVisible,
|
|
450
508
|
confirmingTool,
|
|
451
509
|
showConfirmation,
|
|
@@ -463,6 +521,8 @@ export const ChatProvider = ({ children, bypassPermissions, permissionMode: init
|
|
|
463
521
|
workingDirectory,
|
|
464
522
|
version,
|
|
465
523
|
workdir,
|
|
524
|
+
btwState,
|
|
525
|
+
setBtwState,
|
|
466
526
|
};
|
|
467
527
|
return (_jsx(ChatContext.Provider, { value: contextValue, children: children }));
|
|
468
528
|
};
|
|
@@ -20,8 +20,10 @@ export declare const useInputManager: (callbacks?: Partial<InputManagerCallbacks
|
|
|
20
20
|
showHelp: boolean;
|
|
21
21
|
showStatusCommand: boolean;
|
|
22
22
|
showPluginManager: boolean;
|
|
23
|
+
showModelSelector: boolean;
|
|
23
24
|
permissionMode: PermissionMode;
|
|
24
25
|
attachedImages: import("../managers/inputReducer.js").AttachedImage[];
|
|
26
|
+
btwState: import("../managers/inputReducer.js").BtwState;
|
|
25
27
|
isManagerReady: boolean;
|
|
26
28
|
insertTextAtCursor: (text: string) => void;
|
|
27
29
|
deleteCharAtCursor: () => void;
|
|
@@ -57,7 +59,10 @@ export declare const useInputManager: (callbacks?: Partial<InputManagerCallbacks
|
|
|
57
59
|
setShowHelp: (show: boolean) => void;
|
|
58
60
|
setShowStatusCommand: (show: boolean) => void;
|
|
59
61
|
setShowPluginManager: (show: boolean) => void;
|
|
62
|
+
setShowModelSelector: (show: boolean) => void;
|
|
60
63
|
setPermissionMode: (mode: PermissionMode) => void;
|
|
64
|
+
setAllowBypassInCycle: (allow: boolean) => void;
|
|
65
|
+
setBtwState: (payload: Partial<import("../managers/inputReducer.js").BtwState>) => void;
|
|
61
66
|
addImage: (imagePath: string, mimeType: string) => void;
|
|
62
67
|
removeImage: (imageId: number) => void;
|
|
63
68
|
clearImages: () => 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,EAGL,qBAAqB,EACtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAEL,cAAc,EACd,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAGxB,eAAO,MAAM,eAAe,GAC1B,YAAW,OAAO,CAAC,qBAAqB,CAAM
|
|
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,EAGL,qBAAqB,EACtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAEL,cAAc,EACd,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAGxB,eAAO,MAAM,eAAe,GAC1B,YAAW,OAAO,CAAC,qBAAqB,CAAM;;;;;;;;;;;;;;;;;;;;;;;;+BA0LA,MAAM;;;;;qCAoBA,MAAM;iCAIV,MAAM;;;;;mCAaJ,MAAM;oCAIL,MAAM;wCAIF,MAAM;mCAIX,MAAM;;;;mCASN,MAAM;;;;;sCAkCH,MAAM;uCAIL,MAAM;uCAQN,WAAW;;iCAQjB,MAAM;yCAYE,OAAO;8BAIlB,OAAO;iCAIJ,OAAO;wBAIhB,OAAO;iCAIE,OAAO;iCAIP,OAAO;iCAIP,OAAO;8BAIV,cAAc;mCAKT,OAAO;2BAK7C,OAAO,CAAC,OAAO,6BAA6B,EAAE,QAAQ,CAAC;0BAU1B,MAAM,YAAY,MAAM;2BAIvB,MAAM;;;8BAYH,MAAM;mCAW/B,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;uCAYnB,MAAM;;yBAajD,MAAM,OACR,GAAG,kBACQ,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,gBACvD,MAAM,IAAI;yBA/GY,MAAM;kCAIG,MAAM;;CAkNxD,CAAC"}
|
|
@@ -100,9 +100,48 @@ export const useInputManager = (callbacks = {}) => {
|
|
|
100
100
|
useEffect(() => {
|
|
101
101
|
callbacksRef.current.onPluginManagerStateChange?.(state.showPluginManager);
|
|
102
102
|
}, [state.showPluginManager]);
|
|
103
|
+
useEffect(() => {
|
|
104
|
+
callbacksRef.current.onModelSelectorStateChange?.(state.showModelSelector);
|
|
105
|
+
}, [state.showModelSelector]);
|
|
103
106
|
useEffect(() => {
|
|
104
107
|
callbacksRef.current.onImagesStateChange?.(state.attachedImages);
|
|
105
108
|
}, [state.attachedImages]);
|
|
109
|
+
useEffect(() => {
|
|
110
|
+
if (callbacksRef.current.onBtwStateChange) {
|
|
111
|
+
callbacksRef.current.onBtwStateChange(state.btwState);
|
|
112
|
+
}
|
|
113
|
+
}, [state.btwState]);
|
|
114
|
+
// Handle /btw side question
|
|
115
|
+
useEffect(() => {
|
|
116
|
+
if (state.btwState.isActive &&
|
|
117
|
+
state.btwState.isLoading &&
|
|
118
|
+
state.btwState.question) {
|
|
119
|
+
const askBtw = async () => {
|
|
120
|
+
try {
|
|
121
|
+
const answer = await callbacksRef.current.onAskBtw?.(state.btwState.question);
|
|
122
|
+
dispatch({
|
|
123
|
+
type: "SET_BTW_STATE",
|
|
124
|
+
payload: { answer, isLoading: false },
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
console.error("Failed to ask side question:", error);
|
|
129
|
+
dispatch({
|
|
130
|
+
type: "SET_BTW_STATE",
|
|
131
|
+
payload: {
|
|
132
|
+
answer: "Error: Failed to get an answer for your side question.",
|
|
133
|
+
isLoading: false,
|
|
134
|
+
},
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
askBtw();
|
|
139
|
+
}
|
|
140
|
+
}, [
|
|
141
|
+
state.btwState.isActive,
|
|
142
|
+
state.btwState.isLoading,
|
|
143
|
+
state.btwState.question,
|
|
144
|
+
]);
|
|
106
145
|
// Methods
|
|
107
146
|
const insertTextAtCursor = useCallback((text) => {
|
|
108
147
|
dispatch({ type: "INSERT_TEXT", payload: text });
|
|
@@ -202,10 +241,24 @@ export const useInputManager = (callbacks = {}) => {
|
|
|
202
241
|
const setShowPluginManager = useCallback((show) => {
|
|
203
242
|
dispatch({ type: "SET_SHOW_PLUGIN_MANAGER", payload: show });
|
|
204
243
|
}, []);
|
|
244
|
+
const setShowModelSelector = useCallback((show) => {
|
|
245
|
+
dispatch({ type: "SET_SHOW_MODEL_SELECTOR", payload: show });
|
|
246
|
+
}, []);
|
|
205
247
|
const setPermissionMode = useCallback((mode) => {
|
|
206
248
|
dispatch({ type: "SET_PERMISSION_MODE", payload: mode });
|
|
207
249
|
callbacksRef.current.onPermissionModeChange?.(mode);
|
|
208
250
|
}, []);
|
|
251
|
+
const setAllowBypassInCycle = useCallback((allow) => {
|
|
252
|
+
dispatch({ type: "SET_ALLOW_BYPASS_IN_CYCLE", payload: allow });
|
|
253
|
+
}, []);
|
|
254
|
+
const setBtwState = useCallback((payload) => {
|
|
255
|
+
if (callbacksRef.current.onBtwStateChange) {
|
|
256
|
+
callbacksRef.current.onBtwStateChange(payload);
|
|
257
|
+
}
|
|
258
|
+
else {
|
|
259
|
+
dispatch({ type: "SET_BTW_STATE", payload });
|
|
260
|
+
}
|
|
261
|
+
}, []);
|
|
209
262
|
const addImage = useCallback((imagePath, mimeType) => {
|
|
210
263
|
dispatch({ type: "ADD_IMAGE", payload: { path: imagePath, mimeType } });
|
|
211
264
|
}, []);
|
|
@@ -253,8 +306,10 @@ export const useInputManager = (callbacks = {}) => {
|
|
|
253
306
|
showHelp: state.showHelp,
|
|
254
307
|
showStatusCommand: state.showStatusCommand,
|
|
255
308
|
showPluginManager: state.showPluginManager,
|
|
309
|
+
showModelSelector: state.showModelSelector,
|
|
256
310
|
permissionMode: state.permissionMode,
|
|
257
311
|
attachedImages: state.attachedImages,
|
|
312
|
+
btwState: state.btwState,
|
|
258
313
|
isManagerReady: true,
|
|
259
314
|
// Methods
|
|
260
315
|
insertTextAtCursor,
|
|
@@ -287,7 +342,10 @@ export const useInputManager = (callbacks = {}) => {
|
|
|
287
342
|
setShowHelp,
|
|
288
343
|
setShowStatusCommand,
|
|
289
344
|
setShowPluginManager,
|
|
345
|
+
setShowModelSelector,
|
|
290
346
|
setPermissionMode,
|
|
347
|
+
setAllowBypassInCycle,
|
|
348
|
+
setBtwState,
|
|
291
349
|
// Image management
|
|
292
350
|
addImage,
|
|
293
351
|
removeImage,
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAeA,wBAAsB,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAeA,wBAAsB,IAAI,kBAoXzB;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
|
@@ -161,6 +161,10 @@ export async function main() {
|
|
|
161
161
|
const { updatePluginCommand } = await import("./commands/plugin/update.js");
|
|
162
162
|
await updatePluginCommand(argv);
|
|
163
163
|
});
|
|
164
|
+
})
|
|
165
|
+
.command("update", "Update WAVE Code to the latest version", {}, async () => {
|
|
166
|
+
const { updateCommand } = await import("./commands/update.js");
|
|
167
|
+
await updateCommand();
|
|
164
168
|
})
|
|
165
169
|
.version()
|
|
166
170
|
.alias("v", "version")
|
|
@@ -8,7 +8,7 @@ export declare const handleSubmit: (state: InputState, dispatch: React.Dispatch<
|
|
|
8
8
|
mimeType: string;
|
|
9
9
|
}>) => Promise<void>;
|
|
10
10
|
export declare const handlePasteImage: (dispatch: React.Dispatch<InputAction>) => Promise<boolean>;
|
|
11
|
-
export declare const cyclePermissionMode: (currentMode: PermissionMode, dispatch: React.Dispatch<InputAction>, callbacks: Partial<InputManagerCallbacks
|
|
11
|
+
export declare const cyclePermissionMode: (currentMode: PermissionMode, dispatch: React.Dispatch<InputAction>, callbacks: Partial<InputManagerCallbacks>, allowBypassInCycle?: boolean) => void;
|
|
12
12
|
export declare const getAtSelectorPosition: (text: string, cursorPosition: number) => number;
|
|
13
13
|
export declare const getSlashSelectorPosition: (text: string, cursorPosition: number) => number;
|
|
14
14
|
export declare const updateSearchQueriesForActiveSelectors: (state: InputState, dispatch: React.Dispatch<InputAction>, inputText: string, cursorPosition: number) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inputHandlers.d.ts","sourceRoot":"","sources":["../../src/managers/inputHandlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAwB,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEtE,OAAO,EACL,UAAU,EACV,WAAW,EACX,qBAAqB,EACtB,MAAM,mBAAmB,CAAC;AAE3B,eAAO,MAAM,0BAA0B,GACrC,MAAM,MAAM,EACZ,aAAa,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAClC,MAcF,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,OAAO,UAAU,EACjB,UAAU,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EACrC,WAAW,OAAO,CAAC,qBAAqB,CAAC,EACzC,yBAAyB,KAAK,CAAC;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,KACD,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"inputHandlers.d.ts","sourceRoot":"","sources":["../../src/managers/inputHandlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,25 @@ export const handleSubmit = async (state, dispatch, callbacks, attachedImagesOve
|
|
|
28
28
|
const contentWithPlaceholders = state.inputText
|
|
29
29
|
.replace(imageRegex, "")
|
|
30
30
|
.trim();
|
|
31
|
+
if (contentWithPlaceholders === "/btw" ||
|
|
32
|
+
contentWithPlaceholders.startsWith("/btw ")) {
|
|
33
|
+
const question = contentWithPlaceholders.startsWith("/btw ")
|
|
34
|
+
? contentWithPlaceholders.substring(5).trim()
|
|
35
|
+
: "";
|
|
36
|
+
const payload = {
|
|
37
|
+
isActive: true,
|
|
38
|
+
question,
|
|
39
|
+
isLoading: question !== "",
|
|
40
|
+
};
|
|
41
|
+
dispatch({
|
|
42
|
+
type: "SET_BTW_STATE",
|
|
43
|
+
payload,
|
|
44
|
+
});
|
|
45
|
+
dispatch({ type: "CLEAR_INPUT" });
|
|
46
|
+
dispatch({ type: "RESET_HISTORY_NAVIGATION" });
|
|
47
|
+
dispatch({ type: "CLEAR_LONG_TEXT_MAP" });
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
31
50
|
PromptHistoryManager.addEntry(contentWithPlaceholders, callbacks.sessionId, state.longTextMap, callbacks.workdir).catch((err) => {
|
|
32
51
|
callbacks.logger?.error("Failed to save prompt history", err);
|
|
33
52
|
});
|
|
@@ -54,8 +73,11 @@ export const handlePasteImage = async (dispatch) => {
|
|
|
54
73
|
return false;
|
|
55
74
|
}
|
|
56
75
|
};
|
|
57
|
-
export const cyclePermissionMode = (currentMode, dispatch, callbacks) => {
|
|
76
|
+
export const cyclePermissionMode = (currentMode, dispatch, callbacks, allowBypassInCycle = false) => {
|
|
58
77
|
const modes = ["default", "acceptEdits", "plan"];
|
|
78
|
+
if (allowBypassInCycle) {
|
|
79
|
+
modes.push("bypassPermissions");
|
|
80
|
+
}
|
|
59
81
|
const currentIndex = modes.indexOf(currentMode);
|
|
60
82
|
const nextIndex = currentIndex === -1 ? 0 : (currentIndex + 1) % modes.length;
|
|
61
83
|
const nextMode = modes[nextIndex];
|
|
@@ -246,6 +268,15 @@ export const handleCommandSelect = (state, dispatch, callbacks, command) => {
|
|
|
246
268
|
else if (command === "plugin") {
|
|
247
269
|
dispatch({ type: "SET_SHOW_PLUGIN_MANAGER", payload: true });
|
|
248
270
|
}
|
|
271
|
+
else if (command === "model") {
|
|
272
|
+
dispatch({ type: "SET_SHOW_MODEL_SELECTOR", payload: true });
|
|
273
|
+
}
|
|
274
|
+
else if (command === "btw") {
|
|
275
|
+
dispatch({
|
|
276
|
+
type: "SET_BTW_STATE",
|
|
277
|
+
payload: { isActive: true, question: "", isLoading: false },
|
|
278
|
+
});
|
|
279
|
+
}
|
|
249
280
|
}
|
|
250
281
|
})();
|
|
251
282
|
dispatch({ type: "CANCEL_COMMAND_SELECTOR" });
|
|
@@ -321,9 +352,11 @@ export const handleSelectorInput = (state, dispatch, callbacks, input, key) => {
|
|
|
321
352
|
if (input === " ") {
|
|
322
353
|
if (state.showFileSelector) {
|
|
323
354
|
dispatch({ type: "CANCEL_FILE_SELECTOR" });
|
|
355
|
+
return false;
|
|
324
356
|
}
|
|
325
357
|
else if (state.showCommandSelector) {
|
|
326
358
|
dispatch({ type: "CANCEL_COMMAND_SELECTOR" });
|
|
359
|
+
return false;
|
|
327
360
|
}
|
|
328
361
|
}
|
|
329
362
|
if (input &&
|
|
@@ -475,6 +508,36 @@ export const handleInput = async (state, dispatch, callbacks, input, key, clearI
|
|
|
475
508
|
if (state.selectorJustUsed) {
|
|
476
509
|
return true;
|
|
477
510
|
}
|
|
511
|
+
if (state.btwState.isActive) {
|
|
512
|
+
if (key.escape) {
|
|
513
|
+
dispatch({
|
|
514
|
+
type: "SET_BTW_STATE",
|
|
515
|
+
payload: {
|
|
516
|
+
isActive: false,
|
|
517
|
+
question: "",
|
|
518
|
+
answer: undefined,
|
|
519
|
+
isLoading: false,
|
|
520
|
+
},
|
|
521
|
+
});
|
|
522
|
+
return true;
|
|
523
|
+
}
|
|
524
|
+
if (key.return) {
|
|
525
|
+
if (state.inputText.trim() && !state.btwState.isLoading) {
|
|
526
|
+
dispatch({
|
|
527
|
+
type: "SET_BTW_STATE",
|
|
528
|
+
payload: {
|
|
529
|
+
question: state.inputText.trim(),
|
|
530
|
+
isLoading: true,
|
|
531
|
+
answer: undefined,
|
|
532
|
+
},
|
|
533
|
+
});
|
|
534
|
+
dispatch({ type: "CLEAR_INPUT" });
|
|
535
|
+
}
|
|
536
|
+
return true;
|
|
537
|
+
}
|
|
538
|
+
// Handle normal input for the question
|
|
539
|
+
return await handleNormalInput(state, dispatch, callbacks, input, key, clearImages);
|
|
540
|
+
}
|
|
478
541
|
if (key.escape) {
|
|
479
542
|
if (!(state.showFileSelector ||
|
|
480
543
|
state.showCommandSelector ||
|
|
@@ -484,13 +547,15 @@ export const handleInput = async (state, dispatch, callbacks, input, key, clearI
|
|
|
484
547
|
state.showRewindManager ||
|
|
485
548
|
state.showHelp ||
|
|
486
549
|
state.showStatusCommand ||
|
|
487
|
-
state.showPluginManager
|
|
550
|
+
state.showPluginManager ||
|
|
551
|
+
state.showModelSelector ||
|
|
552
|
+
state.btwState.isActive)) {
|
|
488
553
|
callbacks.onAbortMessage?.();
|
|
489
554
|
return true;
|
|
490
555
|
}
|
|
491
556
|
}
|
|
492
557
|
if (key.tab && key.shift) {
|
|
493
|
-
cyclePermissionMode(state.permissionMode, dispatch, callbacks);
|
|
558
|
+
cyclePermissionMode(state.permissionMode, dispatch, callbacks, state.allowBypassInCycle);
|
|
494
559
|
return true;
|
|
495
560
|
}
|
|
496
561
|
if (state.showFileSelector ||
|
|
@@ -501,13 +566,17 @@ export const handleInput = async (state, dispatch, callbacks, input, key, clearI
|
|
|
501
566
|
state.showRewindManager ||
|
|
502
567
|
state.showHelp ||
|
|
503
568
|
state.showStatusCommand ||
|
|
504
|
-
state.showPluginManager
|
|
569
|
+
state.showPluginManager ||
|
|
570
|
+
state.showModelSelector ||
|
|
571
|
+
state.btwState.isActive) {
|
|
505
572
|
if (state.showBackgroundTaskManager ||
|
|
506
573
|
state.showMcpManager ||
|
|
507
574
|
state.showRewindManager ||
|
|
508
575
|
state.showHelp ||
|
|
509
576
|
state.showStatusCommand ||
|
|
510
|
-
state.showPluginManager
|
|
577
|
+
state.showPluginManager ||
|
|
578
|
+
state.showModelSelector ||
|
|
579
|
+
state.btwState.isActive) {
|
|
511
580
|
return true;
|
|
512
581
|
}
|
|
513
582
|
if (state.showHistorySearch) {
|
|
@@ -4,6 +4,12 @@ export interface AttachedImage {
|
|
|
4
4
|
path: string;
|
|
5
5
|
mimeType: string;
|
|
6
6
|
}
|
|
7
|
+
export interface BtwState {
|
|
8
|
+
isActive: boolean;
|
|
9
|
+
question: string;
|
|
10
|
+
answer?: string;
|
|
11
|
+
isLoading: boolean;
|
|
12
|
+
}
|
|
7
13
|
export interface InputManagerCallbacks {
|
|
8
14
|
onInputTextChange?: (text: string) => void;
|
|
9
15
|
onCursorPositionChange?: (position: number) => void;
|
|
@@ -16,6 +22,7 @@ export interface InputManagerCallbacks {
|
|
|
16
22
|
onHelpStateChange?: (show: boolean) => void;
|
|
17
23
|
onStatusCommandStateChange?: (show: boolean) => void;
|
|
18
24
|
onPluginManagerStateChange?: (show: boolean) => void;
|
|
25
|
+
onModelSelectorStateChange?: (show: boolean) => void;
|
|
19
26
|
onImagesStateChange?: (images: AttachedImage[]) => void;
|
|
20
27
|
onSendMessage?: (content: string, images?: Array<{
|
|
21
28
|
path: string;
|
|
@@ -25,6 +32,9 @@ export interface InputManagerCallbacks {
|
|
|
25
32
|
onAbortMessage?: () => void;
|
|
26
33
|
onBackgroundCurrentTask?: () => void;
|
|
27
34
|
onPermissionModeChange?: (mode: PermissionMode) => void;
|
|
35
|
+
onAskBtw?: (question: string) => Promise<string>;
|
|
36
|
+
btwState?: BtwState;
|
|
37
|
+
onBtwStateChange?: (payload: Partial<BtwState>) => void;
|
|
28
38
|
sessionId?: string;
|
|
29
39
|
workdir?: string;
|
|
30
40
|
getFullMessageThread?: () => Promise<{
|
|
@@ -55,7 +65,9 @@ export interface InputState {
|
|
|
55
65
|
showHelp: boolean;
|
|
56
66
|
showStatusCommand: boolean;
|
|
57
67
|
showPluginManager: boolean;
|
|
68
|
+
showModelSelector: boolean;
|
|
58
69
|
permissionMode: PermissionMode;
|
|
70
|
+
allowBypassInCycle: boolean;
|
|
59
71
|
selectorJustUsed: boolean;
|
|
60
72
|
isPasting: boolean;
|
|
61
73
|
pasteBuffer: string;
|
|
@@ -65,6 +77,7 @@ export interface InputState {
|
|
|
65
77
|
originalInputText: string;
|
|
66
78
|
originalLongTextMap: Record<string, string>;
|
|
67
79
|
isFileSearching: boolean;
|
|
80
|
+
btwState: BtwState;
|
|
68
81
|
}
|
|
69
82
|
export declare const initialState: InputState;
|
|
70
83
|
export type InputAction = {
|
|
@@ -136,9 +149,15 @@ export type InputAction = {
|
|
|
136
149
|
} | {
|
|
137
150
|
type: "SET_SHOW_PLUGIN_MANAGER";
|
|
138
151
|
payload: boolean;
|
|
152
|
+
} | {
|
|
153
|
+
type: "SET_SHOW_MODEL_SELECTOR";
|
|
154
|
+
payload: boolean;
|
|
139
155
|
} | {
|
|
140
156
|
type: "SET_PERMISSION_MODE";
|
|
141
157
|
payload: PermissionMode;
|
|
158
|
+
} | {
|
|
159
|
+
type: "SET_ALLOW_BYPASS_IN_CYCLE";
|
|
160
|
+
payload: boolean;
|
|
142
161
|
} | {
|
|
143
162
|
type: "SET_SELECTOR_JUST_USED";
|
|
144
163
|
payload: boolean;
|
|
@@ -177,6 +196,9 @@ export type InputAction = {
|
|
|
177
196
|
} | {
|
|
178
197
|
type: "SELECT_HISTORY_ENTRY";
|
|
179
198
|
payload: PromptEntry;
|
|
199
|
+
} | {
|
|
200
|
+
type: "SET_BTW_STATE";
|
|
201
|
+
payload: Partial<BtwState>;
|
|
180
202
|
};
|
|
181
203
|
export declare function inputReducer(state: InputState, action: InputAction): InputState;
|
|
182
204
|
//# sourceMappingURL=inputReducer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inputReducer.d.ts","sourceRoot":"","sources":["../../src/managers/inputReducer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"inputReducer.d.ts","sourceRoot":"","sources":["../../src/managers/inputReducer.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,7 +20,9 @@ export const initialState = {
|
|
|
20
20
|
showHelp: false,
|
|
21
21
|
showStatusCommand: false,
|
|
22
22
|
showPluginManager: false,
|
|
23
|
+
showModelSelector: false,
|
|
23
24
|
permissionMode: "default",
|
|
25
|
+
allowBypassInCycle: false,
|
|
24
26
|
selectorJustUsed: false,
|
|
25
27
|
isPasting: false,
|
|
26
28
|
pasteBuffer: "",
|
|
@@ -30,6 +32,11 @@ export const initialState = {
|
|
|
30
32
|
originalInputText: "",
|
|
31
33
|
originalLongTextMap: {},
|
|
32
34
|
isFileSearching: false,
|
|
35
|
+
btwState: {
|
|
36
|
+
isActive: false,
|
|
37
|
+
question: "",
|
|
38
|
+
isLoading: false,
|
|
39
|
+
},
|
|
33
40
|
};
|
|
34
41
|
export function inputReducer(state, action) {
|
|
35
42
|
switch (action.type) {
|
|
@@ -193,8 +200,16 @@ export function inputReducer(state, action) {
|
|
|
193
200
|
showPluginManager: action.payload,
|
|
194
201
|
selectorJustUsed: !action.payload ? true : state.selectorJustUsed,
|
|
195
202
|
};
|
|
203
|
+
case "SET_SHOW_MODEL_SELECTOR":
|
|
204
|
+
return {
|
|
205
|
+
...state,
|
|
206
|
+
showModelSelector: action.payload,
|
|
207
|
+
selectorJustUsed: !action.payload ? true : state.selectorJustUsed,
|
|
208
|
+
};
|
|
196
209
|
case "SET_PERMISSION_MODE":
|
|
197
210
|
return { ...state, permissionMode: action.payload };
|
|
211
|
+
case "SET_ALLOW_BYPASS_IN_CYCLE":
|
|
212
|
+
return { ...state, allowBypassInCycle: action.payload };
|
|
198
213
|
case "SET_SELECTOR_JUST_USED":
|
|
199
214
|
return { ...state, selectorJustUsed: action.payload };
|
|
200
215
|
case "INSERT_TEXT_WITH_PLACEHOLDER": {
|
|
@@ -335,6 +350,14 @@ export function inputReducer(state, action) {
|
|
|
335
350
|
originalInputText: "",
|
|
336
351
|
originalLongTextMap: {},
|
|
337
352
|
};
|
|
353
|
+
case "SET_BTW_STATE":
|
|
354
|
+
return {
|
|
355
|
+
...state,
|
|
356
|
+
btwState: {
|
|
357
|
+
...state.btwState,
|
|
358
|
+
...action.payload,
|
|
359
|
+
},
|
|
360
|
+
};
|
|
338
361
|
default:
|
|
339
362
|
return state;
|
|
340
363
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/utils/version.ts"],"names":[],"mappings":"AAEA,wBAAgB,iBAAiB,CAC/B,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,GACpB,OAAO,CAET"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wave-code",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"description": "CLI-based code assistant powered by AI, built with React and Ink",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -39,12 +39,14 @@
|
|
|
39
39
|
"node-html-parser": "^7.0.2",
|
|
40
40
|
"react": "^19.2.4",
|
|
41
41
|
"react-dom": "19.2.4",
|
|
42
|
+
"semver": "^7.7.4",
|
|
42
43
|
"yargs": "^17.7.2",
|
|
43
44
|
"zod": "^3.23.8",
|
|
44
|
-
"wave-agent-sdk": "0.
|
|
45
|
+
"wave-agent-sdk": "0.12.0"
|
|
45
46
|
},
|
|
46
47
|
"devDependencies": {
|
|
47
48
|
"@types/react": "^19.1.8",
|
|
49
|
+
"@types/semver": "^7.7.1",
|
|
48
50
|
"@types/yargs": "^17.0.0",
|
|
49
51
|
"@vitest/coverage-v8": "^4.0.18",
|
|
50
52
|
"eslint-plugin-react": "^7.37.5",
|
package/src/acp/agent.ts
CHANGED
|
@@ -669,6 +669,16 @@ export class WaveAcpAgent implements AcpAgent {
|
|
|
669
669
|
},
|
|
670
670
|
});
|
|
671
671
|
}
|
|
672
|
+
|
|
673
|
+
if (contents.length === 0) {
|
|
674
|
+
contents.push({
|
|
675
|
+
type: "content",
|
|
676
|
+
content: {
|
|
677
|
+
type: "text",
|
|
678
|
+
text: "```json\n" + JSON.stringify(parameters, null, 2) + "\n```",
|
|
679
|
+
},
|
|
680
|
+
});
|
|
681
|
+
}
|
|
672
682
|
}
|
|
673
683
|
|
|
674
684
|
if (shortResult) {
|