wave-code 0.0.5 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/README.md +3 -3
  2. package/dist/cli.d.ts +1 -0
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +2 -2
  5. package/dist/components/App.d.ts +1 -0
  6. package/dist/components/App.d.ts.map +1 -1
  7. package/dist/components/App.js +4 -4
  8. package/dist/components/BashHistorySelector.d.ts.map +1 -1
  9. package/dist/components/BashHistorySelector.js +17 -3
  10. package/dist/components/ChatInterface.d.ts.map +1 -1
  11. package/dist/components/ChatInterface.js +6 -24
  12. package/dist/components/CommandSelector.js +4 -4
  13. package/dist/components/Confirmation.d.ts +11 -0
  14. package/dist/components/Confirmation.d.ts.map +1 -0
  15. package/dist/components/Confirmation.js +148 -0
  16. package/dist/components/DiffDisplay.d.ts +8 -0
  17. package/dist/components/DiffDisplay.d.ts.map +1 -0
  18. package/dist/components/DiffDisplay.js +168 -0
  19. package/dist/components/FileSelector.d.ts +2 -4
  20. package/dist/components/FileSelector.d.ts.map +1 -1
  21. package/dist/components/FileSelector.js +2 -2
  22. package/dist/components/InputBox.d.ts.map +1 -1
  23. package/dist/components/InputBox.js +30 -50
  24. package/dist/components/Markdown.d.ts +6 -0
  25. package/dist/components/Markdown.d.ts.map +1 -0
  26. package/dist/components/Markdown.js +22 -0
  27. package/dist/components/MemoryDisplay.js +1 -1
  28. package/dist/components/MessageItem.d.ts +8 -0
  29. package/dist/components/MessageItem.d.ts.map +1 -0
  30. package/dist/components/MessageItem.js +15 -0
  31. package/dist/components/MessageList.d.ts +1 -1
  32. package/dist/components/MessageList.d.ts.map +1 -1
  33. package/dist/components/MessageList.js +33 -33
  34. package/dist/components/ReasoningDisplay.d.ts +8 -0
  35. package/dist/components/ReasoningDisplay.d.ts.map +1 -0
  36. package/dist/components/ReasoningDisplay.js +10 -0
  37. package/dist/components/SubagentBlock.d.ts +0 -1
  38. package/dist/components/SubagentBlock.d.ts.map +1 -1
  39. package/dist/components/SubagentBlock.js +29 -30
  40. package/dist/components/ToolResultDisplay.d.ts.map +1 -1
  41. package/dist/components/ToolResultDisplay.js +6 -5
  42. package/dist/contexts/useChat.d.ts +14 -2
  43. package/dist/contexts/useChat.d.ts.map +1 -1
  44. package/dist/contexts/useChat.js +128 -17
  45. package/dist/hooks/useInputManager.d.ts +6 -1
  46. package/dist/hooks/useInputManager.d.ts.map +1 -1
  47. package/dist/hooks/useInputManager.js +32 -2
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +30 -5
  50. package/dist/managers/InputManager.d.ts +11 -1
  51. package/dist/managers/InputManager.d.ts.map +1 -1
  52. package/dist/managers/InputManager.js +77 -26
  53. package/dist/print-cli.d.ts +2 -0
  54. package/dist/print-cli.d.ts.map +1 -1
  55. package/dist/print-cli.js +121 -23
  56. package/dist/utils/toolParameterTransforms.d.ts +23 -0
  57. package/dist/utils/toolParameterTransforms.d.ts.map +1 -0
  58. package/dist/utils/toolParameterTransforms.js +77 -0
  59. package/dist/utils/usageSummary.d.ts +6 -0
  60. package/dist/utils/usageSummary.d.ts.map +1 -1
  61. package/dist/utils/usageSummary.js +72 -0
  62. package/package.json +13 -8
  63. package/src/cli.tsx +3 -1
  64. package/src/components/App.tsx +7 -3
  65. package/src/components/BashHistorySelector.tsx +26 -3
  66. package/src/components/ChatInterface.tsx +38 -54
  67. package/src/components/CommandSelector.tsx +5 -5
  68. package/src/components/Confirmation.tsx +253 -0
  69. package/src/components/DiffDisplay.tsx +300 -0
  70. package/src/components/FileSelector.tsx +4 -6
  71. package/src/components/InputBox.tsx +58 -87
  72. package/src/components/Markdown.tsx +29 -0
  73. package/src/components/MemoryDisplay.tsx +1 -1
  74. package/src/components/MessageItem.tsx +96 -0
  75. package/src/components/MessageList.tsx +140 -202
  76. package/src/components/ReasoningDisplay.tsx +33 -0
  77. package/src/components/SubagentBlock.tsx +56 -84
  78. package/src/components/ToolResultDisplay.tsx +9 -5
  79. package/src/contexts/useChat.tsx +194 -21
  80. package/src/hooks/useInputManager.ts +40 -3
  81. package/src/index.ts +45 -5
  82. package/src/managers/InputManager.ts +101 -27
  83. package/src/print-cli.ts +143 -21
  84. package/src/utils/toolParameterTransforms.ts +104 -0
  85. package/src/utils/usageSummary.ts +109 -0
  86. package/dist/components/DiffViewer.d.ts +0 -9
  87. package/dist/components/DiffViewer.d.ts.map +0 -1
  88. package/dist/components/DiffViewer.js +0 -221
  89. package/dist/utils/fileSearch.d.ts +0 -20
  90. package/dist/utils/fileSearch.d.ts.map +0 -1
  91. package/dist/utils/fileSearch.js +0 -102
  92. package/src/components/DiffViewer.tsx +0 -321
  93. package/src/utils/fileSearch.ts +0 -133
