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 +31 -2
- package/README.md +12 -12
- package/dist/App.js +297 -23
- package/dist/adapters.js +84 -6
- package/dist/agent/loop-guard.js +184 -0
- package/dist/agent/loop.js +609 -300
- package/dist/agent/normalize.js +144 -0
- package/dist/cli.js +1 -1
- package/dist/system.js +1 -0
- package/dist/telemetry-dashboard.js +19 -1
- package/dist/telemetry.js +55 -0
- package/dist/tools/dir-cache.js +207 -0
- package/dist/tools/filesystem.js +40 -1
- package/dist/tools/read-cache.js +160 -0
- package/dist/tools/registry.js +79 -0
- package/dist/tools/search.js +66 -60
- package/dist/tools/shell.js +19 -0
- package/dist/tools/todo.js +1 -1
- package/dist/tools.js +2 -0
- package/dist/ui/diff-panel.js +55 -0
- package/dist/ui/diff-view.js +112 -0
- package/dist/ui/diff.js +422 -0
- package/dist/ui/highlight.js +120 -0
- package/dist/ui/live-tail.js +2 -2
- package/dist/ui/modals.js +22 -5
- package/dist/ui/palette.js +10 -2
- package/dist/ui/side-by-side.js +144 -0
- package/dist/ui/status-bar.js +20 -4
- package/dist/ui/theme.js +6 -0
- package/dist/ui/todo-panel.js +10 -2
- package/dist/ui/transcript.js +16 -4
- package/dist/zen.js +33 -9
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,8 +1,37 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## 1.1.0 — 2026-09-10
|
|
4
4
|
|
|
5
|
-
(
|
|
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`
|
|
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** —
|
|
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).
|
|
109
|
-
it, `/deny` still wins.
|
|
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`, `/
|
|
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
|
|
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
|
|
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
|
|
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
|