atom-agent 1.1.0 → 1.2.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 -0
- package/README.md +5 -4
- package/dist/App.js +738 -79
- package/dist/adapters.js +30 -8
- package/dist/agent/gates.js +14 -1
- package/dist/agent/loop-guard.js +11 -13
- package/dist/agent/loop.js +212 -69
- package/dist/agent/normalize.js +9 -2
- package/dist/cli.js +16 -2
- package/dist/compact.js +128 -2
- package/dist/env-block.js +43 -5
- package/dist/scheduler.js +101 -21
- package/dist/sessions.js +524 -0
- package/dist/system.js +89 -13
- package/dist/tools/dir-cache.js +7 -0
- package/dist/tools/filesystem.js +3 -2
- package/dist/tools/registry.js +1 -0
- package/dist/tools/ripgrep.js +256 -0
- package/dist/tools/search.js +119 -58
- package/dist/tools/shared.js +39 -0
- package/dist/tools/shell.js +7 -5
- package/dist/tools/web.js +6 -6
- package/dist/tools.js +1 -0
- package/dist/ui/diff-view.js +7 -2
- package/dist/ui/live-host.js +18 -0
- package/dist/ui/live-tail.js +9 -3
- package/dist/ui/markdown.js +26 -2
- package/dist/ui/palette.js +2 -0
- package/dist/ui/side-by-side.js +2 -2
- package/dist/ui/status-host.js +22 -0
- package/dist/ui/stream-store.js +48 -0
- package/dist/ui/tool-inspector.js +7 -1
- package/dist/ui/transcript.js +92 -38
- package/dist/zen.js +66 -13
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,36 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.2.0 — 2026-09-10
|
|
4
|
+
|
|
5
|
+
- Durable multi-session store (`src/sessions.ts`): one JSON record per
|
|
6
|
+
session under `~/.atom/sessions/<id>.json` plus a plaintext `active`
|
|
7
|
+
pointer. Records carry stable `ses_` ids (never derived from the display
|
|
8
|
+
name), mutable titles defaulting to the exact local creation date and
|
|
9
|
+
time, separate machine-readable `createdAt`, `updatedAt` on every
|
|
10
|
+
meaningful mutation, `cwd`, provider/model/effort/mode, usage, full
|
|
11
|
+
history/turns, and metadata. Atomic temp-plus-rename writes (`0600`
|
|
12
|
+
POSIX), loads that never throw, most-recent-first listings, no transient
|
|
13
|
+
UI state, no LLM provider coupling
|
|
14
|
+
- `/rename <name>` (current session only; quotes optional; bare prints
|
|
15
|
+
usage): id, `createdAt`, and history untouched, persisted immediately,
|
|
16
|
+
failures keep the previous name
|
|
17
|
+
- `/session [filter]` interactive switcher: most-recent-first picker with
|
|
18
|
+
in-memory fuzzy filter (title first, id fallback), turn counts, relative
|
|
19
|
+
ages, `(current)` marker, windowing for large lists. Selecting replaces
|
|
20
|
+
the live conversation wholesale (no merge, no duplication) with
|
|
21
|
+
provider/model/settings restored; the outgoing turns snapshot first,
|
|
22
|
+
checkpoints and the TODO checklist reset like `/new`, and a missing
|
|
23
|
+
target errors without touching the live session. `Esc` cancels cleanly
|
|
24
|
+
- Runtime integration (`src/App.tsx`): every conversation auto-belongs to
|
|
25
|
+
the active session; completed turns, exits, and compactions mirror into
|
|
26
|
+
the record; `/new` snapshots then swaps records; the legacy
|
|
27
|
+
`session.json` save follows switches so `/resume` stays coherent.
|
|
28
|
+
Session identity surfaces in the picker, confirmations, and the
|
|
29
|
+
empty-state line (the status bar keeps its fixed width budget)
|
|
30
|
+
- Suite: `session-store` (26), `sessions-runtime` (5), `rename` (8),
|
|
31
|
+
`session-picker` (11), `session-lifecycle` (4) — see
|
|
32
|
+
`documentation/sessions.md`
|
|
33
|
+
|
|
3
34
|
## 1.1.0 — 2026-09-10
|
|
4
35
|
|
|
5
36
|
- Agentic loop hardening (`src/agent/loop.ts`, `types.ts`, `loop-guard.ts`,
|
package/README.md
CHANGED
|
@@ -29,7 +29,7 @@ Full docs live in [`documentation/`](documentation/index.md), same layout as ope
|
|
|
29
29
|
- [Providers and Models](documentation/providers.md) — 8 remote providers + 3 local runtimes, endpoints, key resolution (Kilo default, key-optional)
|
|
30
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
|
-
- [Sessions](documentation/sessions.md) —
|
|
32
|
+
- [Sessions](documentation/sessions.md) — durable multi-session store, rename, switcher, resume, clear, rewind
|
|
33
33
|
- [Observability](documentation/observability.md) — local telemetry, `/telemetry`, dashboard drill-down
|
|
34
34
|
- [Compaction and Token Display](documentation/compaction.md) — auto-compact, manual compact, footer format
|
|
35
35
|
- [Configuration](documentation/configuration.md) — env vars, auth file, AGENTS.md layering
|
|
@@ -89,7 +89,7 @@ in `package.json`, add a `CHANGELOG.md` entry, commit, tag `vX.Y.Z`, push —
|
|
|
89
89
|
## What Atom can do
|
|
90
90
|
|
|
91
91
|
- 🤖 **Agentic loop** — tool calls execute locally and results feed back in,
|
|
92
|
-
|
|
92
|
+
with no step cap by default (optional cap via `ATOM_MAX_TOOL_STEPS`, clamped 5–100), with retries on transient failures
|
|
93
93
|
- ⚡ **Streaming** — tokens, tool activity, and phase status render live;
|
|
94
94
|
reasoning streams in its own dim block above the answer draft
|
|
95
95
|
(transient); `Esc` stops a running response (footer shows `esc stops`
|
|
@@ -227,7 +227,7 @@ npm run build # emit dist/ (the `atom` binary entry is dist/cli.js)
|
|
|
227
227
|
|
|
228
228
|
Env knobs: `KILO_API_KEY` (optional; or stored Kilo key via `/provider`), `OPENCODE_ZEN_API_KEY` (or stored zen key via `/provider`), `OPENCODE_ZEN_MODEL`,
|
|
229
229
|
`OPENCODE_ZEN_ENDPOINT`, `OPENCODE_AGENTS_PATH`, `ATOM_COMPACT_PCT` (auto-compact percent, 50–95),
|
|
230
|
-
`ATOM_MAX_TOOL_STEPS` (tool rounds per turn,
|
|
230
|
+
`ATOM_MAX_TOOL_STEPS` (optional cap on tool rounds per turn, clamped 5–100),
|
|
231
231
|
plus per-provider key env vars above.
|
|
232
232
|
`~/.atom/auth.json` holds pasted keys (`{version:1, providers:{"<id>":{apiKey, baseURL?}}}`, `0600` POSIX).
|
|
233
233
|
|
|
@@ -249,7 +249,8 @@ plus per-provider key env vars above.
|
|
|
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
|
|
251
251
|
│ ├── compact.ts # context compaction: load/trigger math, split, summary POST (tools off)
|
|
252
|
-
│ ├── session.ts #
|
|
252
|
+
│ ├── session.ts # legacy single-file save/resume (session.json)
|
|
253
|
+
│ ├── sessions.ts # durable multi-session store (sessions/, /rename, /session picker)
|
|
253
254
|
│ ├── context-windows.ts # curated per-model context windows + `token: (P%) NK` format
|
|
254
255
|
│ └── system.ts # base system prompt (long-horizon operating contract)
|
|
255
256
|
├── dist/ # `npm run build` output (`atom` runs dist/cli.js; gitignored, shipped in the tarball)
|