@@ -2,7 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { createContext, useContext, useCallback, useRef, useEffect, useState, } from "react";
3
3
  import { useInput } from "ink";
4
4
  import { useAppConfig } from "./useAppConfig.js";
5
- import { Agent } from "wave-agent-sdk";
5
+ import { Agent, } from "wave-agent-sdk";
6
6
  import { logger } from "../utils/logger.js";
7
7
  import { displayUsageSummary } from "../utils/usageSummary.js";
8
8
  const ChatContext = createContext(null);
@@ -13,7 +13,7 @@ export const useChat = () => {
13
13
  }
14
14
  return context;
15
15
  };
16
- export const ChatProvider = ({ children }) => {
16
+ export const ChatProvider = ({ children, bypassPermissions, }) => {
17
17
  const { restoreSessionId, continueLastSession } = useAppConfig();
18
18
  // Message Display State
19
19
  const [isExpanded, setIsExpanded] = useState(false);
@@ -31,15 +31,29 @@ export const ChatProvider = ({ children }) => {
31
31
  const [backgroundShells, setBackgroundShells] = useState([]);
32
32
  // Command state
33
33
  const [slashCommands, setSlashCommands] = useState([]);
34
- // Usage tracking state
35
- const [usages, setUsages] = useState([]);
34
+ // Subagent messages state
35
+ const [subagentMessages, setSubagentMessages] = useState({});
36
+ // Permission state
37
+ const [permissionMode, setPermissionModeState] = useState("default");
38
+ // Confirmation state with queue-based architecture
39
+ const [isConfirmationVisible, setIsConfirmationVisible] = useState(false);
40
+ const [confirmingTool, setConfirmingTool] = useState();
41
+ const [confirmationQueue, setConfirmationQueue] = useState([]);
42
+ const [currentConfirmation, setCurrentConfirmation] = useState(null);
36
43
  const agentRef = useRef(null);
37
- // Listen for Ctrl+O hotkey to toggle collapse/expand state
38
- useInput((input, key) => {
39
- if (key.ctrl && input === "o") {
40
- setIsExpanded((prev) => !prev);
41
- }
42
- });
44
+ // Permission confirmation methods with queue support
45
+ const showConfirmation = useCallback(async (toolName, toolInput) => {
46
+ return new Promise((resolve, reject) => {
47
+ const queueItem = {
48
+ toolName,
49
+ toolInput,
50
+ resolver: resolve,
51
+ reject,
52
+ };
53
+ setConfirmationQueue((prev) => [...prev, queueItem]);
54
+ // processNextConfirmation will be called via useEffect
55
+ });
56
+ }, []);
43
57
  // Initialize AI manager
44
58
  useEffect(() => {
45
59
  const initializeAgent = async () => {
@@ -51,7 +65,9 @@ export const ChatProvider = ({ children }) => {
51
65
  setMcpServers([...servers]);
52
66
  },
53
67
  onSessionIdChange: (sessionId) => {
54
- setSessionId(sessionId);
68
+ process.stdout.write("\x1Bc", () => {
69
+ setSessionId(sessionId);
70
+ });
55
71
  },
56
72
  onLatestTotalTokensChange: (tokens) => {
57
73
  setlatestTotalTokens(tokens);
@@ -65,16 +81,41 @@ export const ChatProvider = ({ children }) => {
65
81
  onShellsChange: (shells) => {
66
82
  setBackgroundShells([...shells]);
67
83
  },
68
- onUsagesChange: (newUsages) => {
69
- setUsages([...newUsages]);
84
+ onSubagentMessagesChange: (subagentId, messages) => {
85
+ logger.debug("onSubagentMessagesChange", subagentId, messages.length);
86
+ setSubagentMessages((prev) => ({
87
+ ...prev,
88
+ [subagentId]: [...messages],
89
+ }));
90
+ },
91
+ onPermissionModeChange: (mode) => {
92
+ setPermissionModeState(mode);
70
93
  },
71
94
  };
72
95
  try {
96
+ // Create the permission callback inside the try block to access showConfirmation
97
+ const permissionCallback = bypassPermissions
98
+ ? undefined
99
+ : async (context) => {
100
+ try {
101
+ return await showConfirmation(context.toolName, context.toolInput);
102
+ }
103
+ catch {
104
+ // If confirmation was cancelled or failed, deny the operation
105
+ return {
106
+ behavior: "deny",
107
+ message: "Operation cancelled by user",
108
+ };
109
+ }
110
+ };
73
111
  const agent = await Agent.create({
74
112
  callbacks,
75
113
  restoreSessionId,
76
114
  continueLastSession,
77
115
  logger,
116
+ permissionMode: bypassPermissions ? "bypassPermissions" : undefined,
117
+ canUseTool: permissionCallback,
118
+ stream: false, // 关闭流式模式
78
119
  });
79
120
  agentRef.current = agent;
80
121
  // Get initial state
@@ -85,21 +126,25 @@ export const ChatProvider = ({ children }) => {
85
126
  setIsCommandRunning(agent.isCommandRunning);
86
127
  setIsCompressing(agent.isCompressing);
87
128
  setUserInputHistory(agent.userInputHistory);
129
+ setPermissionModeState(agent.getPermissionMode());
88
130
  // Get initial MCP servers state
89
131
  const mcpServers = agent.getMcpServers?.() || [];
90
132
  setMcpServers(mcpServers);
91
133
  // Get initial commands
92
134
  const agentSlashCommands = agent.getSlashCommands?.() || [];
93
135
  setSlashCommands(agentSlashCommands);
94
- // Get initial usages
95
- setUsages(agent.usages);
96
136
  }
97
137
  catch (error) {
98
138
  console.error("Failed to initialize AI manager:", error);
99
139
  }
100
140
  };
101
141
  initializeAgent();
102
- }, [restoreSessionId, continueLastSession]);
142
+ }, [
143
+ restoreSessionId,
144
+ continueLastSession,
145
+ bypassPermissions,
146
+ showConfirmation,
147
+ ]);
103
148
  // Cleanup on unmount
104
149
  useEffect(() => {
105
150
  return () => {
@@ -177,6 +222,17 @@ export const ChatProvider = ({ children }) => {
177
222
  const saveMemory = useCallback(async (message, type) => {
178
223
  await agentRef.current?.saveMemory(message, type);
179
224
  }, []);
225
+ // Permission management methods
226
+ const setPermissionMode = useCallback((mode) => {
227
+ setPermissionModeState((prev) => {
228
+ if (prev === mode)
229
+ return prev;
230
+ if (agentRef.current && agentRef.current.getPermissionMode() !== mode) {
231
+ agentRef.current.setPermissionMode(mode);
232
+ }
233
+ return mode;
234
+ });
235
+ }, []);
180
236
  // MCP management methods - delegate to Agent
181
237
  const connectMcpServer = useCallback(async (serverName) => {
182
238
  return (await agentRef.current?.connectMcpServer(serverName)) ?? false;
@@ -200,6 +256,53 @@ export const ChatProvider = ({ children }) => {
200
256
  return false;
201
257
  return agentRef.current.hasSlashCommand(commandId);
202
258
  }, []);
259
+ // Queue processing helper
260
+ const processNextConfirmation = useCallback(() => {
261
+ if (confirmationQueue.length > 0 && !isConfirmationVisible) {
262
+ const next = confirmationQueue[0];
263
+ setCurrentConfirmation(next);
264
+ setConfirmingTool({ name: next.toolName, input: next.toolInput });
265
+ setIsConfirmationVisible(true);
266
+ setConfirmationQueue((prev) => prev.slice(1));
267
+ }
268
+ }, [confirmationQueue, isConfirmationVisible]);
269
+ // Process queue when queue changes or confirmation is hidden
270
+ useEffect(() => {
271
+ processNextConfirmation();
272
+ }, [processNextConfirmation]);
273
+ const hideConfirmation = useCallback(() => {
274
+ setIsConfirmationVisible(false);
275
+ setConfirmingTool(undefined);
276
+ setCurrentConfirmation(null);
277
+ }, []);
278
+ const handleConfirmationDecision = useCallback((decision) => {
279
+ if (currentConfirmation) {
280
+ currentConfirmation.resolver(decision);
281
+ }
282
+ hideConfirmation();
283
+ }, [currentConfirmation, hideConfirmation]);
284
+ const handleConfirmationCancel = useCallback(() => {
285
+ if (currentConfirmation) {
286
+ currentConfirmation.reject();
287
+ }
288
+ hideConfirmation();
289
+ }, [currentConfirmation, hideConfirmation]);
290
+ // Listen for Ctrl+O hotkey to toggle collapse/expand state and ESC to cancel confirmation
291
+ useInput((input, key) => {
292
+ if (key.ctrl && input === "o") {
293
+ // Clear terminal screen when expanded state changes
294
+ process.stdout.write("\x1Bc", () => {
295
+ setIsExpanded((prev) => {
296
+ const newExpanded = !prev;
297
+ return newExpanded;
298
+ });
299
+ });
300
+ }
301
+ // Handle ESC key to cancel confirmation
302
+ if (key.escape && isConfirmationVisible) {
303
+ handleConfirmationCancel();
304
+ }
305
+ });
203
306
  const contextValue = {
204
307
  messages,
205
308
  isLoading,
@@ -220,7 +323,15 @@ export const ChatProvider = ({ children }) => {
220
323
  killBackgroundShell,
221
324
  slashCommands,
222
325
  hasSlashCommand,
223
- usages,
326
+ subagentMessages,
327
+ permissionMode,
328
+ setPermissionMode,
329
+ isConfirmationVisible,
330
+ confirmingTool,
331
+ showConfirmation,
332
+ hideConfirmation,
333
+ handleConfirmationDecision,
334
+ handleConfirmationCancel,
224
335
  };
225
336
  return (_jsx(ChatContext.Provider, { value: contextValue, children: children }));
226
337
  };
@@ -1,6 +1,7 @@
1
1
  import { Key } from "ink";
2
2
  import { InputManager, InputManagerCallbacks, AttachedImage } from "../managers/InputManager.js";
3
3
  import { FileItem } from "../components/FileSelector.js";
4
+ import { PermissionMode } from "wave-agent-sdk";
4
5
  export declare const useInputManager: (callbacks?: Partial<InputManagerCallbacks>) => {
5
6
  inputText: string;
6
7
  cursorPosition: number;
@@ -18,7 +19,9 @@ export declare const useInputManager: (callbacks?: Partial<InputManagerCallbacks
18
19
  memoryMessage: string;
19
20
  showBashManager: boolean;
20
21
  showMcpManager: boolean;
22
+ permissionMode: PermissionMode;
21
23
  attachedImages: AttachedImage[];
24
+ isManagerReady: boolean;
22
25
  insertTextAtCursor: (text: string, callback?: (newText: string, newCursorPosition: number) => void) => void;
23
26
  deleteCharAtCursor: (callback?: (newText: string, newCursorPosition: number) => void) => void;
24
27
  clearInput: () => void;
@@ -56,7 +59,7 @@ export declare const useInputManager: (callbacks?: Partial<InputManagerCallbacks
56
59
  handleBashHistoryExecute: (command: string) => string;
57
60
  checkForExclamationDeletion: (cursorPos: number) => boolean;
58
61
  activateMemoryTypeSelector: (message: string) => void;
59
- handleMemoryTypeSelect: (type: "project" | "user") => void;
62
+ handleMemoryTypeSelect: (type: "project" | "user") => Promise<void>;
60
63
  handleCancelMemoryTypeSelect: () => void;
61
64
  setUserInputHistory: (history: string[]) => void;
62
65
  navigateHistory: (direction: "up" | "down", currentInput: string) => {
@@ -67,6 +70,7 @@ export declare const useInputManager: (callbacks?: Partial<InputManagerCallbacks
67
70
  handleSpecialCharInput: (char: string) => void;
68
71
  setShowBashManager: (show: boolean) => void;
69
72
  setShowMcpManager: (show: boolean) => void;
73
+ setPermissionMode: (mode: PermissionMode) => void;
70
74
  addImage: (imagePath: string, mimeType: string) => AttachedImage | undefined;
71
75
  removeImage: (imageId: number) => void;
72
76
  clearImages: () => void;
@@ -79,6 +83,7 @@ export declare const useInputManager: (callbacks?: Partial<InputManagerCallbacks
79
83
  }>, isLoading?: boolean, isCommandRunning?: boolean) => Promise<void>;
80
84
  expandLongTextPlaceholders: (text: string) => string;
81
85
  clearLongTextMap: () => void;
86
+ handleBashHistoryExecuteAndSend: (command: string) => void;
82
87
  handleInput: (input: string, key: Key, attachedImages: Array<{
83
88
  id: number;
84
89
  path: string;
@@ -1 +1 @@
1
- {"version":3,"file":"useInputManager.d.ts","sourceRoot":"","sources":["../../src/hooks/useInputManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,aAAa,EACd,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAEzD,eAAO,MAAM,eAAe,GAC1B,YAAW,OAAO,CAAC,qBAAqB,CAAM;;;;;;;;;;;;;;;;;;+BAsGpC,MAAM,aACD,CAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,KAAK,IAAI;oCAQrD,CAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,KAAK,IAAI;;;;;;qCA2Bd,MAAM;iCAK7C,MAAM;;;;;mCAe+B,MAAM;oCAIL,MAAM;wCAKF,MAAM;mCAKjD,MAAM;;;;mCAYN,MAAM;;;;;sCAemC,MAAM;uCAIL,MAAM;4CAKD,MAAM;uCAKrD,MAAM;;;;;0CAeuC,MAAM;wCAIR,MAAM;6CAID,MAAM;0CAKT,MAAM;mCAIb,SAAS,GAAG,MAAM;;mCASlB,MAAM,EAAE;iCAK5C,IAAI,GAAG,MAAM,gBAAgB,MAAM;;;;;mCAgBC,MAAM;+BAgFf,OAAO;8BAGR,OAAO;0BAKX,MAAM,YAAY,MAAM;2BAGvB,MAAM;;;8BAWH,MAAM;mCAKxB,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,cAC1D,OAAO,qBACA,OAAO;uCAUkB,MAAM;;yBAU1C,MAAM,OACR,GAAG,kBACQ,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,cAC1D,OAAO,qBACA,OAAO,gBACX,MAAM,IAAI;yBAjIgB,MAAM;kCAIG,MAAM;;CAoJ9D,CAAC"}
1
+ {"version":3,"file":"useInputManager.d.ts","sourceRoot":"","sources":["../../src/hooks/useInputManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,aAAa,EACd,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhD,eAAO,MAAM,eAAe,GAC1B,YAAW,OAAO,CAAC,qBAAqB,CAAM;;;;;;;;;;;;;;;;;;;;+BAwHpC,MAAM,aACD,CAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,KAAK,IAAI;oCAQrD,CAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,KAAK,IAAI;;;;;;qCA2Bd,MAAM;iCAK7C,MAAM;;;;;mCAe+B,MAAM;oCAIL,MAAM;wCAKF,MAAM;mCAKjD,MAAM;;;;mCAYN,MAAM;;;;;sCAemC,MAAM;uCAIL,MAAM;4CAKD,MAAM;uCAKrD,MAAM;;;;;0CAeuC,MAAM;wCAIR,MAAM;6CAID,MAAM;0CAKT,MAAM;mCAKhD,SAAS,GAAG,MAAM;;mCAWiB,MAAM,EAAE;iCAK5C,IAAI,GAAG,MAAM,gBAAgB,MAAM;;;;;mCAgBC,MAAM;+BAuFf,OAAO;8BAGR,OAAO;8BAGP,cAAc;0BAMlB,MAAM,YAAY,MAAM;2BAGvB,MAAM;;;8BAWH,MAAM;mCAKxB,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,cAC1D,OAAO,qBACA,OAAO;uCAUkB,MAAM;;+CApHO,MAAM;yBAiIvD,MAAM,OACR,GAAG,kBACQ,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,cAC1D,OAAO,qBACA,OAAO,gBACX,MAAM,IAAI;yBA/IgB,MAAM;kCAIG,MAAM;;CAkK9D,CAAC"}
@@ -1,7 +1,9 @@
1
1
  import { useEffect, useRef, useState, useCallback } from "react";
2
2
  import { InputManager, } from "../managers/InputManager.js";
3
+ import { logger } from "../utils/logger.js";
3
4
  export const useInputManager = (callbacks = {}) => {
4
5
  const managerRef = useRef(null);
6
+ const [isManagerReady, setIsManagerReady] = useState(false);
5
7
  // React state that mirrors InputManager state
6
8
  const [inputText, setInputText] = useState("");
7
9
  const [cursorPosition, setCursorPosition] = useState(0);
@@ -27,12 +29,14 @@ export const useInputManager = (callbacks = {}) => {
27
29
  });
28
30
  const [showBashManager, setShowBashManager] = useState(false);
29
31
  const [showMcpManager, setShowMcpManager] = useState(false);
32
+ const [permissionMode, setPermissionModeState] = useState("default");
30
33
  const [attachedImages, setAttachedImages] = useState([]);
31
34
  // Create InputManager on mount and update callbacks when they change
32
35
  useEffect(() => {
33
36
  if (!managerRef.current) {
34
37
  // Create InputManager on first mount
35
38
  const manager = new InputManager({
39
+ logger,
36
40
  onInputTextChange: setInputText,
37
41
  onCursorPositionChange: setCursorPosition,
38
42
  onFileSelectorStateChange: (show, files, query, position) => {
@@ -53,14 +57,22 @@ export const useInputManager = (callbacks = {}) => {
53
57
  onMcpManagerStateChange: (show) => {
54
58
  setShowMcpManager(show);
55
59
  },
60
+ onPermissionModeChange: (mode) => {
61
+ setPermissionModeState(mode);
62
+ callbacks.onPermissionModeChange?.(mode);
63
+ },
56
64
  onImagesStateChange: setAttachedImages,
65
+ onShowBashManager: () => setShowBashManager(true),
66
+ onShowMcpManager: () => setShowMcpManager(true),
57
67
  ...callbacks,
58
68
  });
59
69
  managerRef.current = manager;
70
+ setIsManagerReady(true);
60
71
  }
61
72
  else {
62
73
  // Update callbacks on existing manager
63
74
  managerRef.current.updateCallbacks({
75
+ logger,
64
76
  onInputTextChange: setInputText,
65
77
  onCursorPositionChange: setCursorPosition,
66
78
  onFileSelectorStateChange: (show, files, query, position) => {
@@ -81,7 +93,13 @@ export const useInputManager = (callbacks = {}) => {
81
93
  onMcpManagerStateChange: (show) => {
82
94
  setShowMcpManager(show);
83
95
  },
96
+ onPermissionModeChange: (mode) => {
97
+ setPermissionModeState(mode);
98
+ callbacks.onPermissionModeChange?.(mode);
99
+ },
84
100
  onImagesStateChange: setAttachedImages,
101
+ onShowBashManager: () => setShowBashManager(true),
102
+ onShowMcpManager: () => setShowMcpManager(true),
85
103
  ...callbacks,
86
104
  });
87
105
  }
@@ -186,8 +204,8 @@ export const useInputManager = (callbacks = {}) => {
186
204
  const activateMemoryTypeSelector = useCallback((message) => {
187
205
  managerRef.current?.activateMemoryTypeSelector(message);
188
206
  }, []);
189
- const handleMemoryTypeSelect = useCallback((type) => {
190
- managerRef.current?.handleMemoryTypeSelect(type);
207
+ const handleMemoryTypeSelect = useCallback(async (type) => {
208
+ await managerRef.current?.handleMemoryTypeSelect(type);
191
209
  }, []);
192
210
  const handleCancelMemoryTypeSelect = useCallback(() => {
193
211
  managerRef.current?.handleCancelMemoryTypeSelect();
@@ -216,6 +234,10 @@ export const useInputManager = (callbacks = {}) => {
216
234
  const setCursorPositionDirect = useCallback((position) => {
217
235
  managerRef.current?.setCursorPosition(position);
218
236
  }, []);
237
+ // Complex handlers that combine multiple operations
238
+ const handleBashHistoryExecuteAndSend = useCallback((command) => {
239
+ managerRef.current?.handleBashHistoryExecuteAndSend(command);
240
+ }, []);
219
241
  return {
220
242
  // State
221
243
  inputText,
@@ -234,7 +256,9 @@ export const useInputManager = (callbacks = {}) => {
234
256
  memoryMessage: memoryTypeSelectorState.message,
235
257
  showBashManager,
236
258
  showMcpManager,
259
+ permissionMode,
237
260
  attachedImages,
261
+ isManagerReady,
238
262
  // Methods
239
263
  insertTextAtCursor,
240
264
  deleteCharAtCursor,
@@ -280,6 +304,10 @@ export const useInputManager = (callbacks = {}) => {
280
304
  setShowMcpManager: useCallback((show) => {
281
305
  managerRef.current?.setShowMcpManager(show);
282
306
  }, []),
307
+ setPermissionMode: useCallback((mode) => {
308
+ setPermissionModeState(mode);
309
+ managerRef.current?.setPermissionMode(mode);
310
+ }, []),
283
311
  // Image management
284
312
  addImage: useCallback((imagePath, mimeType) => {
285
313
  return managerRef.current?.addImage(imagePath, mimeType);
@@ -306,6 +334,8 @@ export const useInputManager = (callbacks = {}) => {
306
334
  clearLongTextMap: useCallback(() => {
307
335
  managerRef.current?.clearLongTextMap();
308
336
  }, []),
337
+ // Complex handlers combining multiple operations
338
+ handleBashHistoryExecuteAndSend,
309
339
  // Main input handler
310
340
  handleInput: useCallback(async (input, key, attachedImages, isLoading = false, isCommandRunning = false, clearImages) => {
311
341
  return ((await managerRef.current?.handleInput(input, key, attachedImages, isLoading, isCommandRunning, clearImages)) || false);
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,wBAAsB,IAAI,kBA+EzB;AAGD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGpC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAG3C,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAUA,wBAAsB,IAAI,kBAmHzB;AAGD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGpC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAG3C,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import yargs from "yargs";
2
2
  import { hideBin } from "yargs/helpers";
3
3
  import { startCli } from "./cli.js";
4
- import { listSessions } from "wave-agent-sdk";
4
+ import { listSessions, getSessionFilePath, getFirstMessageContent, } from "wave-agent-sdk";
5
5
  // Export main function for external use
6
6
  export async function main() {
7
7
  const argv = await yargs(hideBin(process.argv))
@@ -19,10 +19,19 @@ export async function main() {
19
19
  alias: "p",
20
20
  description: "Print response without interactive mode",
21
21
  type: "string",
22
+ })
23
+ .option("show-stats", {
24
+ description: "Show timing and usage statistics in print mode",
25
+ type: "boolean",
22
26
  })
23
27
  .option("list-sessions", {
24
28
  description: "List all available sessions",
25
29
  type: "boolean",
30
+ })
31
+ .option("dangerously-skip-permissions", {
32
+ description: "Skip all permission checks (dangerous)",
33
+ type: "boolean",
34
+ default: false,
26
35
  })
27
36
  .version()
28
37
  .alias("v", "version")
@@ -30,7 +39,7 @@ export async function main() {
30
39
  .example("$0 --restore session_123", "Restore specific session")
31
40
  .example("$0 --continue", "Continue from last session")
32
41
  .example("$0 --print 'Hello'", "Send message in print mode")
33
- .example("$0 -p 'Hello'", "Send message in print mode (short)")
42
+ .example("$0 -p 'Hello' --show-stats", "Send message in print mode with statistics")
34
43
  .example("$0 --list-sessions", "List all available sessions")
35
44
  .help("h")
36
45
  .parseAsync();
@@ -45,16 +54,29 @@ export async function main() {
45
54
  }
46
55
  console.log(`Available sessions for: ${currentWorkdir}`);
47
56
  console.log("==========================================");
48
- for (const session of sessions) {
49
- const startedAt = new Date(session.startedAt).toLocaleString();
57
+ // Get last 5 sessions
58
+ const lastSessions = sessions.slice(0, 5);
59
+ for (const session of lastSessions) {
50
60
  const lastActiveAt = new Date(session.lastActiveAt).toLocaleString();
61
+ const filePath = await getSessionFilePath(session.id, session.workdir);
62
+ // Get first message content
63
+ const firstMessageContent = await getFirstMessageContent(session.id, session.workdir);
64
+ // Truncate content if too long
65
+ let truncatedContent = firstMessageContent || "No first message content";
66
+ if (truncatedContent.length > 30) {
67
+ truncatedContent = truncatedContent.substring(0, 30) + "...";
68
+ }
51
69
  console.log(`ID: ${session.id}`);
52
70
  console.log(` Workdir: ${session.workdir}`);
53
- console.log(` Started: ${startedAt}`);
71
+ console.log(` File Path: ${filePath}`);
54
72
  console.log(` Last Active: ${lastActiveAt}`);
55
73
  console.log(` Last Message Tokens: ${session.latestTotalTokens}`);
74
+ console.log(` First Message: ${truncatedContent}`);
56
75
  console.log("");
57
76
  }
77
+ if (sessions.length > 5) {
78
+ console.log(`... and ${sessions.length - 5} more sessions`);
79
+ }
58
80
  return;
59
81
  }
60
82
  catch (error) {
@@ -69,11 +91,14 @@ export async function main() {
69
91
  restoreSessionId: argv.restore,
70
92
  continueLastSession: argv.continue,
71
93
  message: argv.print,
94
+ showStats: argv.showStats,
95
+ bypassPermissions: argv.dangerouslySkipPermissions,
72
96
  });
73
97
  }
74
98
  await startCli({
75
99
  restoreSessionId: argv.restore,
76
100
  continueLastSession: argv.continue,
101
+ bypassPermissions: argv.dangerouslySkipPermissions,
77
102
  });
78
103
  }
79
104
  // Export CLI function
@@ -1,4 +1,5 @@
1
1
  import { FileItem } from "../components/FileSelector.js";
2
+ import { PermissionMode, Logger } from "wave-agent-sdk";
2
3
  import type { Key } from "ink";
3
4
  export interface AttachedImage {
4
5
  id: number;
@@ -25,6 +26,8 @@ export interface InputManagerCallbacks {
25
26
  onSaveMemory?: (message: string, type: "project" | "user") => Promise<void>;
26
27
  onAbortMessage?: () => void;
27
28
  onResetHistoryNavigation?: () => void;
29
+ onPermissionModeChange?: (mode: PermissionMode) => void;
30
+ logger?: Logger;
28
31
  }
29
32
  export declare class InputManager {
30
33
  private inputText;
@@ -55,8 +58,10 @@ export declare class InputManager {
55
58
  private imageIdCounter;
56
59
  private showBashManager;
57
60
  private showMcpManager;
61
+ private permissionMode;
58
62
  private selectorJustUsed;
59
63
  private callbacks;
64
+ private logger?;
60
65
  constructor(callbacks?: InputManagerCallbacks);
61
66
  updateCallbacks(callbacks: Partial<InputManagerCallbacks>): void;
62
67
  getInputText(): string;
@@ -100,9 +105,10 @@ export declare class InputManager {
100
105
  };
101
106
  handleCancelBashHistorySelect(): void;
102
107
  handleBashHistoryExecute(command: string): string;
108
+ handleBashHistoryExecuteAndSend(command: string): void;
103
109
  checkForExclamationDeletion(cursorPosition: number): boolean;
104
110
  activateMemoryTypeSelector(message: string): void;
105
- handleMemoryTypeSelect(type: "project" | "user"): void;
111
+ handleMemoryTypeSelect(type: "project" | "user"): Promise<void>;
106
112
  handleCancelMemoryTypeSelect(): void;
107
113
  setUserInputHistory(history: string[]): void;
108
114
  navigateHistory(direction: "up" | "down", currentInput: string): {
@@ -134,6 +140,7 @@ export declare class InputManager {
134
140
  show: boolean;
135
141
  message: string;
136
142
  };
143
+ private updateSearchQueriesForActiveSelectors;
137
144
  handleSpecialCharInput(char: string): void;
138
145
  generateCompressedText(originalText: string): string;
139
146
  expandLongTextPlaceholders(text: string): string;
@@ -148,6 +155,9 @@ export declare class InputManager {
148
155
  setShowBashManager(show: boolean): void;
149
156
  getShowMcpManager(): boolean;
150
157
  setShowMcpManager(show: boolean): void;
158
+ getPermissionMode(): PermissionMode;
159
+ setPermissionMode(mode: PermissionMode): void;
160
+ cyclePermissionMode(): void;
151
161
  handleSubmit(attachedImages: Array<{
152
162
  id: number;
153
163
  path: string;
@@ -1 +1 @@
1
- {"version":3,"file":"InputManager.d.ts","sourceRoot":"","sources":["../../src/managers/InputManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"InputManager.d.ts","sourceRoot":"","sources":["../../src/managers/InputManager.ts"],"names":[],"mappings":"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"}