@bastani/atomic 0.9.19-alpha.6 → 0.9.19-alpha.7

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 (119) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +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/package.json +1 -1
  6. package/dist/builtin/web-access/CHANGELOG.md +6 -0
  7. package/dist/builtin/web-access/index.bundle.mjs +22 -3
  8. package/dist/builtin/web-access/package.json +1 -1
  9. package/dist/builtin/workflows/CHANGELOG.md +9 -0
  10. package/dist/builtin/workflows/README.md +1 -1
  11. package/dist/builtin/workflows/builtin/adversarial-verification.js +2 -2
  12. package/dist/builtin/workflows/builtin/{chunk-vhmnzdj9.js → chunk-1jth021m.js} +1 -1
  13. package/dist/builtin/workflows/builtin/{chunk-p8jjwfg6.js → chunk-2377r57g.js} +4 -2
  14. package/dist/builtin/workflows/builtin/{chunk-hbnwv56f.js → chunk-31j2gs7h.js} +2 -2
  15. package/dist/builtin/workflows/builtin/{chunk-n8zysf1t.js → chunk-ngkqkzej.js} +1 -1
  16. package/dist/builtin/workflows/builtin/{chunk-1nbq96fh.js → chunk-nkrafh9s.js} +1 -1
  17. package/dist/builtin/workflows/builtin/{chunk-1kx4aggw.js → chunk-wf741bv3.js} +2 -2
  18. package/dist/builtin/workflows/builtin/{chunk-t6x2d78s.js → chunk-z29qbehr.js} +1 -1
  19. package/dist/builtin/workflows/builtin/generate-and-filter.js +2 -2
  20. package/dist/builtin/workflows/builtin/goal.js +3 -3
  21. package/dist/builtin/workflows/builtin/index.js +7 -7
  22. package/dist/builtin/workflows/builtin/ralph.js +3 -3
  23. package/dist/builtin/workflows/builtin/tournament.js +2 -2
  24. package/dist/builtin/workflows/package.json +1 -1
  25. package/dist/builtin/workflows/src/extension/index.bundle.mjs +308 -29
  26. package/dist/builtin/workflows/src/index.js +67 -19
  27. package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +2 -0
  28. package/dist/modes/interactive/components/task-live-transcript.d.ts +1 -1
  29. package/dist/modes/interactive/components/task-live-transcript.d.ts.map +1 -1
  30. package/dist/modes/interactive/components/task-live-transcript.js +19 -11
  31. package/dist/modes/interactive/components/task-live-transcript.js.map +1 -1
  32. package/docs/background-tasks.md +1 -1
  33. package/docs/build.md +51 -0
  34. package/docs/changelog.mdx +8 -8
  35. package/docs/compaction/reference.md +267 -0
  36. package/docs/compaction.md +36 -219
  37. package/docs/computer-use.md +35 -0
  38. package/docs/containerization.md +2 -0
  39. package/docs/custom-provider/api-reference.md +145 -0
  40. package/docs/custom-provider/oauth.md +131 -0
  41. package/docs/custom-provider/override.md +34 -0
  42. package/docs/custom-provider/registration.md +163 -0
  43. package/docs/custom-provider/streaming.md +214 -0
  44. package/docs/custom-provider.md +43 -607
  45. package/docs/development.md +76 -0
  46. package/docs/docs.json +199 -77
  47. package/docs/environment-variables.md +1 -1
  48. package/docs/extensions/api-reference.md +1001 -0
  49. package/docs/extensions/authoring.md +676 -0
  50. package/docs/extensions/events.md +793 -0
  51. package/docs/extensions/examples.md +94 -0
  52. package/docs/extensions/ui.md +470 -0
  53. package/docs/extensions.md +270 -2768
  54. package/docs/getting-started/authentication.md +55 -0
  55. package/docs/getting-started/first-session.md +172 -0
  56. package/docs/getting-started/installation.md +154 -0
  57. package/docs/getting-started/project-instructions.md +43 -0
  58. package/docs/guides/configuration.md +65 -0
  59. package/docs/guides/intercom.md +24 -0
  60. package/docs/guides/non-interactive.md +33 -0
  61. package/docs/guides/subagents.md +24 -0
  62. package/docs/guides/workflows.md +27 -0
  63. package/docs/guides.md +41 -0
  64. package/docs/index.md +13 -45
  65. package/docs/intercom/operations.md +178 -0
  66. package/docs/intercom/reference.md +146 -0
  67. package/docs/intercom.md +54 -259
  68. package/docs/json.md +17 -0
  69. package/docs/llama-cpp.md +5 -0
  70. package/docs/models/artificial-analysis-index.md +89 -0
  71. package/docs/models/evals.md +2 -2
  72. package/docs/models/model-selection.md +3 -3
  73. package/docs/models/pareto-efficiency.md +2 -2
  74. package/docs/models/reference.md +601 -0
  75. package/docs/models.md +45 -550
  76. package/docs/packages/authoring.md +88 -0
  77. package/docs/packages/reference.md +43 -0
  78. package/docs/packages.md +28 -107
  79. package/docs/programmatic.md +29 -0
  80. package/docs/prompt-templates.md +11 -0
  81. package/docs/providers/reference.md +23 -0
  82. package/docs/providers.md +10 -15
  83. package/docs/quickstart.md +44 -238
  84. package/docs/reference/cli.md +252 -0
  85. package/docs/reference.md +52 -0
  86. package/docs/rpc/examples.md +64 -0
  87. package/docs/rpc/extension-ui.md +198 -0
  88. package/docs/rpc/protocol.md +1341 -0
  89. package/docs/rpc.md +109 -1346
  90. package/docs/sdk/reference.md +1090 -0
  91. package/docs/sdk.md +56 -1002
  92. package/docs/session-format.md +2 -0
  93. package/docs/sessions.md +6 -10
  94. package/docs/settings.md +6 -45
  95. package/docs/skills/authoring.md +95 -0
  96. package/docs/skills/reference.md +60 -0
  97. package/docs/skills.md +20 -122
  98. package/docs/subagents/authoring.md +37 -0
  99. package/docs/subagents/reference.md +60 -0
  100. package/docs/subagents.md +39 -95
  101. package/docs/terminal-setup.md +1 -1
  102. package/docs/themes/reference.md +176 -0
  103. package/docs/themes.md +21 -135
  104. package/docs/tmux.md +5 -0
  105. package/docs/tools/edit.md +5 -0
  106. package/docs/tools.md +5 -0
  107. package/docs/tui/reference.md +343 -0
  108. package/docs/tui.md +23 -286
  109. package/docs/usage.md +26 -209
  110. package/docs/web-access.md +2 -0
  111. package/docs/windows.md +2 -1
  112. package/docs/workflows/api-reference.md +11 -4
  113. package/docs/workflows/authoring.md +4 -2
  114. package/docs/workflows/builtins.md +2 -2
  115. package/docs/workflows/operations.md +11 -7
  116. package/docs/workflows/reliable-design.md +21 -3
  117. package/docs/workflows/verification.md +8 -0
  118. package/npm-shrinkwrap.json +32 -32
  119. package/package.json +3 -3
