auq-mcp-server 3.2.7 → 3.2.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.
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "auq-mcp-server",
3
- "version": "3.2.7",
3
+ "version": "3.2.8",
4
4
  "main": "dist/index.js",
5
5
  "bin": {
6
6
  "auq": "bin/auq"
@@ -369,11 +369,24 @@ export const StepperView = ({ onComplete, onProgress, hasMultipleSessions, initi
369
369
  };
370
370
  // Handle elaborate text change
371
371
  const handleElaborateTextChange = (text) => {
372
- setElaborateMarks((prev) => {
373
- const newMarks = new Map(prev);
374
- newMarks.set(currentQuestionIndex, text);
375
- return newMarks;
376
- });
372
+ if (!text.trim()) {
373
+ // Auto-remove elaborate mark when text is cleared
374
+ setElaborateMarks((prev) => {
375
+ if (prev.has(currentQuestionIndex)) {
376
+ const newMarks = new Map(prev);
377
+ newMarks.delete(currentQuestionIndex);
378
+ return newMarks;
379
+ }
380
+ return prev;
381
+ });
382
+ }
383
+ else {
384
+ setElaborateMarks((prev) => {
385
+ const newMarks = new Map(prev);
386
+ newMarks.set(currentQuestionIndex, text);
387
+ return newMarks;
388
+ });
389
+ }
377
390
  };
378
391
  // Keyboard handling for abandoned confirmation dialog
379
392
  useInput((input, key) => {
@@ -82,7 +82,8 @@ export const OptionsList = ({ isFocused, onSelect, options, selectedOption, show
82
82
  setFocusedIndex(newIndex);
83
83
  return;
84
84
  }
85
- // When custom input is focused, handle all keyboard input here
85
+ // When custom input is focused, only intercept navigation keys
86
+ // Let native <input> handle character input (IME, clipboard, etc.)
86
87
  if (isCustomInputFocused) {
87
88
  if (key.name === "escape") {
88
89
  setFocusedIndex(Math.max(0, options.length - 1));
@@ -100,22 +101,10 @@ export const OptionsList = ({ isFocused, onSelect, options, selectedOption, show
100
101
  onAdvance?.();
101
102
  }
102
103
  }
103
- else if (key.name === "backspace" || key.name === "delete") {
104
- if (customValue.length > 0) {
105
- onCustomChange?.(customValue.slice(0, -1));
106
- }
107
- }
108
- else if (key.sequence && !key.ctrl && !key.meta && key.name !== "up" && key.name !== "down") {
109
- const sanitized = key.sequence
110
- .replace(/\x1b?\[<[\d;]*[Mm]/g, '')
111
- .replace(/\[?[OI]/g, '');
112
- if (sanitized.length > 0) {
113
- onCustomChange?.(customValue + sanitized);
114
- }
115
- }
116
104
  return;
117
105
  }
118
- // When elaborate input is focused, handle all keyboard input here
106
+ // When elaborate input is focused, only intercept navigation keys
107
+ // Let native <input> handle character input (IME, clipboard, etc.)
119
108
  if (isElaborateFocused) {
120
109
  if (key.name === "escape") {
121
110
  setFocusedIndex(customInputIndex);
@@ -136,19 +125,6 @@ export const OptionsList = ({ isFocused, onSelect, options, selectedOption, show
136
125
  onAdvance?.();
137
126
  }
138
127
  }
139
- else if (key.name === "backspace" || key.name === "delete") {
140
- if (elaborateText.length > 0) {
141
- onElaborateTextChange?.(elaborateText.slice(0, -1));
142
- }
143
- }
144
- else if (key.sequence && !key.ctrl && !key.meta && key.name !== "up" && key.name !== "down") {
145
- const sanitized = key.sequence
146
- .replace(/\x1b?\[<[\d;]*[Mm]/g, '')
147
- .replace(/\[?[OI]/g, '');
148
- if (sanitized.length > 0) {
149
- onElaborateTextChange?.(elaborateText + sanitized);
150
- }
151
- }
152
128
  return;
153
129
  }
154
130
  // Spacebar: Select/toggle WITHOUT advancing (works for both modes)
@@ -257,7 +233,7 @@ export const OptionsList = ({ isFocused, onSelect, options, selectedOption, show
257
233
  marginTop: 0,
258
234
  paddingX: 1,
259
235
  paddingY: 0,
260
- }, children: customValue ? (_jsx("text", { style: { fg: theme.components.options.focused }, children: customValue + "▌" })) : (_jsx("text", { style: { fg: theme.components.options.hint, attributes: TextAttributes.DIM }, children: t("input.placeholder") + "▌" })) })), !isCustomInputFocused && customValue && (_jsx("box", { style: { marginLeft: 2, marginTop: 0 }, children: _jsxs("text", { style: { fg: theme.components.options.hint, attributes: TextAttributes.DIM }, children: [" ", customLines.slice(0, 3).join("\n "), customLines.length > 3 ? "\n \u2026" : ""] }) }))] }) })), showCustomInput && (_jsx("box", { style: { marginTop: 0 }, children: _jsxs("box", { style: { flexDirection: "column" }, children: [(() => {
236
+ }, children: _jsx("input", { value: customValue, onChange: (val) => onCustomChange?.(val), onSubmit: () => { }, placeholder: t("input.placeholder"), focused: true }) })), !isCustomInputFocused && customValue && (_jsx("box", { style: { marginLeft: 2, marginTop: 0 }, children: _jsxs("text", { style: { fg: theme.components.options.hint, attributes: TextAttributes.DIM }, children: [" ", customLines.slice(0, 3).join("\n "), customLines.length > 3 ? "\n \u2026" : ""] }) }))] }) })), showCustomInput && (_jsx("box", { style: { marginTop: 0 }, children: _jsxs("box", { style: { flexDirection: "column" }, children: [(() => {
261
237
  const rowBg = isElaborateFocused
262
238
  ? theme.components.options.focusedBg
263
239
  : isElaborateMarked
@@ -286,5 +262,5 @@ export const OptionsList = ({ isFocused, onSelect, options, selectedOption, show
286
262
  marginTop: 0,
287
263
  paddingX: 1,
288
264
  paddingY: 0,
289
- }, children: elaborateText ? (_jsx("text", { style: { fg: theme.components.options.focused }, children: elaborateText + "▌" })) : (_jsx("text", { style: { fg: theme.components.options.hint, attributes: TextAttributes.DIM }, children: t("input.elaboratePlaceholder") + "▌" })) })), !isElaborateFocused && elaborateText && (_jsx("box", { style: { marginLeft: 2, marginTop: 0 }, children: _jsxs("text", { style: { fg: theme.components.options.hint, attributes: TextAttributes.DIM }, children: [" ", elaborateLines.slice(0, 3).join("\n "), elaborateLines.length > 3 ? "\n \u2026" : ""] }) }))] }) }))] }));
265
+ }, children: _jsx("input", { value: elaborateText, onChange: (val) => onElaborateTextChange?.(val), onSubmit: () => { }, placeholder: t("input.elaboratePlaceholder"), focused: true }) })), !isElaborateFocused && elaborateText && (_jsx("box", { style: { marginLeft: 2, marginTop: 0 }, children: _jsxs("text", { style: { fg: theme.components.options.hint, attributes: TextAttributes.DIM }, children: [" ", elaborateLines.slice(0, 3).join("\n "), elaborateLines.length > 3 ? "\n \u2026" : ""] }) }))] }) }))] }));
290
266
  };
