@krishivpb60/aether-ai-cli 1.3.9 → 1.3.11

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/HIGHLIGHTS.md CHANGED
@@ -1,3 +1,19 @@
1
+ # Aether CLI v1.3.11 Highlights
2
+ - **Microphone Audio Input Non-TTY Safety & Transcription (`/mic`)**:
3
+ - Adds `/mic` voice command to record audio directly from your microphone inside the terminal session.
4
+ - Implements native zero-dependency audio recording on Windows using the WinMM Multimedia Control Interface (MCI) via PowerShell.
5
+ - Automatically transcribes speech using Google Gemini (base64 inlineData), Groq Whisper, or OpenAI Whisper.
6
+ - Adds safeguards to prevent setRawMode crashes in non-TTY environments (like tests or piped runs).
7
+ - Populates the active readline prompt buffer directly with the transcribed text so you can review, edit, and send it.
8
+
9
+ # Aether CLI v1.3.10 Highlights
10
+ - **Microphone Audio Input Fixes & Transcription (`/mic`)**:
11
+ - Adds `/mic` voice command to record audio directly from your microphone inside the terminal session.
12
+ - Implements native zero-dependency audio recording on Windows using the WinMM Multimedia Control Interface (MCI) via PowerShell.
13
+ - Automatically transcribes speech using Google Gemini (base64 inlineData), Groq Whisper, or OpenAI Whisper.
14
+ - Fixes readline interface raw mode pausing blockages to ensure Enter keypress resolves transcription correctly.
15
+ - Populates the active readline prompt buffer directly with the transcribed text so you can review, edit, and send it.
16
+
1
17
  # Aether CLI v1.3.9 Highlights
2
18
  - **Microphone Audio Input & Transcription (`/mic`)**:
3
19
  - Adds `/mic` voice command to record audio directly from your microphone inside the terminal session.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@krishivpb60/aether-ai-cli",
3
- "version": "1.3.9",
3
+ "version": "1.3.11",
4
4
  "description": "Aether Core AI — A cyberpunk command-line AI assistant with multi-mode reasoning, 12-node failover mesh, file context injection, and offline fallbacks.",
5
5
  "main": "src/cli.js",
6
6
  "bin": {
package/src/chat.js CHANGED
@@ -2265,18 +2265,54 @@ export async function handleMicInput(ctx) {
2265
2265
 
2266
2266
  ctx.rl.pause();
2267
2267
 
2268
+ const stdin = process.stdin;
2269
+ const wasRaw = stdin.isRaw;
2270
+ const isTTY = typeof stdin.setRawMode === "function";
2271
+
2272
+ if (isTTY) {
2273
+ stdin.setRawMode(true);
2274
+ }
2275
+ stdin.resume();
2276
+ stdin.setEncoding("utf8");
2277
+
2278
+ let aborted = false;
2268
2279
  await new Promise((resolve) => {
2269
2280
  function onData(chunk) {
2281
+ if (!isTTY) {
2282
+ if (chunk.includes("\n") || chunk.includes("\r")) {
2283
+ stdin.removeListener("data", onData);
2284
+ resolve();
2285
+ }
2286
+ return;
2287
+ }
2288
+ if (chunk === "\u0003") {
2289
+ aborted = true;
2290
+ stdin.removeListener("data", onData);
2291
+ resolve();
2292
+ return;
2293
+ }
2270
2294
  if (chunk === "\r" || chunk === "\n" || chunk === "\r\n") {
2271
- process.stdin.removeListener("data", onData);
2295
+ stdin.removeListener("data", onData);
2272
2296
  resolve();
2273
2297
  }
2274
2298
  }
2275
- process.stdin.on("data", onData);
2299
+ stdin.on("data", onData);
2276
2300
  });
2277
2301
 
2302
+ if (isTTY) {
2303
+ stdin.setRawMode(wasRaw);
2304
+ }
2278
2305
  ctx.rl.resume();
2279
2306
 
2307
+ if (aborted) {
2308
+ console.log("\n" + label.system + " " + colors.warning("Recording aborted by user.\n"));
2309
+ try {
2310
+ await handle.stop();
2311
+ if (fs.existsSync(wavPath)) { fs.unlinkSync(wavPath); }
2312
+ } catch (e) {}
2313
+ return;
2314
+ }
2315
+
2280
2316
  console.log("");
2281
2317
  const spinner = createSpinner("transcribe");
2282
2318
  spinner.start("Stopping recording and transcribing...");
@@ -76,7 +76,7 @@
76
76
  }
77
77
 
78
78
  .hud-frame::after {
79
- content: "AETHER CLI V1.3.9";
79
+ content: "AETHER CLI V1.3.11";
80
80
  position: absolute;
81
81
  bottom: -12px;
82
82
  right: 20px;