package/docs/subagents.md CHANGED
@@ -13,33 +13,12 @@ You do not need to install anything separately when you use `@bastani/atomic`.
13
13
 
14
14
  Background subagents are supported. See [Background tasks](/background-tasks) for launch examples, the below-prompt status indicator, `/tasks`, shell output, cancellation, and completion notices.
15
15
 
16
- ## Browse agents
17
-
18
- Open `/agents` to browse the available project, user, and built-in agents. Type to filter by name, description, or source. Use arrows to select an agent and Enter to inspect its description, model and fallbacks, tools, definition path, and system prompt. Escape returns to the catalog, then to chat. `/agents <query>` starts with a filter. Browsing is read-only and never launches an agent.
19
-
20
- The catalog is navigation, not an approval prompt. Leaving it open does not mark [Herdr](/herdr) blocked or hide active agent work; separate user-decision prompts still report their normal waits.
21
-
22
- The catalog uses the same effective discovery rules as execution, so overridden definitions and disabled agents are not offered as separate launchable choices. Ask Atomic to create or modify an agent; the catalog does not change configuration.
23
-
24
- ## Task inspection
25
-
26
- Hosts with an owner task store expose `/tasks` and `/tasks <id>` for background agents and shells, including their retained terminal results. Foreground-only work is excluded. Enter opens detail; arrows select an explicit action. Cancel asks for confirmation of the selected task. Terminal tasks retain transcript inspection but omit foreground, cancellation, and stdin actions. Escape returns from detail or stdin before returning to the composer.
27
-
28
- `/tasks` appears in slash-command autocomplete. The inspector groups agents and shells with counts, status symbols, and a highlighted selection. Task descriptions lead; the selected row shows secondary activity and tool counts. The header and footer remain visible in ordinary terminal sizes, with a compact fallback for short terminals.
29
-
30
- The list opens as a compact inline widget, like the `/workflow connect` picker. Detail, transcript, input, and stop-confirmation pages are fullscreen; returning to the list preserves selection. Every agent row includes its resolved model and reasoning level when available, including completed background tasks.
31
-
32
- While `/tasks` or its fullscreen transcript/detail view is active, Escape navigates back or closes that view; it does not cancel a pending `ask_user_question`. The questionnaire waits out of the way and returns with its selection intact after task navigation closes. With no task view active, Escape cancels the questionnaire normally.
33
-
34
- In the default isolated CLI, background subagents continue running after their launch observation returns. The engine publishes a compact task-status indicator below the prompt box, without task rows or activity previews. Run `/tasks` to open the list and inspect individual tasks; task updates never open it automatically. A compact finished-task summary remains after completion. Inspecting does not restart work or create a second task owner. Top-level model bash commands use this owner on POSIX systems; native Windows and commands inside subagent sessions retain their existing execution path.
35
-
36
- Transcript inspection uses a dedicated scrolling view with pinned identity, position, and controls. Retained child messages use the normal message renderers, excluding hidden reasoning and inline images. Missing capture is reported as `Transcript unavailable`; metrics never substitute for missing messages. Arrows scroll, PageUp/PageDown moves one viewport, and PageUp at the top loads earlier retained history. Home/End jumps within loaded history.
16
+ ## Where to go next
37
17
 
38
- Open live transcripts subscribe to child-session events, so streaming text and partial/final tool results refresh without reopening the page or waiting for a task-activity counter. Earlier pages remain anchored while updates arrive. Leaving the transcript releases its subscription without affecting execution.
18
+ Subagents are focused child agents you delegate bounded work to. Read this page for natural-language use and execution behavior, then continue:
39
19
 
40
- Detail views pin task identity, state, available metrics, and the selected action while PageUp/PageDown scrolls the body. Recent activity shows up to five retained tool actions; errors and input requests appear explicitly. Left returns to the previous view. `x` requests cancellation without bypassing confirmation or configured task bindings. Shell inspection shows a bounded output tail with omission markers.
41
-
42
- After a confirmed `x` stop settles, the owning chat receives a visible **stopped** notification and the parent model receives the stop context, even if the child returns no final message. Repeated stops do not duplicate notifications or replace an already-recorded terminal result. Closing the owner still suppresses late completion delivery.
20
+ - [Custom subagents](/subagents/authoring) define, scope, and configure your own.
21
+ - [Subagent reference](/subagents/reference) — fallback model resolution and reasoning levels.
43
22
 
