atom-agent 1.0.0 → 1.1.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.
package/CHANGELOG.md CHANGED
@@ -1,8 +1,37 @@
1
1
  # Changelog
2
2
 
3
- ## Unreleased
3
+ ## 1.1.0 — 2026-09-10
4
4
 
5
- (nothing yet)
5
+ - Agentic loop hardening (`src/agent/loop.ts`, `types.ts`, `loop-guard.ts`,
6
+ `normalize.ts`; `src/zen.ts`, `adapters.ts`): tool-result and
7
+ model-response normalization, per-tool execution timeouts, total tool-call
8
+ budget per turn, error-streak recovery (holds final text for a fix-forward
9
+ attempt instead of ending on unaddressed failures), opt-in repetition guard
10
+ with background-poll exclusions, and a per-turn `LoopStats` rollup
11
+ (iterations, calls, failures, cache hits, guard hits, bottleneck, context
12
+ growth) reported via `AgenticOpts.onLoopStats`, even on failed turns.
13
+ SSE stall guard (`ATOM_STALL_TIMEOUT_MS`, default 60s) in every streaming
14
+ reader: a silent 200-OK stream fails fast on the permanent Truncated
15
+ contract instead of hanging the turn
16
+ - LoopStats into observability (`src/telemetry.ts`,
17
+ `telemetry-dashboard.ts`, `src/App.tsx`): `recordLoopStats` attaches the
18
+ harness rollup to the open turn trace, aggregates total cache/guard hits,
19
+ dashboard renders per-turn loop fragments plus overview cards
20
+ - Search speed (`src/tools/search.ts`, `dir-cache.ts`, `read-cache.ts`,
21
+ `filesystem.ts`, `shell.ts`): `git ls-files` enumeration (tracked plus
22
+ untracked-non-ignored, `node_modules`/`.git` still excluded), single-pass
23
+ grep (half the file reads), 32-wide bounded-parallel scan with identical
24
+ output order, mtime-checked listing cache with exact invalidation on
25
+ write/edit/bash (`ATOM_FAST_LIST=0` forces the legacy walker), and a
26
+ stat-validated read cache. Measured 3–7x on content search; batching nudge
27
+ added to the system prompt
28
+ - TUI flow (`src/App.tsx`, `ui/transcript.tsx`, `live-tail.tsx`,
29
+ `status-bar.tsx`, `todo-panel.tsx`, `modals.tsx`, `palette.tsx`):
30
+ `/autoscroll on|off` (freezes a following view mid-turn instead of yanking
31
+ it), `/thinking` toggle with per-round model reasoning persisted to the
32
+ transcript (rendering-only; never model history), memoized status bar,
33
+ todo panel, approval/question modals, and palette plus memoized
34
+ palette/checkpoint derivations (timer-tick and picker-nav flicker fix)
6
35
 
7
36
  ## 1.0.0 — 2026-09-09
8
37
 
package/README.md CHANGED
@@ -26,8 +26,8 @@ Full docs live in [`documentation/`](documentation/index.md), same layout as ope
26
26
  - [Getting Started](documentation/getting-started.md) — install, key setup, first run
27
27
  - [CLI and TUI](documentation/cli.md) — slash commands, keyboard, status line
28
28
  - [Tools](documentation/tools.md) — the 13 local executors, caps, background tasks
29
- - [Providers and Models](documentation/providers.md) — 8 providers, endpoints, key resolution (Kilo default, key-optional)
30
- - [Permissions and Modes](documentation/permissions.md) — normal/yolo, trust, allow/deny rules
29
+ - [Providers and Models](documentation/providers.md) — 8 remote providers + 3 local runtimes, endpoints, key resolution (Kilo default, key-optional)
30
+ - [Permissions and Modes](documentation/permissions.md) — normal/yolo/plan, trust, allow/deny rules
31
31
  - [Skills](documentation/skills.md) — discovery, frontmatter contract, auto-invoke
32
32
  - [Sessions](documentation/sessions.md) — persistence, resume, clear, rewind
33
33
  - [Observability](documentation/observability.md) — local telemetry, `/telemetry`, dashboard drill-down
@@ -98,23 +98,23 @@ in `package.json`, add a `CHANGELOG.md` entry, commit, tag `vX.Y.Z`, push —
98
98
  `bash_output`, `websearch`, `webfetch`, `ask_question` (asks *you* things
99
99
  interactively), `todowrite` / `todo_get` / `todo_update` (session task
100
100
  checklist with a live TUI panel)
101
- - 🛡️ **Normal / YOLO modes** — `Tab` toggles. Normal auto-runs reads but
101
+ - 🛡️ **Normal / YOLO modes** — `Tab` cycles normal → yolo → plan → normal. Normal auto-runs reads but
102
102
  asks before writes/shell (`y` once · `a` always · `t` trust all · `n` deny);
