wave-code 0.14.4 → 0.15.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.
Files changed (116) hide show
  1. package/dist/acp/agent.d.ts.map +1 -1
  2. package/dist/acp/agent.js +10 -0
  3. package/dist/components/BackgroundTaskManager.d.ts.map +1 -1
  4. package/dist/components/BackgroundTaskManager.js +17 -53
  5. package/dist/components/CommandSelector.d.ts.map +1 -1
  6. package/dist/components/CommandSelector.js +38 -28
  7. package/dist/components/ConfirmationSelector.d.ts.map +1 -1
  8. package/dist/components/ConfirmationSelector.js +18 -196
  9. package/dist/components/DiscoverView.d.ts.map +1 -1
  10. package/dist/components/DiscoverView.js +19 -11
  11. package/dist/components/FileSelector.d.ts.map +1 -1
  12. package/dist/components/FileSelector.js +29 -25
  13. package/dist/components/HelpView.d.ts.map +1 -1
  14. package/dist/components/HelpView.js +24 -28
  15. package/dist/components/HistorySearch.d.ts.map +1 -1
  16. package/dist/components/HistorySearch.js +26 -28
  17. package/dist/components/InputBox.d.ts.map +1 -1
  18. package/dist/components/InputBox.js +14 -6
  19. package/dist/components/InstalledView.d.ts.map +1 -1
  20. package/dist/components/InstalledView.js +19 -11
  21. package/dist/components/MarketplaceDetail.d.ts.map +1 -1
  22. package/dist/components/MarketplaceDetail.js +35 -16
  23. package/dist/components/MarketplaceView.d.ts.map +1 -1
  24. package/dist/components/MarketplaceView.js +21 -12
  25. package/dist/components/McpManager.d.ts.map +1 -1
  26. package/dist/components/McpManager.js +27 -46
  27. package/dist/components/ModelSelector.d.ts.map +1 -1
  28. package/dist/components/ModelSelector.js +27 -17
  29. package/dist/components/PluginDetail.d.ts.map +1 -1
  30. package/dist/components/PluginDetail.js +39 -26
  31. package/dist/components/RewindCommand.d.ts.map +1 -1
  32. package/dist/components/RewindCommand.js +27 -21
  33. package/dist/components/SessionSelector.d.ts.map +1 -1
  34. package/dist/components/SessionSelector.js +21 -16
  35. package/dist/components/StatusLine.d.ts.map +1 -1
  36. package/dist/components/StatusLine.js +5 -1
  37. package/dist/components/WorktreeExitPrompt.d.ts.map +1 -1
  38. package/dist/components/WorktreeExitPrompt.js +21 -12
  39. package/dist/contexts/useChat.d.ts +0 -1
  40. package/dist/contexts/useChat.d.ts.map +1 -1
  41. package/dist/contexts/useChat.js +13 -20
  42. package/dist/hooks/useInputManager.d.ts +5 -19
  43. package/dist/hooks/useInputManager.d.ts.map +1 -1
  44. package/dist/hooks/useInputManager.js +222 -79
  45. package/dist/managers/inputHandlers.d.ts +1 -1
  46. package/dist/managers/inputHandlers.d.ts.map +1 -1
  47. package/dist/managers/inputHandlers.js +3 -6
  48. package/dist/managers/inputReducer.d.ts +46 -4
  49. package/dist/managers/inputReducer.d.ts.map +1 -1
  50. package/dist/managers/inputReducer.js +519 -4
  51. package/dist/print-cli.d.ts.map +1 -1
  52. package/dist/print-cli.js +21 -9
  53. package/dist/reducers/backgroundTaskManagerReducer.d.ts +20 -0
  54. package/dist/reducers/backgroundTaskManagerReducer.d.ts.map +1 -1
  55. package/dist/reducers/backgroundTaskManagerReducer.js +83 -0
  56. package/dist/reducers/confirmationReducer.d.ts +11 -0
  57. package/dist/reducers/confirmationReducer.d.ts.map +1 -1
  58. package/dist/reducers/confirmationReducer.js +146 -0
  59. package/dist/reducers/helpSelectorReducer.d.ts +26 -0
  60. package/dist/reducers/helpSelectorReducer.d.ts.map +1 -0
  61. package/dist/reducers/helpSelectorReducer.js +52 -0
  62. package/dist/reducers/mcpManagerReducer.d.ts +22 -0
  63. package/dist/reducers/mcpManagerReducer.d.ts.map +1 -1
  64. package/dist/reducers/mcpManagerReducer.js +57 -0
  65. package/dist/reducers/pluginDetailReducer.d.ts +8 -0
  66. package/dist/reducers/pluginDetailReducer.d.ts.map +1 -1
  67. package/dist/reducers/pluginDetailReducer.js +32 -0
  68. package/dist/reducers/questionReducer.d.ts +21 -0
  69. package/dist/reducers/questionReducer.d.ts.map +1 -1
  70. package/dist/reducers/questionReducer.js +177 -0
  71. package/dist/reducers/rewindSelectorReducer.d.ts +22 -0
  72. package/dist/reducers/rewindSelectorReducer.d.ts.map +1 -0
  73. package/dist/reducers/rewindSelectorReducer.js +37 -0
  74. package/dist/reducers/selectorReducer.d.ts +22 -0
  75. package/dist/reducers/selectorReducer.d.ts.map +1 -0
  76. package/dist/reducers/selectorReducer.js +40 -0
  77. package/dist/utils/inputUtils.d.ts +18 -0
  78. package/dist/utils/inputUtils.d.ts.map +1 -0
  79. package/dist/utils/inputUtils.js +67 -0
  80. package/dist/utils/worktree.d.ts.map +1 -1
  81. package/dist/utils/worktree.js +1 -2
  82. package/package.json +2 -2
  83. package/src/acp/agent.ts +10 -0
  84. package/src/components/BackgroundTaskManager.tsx +19 -58
  85. package/src/components/CommandSelector.tsx +53 -44
  86. package/src/components/ConfirmationSelector.tsx +18 -202
  87. package/src/components/DiscoverView.tsx +21 -11
  88. package/src/components/FileSelector.tsx +40 -35
  89. package/src/components/HelpView.tsx +37 -43
  90. package/src/components/HistorySearch.tsx +29 -36
  91. package/src/components/InputBox.tsx +14 -7
  92. package/src/components/InstalledView.tsx +21 -11
  93. package/src/components/MarketplaceDetail.tsx +48 -24
  94. package/src/components/MarketplaceView.tsx +25 -10
  95. package/src/components/McpManager.tsx +29 -54
  96. package/src/components/ModelSelector.tsx +30 -23
  97. package/src/components/PluginDetail.tsx +50 -27
  98. package/src/components/RewindCommand.tsx +38 -32
  99. package/src/components/SessionSelector.tsx +23 -20
  100. package/src/components/StatusLine.tsx +10 -1
  101. package/src/components/WorktreeExitPrompt.tsx +23 -13
  102. package/src/contexts/useChat.tsx +13 -31
  103. package/src/hooks/useInputManager.ts +273 -141
  104. package/src/managers/inputHandlers.ts +1 -6
  105. package/src/managers/inputReducer.ts +675 -7
  106. package/src/print-cli.ts +20 -11
  107. package/src/reducers/backgroundTaskManagerReducer.ts +110 -1
  108. package/src/reducers/confirmationReducer.ts +173 -1
  109. package/src/reducers/helpSelectorReducer.ts +77 -0
  110. package/src/reducers/mcpManagerReducer.ts +82 -1
  111. package/src/reducers/pluginDetailReducer.ts +42 -1
  112. package/src/reducers/questionReducer.ts +204 -0
  113. package/src/reducers/rewindSelectorReducer.ts +54 -0
  114. package/src/reducers/selectorReducer.ts +57 -0
  115. package/src/utils/inputUtils.ts +94 -0
  116. package/src/utils/worktree.ts +1 -7