44
23
  ## Start with natural language
45
24
 
@@ -59,6 +38,14 @@ Research the upstream library behavior online, then compare it with our local im
59
38
 
60
39
  Atomic decides whether delegation adds value, which specialist fits each bounded part, and whether the work should run as a single child, parallel group, or forked-context run. Multiple steps, files, tests, validation, or parallelism alone do not require a workflow; clearly delegated long-running autonomous work that needs durable stages, checkpoints, resumability, HIL, gates, retries, or loops is usually better served by a workflow.
61
40
 
41
+ ## Browse agents
42
+
43
+ Open `/agents` to browse the available project, user, and built-in agents. Type to filter by name, description, or source. Use arrows to select an agent and Enter to inspect its description, model and fallbacks, tools, definition path, and system prompt. Escape returns to the catalog, then to chat. `/agents <query>` starts with a filter. Browsing is read-only and never launches an agent.
44
+
45
+ The catalog is navigation, not an approval prompt. Leaving it open does not mark [Herdr](/herdr) blocked or hide active agent work; separate user-decision prompts still report their normal waits.
46
+
47
+ The catalog uses the same effective discovery rules as execution, so overridden definitions and disabled agents are not offered as separate launchable choices. Ask Atomic to create or modify an agent; the catalog does not change configuration.
48
+
62
49
  ## Subagent execution is non-interactive
63
50
 
64
51
  Supported subagent launches start immediately without opening a preview/editor prompt or waiting for terminal input. This applies to single, parallel, forked, fanout, and prompt-template execution. Ask any necessary questions in the parent conversation before delegating.
@@ -97,6 +84,12 @@ A single-child launch retains its existing terminal handoff: a parent-targeted b
97
84
 
98
85
  When the Intercom bridge is active, the parent may connect to issue the child capability; the child's own connection remains tool-driven. Non-interactive children still run normal extension lifecycle and remain in-process `AgentSession` instances while live.
99
86
 
