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.
- package/README.md +340 -121
- package/dist/bin/auq.js +9 -7
- package/dist/bin/tui-app.js +54 -19
- package/dist/package.json +127 -11
- package/dist/src/config/ConfigLoader.js +125 -0
- package/dist/src/config/__tests__/ConfigLoader.test.js +94 -0
- package/dist/src/config/defaults.js +15 -0
- package/dist/src/config/index.js +3 -0
- package/dist/src/config/types.js +29 -0
- package/dist/src/core/ask-user-questions.js +2 -2
- package/dist/src/i18n/__tests__/i18n.test.js +102 -0
- package/dist/src/i18n/index.js +137 -0
- package/dist/src/i18n/locales/en.js +72 -0
- package/dist/src/i18n/locales/ko.js +72 -0
- package/dist/src/i18n/types.js +2 -0
- package/dist/src/server.js +6 -1
- package/dist/src/session/ResponseFormatter.js +95 -42
- package/dist/src/session/SessionManager.js +12 -8
- package/dist/src/session/__tests__/ResponseFormatter.test.js +196 -0
- package/dist/src/shared/schemas.js +85 -33
- package/dist/src/tui/ConfigContext.js +10 -0
- package/dist/src/tui/ThemeContext.js +9 -0
- package/dist/src/tui/ThemeProvider.js +56 -0
- package/dist/src/tui/components/ConfirmationDialog.js +20 -11
- package/dist/src/tui/components/CustomInput.js +11 -5
- package/dist/src/tui/components/Footer.js +53 -23
- package/dist/src/tui/components/Header.js +15 -14
- package/dist/src/tui/components/MultiLineTextInput.js +90 -30
- package/dist/src/tui/components/OptionsList.js +160 -63
- package/dist/src/tui/components/QuestionDisplay.js +21 -10
- package/dist/src/tui/components/ReviewScreen.js +58 -17
- package/dist/src/tui/components/SingleLineTextInput.js +64 -21
- package/dist/src/tui/components/StepperView.js +240 -24
- package/dist/src/tui/components/TabBar.js +64 -38
- package/dist/src/tui/components/ThemeIndicator.js +39 -0
- package/dist/src/tui/components/Toast.js +14 -4
- package/dist/src/tui/components/WaitingScreen.js +24 -18
- package/dist/src/tui/notifications/__tests__/batch.test.js +132 -0
- package/dist/src/tui/notifications/__tests__/detect.test.js +156 -0
- package/dist/src/tui/notifications/__tests__/native.test.js +113 -0
- package/dist/src/tui/notifications/__tests__/osc.test.js +41 -0
- package/dist/src/tui/notifications/batch.js +93 -0
- package/dist/src/tui/notifications/detect.js +169 -0
- package/dist/src/tui/notifications/index.js +27 -0
- package/dist/src/tui/notifications/native.js +156 -0
- package/dist/src/tui/notifications/notify.js +65 -0
- package/dist/src/tui/notifications/osc.js +40 -0
- package/dist/src/tui/notifications/progress.js +64 -0
- package/dist/src/tui/notifications/types.js +14 -0
- package/dist/src/tui/theme.js +15 -105
- package/dist/src/tui/themes/catppuccin-latte.js +97 -0
- package/dist/src/tui/themes/catppuccin-mocha.js +97 -0
- package/dist/src/tui/themes/dark.js +98 -0
- package/dist/src/tui/themes/dracula.js +97 -0
- package/dist/src/tui/themes/github-dark.js +96 -0
- package/dist/src/tui/themes/github-light.js +96 -0
- package/dist/src/tui/themes/gruvbox-dark.js +97 -0
- package/dist/src/tui/themes/gruvbox-light.js +97 -0
- package/dist/src/tui/themes/index.js +70 -0
- package/dist/src/tui/themes/light.js +97 -0
- package/dist/src/tui/themes/loader.js +111 -0
- package/dist/src/tui/themes/monokai.js +98 -0
- package/dist/src/tui/themes/nord.js +97 -0
- package/dist/src/tui/themes/one-dark.js +97 -0
- package/dist/src/tui/themes/rose-pine.js +98 -0
- package/dist/src/tui/themes/solarized-dark.js +97 -0
- package/dist/src/tui/themes/solarized-light.js +97 -0
- package/dist/src/tui/themes/tokyo-night.js +97 -0
- package/dist/src/tui/themes/types.js +1 -0
- package/dist/src/tui/utils/__tests__/recommended.test.js +148 -0
- package/dist/src/tui/utils/config.js +80 -0
- package/dist/src/tui/utils/detectTheme.js +22 -0
- package/dist/src/tui/utils/gradientText.js +34 -11
- package/dist/src/tui/utils/recommended.js +52 -0
- package/dist/src/tui/utils/visualWidth.js +145 -0
- package/package.json +127 -11
- package/scripts/postinstall.cjs +8 -4
package/README.md
CHANGED
|
@@ -1,86 +1,51 @@
|
|
|
1
|
-

