wave-code 0.17.0 → 0.17.2

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 (59) hide show
  1. package/dist/acp/agent.d.ts +1 -0
  2. package/dist/acp/agent.d.ts.map +1 -1
  3. package/dist/acp/agent.js +116 -1
  4. package/dist/components/ChatInterface.d.ts.map +1 -1
  5. package/dist/components/ChatInterface.js +5 -2
  6. package/dist/components/InputBox.d.ts +2 -0
  7. package/dist/components/InputBox.d.ts.map +1 -1
  8. package/dist/components/InputBox.js +29 -8
  9. package/dist/components/LoadingIndicator.d.ts +2 -1
  10. package/dist/components/LoadingIndicator.d.ts.map +1 -1
  11. package/dist/components/LoadingIndicator.js +2 -2
  12. package/dist/components/QueuedMessageList.d.ts.map +1 -1
  13. package/dist/components/QueuedMessageList.js +10 -10
  14. package/dist/components/StatusLine.d.ts +2 -0
  15. package/dist/components/StatusLine.d.ts.map +1 -1
  16. package/dist/components/StatusLine.js +6 -6
  17. package/dist/components/TaskList.d.ts +3 -0
  18. package/dist/components/TaskList.d.ts.map +1 -1
  19. package/dist/components/TaskList.js +171 -28
  20. package/dist/components/TaskNotificationMessage.d.ts.map +1 -1
  21. package/dist/components/TaskNotificationMessage.js +1 -0
  22. package/dist/components/WorkflowManager.d.ts +6 -0
  23. package/dist/components/WorkflowManager.d.ts.map +1 -0
  24. package/dist/components/WorkflowManager.js +102 -0
  25. package/dist/constants/commands.d.ts.map +1 -1
  26. package/dist/constants/commands.js +6 -0
  27. package/dist/contexts/useChat.d.ts +8 -1
  28. package/dist/contexts/useChat.d.ts.map +1 -1
  29. package/dist/contexts/useChat.js +68 -4
  30. package/dist/hooks/useInputManager.d.ts +2 -0
  31. package/dist/hooks/useInputManager.d.ts.map +1 -1
  32. package/dist/hooks/useInputManager.js +22 -13
  33. package/dist/managers/inputHandlers.d.ts.map +1 -1
  34. package/dist/managers/inputHandlers.js +6 -3
  35. package/dist/managers/inputReducer.d.ts +10 -0
  36. package/dist/managers/inputReducer.d.ts.map +1 -1
  37. package/dist/managers/inputReducer.js +41 -4
  38. package/dist/print-cli.d.ts.map +1 -1
  39. package/dist/print-cli.js +3 -31
  40. package/dist/reducers/workflowManagerReducer.d.ts +41 -0
  41. package/dist/reducers/workflowManagerReducer.d.ts.map +1 -0
  42. package/dist/reducers/workflowManagerReducer.js +100 -0
  43. package/package.json +2 -2
  44. package/src/acp/agent.ts +137 -1
  45. package/src/components/ChatInterface.tsx +10 -1
  46. package/src/components/InputBox.tsx +43 -3
  47. package/src/components/LoadingIndicator.tsx +4 -1
  48. package/src/components/QueuedMessageList.tsx +7 -3
  49. package/src/components/StatusLine.tsx +28 -16
  50. package/src/components/TaskList.tsx +213 -19
  51. package/src/components/TaskNotificationMessage.tsx +1 -0
  52. package/src/components/WorkflowManager.tsx +320 -0
  53. package/src/constants/commands.ts +6 -0
  54. package/src/contexts/useChat.tsx +83 -4
  55. package/src/hooks/useInputManager.ts +25 -13
  56. package/src/managers/inputHandlers.ts +5 -4
  57. package/src/managers/inputReducer.ts +54 -6
  58. package/src/print-cli.ts +3 -37
  59. package/src/reducers/workflowManagerReducer.ts +143 -0
@@ -4,16 +4,7 @@ import { searchFiles as searchFilesUtil, PromptHistoryManager, } from "wave-agen
4
4
  import * as handlers from "../managers/inputHandlers.js";
