wave-code 0.15.8 → 0.16.1
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/components/InputBox.d.ts.map +1 -1
- package/dist/components/InputBox.js +7 -1
- package/dist/components/LoginCommand.d.ts +6 -0
- package/dist/components/LoginCommand.d.ts.map +1 -0
- package/dist/components/LoginCommand.js +102 -0
- package/dist/constants/commands.d.ts.map +1 -1
- package/dist/constants/commands.js +12 -0
- package/dist/hooks/useInputManager.d.ts +2 -0
- package/dist/hooks/useInputManager.d.ts.map +1 -1
- package/dist/hooks/useInputManager.js +11 -0
- package/dist/managers/inputReducer.d.ts +4 -0
- package/dist/managers/inputReducer.d.ts.map +1 -1
- package/dist/managers/inputReducer.js +8 -0
- package/package.json +2 -2
- package/src/components/InputBox.tsx +9 -0
- package/src/components/LoginCommand.tsx +205 -0
- package/src/constants/commands.ts +12 -0
- package/src/hooks/useInputManager.ts +10 -0
- package/src/managers/inputReducer.ts +10 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputBox.d.ts","sourceRoot":"","sources":["../../src/components/InputBox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"InputBox.d.ts","sourceRoot":"","sources":["../../src/components/InputBox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAmBzC,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEpE,eAAO,MAAM,sBAAsB,mDACe,CAAC;AAEnD,eAAO,MAAM,6BAA6B,QAGzC,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,CACZ,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,EAClD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KACjC,IAAI,CAAC;IACV,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAE1B,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;IAC/B,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5D,mBAAmB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAE/D,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;IAC/B,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;CAClD;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA4R5C,CAAC"}
|
|
@@ -10,6 +10,7 @@ import { McpManager } from "./McpManager.js";
|
|
|
10
10
|
import { RewindCommand } from "./RewindCommand.js";
|
|
11
11
|
import { HelpView } from "./HelpView.js";
|
|
12
12
|
import { StatusCommand } from "./StatusCommand.js";
|
|
13
|
+
import { LoginCommand } from "./LoginCommand.js";
|
|
13
14
|
import { PluginManagerShell } from "./PluginManagerShell.js";
|
|
14
15
|
import { ModelSelector } from "./ModelSelector.js";
|
|
15
16
|
import { StatusLine } from "./StatusLine.js";
|
|
@@ -31,7 +32,7 @@ export const InputBox = ({ sendMessage = () => { }, abortMessage = () => { }, mc
|
|
|
31
32
|
// History search
|
|
32
33
|
showHistorySearch, historySearchQuery,
|
|
33
34
|
// Task/MCP Manager
|
|
34
|
-
showBackgroundTaskManager, showMcpManager, showRewindManager, showHelp, showStatusCommand, showPluginManager, showModelSelector, setShowBackgroundTaskManager, setShowMcpManager, setShowRewindManager, setShowHelp, setShowStatusCommand, setShowPluginManager, setShowModelSelector,
|
|
35
|
+
showBackgroundTaskManager, showMcpManager, showRewindManager, showHelp, showStatusCommand, showLoginCommand, showPluginManager, showModelSelector, setShowBackgroundTaskManager, setShowMcpManager, setShowRewindManager, setShowHelp, setShowStatusCommand, setShowLoginCommand, setShowPluginManager, setShowModelSelector,
|
|
35
36
|
// Permission mode
|
|
36
37
|
permissionMode, setPermissionMode,
|
|
37
38
|
// BTW state
|
|
@@ -62,6 +63,7 @@ export const InputBox = ({ sendMessage = () => { }, abortMessage = () => { }, mc
|
|
|
62
63
|
if (showRewindManager ||
|
|
63
64
|
showHelp ||
|
|
64
65
|
showStatusCommand ||
|
|
66
|
+
showLoginCommand ||
|
|
65
67
|
showPluginManager ||
|
|
66
68
|
showModelSelector ||
|
|
67
69
|
showBackgroundTaskManager ||
|
|
@@ -105,6 +107,9 @@ export const InputBox = ({ sendMessage = () => { }, abortMessage = () => { }, mc
|
|
|
105
107
|
if (showStatusCommand) {
|
|
106
108
|
return _jsx(StatusCommand, { onCancel: () => setShowStatusCommand(false) });
|
|
107
109
|
}
|
|
110
|
+
if (showLoginCommand) {
|
|
111
|
+
return _jsx(LoginCommand, { onCancel: () => setShowLoginCommand(false) });
|
|
112
|
+
}
|
|
108
113
|
if (showPluginManager) {
|
|
109
114
|
return (_jsx(PluginManagerShell, { onCancel: () => setShowPluginManager(false), onPluginInstalled: recreateAgent }));
|
|
110
115
|
}
|
|
@@ -116,5 +121,6 @@ export const InputBox = ({ sendMessage = () => { }, abortMessage = () => { }, mc
|
|
|
116
121
|
showRewindManager ||
|
|
117
122
|
showHelp ||
|
|
118
123
|
showStatusCommand ||
|
|
124
|
+
showLoginCommand ||
|
|
119
125
|
showPluginManager || (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { borderStyle: "single", borderColor: btwState.isActive ? "cyan" : "gray", borderLeft: false, borderRight: false, children: _jsx(Text, { color: isPlaceholder ? "gray" : "white", children: btwState.isActive && isPlaceholder ? (_jsxs(_Fragment, { children: [_jsx(Text, { backgroundColor: "white", color: "black", children: " " }), _jsx(Text, { color: "cyan", children: "Type your side question..." })] })) : shouldShowCursor ? (_jsxs(_Fragment, { children: [beforeCursor, _jsx(Text, { backgroundColor: "white", color: "black", children: atCursor }), afterCursor] })) : (displayText) }) }), _jsx(StatusLine, { permissionMode: permissionMode, isShellCommand: isShellCommand, isBtwActive: btwState.isActive })] }))] }));
|
|
120
126
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoginCommand.d.ts","sourceRoot":"","sources":["../../src/components/LoginCommand.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAIhD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAoMpD,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useRef, useState } from "react";
|
|
3
|
+
import { Box, Text, useInput } from "ink";
|
|
4
|
+
import { authService } from "wave-agent-sdk";
|
|
5
|
+
export const LoginCommand = ({ onCancel }) => {
|
|
6
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
7
|
+
const [message, setMessage] = useState("");
|
|
8
|
+
const [error, setError] = useState("");
|
|
9
|
+
const [authUrl, setAuthUrl] = useState("");
|
|
10
|
+
const [tokenInput, setTokenInput] = useState("");
|
|
11
|
+
const isLoadingRef = useRef(isLoading);
|
|
12
|
+
isLoadingRef.current = isLoading;
|
|
13
|
+
// Resolve/reject refs for the token promise
|
|
14
|
+
const tokenResolveRef = useRef(null);
|
|
15
|
+
const tokenRejectRef = useRef(null);
|
|
16
|
+
// Pre-loading input: Enter starts login, Esc cancels
|
|
17
|
+
useInput((_, key) => {
|
|
18
|
+
if (key.escape) {
|
|
19
|
+
onCancel();
|
|
20
|
+
}
|
|
21
|
+
if (key.return && !isLoadingRef.current) {
|
|
22
|
+
handleEnter();
|
|
23
|
+
}
|
|
24
|
+
}, { isActive: !isLoading });
|
|
25
|
+
// Token input: capture keystrokes while loading
|
|
26
|
+
useInput((input, key) => {
|
|
27
|
+
if (key.escape) {
|
|
28
|
+
tokenRejectRef.current?.(new Error("cancelled"));
|
|
29
|
+
onCancel();
|
|
30
|
+
}
|
|
31
|
+
if (key.return) {
|
|
32
|
+
// Submit token
|
|
33
|
+
const trimmed = tokenInput.trim();
|
|
34
|
+
if (trimmed) {
|
|
35
|
+
tokenResolveRef.current?.(trimmed);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
// Empty: just clear, keep waiting
|
|
39
|
+
setTokenInput("");
|
|
40
|
+
}
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
// Backspace
|
|
44
|
+
if (key.backspace && tokenInput.length > 0) {
|
|
45
|
+
setTokenInput((prev) => prev.slice(0, -1));
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
// Regular character input (single or pasted multi-char)
|
|
49
|
+
if (input && !key.ctrl && !key.meta && !key.return && input.length > 0) {
|
|
50
|
+
setTokenInput((prev) => prev + input);
|
|
51
|
+
}
|
|
52
|
+
}, { isActive: isLoading });
|
|
53
|
+
const handleEnter = async () => {
|
|
54
|
+
if (isLoadingRef.current)
|
|
55
|
+
return;
|
|
56
|
+
const isAuthenticated = authService.isSSOAuthenticated();
|
|
57
|
+
if (isAuthenticated) {
|
|
58
|
+
authService.clearAuth();
|
|
59
|
+
setMessage("Logged out successfully");
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
setIsLoading(true);
|
|
63
|
+
setError("");
|
|
64
|
+
setAuthUrl("");
|
|
65
|
+
setTokenInput("");
|
|
66
|
+
setMessage("Starting authentication...");
|
|
67
|
+
// Promise that resolves when user presses Enter with token input
|
|
68
|
+
const readToken = () => new Promise((resolve, reject) => {
|
|
69
|
+
tokenResolveRef.current = resolve;
|
|
70
|
+
tokenRejectRef.current = reject;
|
|
71
|
+
});
|
|
72
|
+
try {
|
|
73
|
+
await authService.login({
|
|
74
|
+
onAuthUrl: (url) => {
|
|
75
|
+
setAuthUrl(url);
|
|
76
|
+
setMessage("Paste the authorization code from your browser URL bar:");
|
|
77
|
+
},
|
|
78
|
+
readToken,
|
|
79
|
+
});
|
|
80
|
+
setMessage("Login successful");
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
const errMessage = err.message;
|
|
84
|
+
if (errMessage !== "cancelled") {
|
|
85
|
+
setError(errMessage);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
finally {
|
|
89
|
+
tokenResolveRef.current = null;
|
|
90
|
+
tokenRejectRef.current = null;
|
|
91
|
+
setTokenInput("");
|
|
92
|
+
setIsLoading(false);
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
const isAuthenticated = authService.isSSOAuthenticated();
|
|
96
|
+
const token = authService.getSSOToken();
|
|
97
|
+
const adminUrl = process.env.WAVE_ADMIN_URL;
|
|
98
|
+
const truncatedToken = token && token.length > 14
|
|
99
|
+
? `${token.substring(0, 10)}...${token.substring(token.length - 4)}`
|
|
100
|
+
: (token ?? "");
|
|
101
|
+
return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", borderLeft: false, borderRight: false, paddingX: 1, children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "cyan", bold: true, underline: true, children: "SSO Authentication" }) }), error && (_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "red", children: error }) })), message && !error && (_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: isLoading ? "yellow" : "green", children: [isLoading ? "⌛ " : "", message] }) })), authUrl && isLoading && (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { color: "cyan", children: "Open this URL in your browser:" }), _jsx(Text, { color: "white", children: authUrl })] })), isLoading && (_jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { color: "cyan", children: "Code: " }), _jsx(Text, { color: "white", children: tokenInput || "..." })] })), !isAuthenticated && !isLoading && (_jsxs(_Fragment, { children: [_jsxs(Box, { children: [_jsx(Text, { color: "yellow", children: "Status:" }), _jsx(Text, { color: "white", children: " Not logged in" })] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Press Enter to login" }) })] })), isAuthenticated && !isLoading && !message && (_jsxs(_Fragment, { children: [_jsxs(Box, { children: [_jsx(Text, { color: "yellow", children: "Status:" }), _jsx(Text, { color: "green", children: " Authenticated" })] }), _jsxs(Box, { children: [_jsx(Text, { color: "yellow", children: "Token:" }), _jsxs(Text, { color: "white", children: [" ", truncatedToken] })] }), adminUrl && (_jsxs(Box, { children: [_jsx(Text, { color: "yellow", children: "Admin URL:" }), _jsxs(Text, { color: "white", children: [" ", adminUrl] })] })), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Press Enter to logout" }) })] })), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Esc to cancel" }) })] }));
|
|
102
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/constants/commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,eAAO,MAAM,kBAAkB,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/constants/commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,eAAO,MAAM,kBAAkB,EAAE,YAAY,EA8D5C,CAAC"}
|
|
@@ -47,4 +47,16 @@ export const AVAILABLE_COMMANDS = [
|
|
|
47
47
|
description: "Switch between configured AI models",
|
|
48
48
|
handler: () => { }, // Handler here won't be used, actual processing is in the hook
|
|
49
49
|
},
|
|
50
|
+
{
|
|
51
|
+
id: "login",
|
|
52
|
+
name: "login",
|
|
53
|
+
description: "Authenticate via SSO",
|
|
54
|
+
handler: () => { }, // Handler here won't be used, actual processing is in the hook
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
id: "logout",
|
|
58
|
+
name: "logout",
|
|
59
|
+
description: "Clear SSO authentication",
|
|
60
|
+
handler: () => { }, // Handler here won't be used, actual processing is in the hook
|
|
61
|
+
},
|
|
50
62
|
];
|
|
@@ -19,6 +19,7 @@ export declare const useInputManager: (callbacks?: Partial<InputManagerCallbacks
|
|
|
19
19
|
showRewindManager: boolean;
|
|
20
20
|
showHelp: boolean;
|
|
21
21
|
showStatusCommand: boolean;
|
|
22
|
+
showLoginCommand: boolean;
|
|
22
23
|
showPluginManager: boolean;
|
|
23
24
|
showModelSelector: boolean;
|
|
24
25
|
permissionMode: PermissionMode;
|
|
@@ -49,6 +50,7 @@ export declare const useInputManager: (callbacks?: Partial<InputManagerCallbacks
|
|
|
49
50
|
setShowRewindManager: (show: boolean) => void;
|
|
50
51
|
setShowHelp: (show: boolean) => void;
|
|
51
52
|
setShowStatusCommand: (show: boolean) => void;
|
|
53
|
+
setShowLoginCommand: (show: boolean) => void;
|
|
52
54
|
setShowPluginManager: (show: boolean) => void;
|
|
53
55
|
setShowModelSelector: (show: boolean) => void;
|
|
54
56
|
setPermissionMode: (mode: PermissionMode) => 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,EAEZ,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,EAEZ,MAAM,gBAAgB,CAAC;AAGxB,eAAO,MAAM,eAAe,GAC1B,YAAW,OAAO,CAAC,qBAAqB,CAAM;;;;;;;;;;;;;;;;;;;;;;;;;+BAkVA,MAAM;;;;;qCAoBA,MAAM;iCAIV,MAAM;;mCAQJ,MAAM;oCAK1C,MAAM;wCAQmC,MAAM;mCAIX,MAAM;mCAIN,MAAM;;sCAQH,MAAM;uCAK7C,MAAM;uCAMkC,WAAW;;iCASxD,MAAM;yCAcyC,OAAO;8BAIlB,OAAO;iCAIJ,OAAO;wBAIhB,OAAO;iCAIE,OAAO;gCAIR,OAAO;iCAIN,OAAO;iCAIP,OAAO;8BAK9C,cAAc;2BAQX,OAAO,CAAC,OAAO,6BAA6B,EAAE,QAAQ,CAAC;0BAM1B,MAAM,YAAY,MAAM;2BAIvB,MAAM;;;8BAatC,MAAM;;uCAyBP,MAAM;;yBAYJ,MAAM,OACR,GAAG,mBACS,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,gBACxD,MAAM,IAAI;yBAhHY,MAAM;kCAIG,MAAM;;CA0NxD,CAAC"}
|
|
@@ -159,6 +159,12 @@ export const useInputManager = (callbacks = {}) => {
|
|
|
159
159
|
else if (command === "status") {
|
|
160
160
|
dispatch({ type: "SET_SHOW_STATUS_COMMAND", payload: true });
|
|
161
161
|
}
|
|
162
|
+
else if (command === "login") {
|
|
163
|
+
dispatch({ type: "SET_SHOW_LOGIN_COMMAND", payload: true });
|
|
164
|
+
}
|
|
165
|
+
else if (command === "logout") {
|
|
166
|
+
dispatch({ type: "SET_SHOW_LOGIN_COMMAND", payload: true });
|
|
167
|
+
}
|
|
162
168
|
else if (command === "plugin") {
|
|
163
169
|
dispatch({ type: "SET_SHOW_PLUGIN_MANAGER", payload: true });
|
|
164
170
|
}
|
|
@@ -354,6 +360,9 @@ export const useInputManager = (callbacks = {}) => {
|
|
|
354
360
|
const setShowStatusCommand = useCallback((show) => {
|
|
355
361
|
dispatch({ type: "SET_SHOW_STATUS_COMMAND", payload: show });
|
|
356
362
|
}, []);
|
|
363
|
+
const setShowLoginCommand = useCallback((show) => {
|
|
364
|
+
dispatch({ type: "SET_SHOW_LOGIN_COMMAND", payload: show });
|
|
365
|
+
}, []);
|
|
357
366
|
const setShowPluginManager = useCallback((show) => {
|
|
358
367
|
dispatch({ type: "SET_SHOW_PLUGIN_MANAGER", payload: show });
|
|
359
368
|
}, []);
|
|
@@ -439,6 +448,7 @@ export const useInputManager = (callbacks = {}) => {
|
|
|
439
448
|
showRewindManager: state.showRewindManager,
|
|
440
449
|
showHelp: state.showHelp,
|
|
441
450
|
showStatusCommand: state.showStatusCommand,
|
|
451
|
+
showLoginCommand: state.showLoginCommand,
|
|
442
452
|
showPluginManager: state.showPluginManager,
|
|
443
453
|
showModelSelector: state.showModelSelector,
|
|
444
454
|
permissionMode: state.permissionMode,
|
|
@@ -475,6 +485,7 @@ export const useInputManager = (callbacks = {}) => {
|
|
|
475
485
|
setShowRewindManager,
|
|
476
486
|
setShowHelp,
|
|
477
487
|
setShowStatusCommand,
|
|
488
|
+
setShowLoginCommand,
|
|
478
489
|
setShowPluginManager,
|
|
479
490
|
setShowModelSelector,
|
|
480
491
|
setPermissionMode,
|
|
@@ -89,6 +89,7 @@ export interface InputState {
|
|
|
89
89
|
showRewindManager: boolean;
|
|
90
90
|
showHelp: boolean;
|
|
91
91
|
showStatusCommand: boolean;
|
|
92
|
+
showLoginCommand: boolean;
|
|
92
93
|
showPluginManager: boolean;
|
|
93
94
|
showModelSelector: boolean;
|
|
94
95
|
permissionMode: PermissionMode;
|
|
@@ -171,6 +172,9 @@ export type InputAction = {
|
|
|
171
172
|
} | {
|
|
172
173
|
type: "SET_SHOW_STATUS_COMMAND";
|
|
173
174
|
payload: boolean;
|
|
175
|
+
} | {
|
|
176
|
+
type: "SET_SHOW_LOGIN_COMMAND";
|
|
177
|
+
payload: boolean;
|
|
174
178
|
} | {
|
|
175
179
|
type: "SET_SHOW_PLUGIN_MANAGER";
|
|
176
180
|
payload: boolean;
|
|
@@ -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,6 +20,7 @@ export const initialState = {
|
|
|
20
20
|
showRewindManager: false,
|
|
21
21
|
showHelp: false,
|
|
22
22
|
showStatusCommand: false,
|
|
23
|
+
showLoginCommand: false,
|
|
23
24
|
showPluginManager: false,
|
|
24
25
|
showModelSelector: false,
|
|
25
26
|
permissionMode: "default",
|
|
@@ -195,6 +196,12 @@ export function inputReducer(state, action) {
|
|
|
195
196
|
showStatusCommand: action.payload,
|
|
196
197
|
selectorJustUsed: !action.payload ? true : state.selectorJustUsed,
|
|
197
198
|
};
|
|
199
|
+
case "SET_SHOW_LOGIN_COMMAND":
|
|
200
|
+
return {
|
|
201
|
+
...state,
|
|
202
|
+
showLoginCommand: action.payload,
|
|
203
|
+
selectorJustUsed: !action.payload ? true : state.selectorJustUsed,
|
|
204
|
+
};
|
|
198
205
|
case "SET_SHOW_PLUGIN_MANAGER":
|
|
199
206
|
return {
|
|
200
207
|
...state,
|
|
@@ -531,6 +538,7 @@ export function inputReducer(state, action) {
|
|
|
531
538
|
state.showRewindManager ||
|
|
532
539
|
state.showHelp ||
|
|
533
540
|
state.showStatusCommand ||
|
|
541
|
+
state.showLoginCommand ||
|
|
534
542
|
state.showPluginManager ||
|
|
535
543
|
state.showModelSelector)) {
|
|
536
544
|
return { ...state, pendingEffect: { type: "ABORT_MESSAGE" } };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wave-code",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.1",
|
|
4
4
|
"description": "CLI-based code assistant powered by AI, built with React and Ink",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"semver": "^7.7.4",
|
|
43
43
|
"yargs": "^17.7.2",
|
|
44
44
|
"zod": "^3.23.8",
|
|
45
|
-
"wave-agent-sdk": "0.
|
|
45
|
+
"wave-agent-sdk": "0.16.1"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
48
|
"@types/react": "^19.1.8",
|
|
@@ -9,6 +9,7 @@ import { McpManager } from "./McpManager.js";
|
|
|
9
9
|
import { RewindCommand } from "./RewindCommand.js";
|
|
10
10
|
import { HelpView } from "./HelpView.js";
|
|
11
11
|
import { StatusCommand } from "./StatusCommand.js";
|
|
12
|
+
import { LoginCommand } from "./LoginCommand.js";
|
|
12
13
|
import { PluginManagerShell } from "./PluginManagerShell.js";
|
|
13
14
|
import { ModelSelector } from "./ModelSelector.js";
|
|
14
15
|
import { StatusLine } from "./StatusLine.js";
|
|
@@ -101,6 +102,7 @@ export const InputBox: React.FC<InputBoxProps> = ({
|
|
|
101
102
|
showRewindManager,
|
|
102
103
|
showHelp,
|
|
103
104
|
showStatusCommand,
|
|
105
|
+
showLoginCommand,
|
|
104
106
|
showPluginManager,
|
|
105
107
|
showModelSelector,
|
|
106
108
|
setShowBackgroundTaskManager,
|
|
@@ -108,6 +110,7 @@ export const InputBox: React.FC<InputBoxProps> = ({
|
|
|
108
110
|
setShowRewindManager,
|
|
109
111
|
setShowHelp,
|
|
110
112
|
setShowStatusCommand,
|
|
113
|
+
setShowLoginCommand,
|
|
111
114
|
setShowPluginManager,
|
|
112
115
|
setShowModelSelector,
|
|
113
116
|
// Permission mode
|
|
@@ -145,6 +148,7 @@ export const InputBox: React.FC<InputBoxProps> = ({
|
|
|
145
148
|
showRewindManager ||
|
|
146
149
|
showHelp ||
|
|
147
150
|
showStatusCommand ||
|
|
151
|
+
showLoginCommand ||
|
|
148
152
|
showPluginManager ||
|
|
149
153
|
showModelSelector ||
|
|
150
154
|
showBackgroundTaskManager ||
|
|
@@ -212,6 +216,10 @@ export const InputBox: React.FC<InputBoxProps> = ({
|
|
|
212
216
|
return <StatusCommand onCancel={() => setShowStatusCommand(false)} />;
|
|
213
217
|
}
|
|
214
218
|
|
|
219
|
+
if (showLoginCommand) {
|
|
220
|
+
return <LoginCommand onCancel={() => setShowLoginCommand(false)} />;
|
|
221
|
+
}
|
|
222
|
+
|
|
215
223
|
if (showPluginManager) {
|
|
216
224
|
return (
|
|
217
225
|
<PluginManagerShell
|
|
@@ -283,6 +291,7 @@ export const InputBox: React.FC<InputBoxProps> = ({
|
|
|
283
291
|
showRewindManager ||
|
|
284
292
|
showHelp ||
|
|
285
293
|
showStatusCommand ||
|
|
294
|
+
showLoginCommand ||
|
|
286
295
|
showPluginManager || (
|
|
287
296
|
<Box flexDirection="column">
|
|
288
297
|
<Box
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import React, { useRef, useState } from "react";
|
|
2
|
+
import { Box, Text, useInput } from "ink";
|
|
3
|
+
import { authService } from "wave-agent-sdk";
|
|
4
|
+
|
|
5
|
+
export interface LoginCommandProps {
|
|
6
|
+
onCancel: () => void;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export const LoginCommand: React.FC<LoginCommandProps> = ({ onCancel }) => {
|
|
10
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
11
|
+
const [message, setMessage] = useState("");
|
|
12
|
+
const [error, setError] = useState("");
|
|
13
|
+
const [authUrl, setAuthUrl] = useState("");
|
|
14
|
+
const [tokenInput, setTokenInput] = useState("");
|
|
15
|
+
|
|
16
|
+
const isLoadingRef = useRef(isLoading);
|
|
17
|
+
isLoadingRef.current = isLoading;
|
|
18
|
+
|
|
19
|
+
// Resolve/reject refs for the token promise
|
|
20
|
+
const tokenResolveRef = useRef<((token: string) => void) | null>(null);
|
|
21
|
+
const tokenRejectRef = useRef<((err: Error) => void) | null>(null);
|
|
22
|
+
|
|
23
|
+
// Pre-loading input: Enter starts login, Esc cancels
|
|
24
|
+
useInput(
|
|
25
|
+
(_, key) => {
|
|
26
|
+
if (key.escape) {
|
|
27
|
+
onCancel();
|
|
28
|
+
}
|
|
29
|
+
if (key.return && !isLoadingRef.current) {
|
|
30
|
+
handleEnter();
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
{ isActive: !isLoading },
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
// Token input: capture keystrokes while loading
|
|
37
|
+
useInput(
|
|
38
|
+
(input, key) => {
|
|
39
|
+
if (key.escape) {
|
|
40
|
+
tokenRejectRef.current?.(new Error("cancelled"));
|
|
41
|
+
onCancel();
|
|
42
|
+
}
|
|
43
|
+
if (key.return) {
|
|
44
|
+
// Submit token
|
|
45
|
+
const trimmed = tokenInput.trim();
|
|
46
|
+
if (trimmed) {
|
|
47
|
+
tokenResolveRef.current?.(trimmed);
|
|
48
|
+
} else {
|
|
49
|
+
// Empty: just clear, keep waiting
|
|
50
|
+
setTokenInput("");
|
|
51
|
+
}
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
// Backspace
|
|
55
|
+
if (key.backspace && tokenInput.length > 0) {
|
|
56
|
+
setTokenInput((prev) => prev.slice(0, -1));
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
// Regular character input (single or pasted multi-char)
|
|
60
|
+
if (input && !key.ctrl && !key.meta && !key.return && input.length > 0) {
|
|
61
|
+
setTokenInput((prev) => prev + input);
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
{ isActive: isLoading },
|
|
65
|
+
);
|
|
66
|
+
|
|
67
|
+
const handleEnter = async () => {
|
|
68
|
+
if (isLoadingRef.current) return;
|
|
69
|
+
|
|
70
|
+
const isAuthenticated = authService.isSSOAuthenticated();
|
|
71
|
+
if (isAuthenticated) {
|
|
72
|
+
authService.clearAuth();
|
|
73
|
+
setMessage("Logged out successfully");
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
setIsLoading(true);
|
|
78
|
+
setError("");
|
|
79
|
+
setAuthUrl("");
|
|
80
|
+
setTokenInput("");
|
|
81
|
+
setMessage("Starting authentication...");
|
|
82
|
+
|
|
83
|
+
// Promise that resolves when user presses Enter with token input
|
|
84
|
+
const readToken = (): Promise<string> =>
|
|
85
|
+
new Promise((resolve, reject) => {
|
|
86
|
+
tokenResolveRef.current = resolve;
|
|
87
|
+
tokenRejectRef.current = reject;
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
try {
|
|
91
|
+
await authService.login({
|
|
92
|
+
onAuthUrl: (url: string) => {
|
|
93
|
+
setAuthUrl(url);
|
|
94
|
+
setMessage("Paste the authorization code from your browser URL bar:");
|
|
95
|
+
},
|
|
96
|
+
readToken,
|
|
97
|
+
});
|
|
98
|
+
setMessage("Login successful");
|
|
99
|
+
} catch (err) {
|
|
100
|
+
const errMessage = (err as Error).message;
|
|
101
|
+
if (errMessage !== "cancelled") {
|
|
102
|
+
setError(errMessage);
|
|
103
|
+
}
|
|
104
|
+
} finally {
|
|
105
|
+
tokenResolveRef.current = null;
|
|
106
|
+
tokenRejectRef.current = null;
|
|
107
|
+
setTokenInput("");
|
|
108
|
+
setIsLoading(false);
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
const isAuthenticated = authService.isSSOAuthenticated();
|
|
113
|
+
const token = authService.getSSOToken();
|
|
114
|
+
const adminUrl = process.env.WAVE_ADMIN_URL;
|
|
115
|
+
|
|
116
|
+
const truncatedToken =
|
|
117
|
+
token && token.length > 14
|
|
118
|
+
? `${token.substring(0, 10)}...${token.substring(token.length - 4)}`
|
|
119
|
+
: (token ?? "");
|
|
120
|
+
|
|
121
|
+
return (
|
|
122
|
+
<Box
|
|
123
|
+
flexDirection="column"
|
|
124
|
+
borderStyle="round"
|
|
125
|
+
borderColor="cyan"
|
|
126
|
+
borderLeft={false}
|
|
127
|
+
borderRight={false}
|
|
128
|
+
paddingX={1}
|
|
129
|
+
>
|
|
130
|
+
<Box marginBottom={1}>
|
|
131
|
+
<Text color="cyan" bold underline>
|
|
132
|
+
SSO Authentication
|
|
133
|
+
</Text>
|
|
134
|
+
</Box>
|
|
135
|
+
|
|
136
|
+
{error && (
|
|
137
|
+
<Box marginBottom={1}>
|
|
138
|
+
<Text color="red">{error}</Text>
|
|
139
|
+
</Box>
|
|
140
|
+
)}
|
|
141
|
+
|
|
142
|
+
{message && !error && (
|
|
143
|
+
<Box marginBottom={1}>
|
|
144
|
+
<Text color={isLoading ? "yellow" : "green"}>
|
|
145
|
+
{isLoading ? "⌛ " : ""}
|
|
146
|
+
{message}
|
|
147
|
+
</Text>
|
|
148
|
+
</Box>
|
|
149
|
+
)}
|
|
150
|
+
|
|
151
|
+
{authUrl && isLoading && (
|
|
152
|
+
<Box flexDirection="column" marginBottom={1}>
|
|
153
|
+
<Text color="cyan">Open this URL in your browser:</Text>
|
|
154
|
+
<Text color="white">{authUrl}</Text>
|
|
155
|
+
</Box>
|
|
156
|
+
)}
|
|
157
|
+
|
|
158
|
+
{/* Authorization code input field */}
|
|
159
|
+
{isLoading && (
|
|
160
|
+
<Box marginBottom={1}>
|
|
161
|
+
<Text color="cyan">Code: </Text>
|
|
162
|
+
<Text color="white">{tokenInput || "..."}</Text>
|
|
163
|
+
</Box>
|
|
164
|
+
)}
|
|
165
|
+
|
|
166
|
+
{!isAuthenticated && !isLoading && (
|
|
167
|
+
<>
|
|
168
|
+
<Box>
|
|
169
|
+
<Text color="yellow">Status:</Text>
|
|
170
|
+
<Text color="white"> Not logged in</Text>
|
|
171
|
+
</Box>
|
|
172
|
+
<Box marginTop={1}>
|
|
173
|
+
<Text dimColor>Press Enter to login</Text>
|
|
174
|
+
</Box>
|
|
175
|
+
</>
|
|
176
|
+
)}
|
|
177
|
+
|
|
178
|
+
{isAuthenticated && !isLoading && !message && (
|
|
179
|
+
<>
|
|
180
|
+
<Box>
|
|
181
|
+
<Text color="yellow">Status:</Text>
|
|
182
|
+
<Text color="green"> Authenticated</Text>
|
|
183
|
+
</Box>
|
|
184
|
+
<Box>
|
|
185
|
+
<Text color="yellow">Token:</Text>
|
|
186
|
+
<Text color="white"> {truncatedToken}</Text>
|
|
187
|
+
</Box>
|
|
188
|
+
{adminUrl && (
|
|
189
|
+
<Box>
|
|
190
|
+
<Text color="yellow">Admin URL:</Text>
|
|
191
|
+
<Text color="white"> {adminUrl}</Text>
|
|
192
|
+
</Box>
|
|
193
|
+
)}
|
|
194
|
+
<Box marginTop={1}>
|
|
195
|
+
<Text dimColor>Press Enter to logout</Text>
|
|
196
|
+
</Box>
|
|
197
|
+
</>
|
|
198
|
+
)}
|
|
199
|
+
|
|
200
|
+
<Box marginTop={1}>
|
|
201
|
+
<Text dimColor>Esc to cancel</Text>
|
|
202
|
+
</Box>
|
|
203
|
+
</Box>
|
|
204
|
+
);
|
|
205
|
+
};
|
|
@@ -50,4 +50,16 @@ export const AVAILABLE_COMMANDS: SlashCommand[] = [
|
|
|
50
50
|
description: "Switch between configured AI models",
|
|
51
51
|
handler: () => {}, // Handler here won't be used, actual processing is in the hook
|
|
52
52
|
},
|
|
53
|
+
{
|
|
54
|
+
id: "login",
|
|
55
|
+
name: "login",
|
|
56
|
+
description: "Authenticate via SSO",
|
|
57
|
+
handler: () => {}, // Handler here won't be used, actual processing is in the hook
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
id: "logout",
|
|
61
|
+
name: "logout",
|
|
62
|
+
description: "Clear SSO authentication",
|
|
63
|
+
handler: () => {}, // Handler here won't be used, actual processing is in the hook
|
|
64
|
+
},
|
|
53
65
|
];
|
|
@@ -209,6 +209,10 @@ export const useInputManager = (
|
|
|
209
209
|
dispatch({ type: "SET_SHOW_HELP", payload: true });
|
|
210
210
|
} else if (command === "status") {
|
|
211
211
|
dispatch({ type: "SET_SHOW_STATUS_COMMAND", payload: true });
|
|
212
|
+
} else if (command === "login") {
|
|
213
|
+
dispatch({ type: "SET_SHOW_LOGIN_COMMAND", payload: true });
|
|
214
|
+
} else if (command === "logout") {
|
|
215
|
+
dispatch({ type: "SET_SHOW_LOGIN_COMMAND", payload: true });
|
|
212
216
|
} else if (command === "plugin") {
|
|
213
217
|
dispatch({ type: "SET_SHOW_PLUGIN_MANAGER", payload: true });
|
|
214
218
|
} else if (command === "model") {
|
|
@@ -463,6 +467,10 @@ export const useInputManager = (
|
|
|
463
467
|
dispatch({ type: "SET_SHOW_STATUS_COMMAND", payload: show });
|
|
464
468
|
}, []);
|
|
465
469
|
|
|
470
|
+
const setShowLoginCommand = useCallback((show: boolean) => {
|
|
471
|
+
dispatch({ type: "SET_SHOW_LOGIN_COMMAND", payload: show });
|
|
472
|
+
}, []);
|
|
473
|
+
|
|
466
474
|
const setShowPluginManager = useCallback((show: boolean) => {
|
|
467
475
|
dispatch({ type: "SET_SHOW_PLUGIN_MANAGER", payload: show });
|
|
468
476
|
}, []);
|
|
@@ -582,6 +590,7 @@ export const useInputManager = (
|
|
|
582
590
|
showRewindManager: state.showRewindManager,
|
|
583
591
|
showHelp: state.showHelp,
|
|
584
592
|
showStatusCommand: state.showStatusCommand,
|
|
593
|
+
showLoginCommand: state.showLoginCommand,
|
|
585
594
|
showPluginManager: state.showPluginManager,
|
|
586
595
|
showModelSelector: state.showModelSelector,
|
|
587
596
|
permissionMode: state.permissionMode,
|
|
@@ -624,6 +633,7 @@ export const useInputManager = (
|
|
|
624
633
|
setShowRewindManager,
|
|
625
634
|
setShowHelp,
|
|
626
635
|
setShowStatusCommand,
|
|
636
|
+
setShowLoginCommand,
|
|
627
637
|
setShowPluginManager,
|
|
628
638
|
setShowModelSelector,
|
|
629
639
|
setPermissionMode,
|
|
@@ -105,6 +105,7 @@ export interface InputState {
|
|
|
105
105
|
showRewindManager: boolean;
|
|
106
106
|
showHelp: boolean;
|
|
107
107
|
showStatusCommand: boolean;
|
|
108
|
+
showLoginCommand: boolean;
|
|
108
109
|
showPluginManager: boolean;
|
|
109
110
|
showModelSelector: boolean;
|
|
110
111
|
permissionMode: PermissionMode;
|
|
@@ -142,6 +143,7 @@ export const initialState: InputState = {
|
|
|
142
143
|
showRewindManager: false,
|
|
143
144
|
showHelp: false,
|
|
144
145
|
showStatusCommand: false,
|
|
146
|
+
showLoginCommand: false,
|
|
145
147
|
showPluginManager: false,
|
|
146
148
|
showModelSelector: false,
|
|
147
149
|
permissionMode: "default",
|
|
@@ -186,6 +188,7 @@ export type InputAction =
|
|
|
186
188
|
| { type: "SET_SHOW_REWIND_MANAGER"; payload: boolean }
|
|
187
189
|
| { type: "SET_SHOW_HELP"; payload: boolean }
|
|
188
190
|
| { type: "SET_SHOW_STATUS_COMMAND"; payload: boolean }
|
|
191
|
+
| { type: "SET_SHOW_LOGIN_COMMAND"; payload: boolean }
|
|
189
192
|
| { type: "SET_SHOW_PLUGIN_MANAGER"; payload: boolean }
|
|
190
193
|
| { type: "SET_SHOW_MODEL_SELECTOR"; payload: boolean }
|
|
191
194
|
| { type: "SET_PERMISSION_MODE"; payload: PermissionMode }
|
|
@@ -392,6 +395,12 @@ export function inputReducer(
|
|
|
392
395
|
showStatusCommand: action.payload,
|
|
393
396
|
selectorJustUsed: !action.payload ? true : state.selectorJustUsed,
|
|
394
397
|
};
|
|
398
|
+
case "SET_SHOW_LOGIN_COMMAND":
|
|
399
|
+
return {
|
|
400
|
+
...state,
|
|
401
|
+
showLoginCommand: action.payload,
|
|
402
|
+
selectorJustUsed: !action.payload ? true : state.selectorJustUsed,
|
|
403
|
+
};
|
|
395
404
|
case "SET_SHOW_PLUGIN_MANAGER":
|
|
396
405
|
return {
|
|
397
406
|
...state,
|
|
@@ -749,6 +758,7 @@ export function inputReducer(
|
|
|
749
758
|
state.showRewindManager ||
|
|
750
759
|
state.showHelp ||
|
|
751
760
|
state.showStatusCommand ||
|
|
761
|
+
state.showLoginCommand ||
|
|
752
762
|
state.showPluginManager ||
|
|
753
763
|
state.showModelSelector
|
|
754
764
|
)
|