auq-mcp-server 1.6.0 → 2.0.0

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 (77) hide show
  1. package/README.md +340 -121
  2. package/dist/bin/auq.js +9 -7
  3. package/dist/bin/tui-app.js +54 -19
  4. package/dist/package.json +127 -11
  5. package/dist/src/config/ConfigLoader.js +125 -0
  6. package/dist/src/config/__tests__/ConfigLoader.test.js +94 -0
  7. package/dist/src/config/defaults.js +15 -0
  8. package/dist/src/config/index.js +3 -0
  9. package/dist/src/config/types.js +29 -0
  10. package/dist/src/core/ask-user-questions.js +2 -2
  11. package/dist/src/i18n/__tests__/i18n.test.js +102 -0
  12. package/dist/src/i18n/index.js +137 -0
  13. package/dist/src/i18n/locales/en.js +72 -0
  14. package/dist/src/i18n/locales/ko.js +72 -0
  15. package/dist/src/i18n/types.js +2 -0
  16. package/dist/src/server.js +6 -1
  17. package/dist/src/session/ResponseFormatter.js +95 -42
  18. package/dist/src/session/SessionManager.js +12 -8
  19. package/dist/src/session/__tests__/ResponseFormatter.test.js +196 -0
  20. package/dist/src/shared/schemas.js +85 -33
  21. package/dist/src/tui/ConfigContext.js +10 -0
  22. package/dist/src/tui/ThemeContext.js +9 -0
  23. package/dist/src/tui/ThemeProvider.js +56 -0
  24. package/dist/src/tui/components/ConfirmationDialog.js +20 -11
  25. package/dist/src/tui/components/CustomInput.js +11 -5
  26. package/dist/src/tui/components/Footer.js +53 -23
  27. package/dist/src/tui/components/Header.js +15 -14
  28. package/dist/src/tui/components/MultiLineTextInput.js +90 -30
  29. package/dist/src/tui/components/OptionsList.js +160 -63
  30. package/dist/src/tui/components/QuestionDisplay.js +21 -10
  31. package/dist/src/tui/components/ReviewScreen.js +58 -17
  32. package/dist/src/tui/components/SingleLineTextInput.js +64 -21
  33. package/dist/src/tui/components/StepperView.js +240 -24
  34. package/dist/src/tui/components/TabBar.js +64 -38
  35. package/dist/src/tui/components/ThemeIndicator.js +39 -0
  36. package/dist/src/tui/components/Toast.js +14 -4
  37. package/dist/src/tui/components/WaitingScreen.js +24 -18
  38. package/dist/src/tui/notifications/__tests__/batch.test.js +132 -0
  39. package/dist/src/tui/notifications/__tests__/detect.test.js +156 -0
  40. package/dist/src/tui/notifications/__tests__/native.test.js +113 -0
  41. package/dist/src/tui/notifications/__tests__/osc.test.js +41 -0
  42. package/dist/src/tui/notifications/batch.js +93 -0
  43. package/dist/src/tui/notifications/detect.js +169 -0
  44. package/dist/src/tui/notifications/index.js +27 -0
  45. package/dist/src/tui/notifications/native.js +156 -0
  46. package/dist/src/tui/notifications/notify.js +65 -0
  47. package/dist/src/tui/notifications/osc.js +40 -0
  48. package/dist/src/tui/notifications/progress.js +64 -0
  49. package/dist/src/tui/notifications/types.js +14 -0
  50. package/dist/src/tui/theme.js +15 -105
  51. package/dist/src/tui/themes/catppuccin-latte.js +97 -0
  52. package/dist/src/tui/themes/catppuccin-mocha.js +97 -0
  53. package/dist/src/tui/themes/dark.js +98 -0
  54. package/dist/src/tui/themes/dracula.js +97 -0
  55. package/dist/src/tui/themes/github-dark.js +96 -0
  56. package/dist/src/tui/themes/github-light.js +96 -0
  57. package/dist/src/tui/themes/gruvbox-dark.js +97 -0
  58. package/dist/src/tui/themes/gruvbox-light.js +97 -0
  59. package/dist/src/tui/themes/index.js +70 -0
  60. package/dist/src/tui/themes/light.js +97 -0
  61. package/dist/src/tui/themes/loader.js +111 -0
  62. package/dist/src/tui/themes/monokai.js +98 -0
  63. package/dist/src/tui/themes/nord.js +97 -0
  64. package/dist/src/tui/themes/one-dark.js +97 -0
  65. package/dist/src/tui/themes/rose-pine.js +98 -0
  66. package/dist/src/tui/themes/solarized-dark.js +97 -0
  67. package/dist/src/tui/themes/solarized-light.js +97 -0
  68. package/dist/src/tui/themes/tokyo-night.js +97 -0
  69. package/dist/src/tui/themes/types.js +1 -0
  70. package/dist/src/tui/utils/__tests__/recommended.test.js +148 -0
  71. package/dist/src/tui/utils/config.js +80 -0
  72. package/dist/src/tui/utils/detectTheme.js +22 -0
  73. package/dist/src/tui/utils/gradientText.js +34 -11
  74. package/dist/src/tui/utils/recommended.js +52 -0
  75. package/dist/src/tui/utils/visualWidth.js +145 -0
  76. package/package.json +127 -11
  77. package/scripts/postinstall.cjs +8 -4
