wispy-cli 2.4.2 → 2.4.3

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.
@@ -192,14 +192,34 @@ export class PermissionManager {
192
192
  return this._approvalHandler(action);
193
193
  }
194
194
 
195
- // Default: CLI readline prompt
195
+ // Default: CLI single-key prompt (no extra readline to avoid stdin conflicts)
196
196
  return new Promise((resolve) => {
197
- const rl = createInterface({ input: process.stdin, output: process.stdout });
198
- const prompt = `\n⚠️ ${action.label ?? `${action.toolName}()`} — Allow? [y/N] `;
199
- rl.question(prompt, (answer) => {
200
- rl.close();
201
- resolve(answer.trim().toLowerCase() === "y" || answer.trim().toLowerCase() === "yes");
202
- });
197
+ const label = action.label ?? `${action.toolName}(${JSON.stringify(action.args ?? {}).slice(0, 60)})`;
198
+ process.stdout.write(`\n⚠️ ${label} — Allow? [y/N] `);
199
+
200
+ if (process.stdin.isTTY) {
201
+ const wasRaw = process.stdin.isRaw;
202
+ process.stdin.setRawMode(true);
203
+ process.stdin.resume();
204
+ process.stdin.once('data', (data) => {
205
+ const ch = data.toString().toLowerCase();
206
+ process.stdin.setRawMode(wasRaw);
207
+ if (ch === 'y') {
208
+ process.stdout.write('y\n');
209
+ resolve(true);
210
+ } else {
211
+ process.stdout.write(ch === '\x03' ? '\n' : 'n\n');
212
+ resolve(false);
213
+ }
214
+ });
215
+ } else {
216
+ // Non-TTY fallback
217
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
218
+ rl.question('', (answer) => {
219
+ rl.close();
220
+ resolve(answer.trim().toLowerCase() === 'y');
221
+ });
222
+ }
203
223
  });
204
224
  }
205
225
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wispy-cli",
3
- "version": "2.4.2",
3
+ "version": "2.4.3",
4
4
  "description": "🌿 Wispy — AI workspace assistant with trustworthy execution (harness, receipts, approvals, diffs)",
5
5
  "license": "MIT",
6
6
  "author": "Minseo & Poropo",