@bastani/atomic 0.9.5-alpha.3 → 0.9.5-alpha.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.
Files changed (83) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/builtin/cursor/package.json +2 -2
  3. package/dist/builtin/intercom/package.json +1 -1
  4. package/dist/builtin/mcp/package.json +1 -1
  5. package/dist/builtin/subagents/CHANGELOG.md +7 -0
  6. package/dist/builtin/subagents/agents/debugger.md +2 -2
  7. package/dist/builtin/subagents/package.json +1 -1
  8. package/dist/builtin/web-access/package.json +1 -1
  9. package/dist/builtin/workflows/CHANGELOG.md +18 -0
  10. package/dist/builtin/workflows/builtin/deep-research-codebase-utils.ts +5 -5
  11. package/dist/builtin/workflows/builtin/goal-prompts.ts +2 -0
  12. package/dist/builtin/workflows/builtin/goal-runner.ts +5 -5
  13. package/dist/builtin/workflows/builtin/goal-types.ts +1 -0
  14. package/dist/builtin/workflows/builtin/goal.d.ts +2 -0
  15. package/dist/builtin/workflows/builtin/goal.ts +9 -0
  16. package/dist/builtin/workflows/builtin/index.d.ts +2 -0
  17. package/dist/builtin/workflows/builtin/open-claude-design-runner.ts +5 -5
  18. package/dist/builtin/workflows/builtin/ralph-models.ts +25 -25
  19. package/dist/builtin/workflows/builtin/ralph-reviewer-prompt.ts +138 -0
  20. package/dist/builtin/workflows/builtin/ralph-runner.ts +10 -118
  21. package/dist/builtin/workflows/builtin/shared-prompts.ts +5 -0
  22. package/dist/builtin/workflows/package.json +1 -1
  23. package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
  24. package/dist/core/agent-session-auto-compaction.js +3 -2
  25. package/dist/core/agent-session-auto-compaction.js.map +1 -1
  26. package/dist/core/agent-session-compaction.d.ts.map +1 -1
  27. package/dist/core/agent-session-compaction.js +25 -4
  28. package/dist/core/agent-session-compaction.js.map +1 -1
  29. package/dist/core/compaction/context-compaction-critical.d.ts +15 -0
  30. package/dist/core/compaction/context-compaction-critical.d.ts.map +1 -0
  31. package/dist/core/compaction/context-compaction-critical.js +57 -0
  32. package/dist/core/compaction/context-compaction-critical.js.map +1 -0
  33. package/dist/core/compaction/context-compaction-eviction.d.ts +4 -0
  34. package/dist/core/compaction/context-compaction-eviction.d.ts.map +1 -0
  35. package/dist/core/compaction/context-compaction-eviction.js +172 -0
  36. package/dist/core/compaction/context-compaction-eviction.js.map +1 -0
  37. package/dist/core/compaction/context-compaction-runner.d.ts +7 -1
  38. package/dist/core/compaction/context-compaction-runner.d.ts.map +1 -1
  39. package/dist/core/compaction/context-compaction-runner.js +97 -21
  40. package/dist/core/compaction/context-compaction-runner.js.map +1 -1
  41. package/dist/core/compaction/context-transcript-analysis.d.ts +3 -0
  42. package/dist/core/compaction/context-transcript-analysis.d.ts.map +1 -1
  43. package/dist/core/compaction/context-transcript-analysis.js +3 -3
  44. package/dist/core/compaction/context-transcript-analysis.js.map +1 -1
  45. package/dist/modes/interactive/interactive-auth-login.d.ts.map +1 -1
  46. package/dist/modes/interactive/interactive-auth-login.js +0 -1
  47. package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
  48. package/dist/modes/interactive/interactive-hotkeys-debug.d.ts.map +1 -1
  49. package/dist/modes/interactive/interactive-hotkeys-debug.js +3 -3
  50. package/dist/modes/interactive/interactive-hotkeys-debug.js.map +1 -1
  51. package/dist/modes/interactive/interactive-input-handling.d.ts.map +1 -1
  52. package/dist/modes/interactive/interactive-input-handling.js +0 -51
  53. package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
  54. package/dist/modes/interactive/interactive-mode-base.d.ts +2 -4
  55. package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
  56. package/dist/modes/interactive/interactive-mode-base.js +2 -4
  57. package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
  58. package/dist/modes/interactive/interactive-mode-surface.d.ts +3 -9
  59. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
  60. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
  61. package/dist/modes/interactive/interactive-model-routing.d.ts.map +1 -1
  62. package/dist/modes/interactive/interactive-model-routing.js +0 -3
  63. package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
  64. package/dist/modes/interactive/interactive-onboarding.d.ts +0 -9
  65. package/dist/modes/interactive/interactive-onboarding.d.ts.map +1 -1
  66. package/dist/modes/interactive/interactive-onboarding.js +23 -201
  67. package/dist/modes/interactive/interactive-onboarding.js.map +1 -1
  68. package/dist/modes/interactive/interactive-session-routing.d.ts.map +1 -1
  69. package/dist/modes/interactive/interactive-session-routing.js +2 -2
  70. package/dist/modes/interactive/interactive-session-routing.js.map +1 -1
  71. package/dist/modes/interactive/interactive-slash-commands.d.ts.map +1 -1
  72. package/dist/modes/interactive/interactive-slash-commands.js +1 -1
  73. package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
  74. package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
  75. package/dist/modes/interactive/interactive-startup.js +36 -43
  76. package/dist/modes/interactive/interactive-startup.js.map +1 -1
  77. package/docs/compaction.md +45 -27
  78. package/docs/quickstart.md +3 -3
  79. package/docs/settings.md +1 -1
  80. package/docs/usage.md +1 -1
  81. package/docs/workflows.md +7 -3
  82. package/npm-shrinkwrap.json +23 -23
  83. package/package.json +2 -2
@@ -6,11 +6,14 @@ Atomic's compaction design and terminology are informed by Morph's Context Compa
6
6
 