103
103
  `/trust` toggles a session trust tier (one approval covers the whole task,
104
104
  status shows `+trust`, never saved). YOLO never asks
105
- - 🗺️ **Plan mode** — `/plan` enters a read-only mode for risky work:
105
+ - 🗺️ **Plan mode** — `Tab` from yolo enters a read-only mode for risky work:
106
106
  exploration (`read`/`grep`/`glob`/web/todos/`ask_question`) runs free while
107
107
  `write`/`edit`/`bash` are blocked pre-execution with a replan note (never a
108
- prompt). `Tab` never enters/exits plan, `/yolo`·`/trust` can't punch through
109
- it, `/deny` still wins. Exiting `/plan` approves the recorded todo checklist
108
+ prompt). `/yolo`·`/trust` can't punch through
109
+ it, `/deny` still wins. `Tab` out of plan approves the recorded todo checklist
110
110
  into implementation (lands in normal, never yolo)
111
111
  - ⌨️ **Slash commands** — `/model` (unified picker across keyed providers,
112
112
  type to filter), `/provider` (provider + key picker, keys in
113
113
  `~/.atom/auth.json`), `/effort` (reasoning-effort picker), `/tools`,
114
114
  `/skills`, `/skill:name` (invoke a skill; skills complete in `/`), `/context`
115
115
  (context usage by source), `/queue` + `/steer <text>` (follow-ups while
116
- busy: queue until the turn ends, or inject into the running turn), `/help`, `/mode`, `/yolo`, `/trust`, `/plan`,
117
- `/clear`, `/exit` — plus `/`-autocomplete as you type
116
+ busy: queue until the turn ends, or inject into the running turn), `/help`, `/mode`, `/trust`,
117
+ `/clear`, `/exit` — plus `/`-autocomplete as you type (`/yolo` and `/plan` are retired as typed commands — `Tab` switches modes)
118
118
  - 📊 **Status line** — provider · model · session token usage (`token:
119
119
  (P%) NK`: NK is the cumulative spend in K, P% is the current context load
120
120
  over the model's verified window — last `prompt_tokens`, else the
@@ -174,7 +174,7 @@ auto-approved call).
174
174
 
175
175
  Full reference: [Providers and Models](documentation/providers.md) plus [Configuration](documentation/configuration.md).
176
176
 
177
- Atom talks to 8 providers behind one UI (opencode `/connect` mirror,
177
+ Atom talks to 8 remote providers plus 3 local runtimes (Ollama, LM Studio, llama.cpp) behind one UI (opencode `/connect` mirror,
178
178
  manual-key only — no OAuth). Kilo Gateway is the default: its free models
179
179
  (`:free` ids, incl. the `kilo-auto/free` routing model) chat with no key;
180
180
  paste a key once with `/provider` (validated, stored in
@@ -235,16 +235,16 @@ plus per-provider key env vars above.
235
235
  .
236
236
  ├── src/
237
237
  │ ├── cli.tsx # entry: --help/--dashboard/--serve, always starts TUI (missing key guides to /provider)
238
- │ ├── App.tsx # Ink TUI: transcript, pickers, modes (/plan /trust), approvals, status line
238
+ │ ├── App.tsx # Ink TUI: transcript, pickers, Tab modes, /trust, approvals, status line
239
239
  │ ├── telemetry.ts # local observability recorder + store (never throws, off via ATOM_TELEMETRY=0)
240
240
  │ ├── telemetry-dashboard.ts # self-contained local dashboard page (session → turn → iteration → call)
241
- │ ├── zen.ts # agentic loop (budgets, todo/verification guards) + provider dispatch + SSE
241
+ │ ├── zen.ts # provider dispatch + agentic-loop wrappers (shared core in src/agent/loop.ts) + SSE
242
242
  │ ├── tools.ts # 13 local tool executors + function schemas (read/write/edit/grep/glob/bash/…)
243
243
  │ ├── permissions.ts # allow/deny rule matcher backing /allow /deny /rules
244
244
  │ ├── snapshots.ts # pre-mutation file snapshots backing /rewind
245
245
  │ ├── skills.ts # skill discovery backing /skills
246
246
  │ ├── env-block.ts # per-turn cwd/git/node environment block
247
- │ ├── providers.ts # 8-provider registry (kind/endpoint/env/default + fallback models; Kilo default)
247
+ │ ├── providers.ts # 8 remote providers + 3 local runtimes (kind/endpoint/env/default + fallback models; Kilo default)
248
248
  │ ├── kilo.ts # Kilo Gateway: catalog parsing, free detection, TTL cache, error normalization
249
249
  │ ├── auth.ts # ~/.atom/auth.json store (env wins, 0600 POSIX)
250
250
  │ ├── adapters.ts # anthropic/gemini translation + SSE + models-list parsing + key validation