package/README.md CHANGED
@@ -1,86 +1,51 @@
1
- ![AUQ Demo](media/demo.png)
1
+ ![AUQ Demo](media/demo2.png)
2
2
 
3
3
  # AUQ - Ask User Questions
4
4
 
5
+ _`AskUserQuestion` pushed to the max_
6
+
7
+ <img src="media/icon.png" alt="AUQ Logo" width="120" />
8
+
5
9
  [![npm version](https://img.shields.io/npm/v/auq-mcp-server.svg)](https://www.npmjs.com/package/auq-mcp-server)
6
10
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
11
  [![Install MCP Server](https://cursor.com/deeplink/mcp-install-light.svg)](https://cursor.com/en-US/install-mcp?name=ask-user-questions&config=eyJlbnYiOnt9LCJjb21tYW5kIjoibnB4IC15IGF1cS1tY3Atc2VydmVyIHNlcnZlciJ9)
8
12
 
9
- **A lightweight CLI tool that allows your LLMs to ask questions to you in a separate space with clean terminal UX. Supports both MCP server and official OpenCode plugin integration. Made for multi-agent parallel coding workflows.**
13
+ **A complete toolset that enables maximum level of human-(intention-)in-the-loop onto any long-running, multi-agentic AI workflows (like Ralph Loop!).**
14
+
15
+ Single/multiple choice questions, custom options, multi-agent interoperability, question queueing, question rejection with explanation, elaboration requesting, quick recommendations auto-selection, themes, native OS notification, terminal progress bar, multi-language support, agent skills support... and more. You can customize them all too!
10
16
 
11
- 🤔 [Why do I need it when I already have question tool in CC/OC?](#-why-auq-vs-built-in-ask-tools)
17
+ **Can be used via MCP server / OpenCode plugin / Agent Skills.**
12
18
 
13
- [Setup](#setup-instructions) • [Features](#-features)
19
+ [Setup](#-install-cli-tool) • [Usage](#-usage)
20
+
21
+ > 🤔 [I already have question tool in CC/OC/Cursor. Why use this?](#-why-auq-vs-built-in-questioning-tools)
14
22
 
15
23
  ---
16
24
 
17
25
  ## What does it do?
18
26
 
19
- AUQ lets your AI assistants generate clarifying questions consisting of multiple-choice/single-choice questions (with an "Other" option for custom input) while coding or working, and wait for your answers through a separate CLI tool without messing up your workflow.
27
+ AUQ lets your AI assistants **ask clarifying questions** consisting of multiple-choice/single-choice questions (with an "Other" option for custom input / rejection / ask for elaboration) while coding or working, and **wait for your answers** through a **separate CLI window** without messing up your workflow.
20
28
 
21
- You can keep the CLI running in advance, or start it when questions are pending. With simple arrow key navigation, you can select answers and send them back to the AI—all within a clean terminal interface.
29
+ This lets you inject your **intent** into long-running autonomous AI tasks—no more switching windows or babysitting AIs. Turn on the CLI **anytime**, even **remotely via SSH**!
22
30
 
23
- ## Background
31
+ <details>
32
+ <summary><i>A no no fun background story</i></summary>
24
33
 
25
34
  In AI-assisted coding, guiding LLMs to ask **clarifying questions** have been widely recognized as a powerful prompt engineering technique to overcome LLM hallucination and generate more contextually appropriate code [1].
26
35
 
27
- On October 18th, Claude Code 2.0.21 introduced an internal `ask-user-question` tool. Inspired by it, I decided to build a similar tool that is:
36
+ On October 18th, Claude Code 2.0.21 introduced an internal `AskUserQuestion` tool. Inspired by it, I decided to build a similar tool that is:
28
37
 
29
38
  - **Integration-flexible** - Works with MCP clients (Claude Desktop, Cursor, etc.) and has official OpenCode plugin support
30
39
  - **Non-invasive** - Doesn't heavily integrate with your coding CLI workflow or occupy UI space
31
40
  - **Multi-agent friendly** - Supports receiving questions from multiple agents simultaneously in parallel workflows
32
41
 
33
- ---
34
-
35
- ## ✨ Features
36
-
37
- <https://github.com/user-attachments/assets/3a135a13-fcb1-4795-9a6b-f426fa079674>
38
-
39
- ### 🖥️ CLI-Based
40
-
41
- - **Lightweight**: Adds only ~150 tokens to your context per question
42
- - **SSH-compatible**: Use over remote connections
43
- - **Fast**: Instant startup, minimal resource usage
44
-
45
- ### 📦 100% Local
46
-
47
- All information operates based on your local file system. No data leaves your machine.
48
-
49
- ### 🔄 Resumable & Stateless
50
-
51
- The CLI app doesn't need to be running in advance. Whether the model calls the MCP first and you start the CLI later, or you keep it running—you can immediately answer pending questions in FIFO order.
52
-
53
- ### ❌ Question Set Rejection with Feedback Loop
54
-
55
- When the LLM asks about the wrong domain entirely, you can reject the question set, optionally providing the reason to the LLM. The rejection feedback is sent back to the LLM, allowing it to ask more helpful questions or align on what's important for the project.
56
-
57
- ### 📋 Question Set Queuing
58
-
59
- Recent AI workflows often use parallel sub-agents for concurrent coding. AUQ handles multiple simultaneous LLM calls gracefully—when a new question set arrives while you're answering another, it's queued and processed sequentially. Perfect for multi-agent parallel coding workflows.
42
+ </details>
60
43
 
61
44
  ---
62
45
 
63
- ## 🤔 Why AUQ vs. Built-in Ask Tools?
64
-
65
- **Why should I use AUQ instead of the built-in "Question" tools in OpenCode, Claude Code, or other coding agents?**
46
+ ## Demo
66
47
 
67
- AUQ is designed for the era of parallel multi-agent workflows, with several key advantages:
68
-
69
- ### 🚀 Non-Blocking Parallel Operation
70
-
71
- Unlike built-in ask tools that halt the entire AI workflow until you respond, AUQ **doesn't block the AI from continuing work**. Questions are queued asynchronously, allowing your AI assistants to keep coding while you review and answer questions at your own pace.
72
-
73
- ### 🎯 Multi-Agent Question Set Support
74
-
75
- AUQ can handle question sets from **multiple agents simultaneously**. In modern AI coding workflows, you often have several sub-agents working in parallel—each might need clarification on different aspects of your codebase. With AUQ:
76
-
77
- - **No more screen switching** between different agent conversations
78
- - **Unified queue** for all agent questions, regardless of which AI tool they're coming from
79
- - **Sequential processing** of questions from multiple sources in one interface
80
-
81
- ### 🌐 Question Set Rejection Support
82
-
83
- **Skip irrelevant question sets entirely** - reject whole question batches that don't apply to your current context, saving time and maintaining focus on relevant AI-agent questions.
48
+ <https://github.com/user-attachments/assets/3a135a13-fcb1-4795-9a6b-f426fa079674>
84
49
 
85
50
  ---
86
51
 
@@ -88,46 +53,56 @@ AUQ can handle question sets from **multiple agents simultaneously**. In modern
88
53
 
89
54
  ## 🚀 Install CLI Tool
90
55
 
91
- First, install the AUQ CLI tool:
56
+ First, install the **AUQ CLI**:
92
57
 
93
58
  ### Global Installation (Recommended)
94
59
 
95
60
  ```bash
96
61
  # Install globally
97
- npm install -g auq-mcp-server
98
-
62
+ bun add -g auq-mcp-server
99
63
  ```
100
64
 
101
- ### Local Installation (Project-specific)
65
+ _**Note:** Other package managers (npm, pnpm..) also work but not recommended._
66
+
67
+ <details><summary>Local (Project-specific) Installation</summary>
102
68
 
103
69
  ```bash
104
70
  # Install in your project
105
- npm install auq-mcp-server
106
-
71
+ bun add auq-mcp-server
107
72
  ```
108
73
 
109
- **Note:** Sessions are stored globally regardless of installation method. See [Troubleshooting](#troubleshooting) for session locations.
74
+ Sessions are stored **globally** regardless of installation method. See [Troubleshooting](#troubleshooting) for session locations.
75
+
76
+ </details>
110
77
 
111
78
  ---
112
79
 
113
- ## 🔌 Choose Your Integration Method
80
+ ## 🔌 Integrate to your AI
114
81
 
115
- AUQ supports multiple AI coding environments. Choose the one that fits your workflow:
82
+ AUQ supports multiple AI environments. Choose between **OpenCode plugin** and **MCP server**.
116
83
 
117
84
  ### Option A: MCP Server
118
85
 
119
- ### Cursor
86
+ > _Note: Due to differences in how some MCP clients are implemented, AUQ may be forcibly cancelled in tools that do not allow extending the global MCP timeout. If that's the case, consider using [Agent Skills](#option-c-agent-skills-experimental). Use [OpenCode plugin](#option-b-opencode-plugin) if you use OpenCode._
87
+
88
+ <details>
89
+ <summary><strong>Cursor</strong></summary>
120
90
 
121
91
  [![Install MCP Server](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en-US/install-mcp?name=ask-user-questions&config=eyJlbnYiOnt9LCJjb21tYW5kIjoibnB4IC15IGF1cS1tY3Atc2VydmVyIHNlcnZlciJ9)
122
92
 
123
- ### Claude Code (CLI)
93
+ </details>
94
+
95
+ <details>
96
+ <summary><strong>Claude Code</strong></summary>
124
97
 
125
98
  **Method 1: Using CLI** (Recommended)
126
99
 
127
100
  ```bash
128
- claude mcp add --transport stdio ask-user-questions -- npx -y auq-mcp-server server
101
+ claude mcp add --transport stdio ask-user-questions -- bunx -y auq-mcp-server server
129
102
  ```
130
103
 
104
+ > **Note:** `npx` also works if you prefer npm.
105
+
131
106
  **Method 2: Manual Configuration**
132
107
 
133
108
  Add to `.mcp.json` in your project root (for team-wide sharing):
@@ -137,7 +112,7 @@ Add to `.mcp.json` in your project root (for team-wide sharing):
137
112
  "mcpServers": {
138
113
  "ask-user-questions": {
139
114
  "type": "stdio",
140
- "command": "npx",
115
+ "command": "bunx",
141
116
  "args": ["-y", "auq-mcp-server", "server"]
142
117
  }
143
118
  }
@@ -146,39 +121,28 @@ Add to `.mcp.json` in your project root (for team-wide sharing):
146
121
 
147
122
  Or add to `~/.claude.json` for global access across all projects.
148
123
 
149
- **Verify setup:** Type `/mcp` in Claude Code to check server status.
124
+ _**Note:** Replace `bunx` if you don't use bun._
150
125
 
151
- ### Codex CLI
126
+ **Verify setup:** Type `/mcp` in Claude Code to check server status.
152
127
 
153
- Add to `~/.codex/config.toml`:
128
+ </details>
154
129
 
155
- ```toml
156
- [mcp_servers.ask-user-questions]
157
- command = "npx"
158
- args = ["-y", "auq-mcp-server", "server"]
159
- ```
130
+ <details>
131
+ <summary><strong>Codex CLI</strong></summary>
160
132
 
161
- **Full configuration example** (with optional settings):
133
+ Add to `~/.codex/config.toml`:
162
134
 
163
135
  ```toml
164
136
  [mcp_servers.ask-user-questions]
165
- command = "npx"
137
+ command = "bunx"
166
138
  args = ["-y", "auq-mcp-server", "server"]
167
-
168
- # Optional: Additional environment variables
169
- # env = { "AUQ_SESSION_DIR" = "/custom/path" }
170
-
171
- # Optional: Whitelist additional env vars
172
- # env_vars = ["AUQ_SESSION_DIR"]
173
-
174
-
175
- # Optional: Working directory
176
- # cwd = "/Users/<user>/projects"
139
+ tool_timeout_sec = 99999 // Extend timeout for long sessions
177
140
  ```
178
141
 
179
- Restart Codex CLI after saving the configuration.
142
+ </details>
180
143
 
181
- ### Claude Desktop
144
+ <details>
145
+ <summary><strong>Claude Desktop</strong></summary>
182
146
 
183
147
  Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
184
148
 
@@ -186,18 +150,22 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS)
186
150
  {
187
151
  "mcpServers": {
188
152
  "ask-user-questions": {
189
- "command": "npx",
153
+ "command": "bunx",
190
154
  "args": ["-y", "auq-mcp-server", "server"]
191
155
  }
192
156
  }
193
157
  }
194
158
  ```
195
159
 
160
+ > _Replace `bunx` if you don't use bun._
161
+
196
162
  **Restart Claude Desktop** after saving.
197
163
 
198
- ### Option B: Official OpenCode Plugin
164
+ </details>
165
+
166
+ ### Option B: OpenCode Plugin
199
167
 
200
- **Direct integration** for OpenCode users. Bypasses MCP limitations by calling `auq ask` directly.
168
+ **Direct integration** for OpenCode users. Adds working directory viewability feature exclusively.
201
169
 
202
170
  #### Configuration
203
171
 
@@ -209,6 +177,19 @@ Add to `opencode.json`:
209
177
  }
210
178
  ```
211
179
 
180
+ ### Option C: Agent Skills (Experimental)
181
+
182
+ #### Usage with Skills-Compatible Agents
183
+
184
+ Copy the `skills/ask-user-questions/` folder to your agent's skills directory.
185
+
186
+ <details>
187
+ <summary><strong>Limitations</strong></summary>
188
+
189
+ This skill guides the AI to use AUQ CLI's hidden command, `auq ask` with raw JSON as parameters. Unlike MCP or _proper_ tool harness systems, malformed JSON healing/schema enforcement aren't supported natively; therefore a less capable model could struggle to call properly.
190
+
191
+ </details>
192
+
212
193
  ---
213
194
 
214
195
  ## 💻 Usage
@@ -216,13 +197,39 @@ Add to `opencode.json`:
216
197
  ### Starting the CLI tool
217
198
 
218
199
  ```bash
219
- auq # if installed globally (npm install -g)
220
- npx auq # works from anywhere
200
+ auq # if installed globally (bun add -g)
201
+ # bunx auq
202
+ # npx auq
221
203
  ```
222
204
 
223
- Then just start working with your coding agent or AI assistant. You may prompt to ask questions with the tool the agent got; it will mostly just get what you mean.
205
+ Start by defining your workflow to use AUQ tool for clarifying questions, on `AGENTS.md` (or `CLAUDE.md`), like:
206
+
207
+ ```markdown
208
+ Whenever you need clarification on what you are working on, never guess, and call AUQ(ask-user-questions).
209
+ ```
210
+
211
+ When the AI asks questions, you'll see them appear in the AUQ TUI. Answer them **at your convenience**.
212
+
213
+ > _Note: AUQ is an unopinionated tool and doesn't include prompts on **HOW** AI should leverage it. It is expected that you do your own prompt engineering to make the most out of it in your own workflows._
214
+ > _I personally enjoy prompting it to ask at least 30 questions repeatedly before action!_
215
+
216
+ ### Recommended Setups
224
217
 
225
- ### Commands
218
+ It is recommended to **disable** the built-in questioning tool in your harness (like the `question` tool in OpenCode or `AskUserQuestion` in Claude Code) to avoid AI from mixing them up.
219
+
220
+ ### Useful Keyboard Shortcuts
221
+
222
+ | Key | Action | Description |
223
+ | -------- | ------------- | ------------------------------------------------------------------ |
224
+ | `Space` | Select | Select/toggle option without advancing |
225
+ | `Enter` | Select & Next | Select option and advance to next question |
226
+ | `R` | Recommended | Select recommended option(s) for current question |
227
+ | `Ctrl+R` | Quick Submit | Auto-select recommended options for all questions and go to review |
228
+ | `Esc` | Reject | Reject the whole question set and optionally explain why to the AI |
229
+ | `Ctrl+T` | Theme | Cycle through available color themes |
230
+
231
+ <details>
232
+ <summary><strong>More Commands (advanced)</strong></summary>
226
233
 
227
234
  ```bash
228
235
  # you won't likely need these at all
@@ -231,11 +238,69 @@ auq --version # Show version
231
238
  auq --help # Show help
232
239
  ```
233
240
 
241
+ </details>
242
+
243
+ ---
244
+
245
+ ### 🎨 Themes
246
+
247
+ AUQ supports **16 built-in color themes** with automatic persistence. Press `Ctrl+T` to cycle through themes.
248
+
249
+ <details>
250
+ <summary><strong>Built-in Themes</strong></summary>
251
+
252
+ | Theme | Style |
253
+ | ---------------- | ------------------------ |
254
+ | AUQ dark | Default dark theme |
255
+ | AUQ light | Default light theme |
256
+ | Nord | Arctic, bluish |
257
+ | Dracula | Dark purple/pink |
258
+ | Catppuccin Mocha | Warm dark pastels |
259
+ | Catppuccin Latte | Warm light pastels |
260
+ | Solarized Dark | Low contrast dark |
261
+ | Solarized Light | Low contrast light |
262
+ | Gruvbox Dark | Retro groove dark |
263
+ | Gruvbox Light | Retro groove light |
264
+ | Tokyo Night | Dark with vibrant colors |
265
+ | One Dark | Atom-inspired dark |
266
+ | Monokai | Classic vibrant dark |
267
+ | GitHub Dark | GitHub's dark mode |
268
+ | GitHub Light | GitHub's light mode |
269
+ | Rosé Pine | Warm, cozy pinks |
270
+
271
+ </details>
272
+
273
+ Your selected theme is **automatically saved** to `~/.config/auq/config.json` and restored on next launch.
274
+
275
+ <details>
276
+ <summary><strong>Custom Themes</strong></summary>
277
+
278
+ Create custom themes by placing `.theme.json` files in:
279
+
280
+ - **macOS/Linux**: `~/.config/auq/themes/`
281
+
282
+ Example custom theme (`~/.config/auq/themes/my-theme.theme.json`):
283
+
284
+ ```json
285
+ {
286
+ "name": "my-theme",
287
+ "colors": {
288
+ "primary": "#ff6b6b",
289
+ "success": "#51cf66",
290
+ "text": "#f8f9fa"
291
+ }
292
+ }
293
+ ```
294
+
295
+ Custom themes inherit from the default dark theme—only override the colors you want to change. See the [JSON schema](schemas/theme.schema.json) for all available properties.
296
+
297
+ </details>
298
+
234
299
  ---
235
300
 
236
301
  ### Manual session cleanup
237
302
 
238
- Sessions auto-clean after completion or timeout. However, you can manually clean them up if you want to.
303
+ Sessions auto-clean after retention period. However, you can manually clean them up if you want to.
239
304
 
240
305
  ```bash
241
306
  rm -rf ~/Library/Application\ Support/auq/sessions/* # macOS
@@ -245,7 +310,7 @@ rm -rf ~/.local/share/auq/sessions/* # Linux
245
310
  ---
246
311
 
247
312
  <details>
248
- <summary>Local Development & Testing</summary>
313
+ <summary><strong>Local Development & Testing</strong></summary>
249
314
 
250
315
  To test the MCP server and CLI locally during development:
251
316
 
@@ -253,13 +318,13 @@ To test the MCP server and CLI locally during development:
253
318
 
254
319
  ```bash
255
320
  # Option A: Run with tsx (recommended for development)
256
- npm run start
321
+ bun run start
257
322
 
258
323
  # Option B: Run with fastmcp dev mode (includes web inspector at http://localhost:6274)
259
- npm run dev
324
+ bun run dev
260
325
 
261
326
  # Option C: Run the built version
262
- npm run build && npm run server
327
+ bun run build && bun run server
263
328
  ```
264
329
 
265
330
  ### 2. Create a Test Session (Terminal 2)
@@ -267,11 +332,11 @@ npm run build && npm run server
267
332
  Use the `auq ask` command to create a session and wait for answers:
268
333
 
269
334
  ```bash
270
- # Run directly with tsx during development
271
- npx tsx bin/auq.tsx ask '{"questions": [{"prompt": "Which language?", "title": "Lang", "options": [{"label": "TypeScript"}, {"label": "Python"}], "multiSelect": false}]}'
335
+ # Run directly with bun during development
336
+ bun run bin/auq.tsx ask '{"questions": [{"prompt": "Which language?", "title": "Lang", "options": [{"label": "TypeScript"}, {"label": "Python"}], "multiSelect": false}]}'
272
337
 
273
338
  # Or pipe JSON to stdin
274
- echo '{"questions": [{"prompt": "Which database?", "title": "DB", "options": [{"label": "PostgreSQL"}, {"label": "MongoDB"}], "multiSelect": false}]}' | npx tsx bin/auq.tsx ask
339
+ echo '{"questions": [{"prompt": "Which database?", "title": "DB", "options": [{"label": "PostgreSQL"}, {"label": "MongoDB"}], "multiSelect": false}]}' | bun run bin/auq.tsx ask
275
340
  ```
276
341
 
277
342
  This will create a session and wait for the TUI to provide answers.
@@ -280,7 +345,7 @@ This will create a session and wait for the TUI to provide answers.
280
345
 
281
346
  ```bash
282
347
  # Run the TUI to answer pending questions
283
- npx tsx bin/auq.tsx
348
+ bun run bin/auq.tsx
284
349
  ```
285
350
 
286
351
  ### Create Mock Sessions for TUI Testing
@@ -289,16 +354,16 @@ To test the TUI with multiple pending sessions:
289
354
 
290
355
  ```bash
291
356
  # Create 3 mock sessions (default)
292
- npx tsx scripts/create-mock-session.ts
357
+ bun run scripts/create-mock-session.ts
293
358
 
294
359
  # Create a specific number of sessions
295
- npx tsx scripts/create-mock-session.ts 5
360
+ bun run scripts/create-mock-session.ts 5
296
361
  ```
297
362
 
298
363
  Then run the TUI to see and answer them:
299
364
 
300
365
  ```bash
301
- npx tsx bin/auq.tsx
366
+ bun run bin/auq.tsx
302
367
  ```
303
368
 
304
369
  ### Verify MCP and CLI Use Same Session Directory
@@ -310,9 +375,20 @@ Both components should report the same session directory path. Check the logs:
310
375
 
311
376
  On macOS, both should use: `~/Library/Application Support/auq/sessions`
312
377
 
378
+ ### Development Commands
379
+
380
+ ```bash
381
+ # Regenerate the skill from source
382
+ bun run generate:skill
383
+
384
+ # Validate skill structure and content
385
+ bun run validate:skill
386
+ ```
387
+
313
388
  </details>
314
389
 
315
- ## Troubleshooting
390
+ <details>
391
+ <summary><strong>Troubleshooting</strong></summary>
316
392
 
317
393
  ### Session Storage
318
394
 
@@ -322,23 +398,166 @@ Sessions are stored in platform-specific global locations:
322
398
  - **Linux**: `~/.local/share/auq/sessions` (or `$XDG_DATA_HOME/auq/sessions`)
323
399
  - **Windows**: `%APPDATA%\auq\sessions`
324
400
 
325
- To override the default location, set the `AUQ_SESSION_DIR` environment variable:
401
+ _Can be customized with `AUQ_SESSION_DIR` environment variable._
326
402
 
327
- ```bash
328
- export AUQ_SESSION_DIR=/custom/path
403
+ </details>
404
+
405
+ <details>
406
+ <summary><strong>Configuration</strong></summary>
407
+
408
+ AUQ can be configured via a `.auqrc.json` file. Settings are loaded from (in priority order):
409
+
410
+ 1. **Local**: `./.auqrc.json` (project directory)
411
+ 2. **Global**: `~/.config/auq/.auqrc.json` (or `$XDG_CONFIG_HOME/auq/.auqrc.json`)
412
+ 3. **Defaults**: Built-in values
413
+
414
+ _Settings from local config override global config, which overrides defaults._
415
+
416
+ ### Default Configuration
417
+
418
+ ```json
419
+ {
420
+ "maxOptions": 5,
421
+ "maxQuestions": 5,
422
+ "recommendedOptions": 4,
423
+ "recommendedQuestions": 4,
424
+ "sessionTimeout": 0,
425
+ "retentionPeriod": 604800000, // 7 days
426
+ "language": "auto",
427
+ "theme": "system",
428
+ "autoSelectRecommended": true,
429
+ "notifications": {
430
+ "enabled": true,
431
+ "sound": true
432
+ }
433
+ }
329
434
  ```
330
435
 
436
+ <details>
437
+ <summary><strong>Available Settings</strong></summary>
438
+
439
+ | Setting | Type | Default | Range/Values | Description |
440
+ | ----------------------- | ------- | --------- | ------------------------------- | ----------------------------------------------------- |
441
+ | `maxOptions` | number | 5 | 2-10 | Maximum options per question |
442
+ | `maxQuestions` | number | 5 | 1-10 | Maximum questions per session |
443
+ | `recommendedOptions` | number | 4 | 1-10 | Suggested number of options (for AI guidance) |
444
+ | `recommendedQuestions` | number | 4 | 1-10 | Suggested number of questions (for AI guidance) |
445
+ | `language` | string | "auto" | "auto", "en", "ko" | UI language (auto-detects from system if "auto") |
446
+ | `theme` | string | "system" | "system", "dark", "light", etc. | Color theme for TUI |
447
+ | `sessionTimeout` | number | 0 | 0+ (milliseconds) | Session timeout (0 = no timeout) |
448
+ | `retentionPeriod` | number | 604800000 | 0+ (milliseconds) | How long to keep completed sessions (default: 7 days) |
449
+ | `notifications.enabled` | boolean | true | true/false | Enable desktop notifications for new questions |
450
+ | `notifications.sound` | boolean | true | true/false | Play sound with notifications |
451
+
452
+ </details>
453
+
454
+ ### Language Support
455
+
456
+ AUQ supports multiple languages for the TUI interface:
457
+
458
+ - **English** (`en`) - Default
459
+ - **Korean** (`ko`) - 한국어
460
+
461
+ Language is auto-detected from system locale (`LANG`, `LC_ALL`, `LC_MESSAGES` environment variables) when set to `"auto"`.
462
+
463
+ ### Desktop Notifications
464
+
465
+ AUQ uses native desktop notifications to alert you when new questions arrive.
466
+
467
+ #### Platform Requirements
468
+
469
+ | Platform | Status | Notes |
470
+ | -------- | ----------------------- | --------------------------------------------- |
471
+ | macOS | ✅ Works out of the box | Uses Notification Center |
472
+ | Windows | ✅ Works out of the box | Uses Action Center |
473
+ | Linux | ⚠️ Requires libnotify | Install: `sudo apt-get install libnotify-bin` |
474
+
475
+ Notifications can be disabled in configuration if needed.
476
+
477
+ **Features:**
478
+
479
+ - **Batched Notifications**: Rapid session arrivals are batched into a single notification
480
+ - **Progress Bar**: Shows question completion progress in terminal dock icon (supported terminals like iTerm2 and WezTerm)
481
+ - **Native Integration**: Uses system-native notification centers
482
+
483
+ **Configuration:**
484
+
485
+ ```json
486
+ {
487
+ "notifications": {
488
+ "enabled": true,
489
+ "sound": true
490
+ }
491
+ }
492
+ ```
493
+
494
+ - `notifications.enabled` (default: `true`): Enable desktop notifications
495
+ - `notifications.sound` (default: `true`): Play sound with notifications
496
+
497
+ Set `notifications.enabled` to `false` to disable all notifications.
498
+
499
+ </details>
500
+
331
501
  ---
332
502
 
333
- ## 🚀 Roadmap
503
+ ## 🤔 Why AUQ vs. Built-in Questioning Tools?
504
+
505
+ > **A clean decision inbox so you & AI stay in flow.**
506
+
507
+ You're an AI power user, running multiple agents on multiple instances. Highly parallelized, the AIs ask questions to you simultaneously, on multiple threads—scattered across different windows. AUQ enables them to ask **anytime**, collects everything in **one inbox**, and lets you respond **on your terms**—then elegantly routes answers back to each agent.
508
+
509
+ ```
510
+ Claude Code Cursor OpenCode
511
+ │ │ │
512
+ ▼ ▼ ▼
513
+ ┌─────────────────────────────┐
514
+ │ 📥 AUQ Inbox │
515
+ └─────────────────────────────┘
516
+
517
+
518
+ 🖥️ TUI
519
+
520
+
521
+ ┌─────────────────────────────┐
522
+ │ Your Answers │
523
+ └─────────────────────────────┘
524
+ │ │ │
525
+ ▼ ▼ ▼
526
+ Claude Code Cursor OpenCode
527
+ ```
528
+
529
+ 📥 **One Inbox for All Agents** — Multiple agents ask in one place. One queue, one source of truth.
530
+
531
+ 🧠 **Teach the AI** — Reject bad questions and tell it why. Turn "no" into better follow-ups.
334
532
 
335
- - [ ] Light & dark mode themes
336
- - [ ] MCP prompt mode switch (Anthropic style / minimal)
337
- - [ ] Custom color themes
338
- - [ ] Multi-language support
339
- - [ ] Audio notifications on new question
340
- - [ ] Simple option to prompt the LLM to/not ask more questions after answering.
341
- - [ ] Optional 'context' field privided by the LLM, that describes the context of the questions - will be useful for multi-agent coding
533
+ **Fix the Question First** Can't answer because it's vague? Request **elaboration** before you guess.
534
+
535
+ **Blast Through the Obvious** — `Ctrl+R` accepts all **recommended** options. Focus on the hard decisions.
536
+
537
+ 🔔 **Pinged When It Matters** — Native notifications, **batched** so you're not spammed.
538
+
539
+ 🌐 **Works Where You Work** SSH into a remote server? AUQ runs there too.
540
+
541
+ <details>
542
+ <summary><strong>Nice Extras</strong></summary>
543
+
544
+ - 🎨 16 built-in themes + custom theme support
545
+ - 🌍 i18n (English, Korean) with auto-detection
546
+ - 📊 Dock progress bar (iTerm2, WezTerm, Ghostty)
547
+ - 🔤 Full CJK character support
548
+
549
+ #### Power Moves
550
+
551
+ | Shortcut | What it does |
552
+ | -------- | -------------------------------------------------- |
553
+ | `Space` | Select option without advancing |
554
+ | `Enter` | Select option and advance to next question |
555
+ | `R` | Select recommended option(s) for current question |
556
+ | `Ctrl+R` | Quick submit — auto-fill recommended, go to review |
557
+ | `Esc` | Reject question set — optionally explain why |
558
+ | `Ctrl+T` | Cycle through 16 themes |
559
+
560
+ </details>
342
561
 
343
562
  ---
344
563