aether-code 0.35.0 → 0.35.2
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 +3 -5
- package/src/repl.js +15 -12
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.35.
|
|
31
|
+
const VERSION = "0.35.2";
|
|
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.35.
|
|
3
|
+
"version": "0.35.2",
|
|
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 = "
|
|
64
|
+
export function promptBox({ history = [], placeholder = "", mode = "review" } = {}) {
|
|
65
65
|
return new Promise((resolve) => {
|
|
66
66
|
if (!process.stdin.isTTY) {
|
|
67
67
|
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
@@ -123,10 +123,8 @@ export function promptBox({ history = [], placeholder = "Message Aether...", mod
|
|
|
123
123
|
" \xB7 " + "@file for images",
|
|
124
124
|
) + imgNote;
|
|
125
125
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
process.stdout.write(promptLine + "\n" + bottomBar + "\n" + barPrefix + statusText + "\n");
|
|
129
|
-
drawn = 3;
|
|
126
|
+
process.stdout.write(promptLine + "\n" + barPrefix + statusText + "\n");
|
|
127
|
+
drawn = 2;
|
|
130
128
|
};
|
|
131
129
|
|
|
132
130
|
const finish = (result) => {
|
package/src/repl.js
CHANGED
|
@@ -5,11 +5,11 @@ import path from "node:path";
|
|
|
5
5
|
import { runAgent } from "./agent.js";
|
|
6
6
|
import { fetchBalance, AetherError } from "./api.js";
|
|
7
7
|
import { runSetup } from "./setup.js";
|
|
8
|
-
import { c, errorLine } from "./render.js";
|
|
8
|
+
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.35.
|
|
12
|
+
const VERSION = "0.35.2";
|
|
13
13
|
const MODEL_NAME = "Aether Core";
|
|
14
14
|
|
|
15
15
|
const MODEL_ALIASES = {
|
|
@@ -90,13 +90,9 @@ export async function runRepl({ cwd: initialCwd, autoYes: initialAutoYes, unsafe
|
|
|
90
90
|
|
|
91
91
|
// Push prompt to bottom of screen — big empty gap like Claude Code
|
|
92
92
|
const rows = process.stdout.rows || 24;
|
|
93
|
-
const
|
|
94
|
-
const
|
|
95
|
-
const promptLines = 3; // "> " input + status bar + bottom rule
|
|
96
|
-
const bottomRuleLines = 1; // rule above prompt
|
|
97
|
-
const filler = Math.max(0, rows - bannerLineCount - extraLines - promptLines - bottomRuleLines - 1);
|
|
93
|
+
const promptLines = 2; // "> " input + status bar
|
|
94
|
+
const filler = Math.max(0, rows - bannerLineCount - extraLines - promptLines - 1);
|
|
98
95
|
for (let i = 0; i < filler; i++) console.log("");
|
|
99
|
-
console.log(c.cyan(" " + "─".repeat(promptRuleW)));
|
|
100
96
|
|
|
101
97
|
const inputHistory = [];
|
|
102
98
|
|
|
@@ -114,6 +110,7 @@ export async function runRepl({ cwd: initialCwd, autoYes: initialAutoYes, unsafe
|
|
|
114
110
|
continue;
|
|
115
111
|
}
|
|
116
112
|
|
|
113
|
+
const t0 = Date.now();
|
|
117
114
|
const result = await runAgent({
|
|
118
115
|
initialPrompt: line,
|
|
119
116
|
priorMessages: state.messages.length > 0 ? state.messages : undefined,
|
|
@@ -124,6 +121,7 @@ export async function runRepl({ cwd: initialCwd, autoYes: initialAutoYes, unsafe
|
|
|
124
121
|
maxTurns: state.maxTurns,
|
|
125
122
|
mcpManager,
|
|
126
123
|
});
|
|
124
|
+
const elapsed = Date.now() - t0;
|
|
127
125
|
|
|
128
126
|
state.sessionCredits += result.totalCredits ?? 0;
|
|
129
127
|
state.sessionIn += result.totalIn ?? 0;
|
|
@@ -135,10 +133,15 @@ export async function runRepl({ cwd: initialCwd, autoYes: initialAutoYes, unsafe
|
|
|
135
133
|
console.log("\n" + errorLine(result.error.message || String(result.error)));
|
|
136
134
|
}
|
|
137
135
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
136
|
+
const stats = turnStats({
|
|
137
|
+
elapsed,
|
|
138
|
+
tokensIn: 0,
|
|
139
|
+
tokensOut: 0,
|
|
140
|
+
tools: 0,
|
|
141
|
+
credits: result.totalCredits ?? 0,
|
|
142
|
+
});
|
|
143
|
+
if (stats) console.log(stats);
|
|
144
|
+
console.log("");
|
|
142
145
|
}
|
|
143
146
|
}
|
|
144
147
|
|