87
+ The handoff explicitly tells the parent to start a fresh child with a normal launch such as `subagent({ agent: "worker", task: "[TASK_CONTEXT] ... Continue with this supervisor answer: ..." })`. The new child receives a new run identity. Completed, interrupted, and parent-question children are terminal for continuation; a prior run ID cannot revive one.
88
+
89
+ ## Foreground supervisor coordination
90
+
91
+ See [Supervisor coordination](#supervisor-coordination) for parallel requests and [Single-child handoff](#single-child-handoff) for claimed single-child requests.
92
+
100
93
  ## Migration from acceptance gates
101
94
 
102
95
  If you have older subagent calls or custom agents that used the removed gate fields:
@@ -188,17 +181,25 @@ Live progress and completed results show each step's resolved model ID and effec
188
181
 
189
182
  Owner-task rows, status cards, foreground result receipts, and background completion cards retain these settings too. Background launch receipts include the concrete model and known, capability-clamped reasoning level selected at admission, including inherited defaults, without waiting for child session startup. A launch receipt remains a snapshot; inspect `/tasks` for later session resolution or fallback changes. Settings that are not yet resolved remain unavailable rather than being guessed from the parent's display. Completion metadata is persisted with the notification so it remains visible when replaying chat history.
190
183
 
191
- ## Owner-bound task projection
184
+ ## Task inspection
185
+
186
+ Hosts with an owner task store expose `/tasks` and `/tasks <id>` for background agents and shells, including their retained terminal results. Foreground-only work is excluded. Enter opens detail; arrows select an explicit action. Cancel asks for confirmation of the selected task. Terminal tasks retain transcript inspection but omit foreground, cancellation, and stdin actions. Escape returns from detail or stdin before returning to the composer.
187
+
188
+ `/tasks` appears in slash-command autocomplete. The inspector groups agents and shells with counts, status symbols, and a highlighted selection. Task descriptions lead; the selected row shows secondary activity and tool counts. The header and footer remain visible in ordinary terminal sizes, with a compact fallback for short terminals.
189
+
190
+ The list opens as a compact inline widget, like the `/workflow connect` picker. Detail, transcript, input, and stop-confirmation pages are fullscreen; returning to the list preserves selection. Every agent row includes its resolved model and reasoning level when available, including completed background tasks.
192
191
 
193
- Host adapters can construct an `OwnerTaskStore` from their existing supervisor and owner lease, check the `store.connect()` result, then call `bindOwnerTaskStore(session, store)` for that exact live session. Binding does not create or connect an owner. The store observes snapshot/cursor reconciliation and notifies already-mounted chats even when the producer binds lazily. Disposing the view does not cancel the owner. Reattachment uses existing identities rather than replaying launch tools.
192
+ While `/tasks` or its fullscreen transcript/detail view is active, Escape navigates back or closes that view; it does not cancel a pending `ask_user_question`. The questionnaire waits out of the way and returns with its selection intact after task navigation closes. With no task view active, Escape cancels the questionnaire normally.
194
193
 
195
- Native task snapshots retain `wasBackground` once a designated observation yields, so a fresh projection can distinguish completed background work from foreground-only commands. Trusted hosts recover authentic command settlement receipts independently of the bounded event journal. Neither recovery path registers a new wait or restarts execution.
194
+ In the default isolated CLI, background subagents continue running after their launch observation returns. The engine publishes a compact task-status indicator below the prompt box, without task rows or activity previews. Run `/tasks` to open the list and inspect individual tasks; task updates never open it automatically. Completed tasks leave the live indicator and remain available in completion cards and `/tasks`. Inspecting does not restart work or create a second task owner. Top-level model bash commands use this owner on POSIX and native Windows; native Windows PowerShell is also owner-bound. Commands inside subagent sessions retain their existing execution path. See [Background shells](/background-tasks#background-shells) for platform support and the separate execution timeout.
196
195
 
197
- Main and workflow-stage chats use below-prompt background counts instead of persistent task rows in the transcript. Session replacement clears the previous owner's status before a replacement store binds. A workflow question retains the background count below its input area. Completion notifications use the same shared renderer in both chats.
196
+ Transcript inspection uses a dedicated scrolling view with pinned identity, position, and controls. Retained child messages use the normal message renderers, excluding hidden reasoning and inline images. Missing capture is reported as `Transcript unavailable`; metrics never substitute for missing messages. Arrows scroll, PageUp/PageDown moves one viewport, and PageUp at the top loads earlier retained history. Home/End jumps within loaded history.
198
197
 
199
- Custom `ChatSessionHost` adapters can still use live task rows; set `taskRowsInChat: false` for footer-only status. Those rows show agent labels, state, duration, and bounded activity previews. Display-colliding labels get a stable short suffix derived from the task ID. Retention is at most 64 reports and 8 KiB of encoded preview records per task; omitted previews are labelled rather than presented as a complete transcript.
198
+ Open live transcripts subscribe to child-session events, so streaming text and partial/final tool results refresh without reopening the page or waiting for a task-activity counter. Earlier pages remain anchored while updates arrive. Leaving the transcript releases its subscription without affecting execution.
200
199
 
201
- This is a host integration API above the SDK task foundation. Existing subagent and command producers are not automatically migrated by binding a projection. Full task transcript retrieval and `/tasks` navigation are separate integrations; unavailable transcript content is not inferred from activity reports.
200
+ Detail views pin task identity, state, available metrics, and the selected action while PageUp/PageDown scrolls the body. Recent activity shows up to five retained tool actions; errors and input requests appear explicitly. Left returns to the previous view. `x` requests cancellation without bypassing confirmation or configured task bindings. Shell inspection shows a bounded output tail with omission markers.
201
+
202
+ After a confirmed `x` stop settles, the owning chat receives a visible **stopped** notification and the parent model receives the stop context, even if the child returns no final message. Repeated stops do not duplicate notifications or replace an already-recorded terminal result. Closing the owner still suppresses late completion delivery.
202
203
 
203
204
  ## Orchestrator model and group policy
204
205
 
@@ -259,76 +260,15 @@ This keeps the parent session responsible for orchestration.
259
260
 
260
261
  ## Custom agents
261
262
 
262
- Custom agents are Markdown files with YAML frontmatter and a system prompt body. Keep the body outcome-first and locally complete: state the role or goal, observable success criteria, constraints and context-dependent tool routes, required output shape, and stop conditions. Reserve absolute wording for true invariants, request evidence and conclusions rather than private reasoning, and avoid repeated self-check instructions. Common locations are:
263
-
264
- | Scope | Path |
265
- |---|---|
266
- | User | `~/.atomic/agent/agents/**/*.md` |
267
- | Project | `.atomic/agents/**/*.md` |
268
-
269
- A small custom read-only inspection agent:
270
-
271
- ```markdown
272
- ---
273
- name: strict-inspector
274
- description: Inspect code for correctness and regressions
275
- tools: read, search, bash
276
- model: anthropic/claude-sonnet-4
277
- fallbackModels: openai/gpt-5-mini
278
- inheritProjectContext: true
279
- ---
280
-
281
- ## Role and goal
282
- Inspect the current diff for correctness and regressions without editing files.
283
-
284
- ## Success criteria
285
- Cite each actionable issue with file:line evidence and the observed failure or risk.
286
-
287
- ## Output and stop rule
288
- Return only issues worth fixing now. Stop when the relevant diff and affected call paths have been inspected, or name the evidence you could not access.
289
- ```
263
+ Moved to [Custom subagents](/subagents/authoring#custom-agents).
290
264
 
291
265
  ## Fallback models
292
266
 
293
- Agents can define ordered `fallbackModels` for retryable provider or model failures such as rate limits, quota/usage-limit exhaustion (for example a provider reporting `The usage limit has been reached`, or `usage_limit_reached`/`insufficient_quota` codes), auth problems, unavailable models, network timeouts, or 5xx errors. Atomic tries the requested primary model first, then configured fallbacks, and finally appends the current user-selected model as the last fallback candidate when available. The main chat and workflow stages share one failure classifier, so auth, model-availability, request-incompatibility, and transport signals are handled consistently. Cancellations, safety refusals, and task/tool failures are never retried on another model.
294
-
295
- A candidate that cannot serve the current request — for example an HTTP 400/413/422 bad/unprocessable/payload-too-large request, an unsupported tool or parameter, a context-length/context-window overflow, or a `too large` / `invalid_request` error — is treated as request/context incompatible and the fallback sequence advances to the next candidate rather than stopping. This means that if none of the configured candidates are applicable to the request, Atomic falls back to the currently selected user model instead of failing outright.
296
-
297
- Model fallback decisions use structured provider and attempt causes. There is no per-attempt idle watchdog, no child wall-clock kill cap, and no timeout-regex classification: a quiet provider response is allowed to finish, and only an explicit termination or provider failure supplies a retryable cause. Numeric process exit codes are not used as an outcome discriminator.
298
-
299
- When registry availability shows that a known candidate provider has no configured auth, Atomic records a skipped model attempt before starting the in-process turn. Unknown/custom providers are still attempted, and the current user-selected model appended as the final fallback is never filtered out by this pre-admission check.
300
-
301
- Fallbacks do not retry ordinary task failures, validation failures, tool failures, cancellations, or workflow-code errors. Because a fallback may send the same prompt and context to a different provider, choose models that match your cost, privacy, and data-handling requirements.
302
-
303
- Each candidate can also carry its own reasoning effort — see [Reasoning levels](#reasoning-levels).
267
+ Moved to [Subagent reference](/subagents/reference#fallback-models).
304
268
 
305
269
  ## Reasoning levels
306
270
 
307
- Set the reasoning (thinking) effort for each model candidate with a `model_name:thinking_effort` suffix on `model` and on every `fallbackModels` entry. Valid efforts are `off`, `minimal`, `low`, `medium`, `high`, `xhigh`, and `max` — the same shorthand used by `atomic --model sonnet:high`. `xhigh` and `max` are used only when the selected model's capability map supports them.
308
-
309
- ```markdown
310
- ---
311
- name: deep-reviewer
312
- description: Adversarial reviewer for risky diffs
313
- tools: read, search, bash
314
- model: anthropic/claude-sonnet-4:high
315
- fallbackModels: openai/gpt-5:medium, anthropic/claude-haiku-4-5:off
316
- ---
317
- ```
318
-
319
- Because the effort travels with each model string, every primary and fallback candidate is self-contained: a fallback can run at a different effort than the primary, so a high-effort primary degrades gracefully to a cheaper, lower-effort fallback.
320
-
321
- **Migrate off the legacy `thinking` field.** The separate `thinking:` frontmatter field is deprecated. It still works as a default for any candidate that has no suffix, and a suffix always wins, but new agents should encode the effort directly on `model` and `fallbackModels`:
322
-
323
- ```diff
324
- -model: openai/gpt-5.5
325
- -fallbackModels: anthropic/claude-opus-4-8
326
- -thinking: xhigh
327
- +model: openai/gpt-5.5:xhigh
328
- +fallbackModels: anthropic/claude-opus-4-8:xhigh
329
- ```
330
-
331
- `fallbackThinkingLevels` exists only as an optional compatibility helper: it is aligned by index to `fallbackModels` and supplies a fallback candidate's effort only when that fallback entry has no suffix. Prefer suffixed model strings instead. Attempt metadata reports the resolved model and the effective reasoning effort used for each attempt.
271
+ Moved to [Subagent reference](/subagents/reference#reasoning-levels).
332
272
 
333
273
  ## Related docs
334
274
 
@@ -336,3 +276,7 @@ Because the effort travels with each model string, every primary and fallback ca
336
276
  - [Intercom](/intercom) for cross-session messaging and supervisor escalation.
337
277
  - [Skills](/skills) for reusable instructions invoked with `/skill:<name>`.
338
278
  - [Settings](/settings) for user and project configuration.
279
+
280
+ ## Owner-bound task projection
281
+
282
+ Moved to [Subagent reference](/subagents/reference#owner-bound-task-projection).
@@ -4,7 +4,7 @@ Atomic uses the [Kitty keyboard protocol](https://sw.kovidgoyal.net/kitty/keyboa
4
4
 
5
5
  ## Startup typing
6
6
 
7
- On normal interactive TTY startup, Atomic starts a short-lived raw keyboard capture before deferred resources finish loading and keeps it active until the TUI input handler is mounted. Text typed before the prompt box is fully mounted is replayed into the editor. Enter-submitted ordinary prompts are queued for the prompt loop once startup is ready; command-like submissions such as `/settings` or `!pwd` are replayed as standalone editor submissions through normal command routing. If a command-like submission is captured, later captured submissions wait behind it and replay in original input order after that command is routed, so a later ordinary prompt cannot run before the earlier command and commands are not merged with following prompts. Startup work that can affect correctness, such as project trust prompts, resume/session selectors, cross-project session confirmations, explicit resource flags, metadata commands, non-TTY input, or explicit provider/model selection, still stays on the synchronous path instead of using this pre-session capture.
7
+ Moved to [Using Atomic](/usage#startup-typing).
8
8
 
9
9
  ## Kitty
10
10
 
@@ -0,0 +1,176 @@
1
+ ---
2
+ title: Theme reference
3
+ description: Theme file format, every color token, and accepted color values.
4
+ ---
5
+
6
+ # Theme reference
7
+
8
+ ## Theme Format
9
+
10
+ ```json
11
+ {
12
+ "$schema": "https://raw.githubusercontent.com/bastani-inc/atomic/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
13
+ "name": "my-theme",
14
+ "vars": {
15
+ "blue": "#0066cc",
16
+ "gray": 242
17
+ },
18
+ "colors": {
19
+ "accent": "blue",
20
+ "muted": "gray",
21
+ "text": "",
22
+ ...
23
+ },
24
+ "workingIndicator": {
25
+ "dark": "#70759f",
26
+ "lift": "#7f849c",
27
+ "muted": "#789bd0",
28
+ "accent": "blue",
29
+ "bright": "#b8d2ff",
30
+ "peak": "#eef4ff"
31
+ }
32
+ }
33
+ ```
34
+
35
+ - `name` is required, must be unique, and must not contain `/`.
36
+ - `vars` is optional. Define reusable colors here, then reference them in `colors` or `workingIndicator`.
37
+ - `colors` must define all 51 required tokens. `scrollbarThumb` is optional and falls back to `selectedBg` when omitted. `searchMatchBg` and `searchMatchText` remain accepted for older theme files but are unused.
38
+ - `workingIndicator` is optional and may override any subset of the six tones in the outward half of the ordinary `∀` ramp; Atomic derives omitted tones from selected background, accent, and text roles, then mirrors the palette back after `peak`. Explicit numeric values from 0 through 255 remain exact terminal palette indices. When a numeric index from 0 through 15 seeds an omitted tone, Atomic mixes from its built-in approximation of the common ANSI RGB value; the terminal still controls the actual appearance of the explicit index. Both explicit and derived tones update on theme hot reload.
39
+
40
+ The `$schema` field enables editor auto-completion and validation.
41
+
42
+ ## Color Tokens
43
+
44
+ Every theme must define all 51 required color tokens. The optional tokens preserve compatibility with themes written before they existed: `scrollbarThumb` and unused `searchMatchBg` fall back to `selectedBg`, and unused `searchMatchText` falls back to `text`.
45
+
46
+ ### Core UI (11 colors)
47
+
48
+ | Token | Purpose |
49
+ |-------|---------|
50
+ | `accent` | Primary accent (logo, selected items, cursor) |
51
+ | `border` | Normal borders |
52
+ | `borderAccent` | Highlighted borders |
53
+ | `borderMuted` | Subtle borders (editor) |
54
+ | `success` | Success states |
55
+ | `error` | Error states |
56
+ | `warning` | Warning states |
57
+ | `muted` | Secondary text |
58
+ | `dim` | Tertiary text |
59
+ | `text` | Default text (usually `""`) |
60
+ | `thinkingText` | Thinking block text |
61
+
62
+ ### Backgrounds & Content (11 required, 3 optional)
63
+
64
+ | Token | Purpose |
65
+ |-------|---------|
66
+ | `selectedBg` | Selected line background |
67
+ | `scrollbarThumb` | Fullscreen scrollbar thumb background; optional, falls back to `selectedBg` |
68
+ | `searchMatchBg` | Unused leftover token; optional, falls back to `selectedBg` |
69
+ | `searchMatchText` | Unused leftover token; optional, falls back to `text` |
70
+ | `userMessageBg` | User message background |
71
+ | `userMessageText` | User message text |
72
+ | `customMessageBg` | Extension message background |
73
+ | `customMessageText` | Extension message text |
74
+ | `customMessageLabel` | Extension message label |
75
+ | `toolPendingBg` | Tool box (pending) |
76
+ | `toolSuccessBg` | Tool box (success) |
77
+ | `toolErrorBg` | Tool box (error) |
78
+ | `toolTitle` | Tool title |
79
+ | `toolOutput` | Tool output text |
80
+
81
+ ### Markdown (10 colors)
82
+
83
+ | Token | Purpose |
84
+ |-------|---------|
85
+ | `mdHeading` | Headings |
86
+ | `mdLink` | Link text |
87
+ | `mdLinkUrl` | Link URL |
88
+ | `mdCode` | Inline code |
89
+ | `mdCodeBlock` | Code block content |
90
+ | `mdCodeBlockBorder` | Code block fences |
91
+ | `mdQuote` | Blockquote text |
92
+ | `mdQuoteBorder` | Blockquote border |
93
+ | `mdHr` | Horizontal rule |
94
+ | `mdListBullet` | List bullets |
95
+
96
+ ### Tool Diffs (3 colors)
97
+
98
+ | Token | Purpose |
99
+ |-------|---------|
100
+ | `toolDiffAdded` | Added lines |
101
+ | `toolDiffRemoved` | Removed lines |
102
+ | `toolDiffContext` | Context lines |
103
+
104
+ ### Syntax Highlighting (9 colors)
105
+
106
+ | Token | Purpose |
107
+ |-------|---------|
108
+ | `syntaxComment` | Comments |
109
+ | `syntaxKeyword` | Keywords |
110
+ | `syntaxFunction` | Function names |
111
+ | `syntaxVariable` | Variables |
112
+ | `syntaxString` | Strings |
113
+ | `syntaxNumber` | Numbers |
114
+ | `syntaxType` | Types |
115
+ | `syntaxOperator` | Operators |
116
+ | `syntaxPunctuation` | Punctuation |
117
+
118
+ ### Thinking Level Borders (6 colors)
119
+
120
+ Editor border colors indicating thinking level (visual hierarchy from subtle to prominent):
121
+
122
+ | Token | Purpose |
123
+ |-------|---------|
124
+ | `thinkingOff` | Thinking off |
125
+ | `thinkingMinimal` | Minimal thinking |
126
+ | `thinkingLow` | Low thinking |
127
+ | `thinkingMedium` | Medium thinking |
128
+ | `thinkingHigh` | High thinking |
129
+ | `thinkingXhigh` | Extra high thinking |
130
+
131
+ ### Bash Mode (1 color)
132
+
133
+ | Token | Purpose |
134
+ |-------|---------|
135
+ | `bashMode` | Editor border in bash mode (`!` prefix) |
136
+
137
+ ### HTML Export (optional)
138
+
139
+ The `export` section controls colors for `/export` HTML output. If omitted, colors are derived from `userMessageBg`.
140
+
141
+ ```json
142
+ {
143
+ "export": {
144
+ "pageBg": "#18181e",
145
+ "cardBg": "#1e1e24",
146
+ "infoBg": "#3c3728"
147
+ }
148
+ }
149
+ ```
150
+
151
+ ## Color Values
152
+
153
+ Four formats are supported:
154
+
155
+ | Format | Example | Description |
156
+ |--------|---------|-------------|
157
+ | Hex | `"#ff0000"` | 6-digit hex RGB |
158
+ | 256-color | `39` | xterm 256-color palette index (0-255) |
159
+ | Variable | `"primary"` | Reference to a `vars` entry |
160
+ | Default | `""` | Terminal's default color |
161
+
162
+ ### 256-Color Palette
163
+
164
+ - `0-15`: Basic ANSI colors (terminal-dependent)
165
+ - `16-231`: 6×6×6 RGB cube (`16 + 36×R + 6×G + B` where R,G,B are 0-5)
166
+ - `232-255`: Grayscale ramp
167
+
168
+ ### Terminal Compatibility
169
+
170
+ Atomic uses 24-bit RGB colors. Most modern terminals support this (iTerm2, Kitty, WezTerm, Windows Terminal, VS Code). For older terminals with only 256-color support, Atomic falls back to the nearest approximation.
171
+
172
+ Check truecolor support:
173
+
174
+ ```bash
175
+ echo $COLORTERM # Should output "truecolor" or "24bit"
176
+ ```
package/docs/themes.md CHANGED
@@ -4,14 +4,18 @@
4
4
 
5
5
  Themes are JSON files that define colors for the TUI.
6
6
 
7
+ ## On this page and its reference
8
+
9
+ This page covers selecting a theme and authoring your first one. The theme file format, every color token, and the accepted color values live in the [Theme reference](/themes/reference).
10
+
7
11
  ## Table of Contents
8
12
 
9
13
  - [Locations](#locations)
10
14
  - [Selecting a Theme](#selecting-a-theme)
11
15
  - [Creating a Custom Theme](#creating-a-custom-theme)
12
- - [Theme Format](#theme-format)
13
- - [Color Tokens](#color-tokens)
14
- - [Color Values](#color-values)
16
+ - [Theme Format](/themes/reference#theme-format)
17
+ - [Color Tokens](/themes/reference#color-tokens)
18
+ - [Color Values](/themes/reference#color-values)
15
19
  - [Tips](#tips)
16
20
 
17
21
  ## Locations
@@ -70,7 +74,7 @@ mkdir -p ~/.atomic/agent/themes
70
74
  vim ~/.atomic/agent/themes/my-theme.json
71
75
  ```
72
76
 
73
- 2. Define the theme with all required colors (see [Color Tokens](#color-tokens)):
77
+ 2. Define the theme with all required colors (see [Color Tokens](/themes/reference#color-tokens)):
74
78
 
75
79
  ```json
76
80
  {
@@ -143,173 +147,55 @@ vim ~/.atomic/agent/themes/my-theme.json
143
147
 
144
148
  ## Theme Format
145
149
 
146
- ```json
147
- {
148
- "$schema": "https://raw.githubusercontent.com/bastani-inc/atomic/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
149
- "name": "my-theme",
150
- "vars": {
151
- "blue": "#0066cc",
152
- "gray": 242
153
- },
154
- "colors": {
155
- "accent": "blue",
156
- "muted": "gray",
157
- "text": "",
158
- ...
159
- },
160
- "workingIndicator": {
161
- "dark": "#70759f",
162
- "lift": "#7f849c",
163
- "muted": "#789bd0",
164
- "accent": "blue",
165
- "bright": "#b8d2ff",
166
- "peak": "#eef4ff"
167
- }
168
- }
169
- ```
170
-
171
- - `name` is required, must be unique, and must not contain `/`.
172
- - `vars` is optional. Define reusable colors here, then reference them in `colors` or `workingIndicator`.
173
- - `colors` must define all 51 required tokens. `scrollbarThumb` is optional and falls back to `selectedBg` when omitted. `searchMatchBg` and `searchMatchText` remain accepted for older theme files but are unused.
174
- - `workingIndicator` is optional and may override any subset of the six tones in the outward half of the ordinary `∀` ramp; Atomic derives omitted tones from selected background, accent, and text roles, then mirrors the palette back after `peak`. Explicit numeric values from 0 through 255 remain exact terminal palette indices. When a numeric index from 0 through 15 seeds an omitted tone, Atomic mixes from its built-in approximation of the common ANSI RGB value; the terminal still controls the actual appearance of the explicit index. Both explicit and derived tones update on theme hot reload.
175
-
176
- The `$schema` field enables editor auto-completion and validation.
150
+ Moved to [Theme reference](/themes/reference#theme-format).
177
151
 
178
152
  ## Color Tokens
179
153
 
180
- Every theme must define all 51 required color tokens. The optional tokens preserve compatibility with themes written before they existed: `scrollbarThumb` and unused `searchMatchBg` fall back to `selectedBg`, and unused `searchMatchText` falls back to `text`.
154
+ Moved to [Theme reference](/themes/reference#color-tokens).
181
155
 
182
156
  ### Core UI (11 colors)
183
157
 
184
- | Token | Purpose |
185
- |-------|---------|
186
- | `accent` | Primary accent (logo, selected items, cursor) |
187
- | `border` | Normal borders |
188
- | `borderAccent` | Highlighted borders |
189
- | `borderMuted` | Subtle borders (editor) |
190
- | `success` | Success states |
191
- | `error` | Error states |
192
- | `warning` | Warning states |
193
- | `muted` | Secondary text |
194
- | `dim` | Tertiary text |
195
- | `text` | Default text (usually `""`) |
196
- | `thinkingText` | Thinking block text |
158
+ Moved to [Theme reference](/themes/reference#core-ui-11-colors).
197
159
 
198
160
  ### Backgrounds & Content (11 required, 3 optional)
199
161
 
200
- | Token | Purpose |
201
- |-------|---------|
202
- | `selectedBg` | Selected line background |
203
- | `scrollbarThumb` | Fullscreen scrollbar thumb background; optional, falls back to `selectedBg` |
204
- | `searchMatchBg` | Unused leftover token; optional, falls back to `selectedBg` |
205
- | `searchMatchText` | Unused leftover token; optional, falls back to `text` |
206
- | `userMessageBg` | User message background |
207
- | `userMessageText` | User message text |
208
- | `customMessageBg` | Extension message background |
209
- | `customMessageText` | Extension message text |
210
- | `customMessageLabel` | Extension message label |
211
- | `toolPendingBg` | Tool box (pending) |
212
- | `toolSuccessBg` | Tool box (success) |
213
- | `toolErrorBg` | Tool box (error) |
214
- | `toolTitle` | Tool title |
215
- | `toolOutput` | Tool output text |
162
+ Moved to [Theme reference](/themes/reference#backgrounds-&-content-11-required-3-optional).
216
163
 
217
164
  ### Markdown (10 colors)
218
165
 
219
- | Token | Purpose |
220
- |-------|---------|
221
- | `mdHeading` | Headings |
222
- | `mdLink` | Link text |
223
- | `mdLinkUrl` | Link URL |
224
- | `mdCode` | Inline code |
225
- | `mdCodeBlock` | Code block content |
226
- | `mdCodeBlockBorder` | Code block fences |
227
- | `mdQuote` | Blockquote text |
228
- | `mdQuoteBorder` | Blockquote border |
229
- | `mdHr` | Horizontal rule |
230
- | `mdListBullet` | List bullets |
166
+ Moved to [Theme reference](/themes/reference#markdown-10-colors).
231
167
 
232
168
  ### Tool Diffs (3 colors)
233
169
 
234
- | Token | Purpose |
235
- |-------|---------|
236
- | `toolDiffAdded` | Added lines |
237
- | `toolDiffRemoved` | Removed lines |
238
- | `toolDiffContext` | Context lines |
170
+ Moved to [Theme reference](/themes/reference#tool-diffs-3-colors).
239
171
 
240
172
  ### Syntax Highlighting (9 colors)
241
173
 
242
- | Token | Purpose |
243
- |-------|---------|
244
- | `syntaxComment` | Comments |
245
- | `syntaxKeyword` | Keywords |
246
- | `syntaxFunction` | Function names |
247
- | `syntaxVariable` | Variables |
248
- | `syntaxString` | Strings |
249
- | `syntaxNumber` | Numbers |
250
- | `syntaxType` | Types |
251
- | `syntaxOperator` | Operators |
252
- | `syntaxPunctuation` | Punctuation |
174
+ Moved to [Theme reference](/themes/reference#syntax-highlighting-9-colors).
253
175
 
254
176
  ### Thinking Level Borders (6 colors)
255
177
 
256
- Editor border colors indicating thinking level (visual hierarchy from subtle to prominent):
257
-
258
- | Token | Purpose |
259
- |-------|---------|
260
- | `thinkingOff` | Thinking off |
261
- | `thinkingMinimal` | Minimal thinking |
262
- | `thinkingLow` | Low thinking |
263
- | `thinkingMedium` | Medium thinking |
264
- | `thinkingHigh` | High thinking |
265
- | `thinkingXhigh` | Extra high thinking |
178
+ Moved to [Theme reference](/themes/reference#thinking-level-borders-6-colors).
266
179
 
267
180
  ### Bash Mode (1 color)
268
181
 
269
- | Token | Purpose |
270
- |-------|---------|
271
- | `bashMode` | Editor border in bash mode (`!` prefix) |
182
+ Moved to [Theme reference](/themes/reference#bash-mode-1-color).
272
183
 
273
184
  ### HTML Export (optional)
274
185
 
275
- The `export` section controls colors for `/export` HTML output. If omitted, colors are derived from `userMessageBg`.
276
-
277
- ```json
278
- {
279
- "export": {
280
- "pageBg": "#18181e",
281
- "cardBg": "#1e1e24",
282
- "infoBg": "#3c3728"
283
- }
284
- }
285
- ```
186
+ Moved to [Theme reference](/themes/reference#html-export-optional).
286
187
 
287
188
  ## Color Values
288
189
 
289
- Four formats are supported:
290
-
291
- | Format | Example | Description |
292
- |--------|---------|-------------|
293
- | Hex | `"#ff0000"` | 6-digit hex RGB |
294
- | 256-color | `39` | xterm 256-color palette index (0-255) |
295
- | Variable | `"primary"` | Reference to a `vars` entry |
296
- | Default | `""` | Terminal's default color |
190
+ Moved to [Theme reference](/themes/reference#color-values).
297
191
 
298
192
  ### 256-Color Palette
299
193
 
300
- - `0-15`: Basic ANSI colors (terminal-dependent)
301
- - `16-231`: 6×6×6 RGB cube (`16 + 36×R + 6×G + B` where R,G,B are 0-5)
302
- - `232-255`: Grayscale ramp
194
+ Moved to [Theme reference](/themes/reference#256-color-palette).
303
195
 
304
196
  ### Terminal Compatibility
305
197
 
306
- Atomic uses 24-bit RGB colors. Most modern terminals support this (iTerm2, Kitty, WezTerm, Windows Terminal, VS Code). For older terminals with only 256-color support, Atomic falls back to the nearest approximation.
307
-
308
- Check truecolor support:
309
-
310
- ```bash
311
- echo $COLORTERM # Should output "truecolor" or "24bit"
312
- ```
198
+ Moved to [Theme reference](/themes/reference#terminal-compatibility).
313
199
 
314
200
  ## Tips
315
201
 
package/docs/tmux.md CHANGED
@@ -1,3 +1,8 @@
1
+ ---
2
+ title: "tmux"
3
+ description: "Run Atomic inside tmux, including image paste and key forwarding."
4
+ ---
5
+
1
6
  # tmux Setup
2
7
 
3
8
  Atomic works inside tmux, but tmux strips modifier information from certain keys by default. Without configuration, `SHIFT+Enter` and `CTRL+Enter` are usually indistinguishable from plain `Enter`.
@@ -1,3 +1,8 @@
1
+ ---
2
+ title: "edit"
3
+ description: "The edit tool's hashline patch format, operations, and failure modes."
4
+ ---
5
+
1
6
  # `edit`
2
7
 
3
8
  > Applies source edits to existing files with Atomic's hashline patch language, supplied as one `input` string.
package/docs/tools.md CHANGED
@@ -1,3 +1,8 @@
1
+ ---
2
+ title: "Built-in tools"
3
+ description: "The tools Atomic gives the model by default."
4
+ ---
5
+
1
6
  # Built-in tools
2
7
 
3
8
  Atomic enables these coding tools in normal sessions by default: `read`, `write`, `edit`, `bash`, `kill`, `find`, and `search`.