|
|
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
|
[](https://www.npmjs.com/package/auq-mcp-server)
|
|
6
10
|
[](https://opensource.org/licenses/MIT)
|
|
7
11
|
[](https://cursor.com/en-US/install-mcp?name=ask-user-questions&config=eyJlbnYiOnt9LCJjb21tYW5kIjoibnB4IC15IGF1cS1tY3Atc2VydmVyIHNlcnZlciJ9)
|
|
8
12
|
|
|
9
|
-
**A
|
|
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
|
-
|
|
17
|
+
**Can be used via MCP server / OpenCode plugin / Agent Skills.**
|
|
12
18
|
|
|
13
|
-
[Setup](
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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 `
|
|
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
|
-
##
|
|
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
|
-
|
|
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
|
|
56
|
+
First, install the **AUQ CLI**:
|
|
92
57
|
|
|
93
58
|
### Global Installation (Recommended)
|
|
94
59
|
|
|
95
60
|
```bash
|
|
96
61
|
# Install globally
|
|
97
|
-
|
|
98
|
-
|
|
62
|
+
bun add -g auq-mcp-server
|
|
99
63
|
```
|
|
100
64
|
|
|
101
|
-
|
|
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
|
-
|
|
106
|
-
|
|
71
|
+
bun add auq-mcp-server
|
|
107
72
|
```
|
|
108
73
|
|
|
109
|
-
|
|
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
|
-
## 🔌
|
|
80
|
+
## 🔌 Integrate to your AI
|
|
114
81
|
|
|
115
|
-
AUQ supports multiple AI
|
|
82
|
+
AUQ supports multiple AI environments. Choose between **OpenCode plugin** and **MCP server**.
|
|
116
83
|
|
|
117
84
|
### Option A: MCP Server
|
|
118
85
|
|
|
119
|
-
|
|
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
|
[](https://cursor.com/en-US/install-mcp?name=ask-user-questions&config=eyJlbnYiOnt9LCJjb21tYW5kIjoibnB4IC15IGF1cS1tY3Atc2VydmVyIHNlcnZlciJ9)
|
|
122
92
|
|
|
123
|
-
|
|
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 --
|
|
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": "
|
|
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
|
-
**
|
|
124
|
+
_**Note:** Replace `bunx` if you don't use bun._
|
|
150
125
|
|
|
151
|
-
|
|
126
|
+
**Verify setup:** Type `/mcp` in Claude Code to check server status.
|
|
152
127
|
|
|
153
|
-
|
|
128
|
+
</details>
|
|
154
129
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
command = "npx"
|
|
158
|
-
args = ["-y", "auq-mcp-server", "server"]
|
|
159
|
-
```
|
|
130
|
+
<details>
|
|
131
|
+
<summary><strong>Codex CLI</strong></summary>
|
|
160
132
|
|
|
161
|
-
|
|
133
|
+
Add to `~/.codex/config.toml`:
|
|
162
134
|
|
|
163
135
|
```toml
|
|
164
136
|
[mcp_servers.ask-user-questions]
|
|
165
|
-
command = "
|
|
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
|
-
|
|
142
|
+
</details>
|
|
180
143
|
|
|
181
|
-
|
|
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": "
|
|
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
|
-
|
|
164
|
+
</details>
|
|
165
|
+
|
|
166
|
+
### Option B: OpenCode Plugin
|
|
199
167
|
|
|
200
|
-
**Direct integration** for OpenCode users.
|
|
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
|
|
220
|
-
|
|
200
|
+
auq # if installed globally (bun add -g)
|
|
201
|
+
# bunx auq
|
|
202
|
+
# npx auq
|
|
221
203
|
```
|
|
222
204
|
|
|
223
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
321
|
+
bun run start
|
|
257
322
|
|
|
258
323
|
# Option B: Run with fastmcp dev mode (includes web inspector at http://localhost:6274)
|
|
259
|
-
|
|
324
|
+
bun run dev
|
|
260
325
|
|
|
261
326
|
# Option C: Run the built version
|
|
262
|
-
|
|
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
|
|
271
|
-
|
|
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}]}' |
|
|
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
|
-
|
|
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
|
-
|
|
357
|
+
bun run scripts/create-mock-session.ts
|
|
293
358
|
|
|
294
359
|
# Create a specific number of sessions
|
|
295
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
401
|
+
_Can be customized with `AUQ_SESSION_DIR` environment variable._
|
|
326
402
|
|
|
327
|
-
|
|
328
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
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
|
|