@bastani/atomic 0.8.27 → 0.8.28-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +75 -0
- package/README.md +120 -118
- package/dist/builtin/intercom/package.json +1 -1
- package/dist/builtin/mcp/package.json +2 -2
- package/dist/builtin/subagents/package.json +1 -1
- package/dist/builtin/web-access/package.json +1 -1
- package/dist/builtin/workflows/CHANGELOG.md +22 -0
- package/dist/builtin/workflows/README.md +11 -9
- package/dist/builtin/workflows/builtin/open-claude-design.ts +150 -13
- package/dist/builtin/workflows/package.json +1 -1
- package/dist/builtin/workflows/src/authoring.d.ts +5 -2
- package/dist/builtin/workflows/src/extension/background-ui-adapter.ts +3 -1
- package/dist/builtin/workflows/src/extension/hil-answer-notifications.ts +17 -25
- package/dist/builtin/workflows/src/extension/index.ts +133 -18
- package/dist/builtin/workflows/src/extension/render-result.ts +22 -2
- package/dist/builtin/workflows/src/extension/workflow-schema.ts +3 -3
- package/dist/builtin/workflows/src/runs/foreground/executor.ts +210 -16
- package/dist/builtin/workflows/src/sdk-surface.ts +1 -1
- package/dist/builtin/workflows/src/shared/authoring-contract.d.ts +42 -5
- package/dist/builtin/workflows/src/shared/store-types.ts +8 -2
- package/dist/builtin/workflows/src/shared/store.ts +51 -0
- package/dist/builtin/workflows/src/shared/types.ts +14 -4
- package/dist/builtin/workflows/src/tui/chat-surface.ts +32 -33
- package/dist/builtin/workflows/src/tui/graph-view.ts +4 -1
- package/dist/builtin/workflows/src/tui/prompt-card.ts +6 -0
- package/dist/builtin/workflows/src/tui/run-detail.ts +11 -4
- package/dist/builtin/workflows/src/tui/stage-chat-view.ts +11 -1
- package/dist/builtin/workflows/src/tui/status-list.ts +32 -2
- package/dist/cli/args.d.ts +4 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +35 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/project-trust.d.ts +10 -0
- package/dist/cli/project-trust.d.ts.map +1 -0
- package/dist/cli/project-trust.js +36 -0
- package/dist/cli/project-trust.js.map +1 -0
- package/dist/cli/startup-ui.d.ts +7 -0
- package/dist/cli/startup-ui.d.ts.map +1 -0
- package/dist/cli/startup-ui.js +57 -0
- package/dist/cli/startup-ui.js.map +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +24 -3
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session-runtime.d.ts +3 -1
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +1 -0
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session-services.d.ts +2 -1
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +2 -2
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session.d.ts +9 -5
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +205 -51
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-guidance.d.ts +10 -1
- package/dist/core/auth-guidance.d.ts.map +1 -1
- package/dist/core/auth-guidance.js +26 -1
- package/dist/core/auth-guidance.js.map +1 -1
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +4 -3
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/compaction/branch-summarization.d.ts +5 -3
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
- package/dist/core/compaction/branch-summarization.js +16 -10
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts +4 -84
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +20 -502
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/compaction/context-compaction.d.ts.map +1 -1
- package/dist/core/compaction/context-compaction.js +39 -82
- package/dist/core/compaction/context-compaction.js.map +1 -1
- package/dist/core/compaction/index.d.ts +1 -1
- package/dist/core/compaction/index.d.ts.map +1 -1
- package/dist/core/compaction/index.js +1 -1
- package/dist/core/compaction/index.js.map +1 -1
- package/dist/core/compaction/utils.d.ts +1 -1
- package/dist/core/compaction/utils.d.ts.map +1 -1
- package/dist/core/compaction/utils.js +1 -1
- package/dist/core/compaction/utils.js.map +1 -1
- package/dist/core/experimental.d.ts +2 -0
- package/dist/core/experimental.d.ts.map +1 -0
- package/dist/core/experimental.js +5 -0
- package/dist/core/experimental.js.map +1 -0
- package/dist/core/export-html/template.js +19 -6
- package/dist/core/extensions/index.d.ts +1 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader.d.ts +1 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +6 -4
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +11 -4
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +53 -3
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +44 -12
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/footer-data-provider.d.ts +2 -0
- package/dist/core/footer-data-provider.d.ts.map +1 -1
- package/dist/core/footer-data-provider.js +27 -1
- package/dist/core/footer-data-provider.js.map +1 -1
- package/dist/core/index.d.ts +2 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/messages.d.ts +1 -11
- package/dist/core/messages.d.ts.map +1 -1
- package/dist/core/messages.js +10 -25
- package/dist/core/messages.js.map +1 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +64 -7
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +1 -0
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/output-guard.d.ts +1 -0
- package/dist/core/output-guard.d.ts.map +1 -1
- package/dist/core/output-guard.js +52 -22
- package/dist/core/output-guard.js.map +1 -1
- package/dist/core/package-manager.d.ts +1 -0
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +20 -8
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/project-trust.d.ts +15 -0
- package/dist/core/project-trust.d.ts.map +1 -0
- package/dist/core/project-trust.js +58 -0
- package/dist/core/project-trust.js.map +1 -0
- package/dist/core/prompt-templates.d.ts +5 -4
- package/dist/core/prompt-templates.d.ts.map +1 -1
- package/dist/core/prompt-templates.js +30 -29
- package/dist/core/prompt-templates.js.map +1 -1
- package/dist/core/provider-attribution.d.ts +4 -0
- package/dist/core/provider-attribution.d.ts.map +1 -0
- package/dist/core/provider-attribution.js +73 -0
- package/dist/core/provider-attribution.js.map +1 -0
- package/dist/core/provider-display-names.d.ts.map +1 -1
- package/dist/core/provider-display-names.js +3 -0
- package/dist/core/provider-display-names.js.map +1 -1
- package/dist/core/resolve-config-value.d.ts +9 -1
- package/dist/core/resolve-config-value.d.ts.map +1 -1
- package/dist/core/resolve-config-value.js +134 -11
- package/dist/core/resolve-config-value.js.map +1 -1
- package/dist/core/resource-loader.d.ts +12 -2
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +108 -18
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +12 -42
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager.d.ts +11 -15
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +111 -111
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-manager.d.ts +15 -5
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +69 -14
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +1 -0
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +0 -3
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +2 -1
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +7 -10
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/find.d.ts.map +1 -1
- package/dist/core/tools/find.js +1 -1
- package/dist/core/tools/find.js.map +1 -1
- package/dist/core/tools/grep.d.ts.map +1 -1
- package/dist/core/tools/grep.js +1 -1
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/ls.d.ts.map +1 -1
- package/dist/core/tools/ls.js +1 -1
- package/dist/core/tools/ls.js.map +1 -1
- package/dist/core/tools/oversized-tool-result.d.ts +53 -0
- package/dist/core/tools/oversized-tool-result.d.ts.map +1 -0
- package/dist/core/tools/oversized-tool-result.js +206 -0
- package/dist/core/tools/oversized-tool-result.js.map +1 -0
- package/dist/core/tools/read.d.ts +12 -0
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +99 -34
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/render-utils.d.ts +6 -0
- package/dist/core/tools/render-utils.d.ts.map +1 -1
- package/dist/core/tools/render-utils.js +17 -1
- package/dist/core/tools/render-utils.js.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts +6 -0
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.js +2 -0
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
- package/dist/core/tools/tool-limits.d.ts +25 -0
- package/dist/core/tools/tool-limits.d.ts.map +1 -0
- package/dist/core/tools/tool-limits.js +25 -0
- package/dist/core/tools/tool-limits.js.map +1 -0
- package/dist/core/tools/write.d.ts.map +1 -1
- package/dist/core/tools/write.js +1 -1
- package/dist/core/tools/write.js.map +1 -1
- package/dist/core/trust-manager.d.ts +31 -0
- package/dist/core/trust-manager.d.ts.map +1 -0
- package/dist/core/trust-manager.js +196 -0
- package/dist/core/trust-manager.js.map +1 -0
- package/dist/index.d.ts +12 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -4
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +142 -30
- package/dist/main.js.map +1 -1
- package/dist/migrations.d.ts +3 -1
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +325 -7
- package/dist/migrations.js.map +1 -1
- package/dist/modes/index.d.ts +1 -1
- package/dist/modes/index.d.ts.map +1 -1
- package/dist/modes/index.js.map +1 -1
- package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/bash-execution.js +2 -2
- package/dist/modes/interactive/components/bash-execution.js.map +1 -1
- package/dist/modes/interactive/components/chat-message-renderer.d.ts +1 -5
- package/dist/modes/interactive/components/chat-message-renderer.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-message-renderer.js +5 -9
- package/dist/modes/interactive/components/chat-message-renderer.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host.js +0 -3
- package/dist/modes/interactive/components/chat-session-host.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +6 -0
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/index.d.ts +1 -1
- package/dist/modes/interactive/components/index.d.ts.map +1 -1
- package/dist/modes/interactive/components/index.js +1 -1
- package/dist/modes/interactive/components/index.js.map +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/dist/modes/interactive/components/login-dialog.js +9 -16
- package/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +3 -1
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +20 -0
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +22 -0
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/components/trust-selector.d.ts +23 -0
- package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/trust-selector.js +85 -0
- package/dist/modes/interactive/components/trust-selector.js.map +1 -0
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message.js +1 -1
- package/dist/modes/interactive/components/user-message.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +9 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +134 -36
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +10 -0
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +1 -0
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts +4 -1
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +52 -8
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +24 -5
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +1 -1
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/package-manager-cli.d.ts +6 -2
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +104 -10
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/utils/changelog.d.ts +1 -0
- package/dist/utils/changelog.d.ts.map +1 -1
- package/dist/utils/changelog.js +72 -0
- package/dist/utils/changelog.js.map +1 -1
- package/dist/utils/deprecation.d.ts +4 -0
- package/dist/utils/deprecation.d.ts.map +1 -0
- package/dist/utils/deprecation.js +13 -0
- package/dist/utils/deprecation.js.map +1 -0
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/git.js +54 -22
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/json.d.ts +3 -0
- package/dist/utils/json.d.ts.map +1 -0
- package/dist/utils/json.js +7 -0
- package/dist/utils/json.js.map +1 -0
- package/dist/utils/open-browser.d.ts +9 -0
- package/dist/utils/open-browser.d.ts.map +1 -0
- package/dist/utils/open-browser.js +22 -0
- package/dist/utils/open-browser.js.map +1 -0
- package/docs/compaction.md +210 -181
- package/docs/containerization.md +111 -0
- package/docs/custom-provider.md +9 -9
- package/docs/development.md +1 -1
- package/docs/docs.json +2 -0
- package/docs/extensions.md +71 -24
- package/docs/index.md +2 -0
- package/docs/json.md +3 -4
- package/docs/models.md +10 -10
- package/docs/packages.md +1 -1
- package/docs/prompt-templates.md +9 -2
- package/docs/providers.md +18 -5
- package/docs/quickstart.md +1 -0
- package/docs/rpc.md +3 -2
- package/docs/sdk.md +5 -0
- package/docs/security.md +56 -0
- package/docs/session-format.md +14 -23
- package/docs/sessions.md +11 -1
- package/docs/settings.md +23 -9
- package/docs/skills.md +1 -1
- package/docs/terminal-setup.md +44 -2
- package/docs/themes.md +1 -1
- package/docs/tmux.md +4 -2
- package/docs/tui.md +14 -5
- package/docs/usage.md +17 -3
- package/docs/workflows.md +11 -9
- package/examples/README.md +1 -1
- package/examples/extensions/README.md +9 -6
- package/examples/extensions/bash-spawn-hook.ts +1 -1
- package/examples/extensions/built-in-tool-renderer.ts +1 -1
- package/examples/extensions/claude-rules.ts +1 -1
- package/examples/extensions/commands.ts +1 -1
- package/examples/extensions/custom-compaction.ts +43 -106
- package/examples/extensions/custom-header.ts +1 -1
- package/examples/extensions/custom-provider-anthropic/index.ts +3 -3
- package/examples/extensions/custom-provider-anthropic/package-lock.json +4 -4
- package/examples/extensions/custom-provider-anthropic/package.json +6 -6
- package/examples/extensions/custom-provider-gitlab-duo/index.ts +55 -4
- package/examples/extensions/custom-provider-gitlab-duo/package.json +3 -3
- package/examples/extensions/doom-overlay/README.md +1 -1
- package/examples/extensions/doom-overlay/index.ts +2 -2
- package/examples/extensions/git-merge-and-resolve.ts +115 -0
- package/examples/extensions/gondolin/index.ts +523 -0
- package/examples/extensions/gondolin/package-lock.json +185 -0
- package/examples/extensions/gondolin/package.json +19 -0
- package/examples/extensions/handoff.ts +7 -45
- package/examples/extensions/hidden-thinking-label.ts +1 -1
- package/examples/extensions/inline-bash.ts +2 -2
- package/examples/extensions/input-transform-streaming.ts +39 -0
- package/examples/extensions/input-transform.ts +3 -3
- package/examples/extensions/interactive-shell.ts +2 -2
- package/examples/extensions/mac-system-theme.ts +2 -2
- package/examples/extensions/minimal-mode.ts +1 -1
- package/examples/extensions/modal-editor.ts +1 -1
- package/examples/extensions/model-status.ts +1 -1
- package/examples/extensions/overlay-qa-tests.ts +198 -179
- package/examples/extensions/overlay-test.ts +1 -1
- package/examples/extensions/pirate.ts +1 -1
- package/examples/extensions/preset.ts +14 -12
- package/examples/extensions/project-trust.ts +64 -0
- package/examples/extensions/prompt-customizer.ts +1 -1
- package/examples/extensions/qna.ts +1 -1
- package/examples/extensions/question.ts +1 -1
- package/examples/extensions/questionnaire.ts +1 -1
- package/examples/extensions/rainbow-editor.ts +1 -1
- package/examples/extensions/sandbox/index.ts +16 -14
- package/examples/extensions/sandbox/package-lock.json +90 -90
- package/examples/extensions/sandbox/package.json +17 -17
- package/examples/extensions/snake.ts +1 -1
- package/examples/extensions/space-invaders.ts +1 -1
- package/examples/extensions/ssh.ts +2 -2
- package/examples/extensions/subagent/README.md +13 -13
- package/examples/extensions/subagent/agents.ts +4 -2
- package/examples/extensions/subagent/index.ts +6 -6
- package/examples/extensions/summarize.ts +1 -1
- package/examples/extensions/tic-tac-toe.ts +1 -1
- package/examples/extensions/titlebar-spinner.ts +1 -1
- package/examples/extensions/todo.ts +1 -1
- package/examples/extensions/tool-override.ts +1 -1
- package/examples/extensions/tools.ts +6 -1
- package/examples/extensions/trigger-compact.ts +5 -4
- package/examples/extensions/with-deps/package-lock.json +4 -4
- package/examples/extensions/with-deps/package.json +7 -7
- package/examples/extensions/working-indicator.ts +4 -4
- package/examples/extensions/working-message-test.ts +1 -1
- package/examples/sdk/01-minimal.ts +1 -1
- package/examples/sdk/03-custom-prompt.ts +1 -1
- package/examples/sdk/04-skills.ts +1 -1
- package/examples/sdk/06-extensions.ts +2 -2
- package/examples/sdk/08-prompt-templates.ts +1 -1
- package/examples/sdk/09-api-keys-and-oauth.ts +2 -2
- package/examples/sdk/README.md +2 -2
- package/package.json +8 -8
- package/dist/modes/interactive/components/compaction-summary-message.d.ts +0 -16
- package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +0 -1
- package/dist/modes/interactive/components/compaction-summary-message.js +0 -43
- package/dist/modes/interactive/components/compaction-summary-message.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,12 +2,87 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [0.8.28-alpha.2] - 2026-06-10
|
|
6
|
+
|
|
7
|
+
### Security
|
|
8
|
+
|
|
9
|
+
- Bumped the transitive `shell-quote` dependency from `1.8.3` to `1.8.4` in the `examples/extensions/sandbox` lockfile, resolving the critical advisory [GHSA-w7jw-789q-3m8p](https://github.com/advisories/GHSA-w7jw-789q-3m8p) (`shell-quote` `quote()` does not escape newlines in object `.op` values). The bump stays within `@anthropic-ai/sandbox-runtime`'s existing `^1.8.3` range.
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- Added upstream pi 0.76.0-0.79.1 coding-agent compatibility exports for package asset path helpers (`getPackageDir`, bundled asset/documentation/example paths), CLI argument parsing (`Args`, `parseArgs`), `SettingsManagerCreateOptions`, image conversion (`convertToPng`), and RPC extension UI request/response types so extensions can reference the same public APIs as upstream while retaining Atomic package identity.
|
|
14
|
+
- Added the shared JSON comment/trailing-comma stripping utility used by model configuration migrations, aligning Atomic with upstream's safer config-value migration path.
|
|
15
|
+
- Added the upstream project-trust selector UI (`/trust` slash command and `TrustSelectorComponent`) so saved project-trust decisions can be reviewed and changed inside an interactive session, plus the corresponding upstream component test.
|
|
16
|
+
- Added the upstream `project-trust`, `git-merge-and-resolve`, and `input-transform-streaming` example extensions, adapted to Atomic package identity and config directory conventions.
|
|
17
|
+
- Added upstream `docs/security.md` and `docs/containerization.md`, rebranded to Atomic naming, config directories, environment variables, and package identity, and wired them into the docs navigation.
|
|
18
|
+
- Added the upstream Gondolin tool-routing example extension under `examples/extensions/gondolin`, rebranded for Atomic usage/imports so the new containerization guide points at a shipped example, and kept host shell environment secrets out of guest VM tool execution.
|
|
19
|
+
- Added shared `warnDeprecation` and `openBrowser` utilities from upstream and routed `registerProvider` legacy env-var migration and OAuth browser-launch through them.
|
|
20
|
+
- Added upstream regression coverage for experimental feature gating, config-value env-var syntax migration (`auth.json`/`models.json` and `registerProvider`), the ported example extensions, startup input buffering, resume-command formatting, changelog link normalization, RPC child-process exits, SDK stream options, read-only session-id handling, startup session naming, exclude-tools behavior, signal shutdown cleanup, and extension OAuth prompt input stability.
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
|
|
24
|
+
- Bumped the bundled upstream pi libraries `@earendil-works/pi-agent-core`, `@earendil-works/pi-ai`, and `@earendil-works/pi-tui` from `^0.78.1` to `^0.79.1`, bringing in upstream AI/model and TUI fixes such as Claude Fable 5 and Azure metadata updates, GPT-5 token/context metadata fixes, provider thinking-payload compatibility updates, autocomplete/CJK prompt rendering fixes, and keyboard-protocol fallback improvements.
|
|
25
|
+
- Ported upstream prompt-template argument default handling so programmatic callers can omit explicit prompt paths and default-inclusion options while existing Atomic resource-loading behavior remains explicit and unchanged.
|
|
26
|
+
- Added `${N:-default}` positional default support in prompt templates, matching upstream slash-template substitution behavior without recursively expanding argument/default values.
|
|
27
|
+
|
|
28
|
+
### Fixed
|
|
29
|
+
|
|
30
|
+
- Fixed oversized tool-call results flooding model context by persisting large results to disk instead of returning them inline. Following the Claude Code tool-result storage convention, when a tool result's text content exceeds the system-wide cap of 50,000 characters (`DEFAULT_MAX_RESULT_SIZE_CHARS`) or a lower per-tool character cap, the full output is written to a session-scoped file (`<sessionDir>/tool-results/<toolCallId>.txt`) and the model receives a compact `<persisted-output>` message containing the file path plus a 2KB preview of the head of the output instead of the full payload. Tools can declare `maxResultSizeChars: Infinity` to opt out when they already self-bound model-visible output and provide their own full-output file; the built-in `bash` and `read` tools use that opt-out. Writes use the `wx` flag so repeated/replayed calls reuse the existing file (idempotent), size labels are reported in UTF-8 bytes while the threshold remains character-based, and persistence degrades gracefully — image results and any result that cannot be written to disk are returned unchanged. Tool `details` metadata is passed through untouched ([#1322](https://github.com/bastani-inc/atomic/issues/1322)).
|
|
31
|
+
- Fixed the Read tool to block text file-read results above 50,000 characters (matching the mehmoodosman/claude-code `DEFAULT_MAX_RESULT_SIZE_CHARS` limit) and return incremental-read guidance, including byte-slice guidance for oversized single-line selections, instead of inserting oversized file contents into model context ([#1323](https://github.com/bastani-inc/atomic/issues/1323)).
|
|
32
|
+
- Hardened the prompt-template argument substitution against polynomial-time regex backtracking (ReDoS) by length-bounding the `${N:-default}` default-value capture when scanning template content read from disk (an Atomic divergence from upstream; the bound far exceeds any realistic default value).
|
|
33
|
+
- Fixed the containerization guide to link the Gondolin example extension via an absolute repository URL instead of a relative `../examples/...` path so docs link validation passes.
|
|
34
|
+
- Fixed custom OpenAI Responses model validation to accept the upstream `supportsDeveloperRole` compatibility flag in `models.json`.
|
|
35
|
+
- Fixed provider auth-status reporting for explicit `$ENV_VAR` config values so missing environment variables are reported as unconfigured instead of as literal `models.json` API keys.
|
|
36
|
+
- Rebranded provider attribution headers for OpenRouter and NVIDIA NIM so Atomic sends Atomic identity rather than upstream Pi identity when install telemetry is enabled, matched OpenRouter-compatible custom endpoints by exact hostname rather than substring, and rebranded the Gondolin VM session label.
|
|
37
|
+
- Fixed config-value migrations to cover legacy `~/.pi/agent` config roots that Atomic still reads as compatibility fallbacks while preserving uppercase literal credentials when no matching environment variable exists and preserving `models.json` JSONC comments/formatting while rewriting only the intended `apiKey`/header fields.
|
|
38
|
+
- Fixed the initial `--resume` session picker so its all-sessions pane honors a custom `--session-dir`.
|
|
39
|
+
- Fixed interactive startup input handling so prompts submitted before the main input loop is installed are queued instead of dropped.
|
|
40
|
+
- Fixed RPC client requests to reject promptly when the child agent process exits or its stdio fails, and completed the RPC-mode output/backpressure and `excludeFromContext` bash-command port so high-volume JSONL output is flushed before continuation/shutdown.
|
|
41
|
+
- Fixed SDK provider stream options so HTTP idle timeouts and WebSocket connect timeouts from settings are forwarded to provider streams, while preserving per-request overrides.
|
|
42
|
+
- Fixed self-update command generation to bypass npm/pnpm/Bun minimum-release-age delays when reinstalling Atomic globally and documented the newly ported session, tool exclusion, and project-trust CLI flags in public usage docs/README.
|
|
43
|
+
- Fixed auth storage writes to consistently create/update `auth.json` with `0600` file mode.
|
|
44
|
+
- Fixed WSL repositories on Windows-mounted paths to poll Git `HEAD` changes so the footer branch display updates reliably.
|
|
45
|
+
- Fixed branch summarization to use the session stream function for provider request behavior parity and to count image content during token estimation.
|
|
46
|
+
- Fixed footer cache-hit-rate display, settings selector default project-trust editing, tool self-render image rendering, and collapsed tool-output hint styling.
|
|
47
|
+
- Fixed extension command contexts to expose live base system-prompt options, hid `streamingBehavior` from idle input handlers, and continued agent turns for follow-ups queued during `agent_end` extension handlers.
|
|
48
|
+
- Fixed signal-triggered interactive shutdown ordering so extension `session_shutdown` cleanup runs before terminal restore writes, and interactive quits print a resume command for persisted sessions.
|
|
49
|
+
- Fixed OAuth login dialog prompt/manual input rendering so submitted values remain stable after later prompts reuse the input component.
|
|
50
|
+
- Fixed changelog link normalization to produce Atomic repository/tag-pinned links from local package links and legacy pi-mono repository URLs using Atomic's unprefixed release tags, and wired normalization into startup and `/changelog` display output.
|
|
51
|
+
- Fixed custom model/provider/extension docs and API comments to use explicit `$ENV_VAR` config-value syntax now that bare uppercase strings are treated as literals, clarified that legacy uppercase env-like auth values are migrated only when the referenced environment variable is present during migration, restored real provider authentication environment variable names such as `ANTHROPIC_API_KEY`/`AZURE_OPENAI_API_VERSION`, corrected README/RPC/session-format/SDK/example path branding to use `atomic`, `ATOMIC_*`, and `.atomic` as primary with `PI_*`/`.pi` labeled legacy, removed the nonexistent `ATOMIC_CACHE_RETENTION` README entry in favor of the real provider-specific `PI_CACHE_RETENTION` knob, fixed README Atomic package anchors and package CLI examples, updated preset/sandbox/subagent examples to load project config from `.atomic` before legacy `.pi` and only after `ctx.isProjectTrusted()` approves project-local resources where applicable, documented context files as project-trust inputs in the security guide, documented the new `project_trust` extension event, `ctx.isProjectTrusted()`, and shipped project-trust/Gondolin/streaming-input examples, and updated README philosophy/example comments so Atomic's bundled workflows, subagents, MCP, web access, intercom, and todo capabilities are documented as shipped first-party features rather than absent upstream-Pi capabilities.
|
|
52
|
+
- Fixed extension-triggered RPC session reloads to preserve the current steering and follow-up queue modes across reload.
|
|
53
|
+
- Fixed plain metadata commands (`--version`, `--help`, and `--list-models`) to keep their output on stdout for scripts/completions, while package auto-install/startup chatter is kept off stdout and explicit non-interactive modes such as `-p --help` and `--mode json --help` continue routing all output away from stdout.
|
|
54
|
+
- Fixed the resume session picker so all-session listing respects a custom `--session-dir` instead of falling back to the default global session directory.
|
|
55
|
+
- Ported upstream tool path rendering support for edit tool output, including terminal hyperlink support when available, and accompanying upstream regression coverage for argument parsing, extension input events, session file operations, syntax highlighting, and related helpers.
|
|
56
|
+
- Fixed the ported coding-agent package tests by adding upstream CLI parsing and runtime wiring for named sessions, exact session ids, project trust approval overrides, and tool exclusion; extension runner context mode/project-trust APIs and input streaming behavior; prompt-guideline exposure in tool metadata; safer export-HTML markdown URL sanitization; Ant Ling default model selection; syntax highlight mappings for regex/diff scopes; custom session-id validation and propagation; cwd-scoped flat session listing; and streaming session-file reads for very large transcripts.
|
|
57
|
+
- Ported the upstream project-trust store and resolver foundation so project trust decisions can be remembered, `--approve`/`--no-approve` affects runtime trust state, extension `ctx.isProjectTrusted()` reflects the active decision instead of always reporting trusted, startup settings and project-local migrations are gated before project config is read, first-run interactive or extension project-trust approval immediately reruns trusted project migrations for the current startup, `defaultProjectTrust: "always"` is honored before startup project migrations/session lookup, untrusted sessions bootstrap without loading project-local extensions/resources, project-setting writes are refused while untrusted, trust-store lock acquisition retries transient contention, untrusted sessions skip project-local context/system prompt discovery, context-only projects with `AGENTS.md`/`CLAUDE.md` are trust-gated instead of implicitly trusted, reload-created project config can persist implicit startup trust for future sessions, `/trust` saves decisions through the active runtime agent directory, legacy `.pi` project config roots are gated behind trust alongside `.atomic`, user-global `~/.agents/skills` no longer makes every child project require project approval, read-only help/model-list commands avoid interactive trust prompts, session-only trust decisions persist across runtime reloads in the current process, stored trust decisions can still be reviewed by pre-trust extension handlers, pre-trust extensions are reused for the final extension set instead of initialized twice, interactive session switches use the active TUI context for trust prompts, package/config commands now resolve project trust before reading or writing project package settings, and manager-level project package install/remove operations refuse to touch project package storage while untrusted.
|
|
58
|
+
## [0.8.28-alpha.1] - 2026-06-09
|
|
59
|
+
|
|
60
|
+
### Changed
|
|
61
|
+
|
|
62
|
+
- Changed Atomic compaction to be verbatim-only across manual `/compact`, automatic threshold/overflow compaction, SDK/RPC compaction, and extension-triggered compaction. All compaction now records validated `context_compaction` deletion targets and rebuilds active context with retained transcript content verbatim and unchanged. Retained file paths, exact commands, error strings, and line numbers are never paraphrased or rewritten.
|
|
63
|
+
- Changed compaction extension hooks (`session_before_compact`, `session_compact`) to receive verbatim context-compaction preparations/results and allow cancellation or locally validated deletion requests instead of custom generated summaries. The before-compact hook now yields `ContextCompactionPreparation` and accepts `{ cancel: true }` or `{ deletionRequest }` returns; the after-compact hook now receives `ContextCompactionResult` and `contextCompactionEntry`.
|
|
64
|
+
- Changed the verbatim compaction critical-overflow recovery prompt to evict in an explicit priority order when context still exceeds the token budget after compaction: removable reasoning traces are evicted first, then removable user/custom/summary context. Existing safety/retention rules (recent entries, unresolved errors, failed commands, and at least one task-bearing entry) are preserved ([#1308](https://github.com/bastani-inc/atomic/issues/1308)).
|
|
65
|
+
|
|
66
|
+
### Fixed
|
|
67
|
+
|
|
68
|
+
- Fixed `AgentSession.prompt` surfacing the confusing `No API key found for undefined` error when a model never resolved to a real provider (for example an unknown/unresolved model id reaching the prompt path as a bare string). The prompt path now fails fast with a clear `Unknown model: "<id>" did not resolve to an available provider` message, and `No API key found` guidance no longer renders a literal `undefined` provider.
|
|
69
|
+
|
|
70
|
+
### Removed
|
|
71
|
+
|
|
72
|
+
- Removed the legacy summary-compaction runtime path, summary prompts, `CompactionEntry` active-context injection, `CompactionSummaryMessage` active message type, custom compaction instructions (`CompactOptions.customInstructions`, RPC `compact.customInstructions`, `/compact [instructions]`), `compaction.keepRecentTokens` setting, summary-compaction public exports (`CompactionResult`, `CompactionPreparation`, `appendCompaction()`, `prepareCompaction()`, `generateSummary()`, summary `compact()`), and summary-compaction docs and examples. Historical `type:"compaction"` JSONL lines on disk are inert and are not injected into active LLM context.
|
|
73
|
+
|
|
5
74
|
## [0.8.27] - 2026-06-08
|
|
6
75
|
|
|
7
76
|
### Fixed
|
|
8
77
|
|
|
9
78
|
- Fixed `/compact` and auto-compaction regressions by removing the native `better-sqlite3` dependency from transcript-bound deletion tools and preserving the currently selected reasoning level for the compaction planner ([#1310](https://github.com/bastani-inc/atomic/issues/1310)).
|
|
10
79
|
|
|
80
|
+
## [0.8.27-alpha.1] - 2026-06-08
|
|
81
|
+
|
|
82
|
+
### Fixed
|
|
83
|
+
|
|
84
|
+
- Fixed `/compact` and auto-compaction regressions by removing the native `better-sqlite3` dependency from transcript-bound deletion tools and preserving the currently selected reasoning level for the compaction planner ([#1310](https://github.com/bastani-inc/atomic/issues/1310)).
|
|
85
|
+
|
|
11
86
|
## [0.8.26] - 2026-06-08
|
|
12
87
|
|
|
13
88
|
### Added
|
package/README.md
CHANGED
|
@@ -13,27 +13,17 @@
|
|
|
13
13
|
|
|
14
14
|
---
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
Atomic is a minimal terminal coding harness. Adapt Atomic to your workflows, not the other way around, without having to fork and modify Atomic internals. Extend it with TypeScript [Extensions](#extensions), [Skills](#skills), [Prompt Templates](#prompt-templates), and [Themes](#themes). Put your extensions, skills, prompt templates, and themes in [Atomic Packages](#atomic-packages) and share them with others via npm or git.
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
Atomic ships with powerful defaults plus first-party bundled extensions for workflows, subagents, MCP, web access, and intercom. You can still adapt or replace any workflow by writing extensions, skills, prompt templates, themes, or Atomic packages that match how you work.
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
Atomic runs in four modes: interactive, print or JSON, RPC for process integration, and an SDK for embedding in your own apps. See [openclaw/openclaw](https://github.com/openclaw/openclaw) for a real-world SDK integration.
|
|
21
21
|
|
|
22
22
|
## Share your OSS coding agent sessions
|
|
23
23
|
|
|
24
|
-
If you use
|
|
24
|
+
If you use Atomic for open source work, consider sharing coding-agent sessions using an Atomic-owned workflow or your team's dataset process.
|
|
25
25
|
|
|
26
|
-
Public OSS session data
|
|
27
|
-
|
|
28
|
-
For the full explanation, see [this post on X](https://x.com/badlogicgames/status/2037811643774652911).
|
|
29
|
-
|
|
30
|
-
To publish sessions, use [`badlogic/pi-share-hf`](https://github.com/badlogic/pi-share-hf). Read its README.md for setup instructions. All you need is a Hugging Face account, the Hugging Face CLI, and `pi-share-hf`.
|
|
31
|
-
|
|
32
|
-
You can also watch [this video](https://x.com/badlogicgames/status/2041151967695634619), where I show how I publish my `pi-mono` sessions.
|
|
33
|
-
|
|
34
|
-
I regularly publish my own `pi-mono` work sessions here:
|
|
35
|
-
|
|
36
|
-
- [badlogicgames/pi-mono on Hugging Face](https://huggingface.co/datasets/badlogicgames/pi-mono)
|
|
26
|
+
Public OSS session data can help improve models, prompts, tools, and evaluations using real development workflows. Upstream Pi session-sharing resources may still be useful for historical context, but they are not the primary Atomic publication path.
|
|
37
27
|
|
|
38
28
|
## Table of Contents
|
|
39
29
|
|
|
@@ -54,7 +44,7 @@ I regularly publish my own `pi-mono` work sessions here:
|
|
|
54
44
|
- [Skills](#skills)
|
|
55
45
|
- [Extensions](#extensions)
|
|
56
46
|
- [Themes](#themes)
|
|
57
|
-
- [
|
|
47
|
+
- [Atomic Packages](#atomic-packages)
|
|
58
48
|
- [Programmatic Usage](#programmatic-usage)
|
|
59
49
|
- [Philosophy](#philosophy)
|
|
60
50
|
- [CLI Reference](#cli-reference)
|
|
@@ -64,7 +54,7 @@ I regularly publish my own `pi-mono` work sessions here:
|
|
|
64
54
|
## Quick Start
|
|
65
55
|
|
|
66
56
|
```bash
|
|
67
|
-
|
|
57
|
+
bun install -g @bastani/atomic
|
|
68
58
|
```
|
|
69
59
|
|
|
70
60
|
Or with npm:
|
|
@@ -77,17 +67,17 @@ Authenticate with an API key:
|
|
|
77
67
|
|
|
78
68
|
```bash
|
|
79
69
|
export ANTHROPIC_API_KEY=sk-ant-...
|
|
80
|
-
|
|
70
|
+
atomic
|
|
81
71
|
```
|
|
82
72
|
|
|
83
73
|
Or use your existing subscription:
|
|
84
74
|
|
|
85
75
|
```bash
|
|
86
|
-
|
|
76
|
+
atomic
|
|
87
77
|
/login # Then select provider
|
|
88
78
|
```
|
|
89
79
|
|
|
90
|
-
Then just talk to
|
|
80
|
+
Then just talk to Atomic. By default, Atomic gives the model four tools: `read`, `write`, `edit`, and `bash`. The model uses these to fulfill your requests. Add capabilities via [skills](#skills), [prompt templates](#prompt-templates), [extensions](#extensions), or [Atomic packages](#atomic-packages).
|
|
91
81
|
|
|
92
82
|
**Platform notes:** [Windows](docs/windows.md) | [Termux (Android)](docs/termux.md) | [tmux](docs/tmux.md) | [Terminal setup](docs/terminal-setup.md) | [Shell aliases](docs/shell-aliases.md)
|
|
93
83
|
|
|
@@ -95,7 +85,7 @@ Then just talk to pi. By default, pi gives the model four tools: `read`, `write`
|
|
|
95
85
|
|
|
96
86
|
## Providers & Models
|
|
97
87
|
|
|
98
|
-
For each built-in provider,
|
|
88
|
+
For each built-in provider, Atomic maintains a list of tool-capable models, updated with every release. Authenticate via subscription (`/login`) or API key, then select any model from that provider via `/model` (or CTRL+L).
|
|
99
89
|
|
|
100
90
|
**Subscriptions:**
|
|
101
91
|
- Anthropic Claude Pro/Max
|
|
@@ -133,7 +123,7 @@ For each built-in provider, pi maintains a list of tool-capable models, updated
|
|
|
133
123
|
|
|
134
124
|
See [docs/providers.md](docs/providers.md) for detailed setup instructions.
|
|
135
125
|
|
|
136
|
-
**Custom providers & models:** Add providers via `~/.pi/agent/models.json` if they speak a supported API (OpenAI, Anthropic, Google). For custom APIs or OAuth, use extensions. See [docs/models.md](docs/models.md) and [docs/custom-provider.md](docs/custom-provider.md).
|
|
126
|
+
**Custom providers & models:** Add providers via `~/.atomic/agent/models.json` (legacy `~/.pi/agent/models.json` also works) if they speak a supported API (OpenAI, Anthropic, Google). For custom APIs or OAuth, use extensions. See [docs/models.md](docs/models.md) and [docs/custom-provider.md](docs/custom-provider.md).
|
|
137
127
|
|
|
138
128
|
---
|
|
139
129
|
|
|
@@ -191,7 +181,7 @@ Type `/` in the editor to trigger commands. [Extensions](#extensions) can regist
|
|
|
191
181
|
|
|
192
182
|
### Keyboard Shortcuts
|
|
193
183
|
|
|
194
|
-
See `/hotkeys` for the full list. Customize via `~/.pi/agent/keybindings.json
|
|
184
|
+
See `/hotkeys` for the full list. Customize via `~/.atomic/agent/keybindings.json` (legacy `~/.pi/agent/keybindings.json` also works). See [docs/keybindings.md](docs/keybindings.md).
|
|
195
185
|
|
|
196
186
|
**Commonly used:**
|
|
197
187
|
|
|
@@ -216,7 +206,7 @@ Submit messages while the agent is working:
|
|
|
216
206
|
- **Escape** aborts and restores queued messages to editor
|
|
217
207
|
- **ALT+Up** retrieves queued messages back to editor
|
|
218
208
|
|
|
219
|
-
On Windows Terminal, `ALT+Enter` is fullscreen by default. Remap it in [docs/terminal-setup.md](docs/terminal-setup.md) so
|
|
209
|
+
On Windows Terminal, `ALT+Enter` is fullscreen by default. Remap it in [docs/terminal-setup.md](docs/terminal-setup.md) so Atomic can receive the follow-up shortcut.
|
|
220
210
|
|
|
221
211
|
Configure delivery in [settings](docs/settings.md): `steeringMode` and `followUpMode` can be `"one-at-a-time"` (default, waits for response) or `"all"` (delivers all queued at once). `transport` selects provider transport preference (`"sse"`, `"websocket"`, or `"auto"`) for providers that support multiple transports.
|
|
222
212
|
|
|
@@ -228,17 +218,19 @@ Sessions are stored as JSONL files with a tree structure. Each entry has an `id`
|
|
|
228
218
|
|
|
229
219
|
### Management
|
|
230
220
|
|
|
231
|
-
Sessions auto-save to `~/.
|
|
221
|
+
Sessions auto-save to `~/.atomic/agent/sessions/` organized by working directory (legacy `~/.pi/agent/sessions/` sessions remain readable for compatibility).
|
|
232
222
|
|
|
233
223
|
```bash
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
224
|
+
atomic -c # Continue most recent session
|
|
225
|
+
atomic -r # Browse and select from past sessions
|
|
226
|
+
atomic --no-session # Ephemeral mode (don't save)
|
|
227
|
+
atomic --session <path|id> # Use specific session file or partial ID
|
|
228
|
+
atomic --session-id <id> # Use/create an exact project-local session ID
|
|
229
|
+
atomic --name "Refactor" # Set the session display name
|
|
230
|
+
atomic --fork <path|id> # Fork specific session file or ID into a new session
|
|
239
231
|
```
|
|
240
232
|
|
|
241
|
-
Use `/session` in interactive mode to see the current session ID before reusing it with `--session <id
|
|
233
|
+
Use `/session` in interactive mode to see the current session ID before reusing it with `--session <id>`, `--session-id <id>`, or `--fork <id>`.
|
|
242
234
|
|
|
243
235
|
### Branching
|
|
244
236
|
|
|
@@ -274,26 +266,26 @@ Use `/settings` to modify common options, or edit JSON files directly:
|
|
|
274
266
|
|
|
275
267
|
| Location | Scope |
|
|
276
268
|
|----------|-------|
|
|
277
|
-
| `~/.
|
|
278
|
-
| `.
|
|
269
|
+
| `~/.atomic/agent/settings.json` | Global (all projects; legacy `~/.pi/agent/settings.json` also works) |
|
|
270
|
+
| `.atomic/settings.json` | Project (overrides global; legacy `.pi/settings.json` also works after trust) |
|
|
279
271
|
|
|
280
272
|
See [docs/settings.md](docs/settings.md) for all options.
|
|
281
273
|
|
|
282
274
|
### Telemetry and update checks
|
|
283
275
|
|
|
284
|
-
|
|
276
|
+
Atomic has two separate startup features:
|
|
285
277
|
|
|
286
|
-
- **Update check:**
|
|
287
|
-
- **Install/update telemetry:** after first install or a changelog-detected update, sends an anonymous version ping
|
|
278
|
+
- **Update check:** checks whether a newer Atomic version exists. Disable it with `ATOMIC_SKIP_VERSION_CHECK=1` (`PI_SKIP_VERSION_CHECK=1` remains a legacy alias). Disabling update checks only turns off this check.
|
|
279
|
+
- **Install/update telemetry:** after first install or a changelog-detected update, sends an anonymous version ping. Opt out by setting `enableInstallTelemetry` to `false` in `settings.json`, or by setting `ATOMIC_TELEMETRY=0` (`PI_TELEMETRY=0` remains a legacy alias). This does not disable update checks; Atomic may still check for the latest version unless update checks are disabled or offline mode is enabled.
|
|
288
280
|
|
|
289
|
-
Use `--offline` or `PI_OFFLINE=1` to disable all startup network operations described here, including update checks, package update checks, and install/update telemetry.
|
|
281
|
+
Use `--offline` or `ATOMIC_OFFLINE=1` (`PI_OFFLINE=1` remains a legacy alias) to disable all startup network operations described here, including update checks, package update checks, and install/update telemetry.
|
|
290
282
|
|
|
291
283
|
---
|
|
292
284
|
|
|
293
285
|
## Context Files
|
|
294
286
|
|
|
295
|
-
|
|
296
|
-
- `~/.
|
|
287
|
+
Atomic loads `AGENTS.md` (or `CLAUDE.md`) at startup from:
|
|
288
|
+
- `~/.atomic/agent/AGENTS.md` (global; legacy `~/.pi/agent/AGENTS.md` also works)
|
|
297
289
|
- Parent directories (walking up from cwd)
|
|
298
290
|
- Current directory
|
|
299
291
|
|
|
@@ -303,7 +295,7 @@ Disable context file loading with `--no-context-files` (or `-nc`).
|
|
|
303
295
|
|
|
304
296
|
### System Prompt
|
|
305
297
|
|
|
306
|
-
Replace the default system prompt with `.
|
|
298
|
+
Replace the default system prompt with `.atomic/SYSTEM.md` (project; legacy `.pi/SYSTEM.md` also works) or `~/.atomic/agent/SYSTEM.md` (global; legacy `~/.pi/agent/SYSTEM.md` also works). Append without replacing via `APPEND_SYSTEM.md`.
|
|
307
299
|
|
|
308
300
|
---
|
|
309
301
|
|
|
@@ -314,19 +306,19 @@ Replace the default system prompt with `.pi/SYSTEM.md` (project) or `~/.pi/agent
|
|
|
314
306
|
Reusable prompts as Markdown files. Type `/name` to expand.
|
|
315
307
|
|
|
316
308
|
```markdown
|
|
317
|
-
<!-- ~/.
|
|
309
|
+
<!-- ~/.atomic/agent/prompts/review.md -->
|
|
318
310
|
Review this code for bugs, security issues, and performance problems.
|
|
319
311
|
Focus on: {{focus}}
|
|
320
312
|
```
|
|
321
313
|
|
|
322
|
-
Place in `~/.
|
|
314
|
+
Place in `~/.atomic/agent/prompts/`, `.atomic/prompts/` (legacy `~/.pi/agent/prompts/` and `.pi/prompts/` also work), or an [Atomic package](#atomic-packages) to share with others. See [docs/prompt-templates.md](docs/prompt-templates.md).
|
|
323
315
|
|
|
324
316
|
### Skills
|
|
325
317
|
|
|
326
318
|
On-demand capability packages following the [Agent Skills standard](https://agentskills.io). Invoke via `/skill:name` or let the agent load them automatically.
|
|
327
319
|
|
|
328
320
|
```markdown
|
|
329
|
-
<!-- ~/.
|
|
321
|
+
<!-- ~/.atomic/agent/skills/my-skill/SKILL.md -->
|
|
330
322
|
# My Skill
|
|
331
323
|
Use this skill when the user asks about X.
|
|
332
324
|
|
|
@@ -335,11 +327,11 @@ Use this skill when the user asks about X.
|
|
|
335
327
|
2. Then that
|
|
336
328
|
```
|
|
337
329
|
|
|
338
|
-
Place in `~/.
|
|
330
|
+
Place in `~/.atomic/agent/skills/`, `~/.agents/skills/`, `.atomic/skills/` (legacy `~/.pi/agent/skills/` and `.pi/skills/` also work), or `.agents/skills/` (from `cwd` up through parent directories) or an [Atomic package](#atomic-packages) to share with others. See [docs/skills.md](docs/skills.md).
|
|
339
331
|
|
|
340
332
|
### Extensions
|
|
341
333
|
|
|
342
|
-
TypeScript modules that extend
|
|
334
|
+
TypeScript modules that extend Atomic with custom tools, commands, keyboard shortcuts, event handlers, and UI components.
|
|
343
335
|
|
|
344
336
|
```typescript
|
|
345
337
|
export default function (pi: ExtensionAPI) {
|
|
@@ -349,7 +341,7 @@ export default function (pi: ExtensionAPI) {
|
|
|
349
341
|
}
|
|
350
342
|
```
|
|
351
343
|
|
|
352
|
-
The default export can also be `async`.
|
|
344
|
+
The default export can also be `async`. Atomic waits for async extension factories before startup continues, which is useful for one-time initialization such as fetching remote model lists before calling `pi.registerProvider()`.
|
|
353
345
|
|
|
354
346
|
**What's possible:**
|
|
355
347
|
- Custom tools (or replace built-in tools entirely)
|
|
@@ -361,54 +353,54 @@ The default export can also be `async`. pi waits for async extension factories b
|
|
|
361
353
|
- Git checkpointing and auto-commit
|
|
362
354
|
- SSH and sandbox execution
|
|
363
355
|
- MCP server integration
|
|
364
|
-
- Make
|
|
356
|
+
- Make Atomic look like Claude Code
|
|
365
357
|
- Games while waiting (yes, Doom runs)
|
|
366
358
|
- ...anything you can dream up
|
|
367
359
|
|
|
368
|
-
Place in `~/.
|
|
360
|
+
Place in `~/.atomic/agent/extensions/`, `.atomic/extensions/` (legacy `~/.pi/agent/extensions/` and `.pi/extensions/` also work), or an [Atomic package](#atomic-packages) to share with others. See [docs/extensions.md](docs/extensions.md) and [examples/extensions/](examples/extensions/).
|
|
369
361
|
|
|
370
362
|
### Themes
|
|
371
363
|
|
|
372
|
-
Built-in: `dark`, `light`, `catppuccin-frappe`, `catppuccin-latte`, `catppuccin-macchiato`, and `catppuccin-mocha`. Custom themes hot-reload: modify the active theme file and
|
|
364
|
+
Built-in: `dark`, `light`, `catppuccin-frappe`, `catppuccin-latte`, `catppuccin-macchiato`, and `catppuccin-mocha`. Custom themes hot-reload: modify the active theme file and Atomic immediately applies changes.
|
|
373
365
|
|
|
374
|
-
Place in `~/.
|
|
366
|
+
Place in `~/.atomic/agent/themes/`, `.atomic/themes/` (legacy `~/.pi/agent/themes/` and `.pi/themes/` also work), or an [Atomic package](#atomic-packages) to share with others. See [docs/themes.md](docs/themes.md).
|
|
375
367
|
|
|
376
|
-
###
|
|
368
|
+
### Atomic Packages
|
|
377
369
|
|
|
378
|
-
Bundle and share extensions, skills, prompts, and themes via npm or git. Find packages on [npmjs.com](https://www.npmjs.com/search?q=keywords%
|
|
370
|
+
Bundle and share extensions, skills, prompts, and themes via npm or git. Find packages on [npmjs.com](https://www.npmjs.com/search?q=keywords%3Aatomic-package) or [Discord](https://discord.com/channels/1456806362351669492/1457744485428629628).
|
|
379
371
|
|
|
380
|
-
> **Security:**
|
|
372
|
+
> **Security:** Atomic packages run with full system access. Extensions execute arbitrary code, and skills can instruct the model to perform any action including running executables. Review source code before installing third-party packages.
|
|
381
373
|
|
|
382
374
|
```bash
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
375
|
+
atomic install npm:@foo/atomic-tools
|
|
376
|
+
atomic install npm:@foo/atomic-tools@1.2.3 # pinned version
|
|
377
|
+
atomic install git:github.com/user/repo
|
|
378
|
+
atomic install git:github.com/user/repo@v1 # tag or commit
|
|
379
|
+
atomic install git:git@github.com:user/repo
|
|
380
|
+
atomic install git:git@github.com:user/repo@v1 # tag or commit
|
|
381
|
+
atomic install https://github.com/user/repo
|
|
382
|
+
atomic install https://github.com/user/repo@v1 # tag or commit
|
|
383
|
+
atomic install ssh://git@github.com/user/repo
|
|
384
|
+
atomic install ssh://git@github.com/user/repo@v1 # tag or commit
|
|
385
|
+
atomic remove npm:@foo/atomic-tools
|
|
386
|
+
atomic uninstall npm:@foo/atomic-tools # alias for remove
|
|
387
|
+
atomic list
|
|
388
|
+
atomic update # update Atomic and packages (skips pinned packages)
|
|
389
|
+
atomic update --extensions # update packages only
|
|
390
|
+
atomic update --self # update Atomic only
|
|
391
|
+
atomic update --self --force # reinstall Atomic even if current
|
|
392
|
+
atomic update npm:@foo/atomic-tools # update one package
|
|
393
|
+
atomic config # enable/disable extensions, skills, prompts, themes
|
|
402
394
|
```
|
|
403
395
|
|
|
404
|
-
Packages install to `~/.
|
|
396
|
+
Packages install to `~/.atomic/agent/git/` (git) or global npm. Use `-l` for project-local installs (`.atomic/git/`, `.atomic/npm/`; legacy `.pi/git/` and `.pi/npm/` are compatibility fallbacks). Git packages install dependencies with `npm install --omit=dev` by default, so runtime deps must be listed under `dependencies`; when `npmCommand` is configured, git packages use plain `install` for compatibility with wrappers. If you use a Node version manager and want package installs to reuse a stable npm context, set `npmCommand` in `settings.json`, for example `["mise", "exec", "node@20", "--", "npm"]`.
|
|
405
397
|
|
|
406
398
|
Create a package by adding an app-name manifest key to `package.json` (`atomic` for this package). The legacy `pi` key is still accepted as a backwards-compatible shim:
|
|
407
399
|
|
|
408
400
|
```json
|
|
409
401
|
{
|
|
410
|
-
"name": "my-
|
|
411
|
-
"keywords": ["
|
|
402
|
+
"name": "my-atomic-package",
|
|
403
|
+
"keywords": ["atomic-package"],
|
|
412
404
|
"atomic": {
|
|
413
405
|
"extensions": ["./extensions"],
|
|
414
406
|
"skills": ["./skills"],
|
|
@@ -452,7 +444,7 @@ See [docs/sdk.md](docs/sdk.md) and [examples/sdk/](examples/sdk/).
|
|
|
452
444
|
For non-Node.js integrations, use RPC mode over stdin/stdout:
|
|
453
445
|
|
|
454
446
|
```bash
|
|
455
|
-
|
|
447
|
+
atomic --mode rpc
|
|
456
448
|
```
|
|
457
449
|
|
|
458
450
|
RPC mode uses strict LF-delimited JSONL framing. Clients must split records on `\n` only. Do not use generic line readers like Node `readline`, which also split on Unicode separators inside JSON payloads.
|
|
@@ -463,43 +455,41 @@ See [docs/rpc.md](docs/rpc.md) for the protocol.
|
|
|
463
455
|
|
|
464
456
|
## Philosophy
|
|
465
457
|
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
**No MCP.** Build CLI tools with READMEs (see [Skills](#skills)), or build an extension that adds MCP support. [Why?](https://mariozechner.at/posts/2025-11-02-what-if-you-dont-need-mcp/)
|
|
458
|
+
Atomic is aggressively extensible so it does not have to dictate your workflow. The distribution bundles first-party extensions for workflows, subagents, MCP, web access, and intercom, while still letting you build or install alternative [extensions](#extensions), [skills](#skills), and [Atomic packages](#atomic-packages). This keeps Atomic adaptable without forcing every workflow into the core CLI.
|
|
469
459
|
|
|
470
|
-
**
|
|
460
|
+
**Bundled subagents and workflows.** Atomic includes the first-party subagents and workflows packages. Use them as shipped, customize them, or replace them with your own extensions if your workflow needs a different orchestration model.
|
|
471
461
|
|
|
472
|
-
**
|
|
462
|
+
**Bundled MCP, web access, and intercom.** Atomic ships first-party integrations for MCP tools, web/repository/document/video extraction, and cross-session coordination. These are packaged extensions rather than hard-coded agent behavior, so they remain configurable and replaceable.
|
|
473
463
|
|
|
474
|
-
**
|
|
464
|
+
**Security stays explicit.** Run in a container, use project trust controls, or build confirmation flows with [extensions](#extensions) inline with your environment and security requirements.
|
|
475
465
|
|
|
476
|
-
**
|
|
466
|
+
**Composable planning and task tracking.** Use the bundled workflow/subagent/todo capabilities, write plans to files, or install a package that matches your team's process.
|
|
477
467
|
|
|
478
|
-
**No background bash.** Use tmux. Full observability, direct interaction.
|
|
468
|
+
**No hidden background bash.** Use tmux or explicit extensions for background work. Full observability, direct interaction.
|
|
479
469
|
|
|
480
|
-
|
|
470
|
+
Upstream Pi's minimal-core rationale is documented in the [original blog post](https://mariozechner.at/posts/2025-11-30-pi-coding-agent/); Atomic preserves the extensibility model while also bundling first-party capabilities for common workflows.
|
|
481
471
|
|
|
482
472
|
---
|
|
483
473
|
|
|
484
474
|
## CLI Reference
|
|
485
475
|
|
|
486
476
|
```bash
|
|
487
|
-
|
|
477
|
+
atomic [options] [@files...] [messages...]
|
|
488
478
|
```
|
|
489
479
|
|
|
490
480
|
### Package Commands
|
|
491
481
|
|
|
492
482
|
```bash
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
483
|
+
atomic install <source> [-l] # Install package, -l for project-local
|
|
484
|
+
atomic remove <source> [-l] # Remove package
|
|
485
|
+
atomic uninstall <source> [-l] # Alias for remove
|
|
486
|
+
atomic update [source|self|atomic] # Update Atomic and packages (skips pinned packages)
|
|
487
|
+
atomic update --extensions # Update packages only
|
|
488
|
+
atomic update --self # Update Atomic only
|
|
489
|
+
atomic update --self --force # Reinstall Atomic even if current
|
|
490
|
+
atomic update --extension <src> # Update one package
|
|
491
|
+
atomic list # List installed packages
|
|
492
|
+
atomic config # Enable/disable package resources
|
|
503
493
|
```
|
|
504
494
|
|
|
505
495
|
### Modes
|
|
@@ -512,10 +502,10 @@ pi config # Enable/disable package resources
|
|
|
512
502
|
| `--mode rpc` | RPC mode for process integration (see [docs/rpc.md](docs/rpc.md)) |
|
|
513
503
|
| `--export <in> [out]` | Export session to HTML |
|
|
514
504
|
|
|
515
|
-
In print mode,
|
|
505
|
+
In print mode, Atomic also reads piped stdin and merges it into the initial prompt:
|
|
516
506
|
|
|
517
507
|
```bash
|
|
518
|
-
cat README.md |
|
|
508
|
+
cat README.md | atomic -p "Summarize this text"
|
|
519
509
|
```
|
|
520
510
|
|
|
521
511
|
### Model Options
|
|
@@ -536,8 +526,10 @@ cat README.md | pi -p "Summarize this text"
|
|
|
536
526
|
| `-c`, `--continue` | Continue most recent session |
|
|
537
527
|
| `-r`, `--resume` | Browse and select session |
|
|
538
528
|
| `--session <path\|id>` | Use specific session file or partial UUID |
|
|
529
|
+
| `--session-id <id>` | Use an exact project session ID, creating it if missing |
|
|
539
530
|
| `--fork <path\|id>` | Fork specific session file or partial UUID into a new session |
|
|
540
531
|
| `--session-dir <dir>` | Custom session storage directory |
|
|
532
|
+
| `--name <name>`, `-n <name>` | Set the session display name |
|
|
541
533
|
| `--no-session` | Ephemeral mode (don't save) |
|
|
542
534
|
|
|
543
535
|
### Tool Options
|
|
@@ -545,10 +537,20 @@ cat README.md | pi -p "Summarize this text"
|
|
|
545
537
|
| Option | Description |
|
|
546
538
|
|--------|-------------|
|
|
547
539
|
| `--tools <list>`, `-t <list>` | Allowlist specific tool names across built-in, extension, and custom tools |
|
|
540
|
+
| `--exclude-tools <list>`, `-xt <list>` | Denylist specific built-in, extension, and custom tools |
|
|
548
541
|
| `--no-builtin-tools`, `-nbt` | Disable built-in tools by default but keep extension/custom tools enabled |
|
|
549
542
|
| `--no-tools`, `-nt` | Disable all tools by default |
|
|
550
543
|
|
|
551
|
-
|
|
544
|
+
Default built-in tools: `read`, `bash`, `edit`, `write`, `ask_user_question`, `todo`. Additional built-in read-only tools are available through tool options: `grep`, `find`, `ls`. Use `--exclude-tools` to disable one or more tools while leaving the rest available.
|
|
545
|
+
|
|
546
|
+
### Project Trust Options
|
|
547
|
+
|
|
548
|
+
| Option | Description |
|
|
549
|
+
|--------|-------------|
|
|
550
|
+
| `--approve`, `-a` | Trust project-local files/resources for this run |
|
|
551
|
+
| `--no-approve`, `-na` | Ignore project-local files/resources for this run |
|
|
552
|
+
|
|
553
|
+
Project trust gates `.atomic`/legacy `.pi` project resources, project package settings, project-local context files, and `.agents/skills` discovered from the project tree. Saved trust decisions can be managed with `/trust`; see [docs/security.md](docs/security.md).
|
|
552
554
|
|
|
553
555
|
### Resource Options
|
|
554
556
|
|
|
@@ -581,53 +583,53 @@ Combine `--no-*` with explicit flags to load exactly what you need, ignoring set
|
|
|
581
583
|
Prefix files with `@` to include in the message:
|
|
582
584
|
|
|
583
585
|
```bash
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
586
|
+
atomic @prompt.md "Answer this"
|
|
587
|
+
atomic -p @screenshot.png "What's in this image?"
|
|
588
|
+
atomic @code.ts @test.ts "Review these files"
|
|
587
589
|
```
|
|
588
590
|
|
|
589
591
|
### Examples
|
|
590
592
|
|
|
591
593
|
```bash
|
|
592
594
|
# Interactive with initial prompt
|
|
593
|
-
|
|
595
|
+
atomic "List all .ts files in src/"
|
|
594
596
|
|
|
595
597
|
# Non-interactive
|
|
596
|
-
|
|
598
|
+
atomic -p "Summarize this codebase"
|
|
597
599
|
|
|
598
600
|
# Non-interactive with piped stdin
|
|
599
|
-
cat README.md |
|
|
601
|
+
cat README.md | atomic -p "Summarize this text"
|
|
600
602
|
|
|
601
603
|
# Different model
|
|
602
|
-
|
|
604
|
+
atomic --provider openai --model gpt-4o "Help me refactor"
|
|
603
605
|
|
|
604
606
|
# Model with provider prefix (no --provider needed)
|
|
605
|
-
|
|
607
|
+
atomic --model openai/gpt-4o "Help me refactor"
|
|
606
608
|
|
|
607
609
|
# Model with thinking level shorthand
|
|
608
|
-
|
|
610
|
+
atomic --model sonnet:high "Solve this complex problem"
|
|
609
611
|
|
|
610
612
|
# Limit model cycling
|
|
611
|
-
|
|
613
|
+
atomic --models "claude-*,gpt-4o"
|
|
612
614
|
|
|
613
615
|
# Read-only mode
|
|
614
|
-
|
|
616
|
+
atomic --tools read,grep,find,ls -p "Review the code"
|
|
615
617
|
|
|
616
618
|
# High thinking level
|
|
617
|
-
|
|
619
|
+
atomic --thinking high "Solve this complex problem"
|
|
618
620
|
```
|
|
619
621
|
|
|
620
622
|
### Environment Variables
|
|
621
623
|
|
|
622
624
|
| Variable | Description |
|
|
623
625
|
|----------|-------------|
|
|
624
|
-
| `
|
|
625
|
-
| `
|
|
626
|
-
| `
|
|
627
|
-
| `
|
|
628
|
-
| `
|
|
629
|
-
| `
|
|
630
|
-
| `PI_CACHE_RETENTION` |
|
|
626
|
+
| `ATOMIC_CODING_AGENT_DIR` | Override config directory (default: `~/.atomic/agent`; `PI_CODING_AGENT_DIR` is a legacy alias) |
|
|
627
|
+
| `ATOMIC_CODING_AGENT_SESSION_DIR` | Override session storage directory (overridden by `--session-dir`; `PI_CODING_AGENT_SESSION_DIR` is a legacy alias) |
|
|
628
|
+
| `ATOMIC_PACKAGE_DIR` | Override package directory (useful for Nix/Guix where store paths tokenize poorly; `PI_PACKAGE_DIR` is a legacy alias) |
|
|
629
|
+
| `ATOMIC_OFFLINE` | Disable startup network operations, including update checks, package update checks, and install/update telemetry (`PI_OFFLINE` is a legacy alias) |
|
|
630
|
+
| `ATOMIC_SKIP_VERSION_CHECK` | Skip the Atomic version update check at startup. `PI_SKIP_VERSION_CHECK` is a legacy alias. |
|
|
631
|
+
| `ATOMIC_TELEMETRY` | Override install/update telemetry. Use `1`/`true`/`yes` to enable or `0`/`false`/`no` to disable. This does not disable update checks (`PI_TELEMETRY` is a legacy alias). |
|
|
632
|
+
| `PI_CACHE_RETENTION` | Provider/upstream-specific prompt-cache retention knob; set to `long` where supported. This is not an `ATOMIC_*` alias and has no Atomic-prefixed equivalent. |
|
|
631
633
|
| `VISUAL`, `EDITOR` | External editor for CTRL+G |
|
|
632
634
|
|
|
633
635
|
---
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bastani/intercom",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.28-alpha.2",
|
|
4
4
|
"private": true,
|
|
5
5
|
"description": "Atomic extension providing a private coordination channel between parent and child agent sessions. Fork of: https://github.com/nicobailon/pi-intercom",
|
|
6
6
|
"contributors": [
|