aether-code 0.36.6 → 0.36.7
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/bin/aether-code.js +1 -1
- package/package.json +1 -1
- package/src/box-input.js +13 -6
- package/src/repl.js +9 -2
package/bin/aether-code.js
CHANGED
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
import readline from "node:readline";
|
|
29
29
|
import { c, errorLine, divider, setTerminalTitle } from "../src/render.js";
|
|
30
30
|
|
|
31
|
-
const VERSION = "0.36.
|
|
31
|
+
const VERSION = "0.36.7";
|
|
32
32
|
|
|
33
33
|
/**
|
|
34
34
|
* Try to start MCP servers from ~/.aether/mcp.json. Returns a started
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aether-code",
|
|
3
|
-
"version": "0.36.
|
|
3
|
+
"version": "0.36.7",
|
|
4
4
|
"description": "Uncensored AI coding agent for your terminal — Claude Code alternative with MCP support. Reads code, writes files, runs commands. Drives IDA Pro, Roblox Studio, Wireshark, Blender, and any MCP server. No refusal layer.",
|
|
5
5
|
"homepage": "https://trynoguard.com",
|
|
6
6
|
"repository": {
|
package/src/box-input.js
CHANGED
|
@@ -61,7 +61,7 @@ function grabClipboardImage() {
|
|
|
61
61
|
return null;
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
export function promptBox({ history = [], placeholder = "", mode = "review", suppressEcho = false } = {}) {
|
|
64
|
+
export function promptBox({ history = [], placeholder = "", mode = "review", suppressEcho = false, onResize = null } = {}) {
|
|
65
65
|
return new Promise((resolve) => {
|
|
66
66
|
if (!process.stdin.isTTY) {
|
|
67
67
|
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
@@ -78,6 +78,7 @@ export function promptBox({ history = [], placeholder = "", mode = "review", sup
|
|
|
78
78
|
let lastSigint = 0;
|
|
79
79
|
const clipImages = [];
|
|
80
80
|
let resizeHandler = null;
|
|
81
|
+
let resizeTimer = null;
|
|
81
82
|
|
|
82
83
|
const termW = () => Math.max(30, (process.stdout.columns || 80) - 2);
|
|
83
84
|
|
|
@@ -133,6 +134,7 @@ export function promptBox({ history = [], placeholder = "", mode = "review", sup
|
|
|
133
134
|
};
|
|
134
135
|
|
|
135
136
|
const finish = (result) => {
|
|
137
|
+
if (resizeTimer) { clearTimeout(resizeTimer); resizeTimer = null; }
|
|
136
138
|
if (resizeHandler) process.stdout.removeListener("resize", resizeHandler);
|
|
137
139
|
process.stdin.removeListener("keypress", onKey);
|
|
138
140
|
if (process.stdin.isTTY) process.stdin.setRawMode(false);
|
|
@@ -218,11 +220,16 @@ export function promptBox({ history = [], placeholder = "", mode = "review", sup
|
|
|
218
220
|
process.stdin.on("keypress", onKey);
|
|
219
221
|
draw(true);
|
|
220
222
|
resizeHandler = () => {
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
223
|
+
if (resizeTimer) clearTimeout(resizeTimer);
|
|
224
|
+
resizeTimer = setTimeout(() => {
|
|
225
|
+
resizeTimer = null;
|
|
226
|
+
if (onResize) {
|
|
227
|
+
onResize();
|
|
228
|
+
} else {
|
|
229
|
+
process.stdout.write(`\x1b[${drawn}A\x1b[J`);
|
|
230
|
+
}
|
|
231
|
+
draw(true);
|
|
232
|
+
}, 120);
|
|
226
233
|
};
|
|
227
234
|
process.stdout.on("resize", resizeHandler);
|
|
228
235
|
});
|
package/src/repl.js
CHANGED
|
@@ -9,7 +9,7 @@ import { c, errorLine, turnStats } from "./render.js";
|
|
|
9
9
|
import { autoUpdate } from "./update-check.js";
|
|
10
10
|
import { promptBox, EXIT_SIGNAL } from "./box-input.js";
|
|
11
11
|
|
|
12
|
-
const VERSION = "0.36.
|
|
12
|
+
const VERSION = "0.36.7";
|
|
13
13
|
const MODEL_NAME = "Aether Core";
|
|
14
14
|
|
|
15
15
|
const MODEL_ALIASES = {
|
|
@@ -123,8 +123,15 @@ export async function runRepl({ cwd: initialCwd, autoYes: initialAutoYes, unsafe
|
|
|
123
123
|
|
|
124
124
|
const inputHistory = [];
|
|
125
125
|
|
|
126
|
+
const handlePromptResize = () => {
|
|
127
|
+
const vr = getVisibleRows();
|
|
128
|
+
process.stdout.write("\x1b[2J\x1b[H");
|
|
129
|
+
printBanner(state);
|
|
130
|
+
process.stdout.write(`\x1b[${Math.max(1, vr - 3)};1H`);
|
|
131
|
+
};
|
|
132
|
+
|
|
126
133
|
while (true) {
|
|
127
|
-
const raw = await promptBox({ history: inputHistory, mode: state.autoYes ? "auto-yes" : "review", suppressEcho: true });
|
|
134
|
+
const raw = await promptBox({ history: inputHistory, mode: state.autoYes ? "auto-yes" : "review", suppressEcho: true, onResize: handlePromptResize });
|
|
128
135
|
if (raw === EXIT_SIGNAL) { console.log(c.gray("bye.")); return; }
|
|
129
136
|
const line = (raw ?? "").trim();
|
|
130
137
|
if (!line) continue;
|