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 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) — persistence, resume, clear, rewind
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
- up to 30 steps per turn (`ATOM_MAX_TOOL_STEPS`, clamped 5–100), with retries on transient failures
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, default 30, clamped 5–100),
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 # session save/resume
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)