7
7
  **Source files** ([atomic](https://github.com/bastani-inc/atomic)):
8
8
 
9
- - [`packages/coding-agent/src/core/compaction/context-compaction.ts`](https://github.com/bastani-inc/atomic/blob/main/packages/coding-agent/src/core/compaction/context-compaction.ts) - Verbatim Compaction planner, transcript tools, validation, and prompt
9
+ - [`packages/coding-agent/src/core/compaction/context-compaction.ts`](https://github.com/bastani-inc/atomic/blob/main/packages/coding-agent/src/core/compaction/context-compaction.ts) - Public barrel for Verbatim Compaction types, helpers, tools, and runner exports
10
+ - [`packages/coding-agent/src/core/compaction/context-compaction-runner.ts`](https://github.com/bastani-inc/atomic/blob/main/packages/coding-agent/src/core/compaction/context-compaction-runner.ts) - Planner loop, strict target gate, auto-compaction fallback ladder, and planner nudge cap
11
+ - [`packages/coding-agent/src/core/compaction/context-compaction-critical.ts`](https://github.com/bastani-inc/atomic/blob/main/packages/coding-agent/src/core/compaction/context-compaction-critical.ts) - Internal overflow-only critical-pass protected-entry eligibility and prompt guidance
12
+ - [`packages/coding-agent/src/core/compaction/context-compaction-eviction.ts`](https://github.com/bastani-inc/atomic/blob/main/packages/coding-agent/src/core/compaction/context-compaction-eviction.ts) - Internal overflow-only deterministic LRU eviction fallback
10
13
  - [`packages/coding-agent/src/core/compaction/branch-summarization.ts`](https://github.com/bastani-inc/atomic/blob/main/packages/coding-agent/src/core/compaction/branch-summarization.ts) - Branch summarization
11
14
  - [`packages/coding-agent/src/core/compaction/utils.ts`](https://github.com/bastani-inc/atomic/blob/main/packages/coding-agent/src/core/compaction/utils.ts) - Shared utilities (file tracking, serialization)
12
15
  - [`packages/coding-agent/src/core/session-manager.ts`](https://github.com/bastani-inc/atomic/blob/main/packages/coding-agent/src/core/session-manager.ts) - Entry types (`ContextCompactionEntry`, `BranchSummaryEntry`) and active-context rebuild logic
13
- - [`packages/coding-agent/src/core/extensions/types.ts`](https://github.com/bastani-inc/atomic/blob/main/packages/coding-agent/src/core/extensions/types.ts) - Extension event types
16
+ - [`packages/coding-agent/src/core/extensions/session-events.ts`](https://github.com/bastani-inc/atomic/blob/main/packages/coding-agent/src/core/extensions/session-events.ts) - Compaction extension event payloads
14
17
 
15
18
  For TypeScript definitions in your project, inspect `node_modules/@bastani/atomic/dist/`.
16
19
 
@@ -25,7 +28,7 @@ Atomic has one context compaction behavior and one separate branch-summarization
25
28
 
26
29
  Summary compaction — the earlier behavior that generated replacement prose — has been removed as an active runtime path. Historical JSONL lines with `type:"compaction"` remain readable on disk but are not injected into active LLM context. See [Legacy Summary Compaction (Retired)](#legacy-summary-compaction-retired) for a comparison and historical reference.
27
30
 
28
- `/compact` has no user-facing arguments. It uses the effective `compaction` settings (`compression_ratio`, `preserve_recent`, and optional `query`), a fixed internal prompt, transcript-bound inspection/deletion tools, local validation, and a `context_compaction` session entry. Auto-compaction uses the same deletion-only path.
31
+ `/compact` has no user-facing arguments. It uses the effective `compaction` settings (`compression_ratio`, `preserve_recent`, and optional `query`), a fixed internal prompt, transcript-bound inspection/deletion tools, local validation, and a `context_compaction` session entry. Manual compaction (`/compact` and the `contextCompact` RPC path) still uses the strict planner target only. Auto-compaction uses the same deletion-only commit path, but threshold and overflow triggers can accept validated below-target reductions or, on overflow only, escalate through internal recovery tiers when the strict target is not achievable.
29
32
 
30
33
  ## Verbatim vs. Summary Compaction
31
34
 
@@ -90,15 +93,15 @@ Settings use the same snake_case names under `compaction`, for example:
90
93
 
91
94
  ### When It Triggers
92
95
 
93
- Auto-compaction triggers when:
96
+ Auto-compaction threshold checks trigger when:
94
97
 
95
98
  ```text
96
- contextTokens > contextWindow - reserveTokens
99
+ contextTokens > effectiveInputBudget - reserveTokens
97
100
  ```
98
101
 
99
- By default, `reserveTokens` is 16384 tokens. Configure it in `~/.atomic/agent/settings.json` or `<project-dir>/.atomic/settings.json`; legacy `.pi` paths are also supported. This leaves room for the LLM's response.
102
+ By default, `reserveTokens` is 16384 tokens. Configure it in `~/.atomic/agent/settings.json` or `<project-dir>/.atomic/settings.json`; legacy `.pi` paths are also supported. This leaves room for the LLM's response. Providers that advertise a larger total context window than their hard prompt cap use the model's effective input budget for threshold and overflow recovery decisions.
100
103
 
101
- You can also trigger compaction manually with `/compact`. Custom summary instructions are not accepted because Verbatim Compaction is deletion-only and retained transcript content stays verbatim.
104
+ You can also trigger compaction manually with `/compact`. Custom summary instructions are not accepted because Verbatim Compaction is deletion-only and retained transcript content stays verbatim. Manual compaction keeps the strict `compression_ratio` completion requirement and does not run the auto-compaction overflow ladder.
102
105
 
103
106
  If auto-compaction runs while a turn still has queued work (for example a failed tool-call result or a follow-up queued during compaction), Atomic resumes through the same continuation lifecycle as a normal queued turn: provider retry handling runs, additional queued messages drain, and any post-compaction resume failure is surfaced instead of being swallowed silently.
104
107
 
@@ -171,7 +174,7 @@ The diagram below is intentionally a block diagram, not a flowchart DSL. Read it
171
174
  | 3 Planner workspace | `runContextDeletionAssistant` | `CompactableTranscript` | Temp JSONL transcript file plus bounded manifest prompt, inheriting the session's current model thinking level |
172
175
  | 4 Tool loop | `createContextDeletionTool` tools | Planner tool calls | In-run deletion store updates or correction errors |
173
176
  | 5 Validation airlock | `validateContextDeletionRequest` | Candidate cumulative deletion request | Reconciled `deletedTargets` or thrown error |
174
- | 6 Planner stops or adds more | Agent loop until target is met or no progress remains | Tool results and current context | Final validated deletion state |
177
+ | 6 Target/fallback decision | `contextCompact` runner ladder | Final or salvaged validated deletion state | Strict-target success, feasible auto-compaction acceptance, overflow-only critical pass, deterministic eviction, or terminal error |
175
178
  | 7 Persist compaction | session manager append path | `ContextCompactionResult` | New append-only `context_compaction` entry |
176
179
  | 8 Rebuild active context | `buildSessionContext` | Branch plus all logical deletion filters | Model messages with deleted objects omitted verbatim |
177
180
 
@@ -262,7 +265,7 @@ append-only SessionEntry branch
262
265
  │ toolCallIds ids from assistant toolCall content blocks │
263
266
  │ toolResultFor call id answered by a toolResult entry │
264
267
  │ │
265
- │ transcript.protectedEntryIds records the protected ids for the persisted result.
268
+ │ transcript.protectedEntryIds records the ids protected by the active validation pass.
266
269
  └──────────────────────────────────────────────────────────────────────────────────────────────┘
267
270
  ```
268
271
 
@@ -301,8 +304,10 @@ Prompt body
301
304
  │ • Prefer high-confidence exploit actions after that: delete obvious low-value entries via │
302
305
  │ context_grep_delete or context_delete. │
303
306
  │ • Check context_compaction_budget after deletion batches. │
304
- │ • Treat compression_ratio as strict: default 0.5 means keep 50% / delete 50%.
305
- If the target is not met, continue deleting low-value entries/content blocks.
307
+ │ • Treat compression_ratio as strict for the standard planner pass: default 0.5 means keep
308
+ 50% / delete 50%.
309
+ │ • If the strict target is not met, continue deleting low-value entries/content blocks until │
310
+ │ the planner reaches the target, reaches the auto-compaction budget fallback, or stops. │
306
311
  │ • Converge quickly; do not keep reading once safe deletion targets are clear. │
307
312
  ├──────────────────────────────────────────────────────────────────────────────────────────────┤
308
313
  │ Transcript file path │
@@ -386,7 +391,8 @@ Candidate cumulative deletion request
386
391
 
387
392
  ┌─────────────────────────────────────────────────────────────────────┐
388
393
  │ Gate 1: recent-context guard │
389
- preserve_recent context entries are rejected with correction text │
394
+ effective recent window entries are rejected with correction text │
395
+ │ (critical/deterministic overflow uses max(preserve_recent, 5)) │
390
396
  └─────────────────────────────────────────────────────────────────────┘
391
397
 
392
398
 
@@ -420,7 +426,8 @@ Candidate cumulative deletion request
420
426
  │ Gate 6: tool-call/tool-result reconciliation │
421
427
  │ repairs paired call/result deletion dependencies when safe │
422
428
  │ throws explicit recent-context errors when repair crosses the │
423
- │ preserve_recent boundary
429
+ effective recent boundary (max(preserve_recent, 5) in overflow
430
+ │ critical/deterministic tiers) │
424
431
  └─────────────────────────────────────────────────────────────────────┘
425
432
 
426
433
 
@@ -486,7 +493,7 @@ If the tool result is deleted:
486
493
  Standard recent boundary case:
487
494
 
488
495
  ┌──────────────────────────────┐ repair would delete ┌──────────────────────────────┐
489
- │ old side of pair requested │────────────────────────────────▶│ last-5 side of pair
496
+ │ old side of pair requested │────────────────────────────────▶│ preserve_recent side of pair
490
497
  └──────────────────────────────┘ └──────────────────────────────┘
491
498
 
492
499
 
@@ -503,8 +510,8 @@ ValidatedContextDeletionResult
503
510
  │ [{ kind: "entry", entryId }, { kind: "content_block", entryId, blockIndex }]
504
511
 
505
512
  ├─ protectedEntryIds
506
- │ snapshot of ids protected during preparation
507
-
513
+ │ snapshot of ids protected by the validation pass that produced the result
514
+ (critical overflow excludes entries deliberately relaxed for eviction)
508
515
  └─ stats
509
516
  object and token reduction estimate
510
517
 
@@ -536,20 +543,29 @@ ValidatedContextDeletionResult
536
543
  | `context_delete` validation error | Store rolls back to previous deletion targets | Non-terminating correction tool result with exact error |
537
544
  | `context_grep_delete` regex/pattern error | Store rolls back to previous deletion targets | Non-terminating correction tool result with exact error |
538
545
  | `context_grep_delete` protected/recent match | Matching protected target is ignored and not counted as a deletion | Non-protected matches still apply when validation succeeds |
539
- | Planner stops without any valid deletion | Nothing persisted | Compaction fails, including last deletion-tool error when available |
540
- | Provider overflow after some valid deletions | Valid in-run deletions are used | Compaction can proceed with recorded targets |
541
- | Provider non-overflow error | Nothing persisted | Error propagates |
542
- | Extension-provided deletion request invalid | Nothing persisted | Extension/caller sees validation failure |
546
+ | Manual planner stops below the strict `compression_ratio` target | Nothing persisted | Manual compaction fails with achieved reduction, deletion count, and tokens-after details |
547
+ | Threshold auto-compaction stops below the strict target but deletes at least one target and projected `tokensAfter` is at or below `effectiveInputBudget - reserveTokens` | Validated deletion targets are persisted | Tier 2 accepts the feasible result so threshold compaction does not immediately re-trigger |
548
+ | Threshold auto-compaction stops below the strict target and still exceeds the trigger boundary | Nothing persisted | Auto-compaction fails; threshold compaction never escalates to protected-entry eviction |
549
+ | Threshold auto-compaction finds no preparable compactable transcript | Nothing persisted | Silent no-op is preserved because threshold compaction is only opportunistic |
550
+ | Overflow auto-compaction finds no preparable compactable transcript | Nothing persisted | Terminal overflow-recovery error states that nothing more was safely deletable instead of silently no-oping |
551
+ | Overflow auto-compaction has validated deletions whose projected `tokensAfter` is at or below the model's effective input budget | Validated deletion targets are persisted | Tier 1 target-met results, Tier 2 feasible results, and provider-overflow salvage are committed only when they fit the effective input budget; target-met-but-over-budget results escalate instead of being persisted |
552
+ | Overflow planner misses the strict target or meets the strict target while still exceeding the effective input budget | No persistence until a later tier succeeds | Tier 3 reruns the planner with internal `<critical-overflow-mode>` guidance, overflow-only protected-entry eligibility, and an effective recent guard of `max(preserve_recent, 5)` across all entries |
553
+ | Critical overflow pass cannot produce a fitting validated result, or planner auth is unavailable during overflow | No model-generated plan is persisted | Tier 4 runs deterministic code-level LRU eviction with no model call or auth requirement while enforcing the same `max(preserve_recent, 5)` recent floor across all entries |
554
+ | Deterministic overflow eviction cannot fit the effective input budget, has no safe candidate left, or reaches its 50-pass cap | Nothing persisted from the failed attempt | Terminal overflow-recovery error includes achieved stats (`tokensAfter`, percent reduction, deletion-target count), the budget, and that nothing more was safely deletable |
555
+ | Planner run reaches its 50 real provider-turn cap | No additional provider calls are made for that planner run | The runner evaluates the validated deletions recorded so far against the current tier's acceptance rule, then either escalates or fails terminally with achieved stats |
556
+ | Planner nudge loop reaches its 50 follow-up cap | No extra follow-ups are queued for that planner run | The runner evaluates the best validated state against the current tier's acceptance rule, then either escalates or fails terminally with achieved stats |
557
+ | Provider non-overflow error | Nothing persisted unless an overflow-only later tier succeeds | Error propagates for manual/threshold; overflow recovery can continue to lower tiers unless the request was aborted |
558
+ | Extension-provided deletion request invalid | Nothing persisted | Extension/caller sees validation failure; extension-provided requests bypass the internal fallback ladder |
543
559
 
544
560
 
545
561
 
546
562
  1. **Collect active branch context.** Atomic walks the current session branch and applies any earlier `context_compaction` logical deletions.
547
563
  2. **Build a compactable transcript.** Each compactable entry includes a stable `entryId`, role, token estimate, full text, content-block indexes, tool-call IDs, and tool-result links.
548
- 3. **Mark validation guards.** Atomic marks user instructions, custom messages, branch/summary messages, the configured `preserve_recent` context-eligible entries, unresolved assistant/tool errors, and failed bash executions as not directly deletable. If a planner targets one, the deletion tool returns an explicit correction error.
564
+ 3. **Mark validation guards.** Atomic marks user instructions, custom messages, branch/summary messages, the configured `preserve_recent` context-eligible entries, unresolved assistant/tool errors, and failed bash executions as protected in the standard transcript. If a standard planner targets one, the deletion tool returns an explicit correction error.
549
565
  4. **Write a temporary transcript file.** The compaction assistant receives a compact manifest plus the path to a JSONL transcript file. It should inspect with tools instead of loading the whole transcript into prompt context.
550
- 5. **Run the deletion planner.** The user's currently selected model runs Atomic's fixed Verbatim Compaction prompt using the session's current model thinking level. It can search/read transcript slices and then call deletion tools. The prompt substitutes the effective compaction parameters: `compression_ratio` (fraction to keep, default `0.5`), `preserve_recent` (default `2`), and `query` (explicit or auto-detected). The target reduction is `1 - compression_ratio` and is treated as a strict completion requirement.
566
+ 5. **Run the standard deletion planner.** The user's currently selected model runs Atomic's fixed Verbatim Compaction prompt using the session's current model thinking level. It can search/read transcript slices and then call deletion tools. The prompt substitutes the effective compaction parameters: `compression_ratio` (fraction to keep, default `0.5`), `preserve_recent` (default `2`), and `query` (explicit or auto-detected). The target reduction is `1 - compression_ratio` and is treated as a strict completion requirement for the standard planner pass.
551
567
  6. **Validate fail-closed.** Atomic validates every cumulative deletion plan locally. Unknown IDs, protected targets, duplicate/overlapping targets, empty-context plans, missing task-bearing context, and tool-call/tool-result orphaning are rejected.
552
- 7. **Continue until target.** Atomic exits the internal planner loop when validated deletion stats meet the configured reduction target. If the model tries to finish early, Atomic injects a follow-up nudge with the current validated reduction and tells the planner to continue removing message entries/content blocks.
568
+ 7. **Apply the auto-compaction fallback ladder when needed.** Manual compaction stops at the strict standard planner result. Threshold auto-compaction can accept a below-target result only when it has at least one validated deletion and projected `tokensAfter` is at or below `effectiveInputBudget - reserveTokens`; it never escalates to protected-entry eviction. Overflow auto-compaction commits any planner result (strict-target or below-target feasible) only when projected `tokensAfter` fits the effective input budget, then can rerun the planner in an internal critical overflow pass, and finally can use deterministic code-level LRU eviction until the effective input budget fits or no safe deletion remains. The overflow-only critical planner and deterministic eviction tiers enforce an effective recent guard of `max(preserve_recent, 5)` over all entries.
553
569
  8. **Save and rebuild.** Atomic writes a backup snapshot for persisted sessions, appends a `context_compaction` entry with validated targets and stats, then rebuilds the active LLM context from the filtered branch.
554
570
 
555
571
  ### Transcript-Bound Tools
@@ -564,17 +580,17 @@ The compaction assistant can only compact by using these internal tools. Exact d
564
580
  | `context_delete` | Record exact entry/content-block deletion targets. |
565
581
  | `context_grep_delete` | Bulk-delete matching entries or content blocks with guardrails. |
566
582
 
567
- The planner is prompted to call `context_compaction_budget` before deleting and after deletion batches. The tool reports the current transcript token estimate as a percentage of the selected model's context window, the configured `compression_ratio`, the projected percentage after selected deletions, current reduction percentage, how many more estimated tokens must be removed to reach the strict target, and the image token share (`remainingImageTokens`, `imageBlockCount`, `imageTokenPercent`) so the planner can prioritize deleting stale image context when images dominate. With the default `compression_ratio: 0.5`, the strict target is a 50% token reduction.
583
+ The planner is prompted to call `context_compaction_budget` before deleting and after deletion batches. The tool reports the current transcript token estimate as a percentage of the selected model's context window, the configured `compression_ratio`, the projected percentage after selected deletions, current reduction percentage, how many more estimated tokens must be removed to reach the strict target, and the image token share (`remainingImageTokens`, `imageBlockCount`, `imageTokenPercent`) so the planner can prioritize deleting stale image context when images dominate. With the default `compression_ratio: 0.5`, the strict standard planner target is a 50% token reduction. Auto-compaction can still commit a validated below-target result when the projected `tokensAfter` clears the relevant budget: threshold compaction uses the trigger boundary (`effectiveInputBudget - reserveTokens`), while overflow recovery uses the model's effective input budget. On the overflow path, strict-target results are also gated by that effective input budget before they can be committed.
568
584
 
569
585
  `context_grep_delete` supports literal or regex matching, skips already-deleted or disallowed context, enforces a per-call `maxMatches` safety cap, can require `expectedMatchCount` when the planner wants an exact-match safety check, and routes every accepted match through the same validation pipeline as exact deletions. Disallowed matches are ignored before `matches`, `expectedMatchCount`, deletion stats, and selected targets are calculated, so a broad regex can still remove safe blocks without counting rejected candidates as removed. This includes the universal latest-retained assistant guard: if the latest retained assistant message contains `thinking` or `redacted_thinking`, neither `context_delete` nor `context_grep_delete` may remove any content block from that assistant message, even a visible text sibling block. `maxMatches` limits only one tool call; there is no cumulative deletion cap across repeated `context_delete` or `context_grep_delete` calls. Exact deletion attempts that target disallowed entries/blocks return an explicit non-terminating tool error with correction guidance. Exact deletion payloads that include unsupported fields such as transcript `text`, block `content`, summaries, or replacement data are rejected as non-id-only requests.
570
586
 
571
- Tool calls are cumulative during one compaction run. The assistant can apply several small deletion batches, inspect the updated state, and stop only after the validated stats meet the strict reduction target. Atomic uses the validated tool state as the compaction result; ordinary assistant text is ignored for deletion targets.
587
+ Tool calls are cumulative during one planner run. The assistant can apply several small deletion batches, inspect the updated state, and stop only after the validated stats meet the strict reduction target or an auto-compaction budget fallback can safely accept the current result. Atomic uses the validated tool state as the compaction result; ordinary assistant text is ignored for deletion targets. Each planner run is bounded to 50 real provider turns (including tool-call turns), and the planner nudge loop is additionally bounded to 50 follow-up nudges per planner run, so a planner that keeps making tiny changes or repeated tool calls cannot spin indefinitely.
572
588
 
573
589
  ### Validation Rules
574
590
 
575
591
  Validation preserves tool-call/tool-result consistency. If deleting a tool call would leave a tool result behind, Atomic either deletes the paired result too or rejects the plan when that would violate a validation guard. If deleting a tool result would leave a visible dangling tool call, Atomic either deletes the paired call too or rejects the plan.
576
592
 
577
- Atomic also refuses plans that would delete all context or leave no task-bearing context. These checks are local; the model cannot bypass them. Provider context-overflow recovery uses the same validation rules as manual and threshold compaction.
593
+ Atomic also refuses plans that would delete all context or leave no task-bearing context. These checks are local; the model cannot bypass them. Provider context-overflow recovery uses the same validation rules as manual and threshold compaction. During the overflow-only critical planner pass and deterministic eviction fallback, Atomic internally enforces an effective recent guard of `max(preserve_recent, 5)` across all entries, restoring the pre-#1399 last-5 floor even for otherwise-unprotected assistant/tool entries. Within that floor, deletion is rejected through the same recent-target validation used elsewhere. Outside that floor, Atomic relaxes deletion eligibility only for stale protected task-bearing entries (`user`, `custom`, branch summary) that are not carrying assistant/tool/bash errors; every resulting plan still passes fail-closed validation, including latest thinking-bearing assistant immutability, task-bearing floor, and tool-call/result pairing.
578
594
 
579
595
  ### ContextCompactionEntry Structure
580
596
 
@@ -689,6 +705,8 @@ pi.on("session_before_compact", async (event, ctx) => {
689
705
 
690
706
  If `{ cancel: true }` is returned, compaction aborts with a cancellation error. If `{ deletionRequest }` is returned, Atomic validates it through the same local airlock as model-proposed deletions — unknown IDs, protected targets, orphaning, and empty-context plans are rejected — and skips the internal planner. If nothing is returned, the internal planner runs normally.
691
707
 
708
+ Extension-provided deletion requests validate against the original standard transcript and bypass the internal fallback ladder, including its overflow budget-fit gate. The overflow guarantee that committed results fit the effective input budget applies to Atomic's internal ladder results; extension-supplied deletion requests remain a public hook escape hatch that commits after local fail-closed validation. Atomic does not expose a public compaction mode API; protected-entry relaxation is reserved for Atomic's own overflow recovery tiers.
709
+
692
710
  ### session_compact
693
711
 
694
712
  Fired after compaction succeeds and the `context_compaction` entry is persisted.
@@ -920,7 +938,7 @@ Configure compaction in `~/.atomic/agent/settings.json` or `<project-dir>/.atomi
920
938
  | Setting | Default | Description |
921
939
  |---------|---------|-------------|
922
940
  | `enabled` | `true` | Enable automatic Verbatim Compaction. |
923
- | `reserveTokens` | `16384` | Tokens to reserve for the next LLM response; auto-compaction starts when context usage exceeds `contextWindow - reserveTokens`. |
941
+ | `reserveTokens` | `16384` | Tokens to reserve for the next LLM response; threshold auto-compaction starts when context usage exceeds the model's effective input budget minus this reserve. |
924
942
 
925
943
  Disable auto-compaction with `"enabled": false`. You can still compact manually with `/compact`.
926
944
 
@@ -80,7 +80,7 @@ See [Providers](/providers) for all supported providers, environment variables,
80
80
 
81
81
  ## First session
82
82
 
83
- On a fresh install with no prior Atomic startup state, Atomic starts with a first-run workflow prompt. Returning users with prior startup state are marked onboarded automatically and continue directly into the normal chat UI; stored credentials by themselves do not skip onboarding. Paste a ticket description, GitHub issue, path to a spec, or task prompt and Atomic hands it to the normal coding-agent session. The handoff raises the selected model to high reasoning when supported and first asks the parent agent to estimate scope from the seed text alone: tickets, issues, and especially specs often list enough work items, files, tests, docs, migrations, or acceptance criteria to classify likely size without immediately inspecting the repo. That text-only pass is treated as a routing confidence signal, not final planning. If the task is clearly tiny/small and high-confidence, the parent can route directly; if the seed references context that must be read or the scope is medium, large, unclear, or risky, it inspects only the necessary issue/spec/path/repo area and can use targeted read-only subagents such as `codebase-locator`, `codebase-analyzer`, and `codebase-pattern-finder` at their normal defaults. It then chooses `goal` for focused work or `ralph` for broader/riskier work, starts the selected workflow, and continues normally. If you paste the task before logging in or selecting a usable model, Atomic keeps only an in-memory copy, asks you to run `/login`, and resumes with the latest saved task after login or `/model` selection makes the session ready; `/new` starts a fresh unresolved onboarding session and drops that saved in-memory task. If you want normal chat instead, type `/chat` or `/chat <message>`; other slash commands such as `/login`, `/model`, and `/atomic` still work and do not dismiss onboarding.
83
+ On a fresh install with no prior Atomic startup state, Atomic shows a one-time first-run explanation after any What's New notes and directly above the input box describing Atomic as a verifiable coding agent runtime for building and running agent workflows you can feel confident in. Returning users with prior startup state are marked onboarded automatically and continue directly into the normal chat UI; stored credentials by themselves do not skip the first-run explanation. The composer is the normal Atomic input from the start: type a message, run `/login` first if no provider is connected, open `/atomic`, or launch a workflow command without a special onboarding transition.
84
84
 
85
85
  Once Atomic starts, the fastest way to get value is to kick off a built-in workflow or invoke a skill. Workflows are the default path for non-trivial tasks and for requests with inherent structure plus a verifiable objective, including implementation, build, debugging, bug-fix, migration, new-feature, scoped multi-file, or docs/code-change work where validation matters. If a prompt says `do X until Y`, `repeat until`, `iterate until`, `review/fix until passing`, or `run checks and fix until green`, it already describes a workflow-shaped loop with a stop condition.
86
86
 
@@ -121,7 +121,7 @@ For smaller one-off tasks, use `goal` with a concrete task description that name
121
121
 
122
122
  ### Monitor and steer a run
123
123
 
124
- Named workflow runs execute in the background. After launch you get a run id; use it to inspect, attach, pause, or resume. First-run `goal`/`ralph` handoffs show the exact `/workflow status <run-id>` and `/workflow connect <run-id>` commands in the dispatched card, and you can also ask in the current chat for status or to steer the run at any point.
124
+ Named workflow runs execute in the background. After launch you get a run id; use it to inspect, attach, pause, or resume.
125
125
 
126
126
  ```text
127
127
  /workflow status <run-id> # inspect one run's progress
@@ -218,7 +218,7 @@ Restart Atomic, or run `/reload`, after changing context files.
218
218
 
219
219
  ### Reference files
220
220
 
221
- Type `@` in any interactive editor, including first-run onboarding, to fuzzy-search files; or pass files on the command line:
221
+ Type `@` in any interactive editor to fuzzy-search files; or pass files on the command line:
222
222
 
223
223
  ```bash
224
224
  atomic @README.md "Summarize this"
package/docs/settings.md CHANGED
@@ -74,7 +74,7 @@ Use `/fast` in interactive mode to edit these settings. Atomic applies fast mode
74
74
  | `collapseChangelog` | boolean | `false` | Show condensed changelog after updates |
75
75
  | `enableInstallTelemetry` | boolean | `true` | Send an anonymous install/update version ping after first install or changelog-detected updates. This does not control update checks |
76
76
  | `firstRunOnboardingStartedVersion` | string | - | Internal first-run onboarding start marker used when no prior Atomic startup state identifies the user as returning |
77
- | `onboardedVersion` | string | - | Internal one-time first-run onboarding completion marker. Returning-user detection from prior startup state, `/chat`, or a successful first-run seed handoff into the normal agent session sets it |
77
+ | `onboardedVersion` | string | - | Internal one-time first-run onboarding completion marker. Returning-user detection from prior startup state or displaying the first-run workflow-engine explanation sets it |
78
78
  | `doubleEscapeAction` | string | `"tree"` | Action for double-escape: `"tree"`, `"fork"`, or `"none"` |
79
79
  | `treeFilterMode` | string | `"default"` | Default filter for `/tree`: `"default"`, `"no-tools"`, `"user-only"`, `"labeled-only"`, `"all"` |
80
80
  | `editorPaddingX` | number | `0` | Horizontal padding for input editor (0-3) |
package/docs/usage.md CHANGED
@@ -19,7 +19,7 @@ The editor can be replaced temporarily by built-in UI such as `/settings` or by
19
19
 
20
20
  | Feature | How |
21
21
  |---------|-----|
22
- | File reference | Type `@` to fuzzy-search project files, including during first-run onboarding |
22
+ | File reference | Type `@` to fuzzy-search project files |
23
23
  | Path completion | Press Tab to complete paths |
24
24
  | Multi-line input | SHIFT+Enter, or CTRL+Enter on Windows Terminal |
25
25
  | Images | Paste with CTRL+V, ALT+V on Windows, or drag into the terminal |
package/docs/workflows.md CHANGED
@@ -58,7 +58,7 @@ Use direct chat only for tiny, deterministic, low-risk work where workflow track
58
58
 
59
59
  ## Quick Start
60
60
 
61
- On a fresh first run with no prior Atomic startup state, Atomic can route your first pasted ticket, issue, spec path, or task prompt into normal workflow-driven agent work. Returning users with prior startup state are marked onboarded automatically and continue directly into the normal chat UI; stored credentials by themselves do not skip onboarding. If you are not logged in or configured yet, Atomic keeps the latest seed in memory only, asks you to run `/login`, and resumes after login succeeds. Once ready, onboarding raises the selected model to high reasoning when supported and hands the seed to the normal coding-agent session with instructions to first estimate likely scope from the seed text alone. Tickets, GitHub issues, and especially specs often list enough work items, files, tests, docs, migrations, or acceptance criteria to make an initial tiny/small/medium/large/unknown call without immediately inspecting the repo. That text-only estimate is only a routing confidence signal, not final implementation planning. If the seed makes the task clearly tiny or small and high-confidence, the parent can route directly; if referenced context must be read or the scope is medium, large, unclear, risky, or not obviously tiny, the parent inspects only the necessary issue/spec/path/repo area and can use targeted read-only subagents such as `codebase-locator`, `codebase-analyzer`, and `codebase-pattern-finder` at their normal defaults before making the high-reasoning routing decision: `goal` for small fixes/quick fixes, `ralph` for non-trivial work around 2k+ changed lines or many files/areas. It then starts the selected workflow and continues normally. Type `/chat` before handoff to skip this one-time routing and use Atomic as a normal coding-agent chat.
61
+ On a fresh first run with no prior Atomic startup state, Atomic shows a one-time explanation after any What's New notes and directly above the normal input box describing Atomic as a verifiable coding agent runtime for building and running agent workflows you can feel confident in. It no longer intercepts the first message, saves a pasted seed, routes to `goal` or `ralph`, raises reasoning, or requires `/chat` to use normal chat. Type a normal message or slash command immediately; run `/login` first if no provider is connected, use `/atomic` for guides, `/workflow list` to discover built-ins, or launch a workflow command directly when you already know what you want.
62
62
 
63
63
  The fastest way to get a workflow running is to **describe it in natural language** and let Atomic write it for you. If you'd rather write the TypeScript yourself, jump to [Or hand-write the TypeScript](#or-hand-write-the-typescript) below.
64
64
 
@@ -110,7 +110,7 @@ Then list and run it like any other workflow:
110
110
  /workflow <name> key=value ...
111
111
  ```
112
112
 
113
- Named workflow runs are background-oriented. After launch, expect a run id and monitor it with `/workflow status <run-id>`, F2, or `/workflow connect <run-id>`. First-run `goal`/`ralph` handoffs print those exact commands in the dispatched card; use connect to watch, attach, and steer, or ask in the current chat for status or steering at any point.
113
+ Named workflow runs are background-oriented. After launch, expect a run id and monitor it with `/workflow status <run-id>`, F2, or `/workflow connect <run-id>`.
114
114
 
115
115
  ### Or hand-write the TypeScript
116
116
 
@@ -220,7 +220,8 @@ Inputs:
220
220
  | `objective` | text | yes | — | Goal-runner objective or delta. Include the desired end state, expected outcome, testing/validation instructions, and any explicit done criteria. |
221
221
  | `acceptance_criteria` | text | no | objective | Original immutable task contract that the run must remain consistent with. When launching a follow-up `goal` run from review findings, pass the ORIGINAL task text here so reviewer suggestions cannot drift or contradict the literal contract. |
222
222
  | `max_turns` | number | no | `10` | Maximum worker/review turns before human follow-up is needed. |
223
- | `base_branch` | string | no | `origin/main` | Branch reviewers and the optional final stage compare the current code delta against. |
223
+ | `base_branch` | string | no | `origin/main` | Branch reviewers and the optional final stage compare the current code delta against; also used to create a missing worktree. |
224
+ | `git_worktree_dir` | string | no | `""` | Optional reusable Git worktree root. Empty runs in the invoking checkout; non-empty values run Goal stages in the created/reused worktree. |
224
225
  | `create_pr` | boolean | no | `false` | Safe-by-default PR creation flag. Omitted or `false` skips the final `pull-request` stage and omits `pr_report`; prompt text alone does not opt in, and only strict `true` authorizes the final `pull-request` stage to attempt provider-appropriate PR/MR/review creation after Goal reaches `complete`. |
225
226
 
226
227
  `goal` defaults to 10 worker/review turns. Reviewer quorum is fixed internally at 2 reviewer `complete` votes. The repeated-blocker threshold defaults to 3 consecutive same-blocker turns and is clamped to `max_turns` when you run fewer than 3 turns.
@@ -232,10 +233,13 @@ Run examples:
232
233
  /workflow goal objective="Update the CLI docs to describe the new --json flag, include one usage example, and verify the docs build still passes" max_turns=3
233
234
  /workflow goal objective="Fix the settings form validation bug; add/adjust the focused test and consider it done when invalid emails show the inline error without submitting"
234
235
  /workflow goal objective="Implement the focused docs fix, run the docs validation command, and open a PR when complete" create_pr=true
236
+ /workflow goal objective="Fix the flaky package install test in an isolated worktree and run the focused regression" git_worktree_dir=../atomic-goal-install-wt base_branch=main
235
237
  ```
236
238
 
237
239
  `goal` uses the raw `objective` exactly as supplied as the operative objective recorded in the ledger and stores `acceptance_criteria` as the immutable literal contract (defaulting to the objective when omitted); it does not run an initial prompt-refinement stage. It creates an OS-temp `goal-ledger.json` artifact, renders goal-continuation context for each worker turn, writes the latest worker receipt to `worker-receipt.md`, and appends receipts, reviewer decisions, blockers, reducer decisions, and lifecycle events to the ledger. Worker and reviewer prompts (and the model-facing ledger artifact) deliberately omit the current turn/attempt number so the worker focuses on completing the objective rather than pacing itself to the workflow budget. The objective is treated as user-provided data, not higher-priority instructions. By default `goal` does not start the final `pull-request` stage, and `pr_report` is omitted. Prompt text alone does not opt in. Pass `create_pr=true` only when you explicitly want the final stage to inspect provider credentials and attempt provider-appropriate PR/MR/review creation, such as GitHub `gh`, Azure Repos `az repos pr create`, or Sapling/Phabricator tooling, after Goal reaches `complete` within `max_turns`. Goal worker and reviewer prompts explicitly tell intermediate stages to ignore PR-creation requests; only the final `pull-request` stage may attempt that handoff.
238
240
 
241
+ Set `git_worktree_dir` when you want Goal's worker and reviewer stages isolated in a reusable Git worktree. Relative paths resolve from the invoking repository root, existing same-repository worktree roots are reused, and missing paths are created from `base_branch`. Goal preserves the invoking repo-relative cwd inside the worktree, so launching from `repo/packages/api` with `git_worktree_dir=../repo-wt` runs stages from `../repo-wt/packages/api`.
242
+
239
243
  Write the `objective` like a compact acceptance spec. Say what should exist when the run is done, how you want testing handled, which command(s) or manual checks matter, and what outcome proves completion. The workflow is intentionally lean: it does not first generate an RFC or migration plan, so the developer-supplied objective is where scope, validation, and completion criteria belong.
240
244
 
241
245
  Goal worker/reviewer prompts treat the objective and acceptance criteria as the sole literal source of truth: if follow-up deltas, language specs, upstream issues, in-repo comments, or best practices conflict with explicit wording, reviewers surface the conflict instead of silently implementing external knowledge. Reviewer findings carry `objective_alignment` (`required_by_objective`, `consistent_with_objective`, `beyond_objective`, or `contradicts_objective`); `beyond_objective` and `contradicts_objective` findings are reported but do not block completion and must not be promoted into follow-up objectives without reconciling them against the acceptance criteria. Review decisions also include `requirements_traceability`, a clause-by-clause evidence map over every explicit objective/acceptance-criteria requirement. Goal approval requires that map to be non-empty and fully `proven`; passing worker-authored tests or snapshots alone is circular evidence unless tied to independent current-state proof.
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@bastani/atomic",
3
- "version": "0.9.5-alpha.3",
3
+ "version": "0.9.5-alpha.5",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@bastani/atomic",
9
- "version": "0.9.5-alpha.3",
9
+ "version": "0.9.5-alpha.5",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
- "@bastani/atomic-natives": "0.9.5-alpha.3",
12
+ "@bastani/atomic-natives": "0.9.5-alpha.5",
13
13
  "@bufbuild/protobuf": "^2.12.1",
14
14
  "@earendil-works/pi-agent-core": "^0.80.3",
15
15
  "@earendil-works/pi-ai": "^0.80.3",
@@ -514,16 +514,16 @@
514
514
  }
515
515
  },
516
516
  "node_modules/@bastani/atomic-natives": {
517
- "version": "0.9.5-alpha.3",
518
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives/-/atomic-natives-0.9.5-alpha.3.tgz",
517
+ "version": "0.9.5-alpha.5",
518
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives/-/atomic-natives-0.9.5-alpha.5.tgz",
519
519
  "license": "MIT",
520
520
  "optionalDependencies": {
521
- "@bastani/atomic-natives-darwin-arm64": "0.9.5-alpha.3",
522
- "@bastani/atomic-natives-darwin-x64": "0.9.5-alpha.3",
523
- "@bastani/atomic-natives-linux-arm64-gnu": "0.9.5-alpha.3",
524
- "@bastani/atomic-natives-linux-x64-gnu": "0.9.5-alpha.3",
525
- "@bastani/atomic-natives-win32-arm64-msvc": "0.9.5-alpha.3",
526
- "@bastani/atomic-natives-win32-x64-msvc": "0.9.5-alpha.3"
521
+ "@bastani/atomic-natives-darwin-arm64": "0.9.5-alpha.5",
522
+ "@bastani/atomic-natives-darwin-x64": "0.9.5-alpha.5",
523
+ "@bastani/atomic-natives-linux-arm64-gnu": "0.9.5-alpha.5",
524
+ "@bastani/atomic-natives-linux-x64-gnu": "0.9.5-alpha.5",
525
+ "@bastani/atomic-natives-win32-arm64-msvc": "0.9.5-alpha.5",
526
+ "@bastani/atomic-natives-win32-x64-msvc": "0.9.5-alpha.5"
527
527
  },
528
528
  "engines": {
529
529
  "bun": ">=1.3.14",
@@ -531,8 +531,8 @@
531
531
  }
532
532
  },
533
533
  "node_modules/@bastani/atomic-natives-darwin-arm64": {
534
- "version": "0.9.5-alpha.3",
535
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-arm64/-/atomic-natives-darwin-arm64-0.9.5-alpha.3.tgz",
534
+ "version": "0.9.5-alpha.5",
535
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-arm64/-/atomic-natives-darwin-arm64-0.9.5-alpha.5.tgz",
536
536
  "license": "MIT",
537
537
  "os": [
538
538
  "darwin"
@@ -543,8 +543,8 @@
543
543
  "optional": true
544
544
  },
545
545
  "node_modules/@bastani/atomic-natives-darwin-x64": {
546
- "version": "0.9.5-alpha.3",
547
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-x64/-/atomic-natives-darwin-x64-0.9.5-alpha.3.tgz",
546
+ "version": "0.9.5-alpha.5",
547
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-x64/-/atomic-natives-darwin-x64-0.9.5-alpha.5.tgz",
548
548
  "license": "MIT",
549
549
  "os": [
550
550
  "darwin"
@@ -555,8 +555,8 @@
555
555
  "optional": true
556
556
  },
557
557
  "node_modules/@bastani/atomic-natives-linux-arm64-gnu": {
558
- "version": "0.9.5-alpha.3",
559
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-gnu/-/atomic-natives-linux-arm64-gnu-0.9.5-alpha.3.tgz",
558
+ "version": "0.9.5-alpha.5",
559
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-gnu/-/atomic-natives-linux-arm64-gnu-0.9.5-alpha.5.tgz",
560
560
  "license": "MIT",
561
561
  "os": [
562
562
  "linux"
@@ -570,8 +570,8 @@
570
570
  "optional": true
571
571
  },
572
572
  "node_modules/@bastani/atomic-natives-linux-x64-gnu": {
573
- "version": "0.9.5-alpha.3",
574
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-gnu/-/atomic-natives-linux-x64-gnu-0.9.5-alpha.3.tgz",
573
+ "version": "0.9.5-alpha.5",
574
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-gnu/-/atomic-natives-linux-x64-gnu-0.9.5-alpha.5.tgz",
575
575
  "license": "MIT",
576
576
  "os": [
577
577
  "linux"
@@ -585,8 +585,8 @@
585
585
  "optional": true
586
586
  },
587
587
  "node_modules/@bastani/atomic-natives-win32-arm64-msvc": {
588
- "version": "0.9.5-alpha.3",
589
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-arm64-msvc/-/atomic-natives-win32-arm64-msvc-0.9.5-alpha.3.tgz",
588
+ "version": "0.9.5-alpha.5",
589
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-arm64-msvc/-/atomic-natives-win32-arm64-msvc-0.9.5-alpha.5.tgz",
590
590
  "license": "MIT",
591
591
  "os": [
592
592
  "win32"
@@ -597,8 +597,8 @@
597
597
  "optional": true
598
598
  },
599
599
  "node_modules/@bastani/atomic-natives-win32-x64-msvc": {
600
- "version": "0.9.5-alpha.3",
601
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-x64-msvc/-/atomic-natives-win32-x64-msvc-0.9.5-alpha.3.tgz",
600
+ "version": "0.9.5-alpha.5",
601
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-x64-msvc/-/atomic-natives-win32-x64-msvc-0.9.5-alpha.5.tgz",
602
602
  "license": "MIT",
603
603
  "os": [
604
604
  "win32"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bastani/atomic",
3
- "version": "0.9.5-alpha.3",
3
+ "version": "0.9.5-alpha.5",
4
4
  "description": "Atomic coding agent CLI with read, bash, edit, write tools and session management",
5
5
  "type": "module",
6
6
  "atomicConfig": {
@@ -77,7 +77,7 @@
77
77
  "prepublishOnly": "bun run clean && bun run build && bun run shrinkwrap"
78
78
  },
79
79
  "dependencies": {
80
- "@bastani/atomic-natives": "0.9.5-alpha.3",
80
+ "@bastani/atomic-natives": "0.9.5-alpha.5",
81
81
  "@bufbuild/protobuf": "^2.12.1",
82
82
  "@earendil-works/pi-agent-core": "^0.80.3",
83
83
  "@earendil-works/pi-ai": "^0.80.3",