@krishivpb60/aether-ai-cli 1.3.10 → 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,11 @@
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
+
1
9
  # Aether CLI v1.3.10 Highlights
2
10
  - **Microphone Audio Input Fixes & 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.10",
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
@@ -2267,13 +2267,24 @@ export async function handleMicInput(ctx) {
2267
2267
 
2268
2268
  const stdin = process.stdin;
2269
2269
  const wasRaw = stdin.isRaw;
2270
- stdin.setRawMode(true);
2270
+ const isTTY = typeof stdin.setRawMode === "function";
2271
+
2272
+ if (isTTY) {
2273
+ stdin.setRawMode(true);
2274
+ }
2271
2275
  stdin.resume();
2272
2276
  stdin.setEncoding("utf8");
2273
2277
 
2274
2278
  let aborted = false;
2275
2279
  await new Promise((resolve) => {
2276
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
+ }
2277
2288
  if (chunk === "\u0003") {
2278
2289
  aborted = true;
2279
2290
  stdin.removeListener("data", onData);
@@ -2288,7 +2299,9 @@ export async function handleMicInput(ctx) {
2288
2299
  stdin.on("data", onData);
2289
2300
  });
2290
2301
 
2291
- stdin.setRawMode(wasRaw);
2302
+ if (isTTY) {
2303
+ stdin.setRawMode(wasRaw);
2304
+ }
2292
2305
  ctx.rl.resume();
2293
2306
 
2294
2307
  if (aborted) {
@@ -76,7 +76,7 @@
76
76
  }
77
77
 
78
78
  .hud-frame::after {
79
- content: "AETHER CLI V1.3.10";
79
+ content: "AETHER CLI V1.3.11";
80
80
  position: absolute;
81
81
  bottom: -12px;
82
82
  right: 20px;