@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 +8 -0
- package/package.json +1 -1
- package/src/chat.js +15 -2
- package/src/ui/dashboard.html +1 -1
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.
|
|
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
|
|
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
|
-
|
|
2302
|
+
if (isTTY) {
|
|
2303
|
+
stdin.setRawMode(wasRaw);
|
|
2304
|
+
}
|
|
2292
2305
|
ctx.rl.resume();
|
|
2293
2306
|
|
|
2294
2307
|
if (aborted) {
|