@krishivpb60/aether-ai-cli 1.3.9 → 1.3.10

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,11 @@
1
+ # Aether CLI v1.3.10 Highlights
2
+ - **Microphone Audio Input Fixes & 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
+ - Fixes readline interface raw mode pausing blockages to ensure Enter keypress resolves transcription correctly.
7
+ - Populates the active readline prompt buffer directly with the transcribed text so you can review, edit, and send it.
8
+
1
9
  # Aether CLI v1.3.9 Highlights
2
10
  - **Microphone Audio Input & Transcription (`/mic`)**:
3
11
  - 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.10",
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,41 @@ 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
+ stdin.setRawMode(true);
2271
+ stdin.resume();
2272
+ stdin.setEncoding("utf8");
2273
+
2274
+ let aborted = false;
2268
2275
  await new Promise((resolve) => {
2269
2276
  function onData(chunk) {
2277
+ if (chunk === "\u0003") {
2278
+ aborted = true;
2279
+ stdin.removeListener("data", onData);
2280
+ resolve();
2281
+ return;
2282
+ }
2270
2283
  if (chunk === "\r" || chunk === "\n" || chunk === "\r\n") {
2271
- process.stdin.removeListener("data", onData);
2284
+ stdin.removeListener("data", onData);
2272
2285
  resolve();
2273
2286
  }
2274
2287
  }
2275
- process.stdin.on("data", onData);
2288
+ stdin.on("data", onData);
2276
2289
  });
2277
2290
 
2291
+ stdin.setRawMode(wasRaw);
2278
2292
  ctx.rl.resume();
2279
2293
 
2294
+ if (aborted) {
2295
+ console.log("\n" + label.system + " " + colors.warning("Recording aborted by user.\n"));
2296
+ try {
2297
+ await handle.stop();
2298
+ if (fs.existsSync(wavPath)) { fs.unlinkSync(wavPath); }
2299
+ } catch (e) {}
2300
+ return;
2301
+ }
2302
+
2280
2303
  console.log("");
2281
2304
  const spinner = createSpinner("transcribe");
2282
2305
  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.10";
80
80
  position: absolute;
81
81
  bottom: -12px;
82
82
  right: 20px;