@livx.cc/agentx 0.96.3 → 0.96.5

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/README.md CHANGED
@@ -112,7 +112,7 @@ agentx --resume <id> "…" # resume a specific session
112
112
  - **Syntax-highlighted code fences** — ```` ```ts ```` (and js/py/sh/go/rust/…) blocks render with keywords bold, strings green, numbers cyan, comments dim; unknown languages keep the plain cyan body. **TodoWrite plans** pin a compact `☑ 2/5 · current step` line into the idle footer.
113
113
  - **`/agents`** — list subagent types from `./.agent/agents` (description, model, tool scope); `/agents new <name>` scaffolds a frontmatter'd definition for the `Task` tool's `agentType`. **`!<partial>` + menu** completes from past `!` shell commands. **`@server:uri`** mentions inline an MCP resource body into the prompt. Transient network drops mid-step retry automatically (2 attempts, backoff) instead of failing the turn.
114
114
  - **Project instructions** — `./AGENTS.md` (or `CLAUDE.md`) auto-loads into every run; `/init` scaffolds one.
115
- - **Any provider** — set `ANTHROPIC_API_KEY` / `OPENAI_API_KEY` / `GOOGLE_API_KEY` / `GROQ_API_KEY`; choose with `-m provider/model`.
115
+ - **Any provider** — set `ANTHROPIC_API_KEY` / `OPENAI_API_KEY` / `GOOGLE_API_KEY` / `GROQ_API_KEY`; choose with `-m provider/model`. Env files load with precedence: CWD `.env` (bun) → install-dir `.env` → `~/.agent/.env` (user-wide). **Bodify secrets**: set `BODIFY_API_KEY` + `BODIFY_APP_ID` (e.g. in `~/.agent/.env`) to pull provider keys from a Bodify app at startup — no local key management needed.
116
116
  - **@-file mentions & headless JSON** — reference files inline in a prompt with `@path` (e.g. `explain @src/Agent.ts`; `~/` expands to the home directory; quote paths with spaces as `@"…"` — drag-dropped files, e.g. macOS screenshots, quote themselves automatically); script with `-p --output-format json` to get one machine-readable result object on stdout (activity stays on stderr).
117
117
  - **Tab-completion** — `Tab` completes `/<command>` names and `@<path>` file/dir references (descends subdirs, dotfiles hidden unless typed) straight from the working tree.
118
118
  - **Duplex mode** — `agentx --duplex` runs the full standard REPL (slash commands, sessions, postures, rewind, MCP) with the three-tier engine driving turns: a fast voice model (`--voice-model`, default `groq/openai/gpt-oss-120b`) answers every line instantly and delegates real work to background workers built with the same wiring as a normal run (fs mode, permissions, MCP); worker activity shows as dim chrome and results are re-voiced when ready. Switch any tier live with `/model` (opens a reflex/act/think picker), or the `/voice-model` · `/think-model` shortcuts. `/tasks` lists background tasks, inspects a task's live output tail, and cancels a running one from a picker (Esc mid-turn cancels the foreground turn; Esc again at the idle prompt cancels running workers).
package/dist/cli.d.ts CHANGED
@@ -143,6 +143,7 @@ interface Args {
143
143
  hardenNet?: boolean;
144
144
  worktree?: string;
145
145
  updateCheck?: boolean;
146
+ update?: boolean;
146
147
  }
147
148
  declare function parseArgs(argv: string[]): Args;
148
149
  /** Hooks that render tool activity to stderr: a preToolUse header, and for edits a colorized diff.
package/dist/cli.js CHANGED
@@ -10167,6 +10167,7 @@ function parseArgs(argv) {
10167
10167
  else if (x === "--vfs" || x === "--sandbox") a.vfs = true;
10168
10168
  else if (x === "--scratch") a.scratch = true;
10169
10169
  else if (x === "--no-scratch") a.scratch = false;
10170
+ else if (x === "--update") a.update = true;
10170
10171
  else if (x === "--no-update-check") a.updateCheck = false;
10171
10172
  else if (x === "--boddb") a.boddb = val(++i, x);
10172
10173
  else if (x === "--seed") a.seed = true;
@@ -10238,6 +10239,7 @@ Flags:
10238
10239
  --plan plan mode: edits blocked until you approve a plan
10239
10240
  --ask confirm each mutating tool (bash/Shell/Write/Edit/\u2026)
10240
10241
  --yes, -y auto-approve mutating tools (no prompts) \u2014 for trusted/unattended runs
10242
+ --update check for updates and exit (no keys needed)
10241
10243
  --no-update-check skip the automatic update check on startup
10242
10244
  --verbose, --debug verbose logs (sets DEBUG=* \u2014 tool args, hook decisions, retries)
10243
10245
  --allowedTools <l> comma-list of tools to allow w/o asking, e.g. "Edit,Shell(git *)"
@@ -10268,6 +10270,8 @@ Flags:
10268
10270
  Prompts may reference files with @path (e.g. "explain @src/Agent.ts") \u2014 they're inlined.
10269
10271
 
10270
10272
  Providers: set any of ANTHROPIC_API_KEY / OPENAI_API_KEY / GOOGLE_API_KEY / GROQ_API_KEY.
10273
+ Env files: .env (CWD, bun auto-loads) > install-dir .env > ~/.agent/.env (user-wide).
10274
+ Bodify secrets: set BODIFY_API_KEY + BODIFY_APP_ID (in ~/.agent/.env) to pull keys from a Bodify app.
10271
10275
  Config: ./.agent/config.{ts,js,json} (project) or ~/.agent/config.* (user).
10272
10276
  export default { model, maxSteps, reasoning, permissionMode, editorMode, tools, apiKeys, baseUrls, hooks, permissions, mcpServers, maxTokens,
10273
10277
  timeoutMs, maxRepeats, maxToolCalls, keepToolOutputs, maxContextTokens,
@@ -13283,6 +13287,12 @@ async function main() {
13283
13287
  console.log(HELP);
13284
13288
  return;
13285
13289
  }
13290
+ if (args.update) {
13291
+ const msg = await checkForUpdate(VERSION).catch(() => null);
13292
+ if (msg) console.log(msg);
13293
+ else console.log("\u2713 up to date (v" + VERSION + ")");
13294
+ return;
13295
+ }
13286
13296
  if (args.debug) process.env.DEBUG ||= "*";
13287
13297
  if (args.print && !args.task && !process.stdin.isTTY) args.task = (await readAllStdin()).trim();
13288
13298
  let worktreeCleanup;
@@ -13328,7 +13338,7 @@ async function main() {
13328
13338
  await loadBodifySecrets();
13329
13339
  const apiKeys = { ...cfg.apiKeys, ...apiKeysFromEnv() };
13330
13340
  if (!Object.keys(apiKeys).length) {
13331
- console.error(red("No provider key found. Set ANTHROPIC_API_KEY (or OPENAI_API_KEY / GOOGLE_API_KEY / GROQ_API_KEY), e.g. in .env."));
13341
+ console.error(red("No provider key found. Set ANTHROPIC_API_KEY (or OPENAI_API_KEY / GOOGLE_API_KEY / GROQ_API_KEY) in ~/.agent/.env, or set BODIFY_API_KEY + BODIFY_APP_ID to pull from Bodify."));
13332
13342
  process.exit(1);
13333
13343
  }
13334
13344
  const ai = new AIClient({