aether-code 0.31.0 → 0.32.0

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.
@@ -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.31.0";
31
+ const VERSION = "0.32.0";
32
32
 
33
33
  /**
34
34
  * Try to start MCP servers from ~/.aether/mcp.json. Returns a started
@@ -90,8 +90,8 @@ ${c.bold("FLAGS")}
90
90
  Default is auto-approve (skip-permissions).
91
91
  --sandbox Restrict file access to --cwd. Default is full access.
92
92
  --cwd <path> Working directory for the agent (default: current dir).
93
- --model <name> core (default) | ultra (Opus) | max (Grok). Premium models
94
- need purchased credits, else they fall back to Core.
93
+ --model <name> core (default) | ultra (Opus). Premium models need
94
+ purchased credits, else they fall back to Core.
95
95
  --max-turns <n> Maximum turns before stopping (default: 25).
96
96
  --help, -h Show this help.
97
97
  --version, -v Print version.
@@ -193,9 +193,9 @@ async function main() {
193
193
  const unsafePaths = !args.flags.sandbox;
194
194
  const maxTurns = Number.isInteger(args.flags.maxTurns) ? args.flags.maxTurns : 25;
195
195
 
196
- // --model: core (default), ultra (Opus), max (Grok). Premium models are gated
196
+ // --model: core (default) or ultra (Opus). Premium models are gated
197
197
  // server-side — without purchased credits the server uses Core regardless.
198
- const MODEL_IDS = { core: null, gemma: null, ultra: "claude-opus-4-6", opus: "claude-opus-4-6", max: "grok-4-3", grok: "grok-4-3" };
198
+ const MODEL_IDS = { core: null, gemma: null, ultra: "claude-opus-4-6", opus: "claude-opus-4-6" };
199
199
  const modelKey = args.flags.model ? String(args.flags.model).toLowerCase() : null;
200
200
  const model = modelKey && modelKey in MODEL_IDS ? MODEL_IDS[modelKey] : (args.flags.model || null);
201
201
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aether-code",
3
- "version": "0.31.0",
3
+ "version": "0.32.0",
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/repl.js CHANGED
@@ -16,7 +16,7 @@ import { c, errorLine, boxLines, sideBySide } from "./render.js";
16
16
  import { checkForUpdate } from "./update-check.js";
17
17
  import { promptBox, EXIT_SIGNAL } from "./box-input.js";
18
18
 
19
- const VERSION = "0.31.0";
19
+ const VERSION = "0.32.0";
20
20
  const MODEL_NAME = "Aether Core";
21
21
 
22
22
  // /model aliases → { id, name }. id=null = server default (gemma / Aether Core).
@@ -27,8 +27,6 @@ const MODEL_ALIASES = {
27
27
  gemma: { id: null, name: "Aether Core" },
28
28
  ultra: { id: "claude-opus-4-6", name: "Aether Ultra" },
29
29
  opus: { id: "claude-opus-4-6", name: "Aether Ultra" },
30
- max: { id: "grok-4-3", name: "Aether Max" },
31
- grok: { id: "grok-4-3", name: "Aether Max" },
32
30
  };
33
31
 
34
32
  const SHORTCUTS = `
@@ -39,7 +37,7 @@ const SHORTCUTS = `
39
37
  ${c.cyan("/cwd")} ${c.gray("[path]")} Show or change working directory
40
38
  ${c.cyan("/yes")} Toggle auto-approve mode (skip y/N prompts)
41
39
  ${c.cyan("/turns")} ${c.gray("<n>")} Set max turns per prompt (default 25)
42
- ${c.cyan("/model")} ${c.gray("[core|ultra|max]")} Show or switch model (ultra=Opus, max=Grok — premium)
40
+ ${c.cyan("/model")} ${c.gray("[core|ultra]")} Show or switch model (ultra=Opus — premium)
43
41
 
44
42
  ${c.gray("Anything else is sent to the agent as your next message.")}
45
43
  ${c.gray("Conversation history is kept across messages until you /clear.")}
@@ -219,7 +217,7 @@ async function handleSlash(line, state) {
219
217
  const key = (arg || "").trim().toLowerCase();
220
218
  if (!key) {
221
219
  console.log(c.gray(`model: ${state.modelName}`));
222
- console.log(c.gray("switch with /model core | ultra | max (ultra=Opus, max=Grok — premium, need credits)"));
220
+ console.log(c.gray("switch with /model core | ultra (ultra=Opus — premium, need credits)"));
223
221
  } else if (MODEL_ALIASES[key]) {
224
222
  state.model = MODEL_ALIASES[key].id;
225
223
  state.modelName = MODEL_ALIASES[key].name;
@@ -229,7 +227,7 @@ async function handleSlash(line, state) {
229
227
  (premium ? c.gray(" (premium — needs purchased credits, else falls back to Core)") : ""),
230
228
  );
231
229
  } else {
232
- console.log(errorLine(`Unknown model "${key}". Try: core, ultra, max`));
230
+ console.log(errorLine(`Unknown model "${key}". Try: core, ultra`));
233
231
  }
234
232
  break;
235
233
  }