5
5
  export const useInputManager = (callbacks = {}) => {
6
6
  const [state, dispatch] = useReducer(inputReducer, initialState);
7
- const { onInputTextChange, onCursorPositionChange, onFileSelectorStateChange, onCommandSelectorStateChange, onHistorySearchStateChange, onBackgroundTaskManagerStateChange, onMcpManagerStateChange, onRewindManagerStateChange, onHelpStateChange, onStatusCommandStateChange, onPluginManagerStateChange, onModelSelectorStateChange, onImagesStateChange, onSendMessage, onHasSlashCommand, onAbortMessage, onBackgroundCurrentTask, onPermissionModeChange, onAskBtw, sessionId, workdir, getFullMessageThread, logger, } = callbacks;
8
- // Handle selectorJustUsed reset
9
- useEffect(() => {
10
- if (state.selectorJustUsed) {
11
- const timer = setTimeout(() => {
12
- dispatch({ type: "SET_SELECTOR_JUST_USED", payload: false });
13
- }, 0);
14
- return () => clearTimeout(timer);
15
- }
16
- }, [state.selectorJustUsed]);
7
+ const { onInputTextChange, onCursorPositionChange, onFileSelectorStateChange, onCommandSelectorStateChange, onHistorySearchStateChange, onBackgroundTaskManagerStateChange, onMcpManagerStateChange, onRewindManagerStateChange, onHelpStateChange, onStatusCommandStateChange, onPluginManagerStateChange, onModelSelectorStateChange, onWorkflowManagerStateChange, onImagesStateChange, onSendMessage, onHasSlashCommand, onAbortMessage, onBackgroundCurrentTask, onPermissionModeChange, onAskBtw, sessionId, workdir, getFullMessageThread, logger, hasQueuedMessages: hasQueuedMessagesProp, onRecallQueuedMessage, } = callbacks;
17
8
  // Handle debounced file search
18
9
  useEffect(() => {
19
10
  if (state.showFileSelector) {
@@ -171,6 +162,9 @@ export const useInputManager = (callbacks = {}) => {
171
162
  else if (command === "model") {
172
163
  dispatch({ type: "SET_SHOW_MODEL_SELECTOR", payload: true });
173
164
  }
165
+ else if (command === "workflows") {
166
+ dispatch({ type: "SET_SHOW_WORKFLOW_MANAGER", payload: true });
167
+ }
174
168
  else if (command === "btw") {
175
169
  dispatch({
176
170
  type: "SET_BTW_STATE",
@@ -179,6 +173,9 @@ export const useInputManager = (callbacks = {}) => {
179
173
  }
180
174
  }
181
175
  break;
176
+ case "RECALL_QUEUED_MESSAGE":
177
+ onRecallQueuedMessage?.();
178
+ break;
182
179
  }
183
180
  }
184
181
  catch (error) {
@@ -198,6 +195,7 @@ export const useInputManager = (callbacks = {}) => {
198
195
  getFullMessageThread,
199
196
  logger,
200
197
  onHasSlashCommand,
198
+ onRecallQueuedMessage,
201
199
  ]);
202
200
  useEffect(() => {
203
201
  onFileSelectorStateChange?.(state.showFileSelector, state.filteredFiles, state.fileSearchQuery, state.atPosition);
@@ -244,6 +242,9 @@ export const useInputManager = (callbacks = {}) => {
244
242
  useEffect(() => {
245
243
  onModelSelectorStateChange?.(state.showModelSelector);
246
244
  }, [state.showModelSelector, onModelSelectorStateChange]);
245
+ useEffect(() => {
246
+ onWorkflowManagerStateChange?.(state.showWorkflowManager);
247
+ }, [state.showWorkflowManager, onWorkflowManagerStateChange]);
247
248
  useEffect(() => {
248
249
  onImagesStateChange?.(state.attachedImages);
249
250
  }, [state.attachedImages, onImagesStateChange]);
@@ -369,6 +370,9 @@ export const useInputManager = (callbacks = {}) => {
369
370
  const setShowModelSelector = useCallback((show) => {
370
371
  dispatch({ type: "SET_SHOW_MODEL_SELECTOR", payload: show });
371
372
  }, []);
373
+ const setShowWorkflowManager = useCallback((show) => {
374
+ dispatch({ type: "SET_SHOW_WORKFLOW_MANAGER", payload: show });
375
+ }, []);
372
376
  const setPermissionMode = useCallback((mode) => {
373
377
  dispatch({ type: "SET_PERMISSION_MODE", payload: mode });
374
378
  onPermissionModeChange?.(mode);
@@ -395,9 +399,10 @@ export const useInputManager = (callbacks = {}) => {
395
399
  input,
396
400
  key: {},
397
401
  hasSlashCommand: (cmd) => !!onHasSlashCommand?.(cmd),
402
+ hasQueuedMessages: hasQueuedMessagesProp ?? false,
398
403
  },
399
404
  });
400
- }, [onHasSlashCommand]);
405
+ }, [onHasSlashCommand, hasQueuedMessagesProp]);
401
406
  const handleSubmit = useCallback(async () => {
402
407
  dispatch({
403
408
  type: "HANDLE_KEY",
@@ -405,9 +410,10 @@ export const useInputManager = (callbacks = {}) => {
405
410
  input: "",
406
411
  key: { return: true },
407
412
  hasSlashCommand: (cmd) => !!onHasSlashCommand?.(cmd),
413
+ hasQueuedMessages: hasQueuedMessagesProp ?? false,
408
414
  },
409
415
  });
410
- }, [onHasSlashCommand]);
416
+ }, [onHasSlashCommand, hasQueuedMessagesProp]);
411
417
  const expandLongTextPlaceholders = useCallback((text) => {
412
418
  return handlers.expandLongTextPlaceholders(text, state.longTextMap);
413
419
  }, [state.longTextMap]);
@@ -425,10 +431,11 @@ export const useInputManager = (callbacks = {}) => {
425
431
  input,
426
432
  key,
427
433
  hasSlashCommand: (cmd) => !!onHasSlashCommand?.(cmd),
434
+ hasQueuedMessages: hasQueuedMessagesProp ?? false,
428
435
  },
429
436
  });
430
437
  return true;
431
- }, [onHasSlashCommand]);
438
+ }, [onHasSlashCommand, hasQueuedMessagesProp]);
432
439
  return {
433
440
  // State
434
441
  inputText: state.inputText,
@@ -451,6 +458,7 @@ export const useInputManager = (callbacks = {}) => {
451
458
  showLoginCommand: state.showLoginCommand,
452
459
  showPluginManager: state.showPluginManager,
453
460
  showModelSelector: state.showModelSelector,
461
+ showWorkflowManager: state.showWorkflowManager,
454
462
  permissionMode: state.permissionMode,
455
463
  attachedImages: state.attachedImages,
456
464
  btwState: state.btwState,
@@ -488,6 +496,7 @@ export const useInputManager = (callbacks = {}) => {
488
496
  setShowLoginCommand,
489
497
  setShowPluginManager,
490
498
  setShowModelSelector,
499
+ setShowWorkflowManager,
491
500
  setPermissionMode,
492
501
  setBtwState,
493
502
  // Image management
@@ -1 +1 @@
1
- {"version":3,"file":"inputHandlers.d.ts","sourceRoot":"","sources":["../../src/managers/inputHandlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inputHandlers.d.ts","sourceRoot":"","sources":["../../src/managers/inputHandlers.ts"],"names":[],"mappings":"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"}
@@ -270,6 +270,9 @@ export const handleCommandSelect = (state, dispatch, callbacks, command) => {
270
270
  else if (command === "model") {
271
271
  dispatch({ type: "SET_SHOW_MODEL_SELECTOR", payload: true });
272
272
  }
273
+ else if (command === "workflows") {
274
+ dispatch({ type: "SET_SHOW_WORKFLOW_MANAGER", payload: true });
275
+ }
273
276
  else if (command === "btw") {
274
277
  dispatch({
275
278
  type: "SET_BTW_STATE",
@@ -504,9 +507,6 @@ export const handleNormalInput = async (state, dispatch, callbacks, input, key,
504
507
  return false;
505
508
  };
506
509
  export const handleInput = async (state, dispatch, callbacks, input, key, clearImages) => {
507
- if (state.selectorJustUsed) {
508
- return true;
509
- }
510
510
  if (state.btwState.isActive) {
511
511
  if (key.escape) {
512
512
  dispatch({
@@ -548,6 +548,7 @@ export const handleInput = async (state, dispatch, callbacks, input, key, clearI
548
548
  state.showStatusCommand ||
549
549
  state.showPluginManager ||
550
550
  state.showModelSelector ||
551
+ state.showWorkflowManager ||
551
552
  state.btwState.isActive)) {
552
553
  callbacks.onAbortMessage?.();
553
554
  return true;
@@ -567,6 +568,7 @@ export const handleInput = async (state, dispatch, callbacks, input, key, clearI
567
568
  state.showStatusCommand ||
568
569
  state.showPluginManager ||
569
570
  state.showModelSelector ||
571
+ state.showWorkflowManager ||
570
572
  state.btwState.isActive) {
571
573
  if (state.showBackgroundTaskManager ||
572
574
  state.showMcpManager ||
@@ -575,6 +577,7 @@ export const handleInput = async (state, dispatch, callbacks, input, key, clearI
575
577
  state.showStatusCommand ||
576
578
  state.showPluginManager ||
577
579
  state.showModelSelector ||
580
+ state.showWorkflowManager ||
578
581
  state.btwState.isActive) {
579
582
  return true;
580
583
  }
@@ -36,6 +36,8 @@ export type PendingEffect = {
36
36
  } | {
37
37
  type: "EXECUTE_COMMAND";
38
38
  command: string;
39
+ } | {
40
+ type: "RECALL_QUEUED_MESSAGE";
39
41
  };
40
42
  export interface InputManagerCallbacks {
41
43
  onInputTextChange?: (text: string) => void;
@@ -50,6 +52,7 @@ export interface InputManagerCallbacks {
50
52
  onStatusCommandStateChange?: (show: boolean) => void;
51
53
  onPluginManagerStateChange?: (show: boolean) => void;
52
54
  onModelSelectorStateChange?: (show: boolean) => void;
55
+ onWorkflowManagerStateChange?: (show: boolean) => void;
53
56
  onImagesStateChange?: (images: AttachedImage[]) => void;
54
57
  onSendMessage?: (content: string, images?: Array<{
55
58
  path: string;
@@ -67,6 +70,8 @@ export interface InputManagerCallbacks {
67
70
  sessionIds: string[];
68
71
  }>;
69
72
  logger?: Logger;
73
+ hasQueuedMessages?: boolean;
74
+ onRecallQueuedMessage?: () => void;
70
75
  }
71
76
  export interface InputState {
72
77
  inputText: string;
@@ -92,6 +97,7 @@ export interface InputState {
92
97
  showLoginCommand: boolean;
93
98
  showPluginManager: boolean;
94
99
  showModelSelector: boolean;
100
+ showWorkflowManager: boolean;
95
101
  permissionMode: PermissionMode;
96
102
  selectorJustUsed: boolean;
97
103
  isPasting: boolean;
@@ -181,6 +187,9 @@ export type InputAction = {
181
187
  } | {
182
188
  type: "SET_SHOW_MODEL_SELECTOR";
183
189
  payload: boolean;
190
+ } | {
191
+ type: "SET_SHOW_WORKFLOW_MANAGER";
192
+ payload: boolean;
184
193
  } | {
185
194
  type: "SET_PERMISSION_MODE";
186
195
  payload: PermissionMode;
@@ -248,6 +257,7 @@ export type InputAction = {
248
257
  input: string;
249
258
  key: Key;
250
259
  hasSlashCommand: (cmd: string) => boolean;
260
+ hasQueuedMessages?: boolean;
251
261
  };
252
262
  };
253
263
  export declare function inputReducer(state: InputState, action: InputAction): InputState;
@@ -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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"}
@@ -1,4 +1,5 @@
1
1
  import { getAtSelectorPosition, getSlashSelectorPosition, getWordEnd, SELECTOR_TRIGGERS, getProjectedState, } from "../utils/inputUtils.js";
2
+ import { AVAILABLE_COMMANDS } from "../constants/commands.js";
2
3
  export const initialState = {
3
4
  inputText: "",
4
5
  cursorPosition: 0,
@@ -23,6 +24,7 @@ export const initialState = {
23
24
  showLoginCommand: false,
24
25
  showPluginManager: false,
25
26
  showModelSelector: false,
27
+ showWorkflowManager: false,
26
28
  permissionMode: "default",
27
29
  selectorJustUsed: false,
28
30
  isPasting: false,
@@ -214,6 +216,12 @@ export function inputReducer(state, action) {
214
216
  showModelSelector: action.payload,
215
217
  selectorJustUsed: !action.payload ? true : state.selectorJustUsed,
216
218
  };
219
+ case "SET_SHOW_WORKFLOW_MANAGER":
220
+ return {
221
+ ...state,
222
+ showWorkflowManager: action.payload,
223
+ selectorJustUsed: !action.payload ? true : state.selectorJustUsed,
224
+ };
217
225
  case "SET_PERMISSION_MODE":
218
226
  return { ...state, permissionMode: action.payload };
219
227
  case "SET_SELECTOR_JUST_USED":
@@ -457,9 +465,7 @@ export function inputReducer(state, action) {
457
465
  return { ...state, pendingEffect: null };
458
466
  case "HANDLE_KEY": {
459
467
  const { input, key } = action.payload;
460
- if (state.selectorJustUsed) {
461
- return state;
462
- }
468
+ const hasQueuedMessages = action.payload.hasQueuedMessages ?? false;
463
469
  // 1. BTW State Handling
464
470
  if (state.btwState.isActive) {
465
471
  if (key.escape) {
@@ -540,7 +546,8 @@ export function inputReducer(state, action) {
540
546
  state.showStatusCommand ||
541
547
  state.showLoginCommand ||
542
548
  state.showPluginManager ||
543
- state.showModelSelector)) {
549
+ state.showModelSelector ||
550
+ state.showWorkflowManager)) {
544
551
  return { ...state, pendingEffect: { type: "ABORT_MESSAGE" } };
545
552
  }
546
553
  return state;
@@ -582,6 +589,13 @@ export function inputReducer(state, action) {
582
589
  if (key.upArrow &&
583
590
  !state.showFileSelector &&
584
591
  !state.showCommandSelector) {
592
+ // If queue has messages, recall from queue first (before history)
593
+ if (hasQueuedMessages) {
594
+ return {
595
+ ...state,
596
+ pendingEffect: { type: "RECALL_QUEUED_MESSAGE" },
597
+ };
598
+ }
585
599
  if (state.history.length === 0) {
586
600
  return { ...state, pendingEffect: { type: "FETCH_HISTORY" } };
587
601
  }
@@ -754,6 +768,29 @@ export function inputReducer(state, action) {
754
768
  pendingEffect: question ? { type: "ASK_BTW", question } : null,
755
769
  };
756
770
  }
771
+ // Check if the content is a CLI-internal slash command (help, tasks,
772
+ // etc.) that should be executed locally rather than sent as a message.
773
+ // Agent slash commands and unknown /commands always go to SEND_MESSAGE.
774
+ if (contentWithPlaceholders.startsWith("/")) {
775
+ const spaceIndex = contentWithPlaceholders.indexOf(" ");
776
+ const commandName = spaceIndex === -1
777
+ ? contentWithPlaceholders.substring(1)
778
+ : contentWithPlaceholders.substring(1, spaceIndex);
779
+ const isInternalCommand = AVAILABLE_COMMANDS.some((cmd) => cmd.id === commandName);
780
+ if (isInternalCommand) {
781
+ return {
782
+ ...state,
783
+ inputText: "",
784
+ cursorPosition: 0,
785
+ historyIndex: -1,
786
+ longTextMap: {},
787
+ pendingEffect: {
788
+ type: "EXECUTE_COMMAND",
789
+ command: commandName,
790
+ },
791
+ };
792
+ }
793
+ }
757
794
  return {
758
795
  ...state,
759
796
  inputText: "",
@@ -1 +1 @@
1
- {"version":3,"file":"print-cli.d.ts","sourceRoot":"","sources":["../src/print-cli.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,WAAW,eAAgB,SAAQ,YAAY;IACnD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8DAA8D;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,gBAAgB,EAAE,eAAe,CAAC,CAAC;CACvE;AAgBD,wBAAsB,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAuN3E"}
1
+ {"version":3,"file":"print-cli.d.ts","sourceRoot":"","sources":["../src/print-cli.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,WAAW,eAAgB,SAAQ,YAAY;IACnD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8DAA8D;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,gBAAgB,EAAE,eAAe,CAAC,CAAC;CACvE;AAgBD,wBAAsB,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAqL3E"}
package/dist/print-cli.js CHANGED
@@ -24,14 +24,14 @@ export async function startPrintCli(options) {
24
24
  let agent;
25
25
  let isReasoning = false;
26
26
  let isContent = false;
27
- const subagentReasoningStates = new Map();
28
- const subagentContentStates = new Map();
29
27
  // Setup callbacks for agent
28
+ // Print mode only outputs the main agent's response (matching Claude Code's
29
+ // behavior). Subagent output is internal — the main agent incorporates
30
+ // relevant results in its own response.
30
31
  const callbacks = {
31
32
  onAssistantMessageAdded: () => {
32
33
  isReasoning = false;
33
34
  isContent = false;
34
- // Assistant message started - no content to output yet
35
35
  },
36
36
  onAssistantReasoningUpdated: (chunk) => {
37
37
  if (!isReasoning) {
@@ -50,36 +50,8 @@ export async function startPrintCli(options) {
50
50
  }
51
51
  isContent = true;
52
52
  }
53
- // FR-001: Stream content updates for real-time display - output only the new chunk
54
53
  process.stdout.write(chunk);
55
54
  },
56
- // Subagent message callbacks
57
- onSubagentAssistantMessageAdded: (subagentId) => {
58
- subagentReasoningStates.set(subagentId, false);
59
- subagentContentStates.set(subagentId, false);
60
- },
61
- onSubagentAssistantReasoningUpdated: (subagentId, chunk) => {
62
- if (!subagentReasoningStates.get(subagentId)) {
63
- process.stdout.write("\n 💭 Reasoning: ");
64
- subagentReasoningStates.set(subagentId, true);
65
- }
66
- process.stdout.write(chunk);
67
- },
68
- onSubagentAssistantContentUpdated: (subagentId, chunk) => {
69
- if (!subagentContentStates.get(subagentId)) {
70
- if (subagentReasoningStates.get(subagentId)) {
71
- process.stdout.write("\n 📝 Response: ");
72
- }
73
- else {
74
- process.stdout.write("\n ");
75
- }
76
- subagentContentStates.set(subagentId, true);
77
- }
78
- process.stdout.write(chunk);
79
- },
80
- onSubagentUserMessageAdded: (_subagentId, params) => {
81
- process.stdout.write(`\n 👤 User: ${params.content}\n`);
82
- },
83
55
  // Tool block callback - display tool name when tool starts
84
56
  onToolBlockUpdated: (params) => {
85
57
  // Print tool name only during 'running' stage (happens once per tool call)
@@ -0,0 +1,41 @@
1
+ import { Key } from "ink";
2
+ import type { WorkflowRun } from "wave-agent-sdk";
3
+ export type PendingEffect = {
4
+ type: "CANCEL";
5
+ } | {
6
+ type: "STOP_RUN";
7
+ runId: string;
8
+ };
9
+ export interface WorkflowManagerState {
10
+ runs: WorkflowRun[];
11
+ selectedIndex: number;
12
+ viewMode: "list" | "detail";
13
+ detailRunId: string | null;
14
+ pendingEffect: PendingEffect | null;
15
+ }
16
+ export type WorkflowManagerAction = {
17
+ type: "SET_RUNS";
18
+ runs: WorkflowRun[];
19
+ } | {
20
+ type: "SELECT_INDEX";
21
+ index: number;
22
+ } | {
23
+ type: "MOVE_UP";
24
+ } | {
25
+ type: "MOVE_DOWN";
26
+ } | {
27
+ type: "SELECT_CURRENT";
28
+ } | {
29
+ type: "SET_VIEW_MODE";
30
+ mode: "list" | "detail";
31
+ } | {
32
+ type: "RESET_DETAIL";
33
+ } | {
34
+ type: "HANDLE_KEY";
35
+ input: string;
36
+ key: Key;
37
+ } | {
38
+ type: "CLEAR_PENDING_EFFECT";
39
+ };
40
+ export declare function workflowManagerReducer(state: WorkflowManagerState, action: WorkflowManagerAction): WorkflowManagerState;
41
+ //# sourceMappingURL=workflowManagerReducer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflowManagerReducer.d.ts","sourceRoot":"","sources":["../../src/reducers/workflowManagerReducer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAExC,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,WAAW,EAAE,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,MAAM,qBAAqB,GAC7B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,WAAW,EAAE,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,GAC1B;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,GAAG,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,sBAAsB,CAAA;CAAE,CAAC;AAErC,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,oBAAoB,EAC3B,MAAM,EAAE,qBAAqB,GAC5B,oBAAoB,CAiHtB"}
@@ -0,0 +1,100 @@
1
+ export function workflowManagerReducer(state, action) {
2
+ switch (action.type) {
3
+ case "SET_RUNS":
4
+ return { ...state, runs: action.runs };
5
+ case "SELECT_INDEX":
6
+ return { ...state, selectedIndex: action.index };
7
+ case "MOVE_UP":
8
+ return { ...state, selectedIndex: Math.max(0, state.selectedIndex - 1) };
9
+ case "MOVE_DOWN":
10
+ return {
11
+ ...state,
12
+ selectedIndex: Math.min(state.runs.length > 0 ? state.runs.length - 1 : 0, state.selectedIndex + 1),
13
+ };
14
+ case "SELECT_CURRENT":
15
+ if (state.runs.length > 0 && state.selectedIndex < state.runs.length) {
16
+ return {
17
+ ...state,
18
+ detailRunId: state.runs[state.selectedIndex].runId,
19
+ viewMode: "detail",
20
+ };
21
+ }
22
+ return state;
23
+ case "SET_VIEW_MODE":
24
+ return { ...state, viewMode: action.mode };
25
+ case "RESET_DETAIL":
26
+ return {
27
+ ...state,
28
+ viewMode: "list",
29
+ detailRunId: null,
30
+ };
31
+ case "HANDLE_KEY": {
32
+ const { input, key } = action;
33
+ if (state.viewMode === "list") {
34
+ if (key.return) {
35
+ if (state.runs.length > 0 &&
36
+ state.selectedIndex < state.runs.length) {
37
+ return {
38
+ ...state,
39
+ detailRunId: state.runs[state.selectedIndex].runId,
40
+ viewMode: "detail",
41
+ };
42
+ }
43
+ return state;
44
+ }
45
+ if (key.escape) {
46
+ return { ...state, pendingEffect: { type: "CANCEL" } };
47
+ }
48
+ if (key.upArrow) {
49
+ return {
50
+ ...state,
51
+ selectedIndex: Math.max(0, state.selectedIndex - 1),
52
+ };
53
+ }
54
+ if (key.downArrow) {
55
+ return {
56
+ ...state,
57
+ selectedIndex: Math.min(state.runs.length > 0 ? state.runs.length - 1 : 0, state.selectedIndex + 1),
58
+ };
59
+ }
60
+ if (input === "k") {
61
+ if (state.runs.length > 0 &&
62
+ state.selectedIndex < state.runs.length) {
63
+ const selectedRun = state.runs[state.selectedIndex];
64
+ if (selectedRun.status === "running") {
65
+ return {
66
+ ...state,
67
+ pendingEffect: { type: "STOP_RUN", runId: selectedRun.runId },
68
+ };
69
+ }
70
+ }
71
+ return state;
72
+ }
73
+ }
74
+ else if (state.viewMode === "detail") {
75
+ if (key.escape) {
76
+ return {
77
+ ...state,
78
+ viewMode: "list",
79
+ detailRunId: null,
80
+ };
81
+ }
82
+ if (input === "k" && state.detailRunId) {
83
+ const run = state.runs.find((r) => r.runId === state.detailRunId);
84
+ if (run && run.status === "running") {
85
+ return {
86
+ ...state,
87
+ pendingEffect: { type: "STOP_RUN", runId: state.detailRunId },
88
+ };
89
+ }
90
+ return state;
91
+ }
92
+ }
93
+ return state;
94
+ }
95
+ case "CLEAR_PENDING_EFFECT":
96
+ return { ...state, pendingEffect: null };
97
+ default:
98
+ return state;
99
+ }
100
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wave-code",
3
- "version": "0.17.0",
3
+ "version": "0.17.2",
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.17.0"
45
+ "wave-agent-sdk": "0.17.2"
46
46
  },
47
47
  "devDependencies": {
48
48
  "@types/react": "^19.1.8",