@@ -358,11 +358,24 @@ export const StepperView = ({ onComplete, onProgress, hasMultipleSessions, initi
358
358
  };
359
359
  // Handle elaborate text change
360
360
  const handleElaborateTextChange = (text) => {
361
- setElaborateMarks((prev) => {
362
- const newMarks = new Map(prev);
363
- newMarks.set(currentQuestionIndex, text);
364
- return newMarks;
365
- });
361
+ if (!text.trim()) {
362
+ // Auto-remove elaborate mark when text is cleared
363
+ setElaborateMarks((prev) => {
364
+ if (prev.has(currentQuestionIndex)) {
365
+ const newMarks = new Map(prev);
366
+ newMarks.delete(currentQuestionIndex);
367
+ return newMarks;
368
+ }
369
+ return prev;
370
+ });
371
+ }
372
+ else {
373
+ setElaborateMarks((prev) => {
374
+ const newMarks = new Map(prev);
375
+ newMarks.set(currentQuestionIndex, text);
376
+ return newMarks;
377
+ });
378
+ }
366
379
  };
367
380
  // Keyboard handling for abandoned confirmation dialog
368
381
  useKeyboard((key) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "auq-mcp-server",
3
- "version": "3.2.7",
3
+ "version": "3.2.8",
4
4
  "main": "dist/index.js",
5
5
  "bin": {
6
6
  "auq": "bin/auq"