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.
@@ -1 +1 @@
1
- {"version":3,"file":"InputBox.d.ts","sourceRoot":"","sources":["../../src/components/InputBox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAkBzC,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,CAoR5C,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,6 @@
1
+ import React from "react";
2
+ export interface LoginCommandProps {
3
+ onCancel: () => void;
4
+ }
5
+ export declare const LoginCommand: React.FC<LoginCommandProps>;
6
+ //# sourceMappingURL=LoginCommand.d.ts.map
@@ -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,EAkD5C,CAAC"}
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;;;;;;;;;;;;;;;;;;;;;;;;+BA8UA,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;iCAIP,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;yBA5GY,MAAM;kCAIG,MAAM;;CAoNxD,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,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.15.8",
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.15.8"
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
  )