@@ -1,3 +1,4 @@
1
+ import { Key } from "ink";
1
2
  export interface Task {
2
3
  id: string;
3
4
  type: string;
@@ -14,12 +15,19 @@ export interface DetailOutput {
14
15
  status: string;
15
16
  outputPath?: string;
16
17
  }
18
+ export type PendingEffect = {
19
+ type: "CANCEL";
20
+ } | {
21
+ type: "STOP_TASK";
22
+ taskId: string;
23
+ };
17
24
  export interface BackgroundTaskManagerState {
18
25
  tasks: Task[];
19
26
  selectedIndex: number;
20
27
  viewMode: "list" | "detail";
21
28
  detailTaskId: string | null;
22
29
  detailOutput: DetailOutput | null;
30
+ pendingEffect: PendingEffect | null;
23
31
  }
24
32
  export type BackgroundTaskManagerAction = {
25
33
  type: "SET_TASKS";
@@ -27,6 +35,12 @@ export type BackgroundTaskManagerAction = {
27
35
  } | {
28
36
  type: "SELECT_INDEX";
29
37
  index: number;
38
+ } | {
39
+ type: "MOVE_UP";
40
+ } | {
41
+ type: "MOVE_DOWN";
42
+ } | {
43
+ type: "SELECT_CURRENT";
30
44
  } | {
31
45
  type: "SET_VIEW_MODE";
32
46
  mode: "list" | "detail";
@@ -38,6 +52,12 @@ export type BackgroundTaskManagerAction = {
38
52
  output: DetailOutput | null;
39
53
  } | {
40
54
  type: "RESET_DETAIL";
55
+ } | {
56
+ type: "HANDLE_KEY";
57
+ input: string;
58
+ key: Key;
59
+ } | {
60
+ type: "CLEAR_PENDING_EFFECT";
41
61
  };
42
62
  export declare function backgroundTaskManagerReducer(state: BackgroundTaskManagerState, action: BackgroundTaskManagerAction): BackgroundTaskManagerState;
43
63
  //# sourceMappingURL=backgroundTaskManagerReducer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"backgroundTaskManagerReducer.d.ts","sourceRoot":"","sources":["../../src/reducers/backgroundTaskManagerReducer.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,MAAM,2BAA2B,GACnC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,CAAC;AAE7B,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,0BAA0B,EACjC,MAAM,EAAE,2BAA2B,GAClC,0BAA0B,CAsB5B"}
1
+ {"version":3,"file":"backgroundTaskManagerReducer.d.ts","sourceRoot":"","sources":["../../src/reducers/backgroundTaskManagerReducer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1C,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,MAAM,2BAA2B,GACnC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,GACpC;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,oBAAoB,CAAC;IAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;CAAE,GAC1D;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,4BAA4B,CAC1C,KAAK,EAAE,0BAA0B,EACjC,MAAM,EAAE,2BAA2B,GAClC,0BAA0B,CAuH5B"}
@@ -4,6 +4,22 @@ export function backgroundTaskManagerReducer(state, action) {
4
4
  return { ...state, tasks: action.tasks };
5
5
  case "SELECT_INDEX":
6
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.tasks.length > 0 ? state.tasks.length - 1 : 0, state.selectedIndex + 1),
13
+ };
14
+ case "SELECT_CURRENT":
15
+ if (state.tasks.length > 0 && state.selectedIndex < state.tasks.length) {
16
+ return {
17
+ ...state,
18
+ detailTaskId: state.tasks[state.selectedIndex].id,
19
+ viewMode: "detail",
20
+ };
21
+ }
22
+ return state;
7
23
  case "SET_VIEW_MODE":
8
24
  return { ...state, viewMode: action.mode };
9
25
  case "SET_DETAIL_TASK_ID":
@@ -17,6 +33,73 @@ export function backgroundTaskManagerReducer(state, action) {
17
33
  detailTaskId: null,
18
34
  detailOutput: null,
19
35
  };
36
+ case "HANDLE_KEY": {
37
+ const { input, key } = action;
38
+ if (state.viewMode === "list") {
39
+ if (key.return) {
40
+ if (state.tasks.length > 0 &&
41
+ state.selectedIndex < state.tasks.length) {
42
+ return {
43
+ ...state,
44
+ detailTaskId: state.tasks[state.selectedIndex].id,
45
+ viewMode: "detail",
46
+ };
47
+ }
48
+ return state;
49
+ }
50
+ if (key.escape) {
51
+ return { ...state, pendingEffect: { type: "CANCEL" } };
52
+ }
53
+ if (key.upArrow) {
54
+ return {
55
+ ...state,
56
+ selectedIndex: Math.max(0, state.selectedIndex - 1),
57
+ };
58
+ }
59
+ if (key.downArrow) {
60
+ return {
61
+ ...state,
62
+ selectedIndex: Math.min(state.tasks.length > 0 ? state.tasks.length - 1 : 0, state.selectedIndex + 1),
63
+ };
64
+ }
65
+ if (input === "k") {
66
+ if (state.tasks.length > 0 &&
67
+ state.selectedIndex < state.tasks.length) {
68
+ const selectedTask = state.tasks[state.selectedIndex];
69
+ if (selectedTask.status === "running") {
70
+ return {
71
+ ...state,
72
+ pendingEffect: { type: "STOP_TASK", taskId: selectedTask.id },
73
+ };
74
+ }
75
+ }
76
+ return state;
77
+ }
78
+ }
79
+ else if (state.viewMode === "detail") {
80
+ if (key.escape) {
81
+ return {
82
+ ...state,
83
+ viewMode: "list",
84
+ detailTaskId: null,
85
+ detailOutput: null,
86
+ };
87
+ }
88
+ if (input === "k" && state.detailTaskId) {
89
+ const task = state.tasks.find((t) => t.id === state.detailTaskId);
90
+ if (task && task.status === "running") {
91
+ return {
92
+ ...state,
93
+ pendingEffect: { type: "STOP_TASK", taskId: state.detailTaskId },
94
+ };
95
+ }
96
+ return state;
97
+ }
98
+ }
99
+ return state;
100
+ }
101
+ case "CLEAR_PENDING_EFFECT":
102
+ return { ...state, pendingEffect: null };
20
103
  default:
21
104
  return state;
22
105
  }
@@ -1,3 +1,4 @@
1
+ import { Key } from "ink";
1
2
  import type { PermissionDecision } from "wave-agent-sdk";
2
3
  export interface ConfirmationState {
3
4
  selectedOption: "clear" | "auto" | "allow" | "alternative";
@@ -21,6 +22,16 @@ export type ConfirmationAction = {
21
22
  } | {
22
23
  type: "CONFIRM";
23
24
  decision: PermissionDecision;
25
+ } | {
26
+ type: "CLEAR_DECISION";
27
+ } | {
28
+ type: "HANDLE_KEY";
29
+ input: string;
30
+ key: Key;
31
+ toolName: string;
32
+ toolInput?: Record<string, unknown>;
33
+ suggestedPrefix?: string;
34
+ hidePersistentOption?: boolean;
24
35
  };
25
36
  export declare function confirmationReducer(state: ConfirmationState, action: ConfirmationAction): ConfirmationState;
26
37
  //# sourceMappingURL=confirmationReducer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"confirmationReducer.d.ts","sourceRoot":"","sources":["../../src/reducers/confirmationReducer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,aAAa,CAAC;IAC3D,eAAe,EAAE,MAAM,CAAC;IACxB,yBAAyB,EAAE,MAAM,CAAC;IAClC,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,CAAA;CAAE,GACtE;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,kBAAkB,CAAA;CAAE,CAAC;AAEtD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,kBAAkB,GACzB,iBAAiB,CAoDnB"}
1
+ {"version":3,"file":"confirmationReducer.d.ts","sourceRoot":"","sources":["../../src/reducers/confirmationReducer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAOzD,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,aAAa,CAAC;IAC3D,eAAe,EAAE,MAAM,CAAC;IACxB,yBAAyB,EAAE,MAAM,CAAC;IAClC,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,CAAA;CAAE,GACtE;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,kBAAkB,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,GAC1B;IACE,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,GAAG,CAAC;IACT,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC;AAEN,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,kBAAkB,GACzB,iBAAiB,CAgNnB"}
@@ -1,3 +1,4 @@
1
+ import { BASH_TOOL_NAME, EXIT_PLAN_MODE_TOOL_NAME, ENTER_PLAN_MODE_TOOL_NAME, } from "wave-agent-sdk";
1
2
  export function confirmationReducer(state, action) {
2
3
  switch (action.type) {
3
4
  case "SELECT_OPTION":
@@ -39,6 +40,151 @@ export function confirmationReducer(state, action) {
39
40
  };
40
41
  case "CONFIRM":
41
42
  return { ...state, decision: action.decision };
43
+ case "CLEAR_DECISION":
44
+ return { ...state, decision: null };
45
+ case "HANDLE_KEY": {
46
+ const { input, key, toolName, toolInput, suggestedPrefix, hidePersistentOption, } = action;
47
+ if (key.return) {
48
+ let decision = null;
49
+ if (state.selectedOption === "clear") {
50
+ decision = {
51
+ behavior: "allow",
52
+ newPermissionMode: "acceptEdits",
53
+ clearContext: true,
54
+ };
55
+ }
56
+ else if (state.selectedOption === "allow") {
57
+ if (toolName === EXIT_PLAN_MODE_TOOL_NAME) {
58
+ decision = { behavior: "allow", newPermissionMode: "default" };
59
+ }
60
+ else if (toolName === ENTER_PLAN_MODE_TOOL_NAME) {
61
+ decision = { behavior: "allow", newPermissionMode: "plan" };
62
+ }
63
+ else {
64
+ decision = { behavior: "allow" };
65
+ }
66
+ }
67
+ else if (state.selectedOption === "auto") {
68
+ if (toolName === BASH_TOOL_NAME) {
69
+ const command = toolInput?.command || "";
70
+ if (command.trim().startsWith("mkdir")) {
71
+ decision = {
72
+ behavior: "allow",
73
+ newPermissionMode: "acceptEdits",
74
+ };
75
+ }
76
+ else {
77
+ const rule = suggestedPrefix
78
+ ? `Bash(${suggestedPrefix})`
79
+ : `Bash(${toolInput?.command})`;
80
+ decision = { behavior: "allow", newPermissionRule: rule };
81
+ }
82
+ }
83
+ else if (toolName === ENTER_PLAN_MODE_TOOL_NAME) {
84
+ decision = { behavior: "allow", newPermissionMode: "plan" };
85
+ }
86
+ else if (toolName.startsWith("mcp__")) {
87
+ decision = { behavior: "allow", newPermissionRule: toolName };
88
+ }
89
+ else {
90
+ decision = { behavior: "allow", newPermissionMode: "acceptEdits" };
91
+ }
92
+ }
93
+ else if (state.alternativeText.trim()) {
94
+ decision = {
95
+ behavior: "deny",
96
+ message: state.alternativeText.trim(),
97
+ };
98
+ }
99
+ else if (toolName === ENTER_PLAN_MODE_TOOL_NAME) {
100
+ decision = {
101
+ behavior: "deny",
102
+ message: "User chose not to enter plan mode",
103
+ };
104
+ }
105
+ if (decision) {
106
+ return { ...state, decision };
107
+ }
108
+ return state;
109
+ }
110
+ if (state.selectedOption === "alternative") {
111
+ if (key.leftArrow) {
112
+ return {
113
+ ...state,
114
+ alternativeCursorPosition: Math.max(0, state.alternativeCursorPosition - 1),
115
+ };
116
+ }
117
+ if (key.rightArrow) {
118
+ return {
119
+ ...state,
120
+ alternativeCursorPosition: Math.min(state.alternativeText.length, state.alternativeCursorPosition + 1),
121
+ };
122
+ }
123
+ }
124
+ const availableOptions = [];
125
+ if (toolName === EXIT_PLAN_MODE_TOOL_NAME)
126
+ availableOptions.push("clear");
127
+ availableOptions.push("allow");
128
+ if (!hidePersistentOption)
129
+ availableOptions.push("auto");
130
+ availableOptions.push("alternative");
131
+ if (key.upArrow) {
132
+ const currentIndex = availableOptions.indexOf(state.selectedOption);
133
+ if (currentIndex > 0) {
134
+ return {
135
+ ...state,
136
+ selectedOption: availableOptions[currentIndex - 1],
137
+ };
138
+ }
139
+ return state;
140
+ }
141
+ if (key.downArrow) {
142
+ const currentIndex = availableOptions.indexOf(state.selectedOption);
143
+ if (currentIndex < availableOptions.length - 1) {
144
+ return {
145
+ ...state,
146
+ selectedOption: availableOptions[currentIndex + 1],
147
+ };
148
+ }
149
+ return state;
150
+ }
151
+ if (key.tab) {
152
+ const currentIndex = availableOptions.indexOf(state.selectedOption);
153
+ const direction = key.shift ? -1 : 1;
154
+ let nextIndex = currentIndex + direction;
155
+ if (nextIndex < 0)
156
+ nextIndex = availableOptions.length - 1;
157
+ if (nextIndex >= availableOptions.length)
158
+ nextIndex = 0;
159
+ return { ...state, selectedOption: availableOptions[nextIndex] };
160
+ }
161
+ if (input && !key.ctrl && !key.meta && !("alt" in key && key.alt)) {
162
+ const nextText = state.alternativeText.slice(0, state.alternativeCursorPosition) +
163
+ input +
164
+ state.alternativeText.slice(state.alternativeCursorPosition);
165
+ return {
166
+ ...state,
167
+ selectedOption: "alternative",
168
+ alternativeText: nextText,
169
+ alternativeCursorPosition: state.alternativeCursorPosition + input.length,
170
+ hasUserInput: true,
171
+ };
172
+ }
173
+ if (key.backspace || key.delete) {
174
+ if (state.alternativeCursorPosition <= 0)
175
+ return state;
176
+ const nextText = state.alternativeText.slice(0, state.alternativeCursorPosition - 1) +
177
+ state.alternativeText.slice(state.alternativeCursorPosition);
178
+ return {
179
+ ...state,
180
+ selectedOption: "alternative",
181
+ alternativeText: nextText,
182
+ alternativeCursorPosition: state.alternativeCursorPosition - 1,
183
+ hasUserInput: nextText.length > 0,
184
+ };
185
+ }
186
+ return state;
187
+ }
42
188
  default:
43
189
  return state;
44
190
  }
@@ -0,0 +1,26 @@
1
+ import { Key } from "ink";
2
+ export interface SelectorState {
3
+ selectedIndex: number;
4
+ activeTab: "general" | "commands" | "custom-commands";
5
+ pendingDecision: "select" | "insert" | "cancel" | "tab-switch" | null;
6
+ }
7
+ export type SelectorAction = {
8
+ type: "MOVE_UP";
9
+ } | {
10
+ type: "MOVE_DOWN";
11
+ maxIndex: number;
12
+ } | {
13
+ type: "RESET_INDEX";
14
+ } | {
15
+ type: "SWITCH_TAB";
16
+ tabs: string[];
17
+ } | {
18
+ type: "HANDLE_KEY";
19
+ key: Key;
20
+ maxIndex: number;
21
+ tabs: string[];
22
+ } | {
23
+ type: "CLEAR_DECISION";
24
+ };
25
+ export declare function helpSelectorReducer(state: SelectorState, action: SelectorAction): SelectorState;
26
+ //# sourceMappingURL=helpSelectorReducer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpSelectorReducer.d.ts","sourceRoot":"","sources":["../../src/reducers/helpSelectorReducer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,SAAS,GAAG,UAAU,GAAG,iBAAiB,CAAC;IACtD,eAAe,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,YAAY,GAAG,IAAI,CAAC;CACvE;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,GAAG,EAAE,GAAG,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,GAClE;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAE/B,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,cAAc,GACrB,aAAa,CAyDf"}
@@ -0,0 +1,52 @@
1
+ export function helpSelectorReducer(state, action) {
2
+ switch (action.type) {
3
+ case "MOVE_UP":
4
+ return { ...state, selectedIndex: Math.max(0, state.selectedIndex - 1) };
5
+ case "MOVE_DOWN":
6
+ return {
7
+ ...state,
8
+ selectedIndex: Math.min(action.maxIndex, state.selectedIndex + 1),
9
+ };
10
+ case "RESET_INDEX":
11
+ return { ...state, selectedIndex: 0 };
12
+ case "SWITCH_TAB": {
13
+ const currentIndex = action.tabs.indexOf(state.activeTab);
14
+ const nextIndex = (currentIndex + 1) % action.tabs.length;
15
+ return {
16
+ ...state,
17
+ activeTab: action.tabs[nextIndex],
18
+ selectedIndex: 0,
19
+ };
20
+ }
21
+ case "HANDLE_KEY":
22
+ if (action.key.upArrow) {
23
+ return {
24
+ ...state,
25
+ selectedIndex: Math.max(0, state.selectedIndex - 1),
26
+ };
27
+ }
28
+ if (action.key.downArrow) {
29
+ return {
30
+ ...state,
31
+ selectedIndex: Math.min(action.maxIndex, state.selectedIndex + 1),
32
+ };
33
+ }
34
+ if (action.key.tab) {
35
+ const currentIndex = action.tabs.indexOf(state.activeTab);
36
+ const nextIndex = (currentIndex + 1) % action.tabs.length;
37
+ return {
38
+ ...state,
39
+ activeTab: action.tabs[nextIndex],
40
+ selectedIndex: 0,
41
+ };
42
+ }
43
+ if (action.key.escape) {
44
+ return { ...state, pendingDecision: "cancel" };
45
+ }
46
+ return state;
47
+ case "CLEAR_DECISION":
48
+ return { ...state, pendingDecision: null };
49
+ default:
50
+ return state;
51
+ }
52
+ }
@@ -1,6 +1,17 @@
1
+ import { Key } from "ink";
2
+ export type PendingEffect = {
3
+ type: "CANCEL";
4
+ } | {
5
+ type: "CONNECT_SERVER";
6
+ serverName: string;
7
+ } | {
8
+ type: "DISCONNECT_SERVER";
9
+ serverName: string;
10
+ };
1
11
  export interface McpManagerState {
2
12
  selectedIndex: number;
3
13
  viewMode: "list" | "detail";
14
+ pendingEffect: PendingEffect | null;
4
15
  }
5
16
  export type McpManagerAction = {
6
17
  type: "MOVE_UP";
@@ -11,6 +22,17 @@ export type McpManagerAction = {
11
22
  } | {
12
23
  type: "SET_VIEW_MODE";
13
24
  viewMode: "list" | "detail";
25
+ } | {
26
+ type: "HANDLE_KEY";
27
+ input: string;
28
+ key: Key;
29
+ serverCount: number;
30
+ servers: Array<{
31
+ name: string;
32
+ status: string;
33
+ }>;
34
+ } | {
35
+ type: "CLEAR_PENDING_EFFECT";
14
36
  };
15
37
  export declare function mcpManagerReducer(state: McpManagerState, action: McpManagerAction): McpManagerState;
16
38
  //# sourceMappingURL=mcpManagerReducer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcpManagerReducer.d.ts","sourceRoot":"","sources":["../../src/reducers/mcpManagerReducer.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC;CAC7B;AAED,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAA;CAAE,CAAC;AAE3D,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,gBAAgB,GACvB,eAAe,CAiBjB"}
1
+ {"version":3,"file":"mcpManagerReducer.d.ts","sourceRoot":"","sources":["../../src/reducers/mcpManagerReducer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtD,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC5B,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAA;CAAE,GACtD;IACE,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,GAAG,CAAC;IACT,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClD,GACD;IAAE,IAAI,EAAE,sBAAsB,CAAA;CAAE,CAAC;AAErC,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,gBAAgB,GACvB,eAAe,CAkFjB"}
@@ -9,6 +9,63 @@ export function mcpManagerReducer(state, action) {
9
9
  };
10
10
  case "SET_VIEW_MODE":
11
11
  return { ...state, viewMode: action.viewMode };
12
+ case "HANDLE_KEY": {
13
+ const { input, key, serverCount, servers } = action;
14
+ if (key.return) {
15
+ if (state.viewMode === "list") {
16
+ return { ...state, viewMode: "detail" };
17
+ }
18
+ return state;
19
+ }
20
+ if (key.escape) {
21
+ if (state.viewMode === "detail") {
22
+ return { ...state, viewMode: "list" };
23
+ }
24
+ else {
25
+ return { ...state, pendingEffect: { type: "CANCEL" } };
26
+ }
27
+ }
28
+ if (key.upArrow) {
29
+ return {
30
+ ...state,
31
+ selectedIndex: Math.max(0, state.selectedIndex - 1),
32
+ };
33
+ }
34
+ if (key.downArrow) {
35
+ return {
36
+ ...state,
37
+ selectedIndex: Math.min(serverCount - 1, state.selectedIndex + 1),
38
+ };
39
+ }
40
+ // Hotkeys for server actions
41
+ if (input === "c") {
42
+ const server = servers[state.selectedIndex];
43
+ if (server &&
44
+ (server.status === "disconnected" || server.status === "error")) {
45
+ return {
46
+ ...state,
47
+ pendingEffect: { type: "CONNECT_SERVER", serverName: server.name },
48
+ };
49
+ }
50
+ return state;
51
+ }
52
+ if (input === "d") {
53
+ const server = servers[state.selectedIndex];
54
+ if (server && server.status === "connected") {
55
+ return {
56
+ ...state,
57
+ pendingEffect: {
58
+ type: "DISCONNECT_SERVER",
59
+ serverName: server.name,
60
+ },
61
+ };
62
+ }
63
+ return state;
64
+ }
65
+ return state;
66
+ }
67
+ case "CLEAR_PENDING_EFFECT":
68
+ return { ...state, pendingEffect: null };
12
69
  default:
13
70
  return state;
14
71
  }
@@ -1,6 +1,8 @@
1
+ import { Key } from "ink";
1
2
  export interface PluginDetailState {
2
3
  selectedScopeIndex: number;
3
4
  selectedActionIndex: number;
5
+ pendingDecision: "select" | "cancel" | null;
4
6
  }
5
7
  export type PluginDetailAction = {
6
8
  type: "SELECT_SCOPE_INDEX";
@@ -20,6 +22,12 @@ export type PluginDetailAction = {
20
22
  } | {
21
23
  type: "MOVE_ACTION_DOWN";
22
24
  maxIndex: number;
25
+ } | {
26
+ type: "HANDLE_KEY";
27
+ key: Key;
28
+ maxIndex: number;
29
+ } | {
30
+ type: "CLEAR_DECISION";
23
31
  };
24
32
  export declare function pluginDetailReducer(state: PluginDetailState, action: PluginDetailAction): PluginDetailState;
25
33
  //# sourceMappingURL=pluginDetailReducer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pluginDetailReducer.d.ts","sourceRoot":"","sources":["../../src/reducers/pluginDetailReducer.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,qBAAqB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,kBAAkB,GACzB,iBAAiB,CAyCnB"}
1
+ {"version":3,"file":"pluginDetailReducer.d.ts","sourceRoot":"","sources":["../../src/reducers/pluginDetailReducer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,WAAW,iBAAiB;IAChC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC;CAC7C;AAED,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,qBAAqB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,GAAG,EAAE,GAAG,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAE/B,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,kBAAkB,GACzB,iBAAiB,CA6EnB"}
@@ -32,6 +32,38 @@ export function pluginDetailReducer(state, action) {
32
32
  ? state.selectedActionIndex + 1
33
33
  : 0,
34
34
  };
35
+ case "HANDLE_KEY":
36
+ if (action.key.upArrow) {
37
+ return {
38
+ ...state,
39
+ selectedScopeIndex: state.selectedScopeIndex > 0
40
+ ? state.selectedScopeIndex - 1
41
+ : action.maxIndex,
42
+ selectedActionIndex: state.selectedActionIndex > 0
43
+ ? state.selectedActionIndex - 1
44
+ : action.maxIndex,
45
+ };
46
+ }
47
+ if (action.key.downArrow) {
48
+ return {
49
+ ...state,
50
+ selectedScopeIndex: state.selectedScopeIndex < action.maxIndex
51
+ ? state.selectedScopeIndex + 1
52
+ : 0,
53
+ selectedActionIndex: state.selectedActionIndex < action.maxIndex
54
+ ? state.selectedActionIndex + 1
55
+ : 0,
56
+ };
57
+ }
58
+ if (action.key.return) {
59
+ return { ...state, pendingDecision: "select" };
60
+ }
61
+ if (action.key.escape) {
62
+ return { ...state, pendingDecision: "cancel" };
63
+ }
64
+ return state;
65
+ case "CLEAR_DECISION":
66
+ return { ...state, pendingDecision: null };
35
67
  default:
36
68
  return state;
37
69
  }
@@ -1,3 +1,4 @@
1
+ import { Key } from "ink";
1
2
  import type { PermissionDecision } from "wave-agent-sdk";
2
3
  export interface QuestionSavedState {
3
4
  selectedOptionIndex: number;
@@ -64,6 +65,26 @@ export type QuestionAction = {
64
65
  }>;
65
66
  multiSelect?: boolean;
66
67
  }>;
68
+ } | {
69
+ type: "CLEAR_DECISION";
70
+ } | {
71
+ type: "HANDLE_KEY";
72
+ input: string;
73
+ key: Key;
74
+ currentQuestion: {
75
+ question: string;
76
+ options: Array<{
77
+ label: string;
78
+ }>;
79
+ multiSelect?: boolean;
80
+ };
81
+ questions: Array<{
82
+ question: string;
83
+ options: Array<{
84
+ label: string;
85
+ }>;
86
+ multiSelect?: boolean;
87
+ }>;
67
88
  };
68
89
  export declare function questionReducer(state: QuestionState, action: QuestionAction): QuestionState;
69
90
  //# sourceMappingURL=questionReducer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"questionReducer.d.ts","sourceRoot":"","sources":["../../src/reducers/questionReducer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,MAAM,WAAW,kBAAkB;IACjC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAChD,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC9C;IACE,IAAI,EAAE,qBAAqB,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;CACvB,GACD;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GACjE;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GACnD;IACE,IAAI,EAAE,gBAAgB,CAAC;IACvB,eAAe,EAAE;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAClC,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB,CAAC;IACF,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClC,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,KAAK,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAClC,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB,CAAC,CAAC;CACJ,CAAC;AA+BN,wBAAgB,eAAe,CAC7B,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,cAAc,GACrB,aAAa,CAyKf"}
1
+ {"version":3,"file":"questionReducer.d.ts","sourceRoot":"","sources":["../../src/reducers/questionReducer.ts"],"names":[],"mappings":"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"}