@bastani/atomic 0.8.13-0 → 0.8.14-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +24 -0
- package/dist/builtin/intercom/package.json +1 -1
- package/dist/builtin/mcp/host-html-template.ts +1 -1
- package/dist/builtin/mcp/init.ts +15 -2
- package/dist/builtin/mcp/mcp-callback-server.ts +10 -9
- package/dist/builtin/mcp/package.json +1 -1
- package/dist/builtin/mcp/ui-session.ts +9 -6
- package/dist/builtin/subagents/CHANGELOG.md +8 -1
- package/dist/builtin/subagents/README.md +39 -32
- package/dist/builtin/subagents/package.json +1 -1
- package/dist/builtin/subagents/skills/subagent/SKILL.md +11 -11
- package/dist/builtin/subagents/src/agents/agent-management.ts +6 -1
- package/dist/builtin/subagents/src/agents/agent-serializer.ts +2 -0
- package/dist/builtin/subagents/src/agents/agents.ts +44 -19
- package/dist/builtin/subagents/src/extension/config.ts +16 -0
- package/dist/builtin/subagents/src/extension/fanout-child.ts +246 -0
- package/dist/builtin/subagents/src/extension/index.ts +466 -603
- package/dist/builtin/subagents/src/intercom/intercom-bridge.ts +6 -4
- package/dist/builtin/subagents/src/intercom/result-intercom.ts +109 -1
- package/dist/builtin/subagents/src/runs/background/async-execution.ts +124 -19
- package/dist/builtin/subagents/src/runs/background/async-job-tracker.ts +41 -6
- package/dist/builtin/subagents/src/runs/background/async-resume.ts +28 -15
- package/dist/builtin/subagents/src/runs/background/async-status.ts +60 -30
- package/dist/builtin/subagents/src/runs/background/result-watcher.ts +111 -54
- package/dist/builtin/subagents/src/runs/background/run-id-resolver.ts +83 -0
- package/dist/builtin/subagents/src/runs/background/run-status.ts +79 -3
- package/dist/builtin/subagents/src/runs/background/stale-run-reconciler.ts +46 -1
- package/dist/builtin/subagents/src/runs/background/subagent-runner.ts +66 -14
- package/dist/builtin/subagents/src/runs/foreground/chain-execution.ts +10 -3
- package/dist/builtin/subagents/src/runs/foreground/execution.ts +14 -2
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor.ts +320 -23
- package/dist/builtin/subagents/src/runs/shared/completion-guard.ts +23 -1
- package/dist/builtin/subagents/src/runs/shared/mcp-direct-tool-allowlist.ts +369 -0
- package/dist/builtin/subagents/src/runs/shared/nested-events.ts +935 -0
- package/dist/builtin/subagents/src/runs/shared/nested-path.ts +52 -0
- package/dist/builtin/subagents/src/runs/shared/nested-render.ts +115 -0
- package/dist/builtin/subagents/src/runs/shared/parallel-utils.ts +1 -0
- package/dist/builtin/subagents/src/runs/shared/pi-args.ts +82 -9
- package/dist/builtin/subagents/src/runs/shared/pi-spawn.ts +1 -1
- package/dist/builtin/subagents/src/runs/shared/single-output.ts +12 -2
- package/dist/builtin/subagents/src/runs/shared/subagent-prompt-runtime.ts +32 -10
- package/dist/builtin/subagents/src/runs/shared/worktree.ts +3 -2
- package/dist/builtin/subagents/src/shared/artifacts.ts +0 -1
- package/dist/builtin/subagents/src/shared/types.ts +96 -1
- package/dist/builtin/subagents/src/shared/utils.ts +10 -2
- package/dist/builtin/subagents/src/slash/slash-commands.ts +468 -625
- package/dist/builtin/subagents/src/tui/render.ts +1227 -2093
- package/dist/builtin/web-access/package.json +1 -1
- package/dist/builtin/workflows/CHANGELOG.md +24 -0
- package/dist/builtin/workflows/README.md +28 -11
- package/dist/builtin/workflows/builtin/deep-research-codebase.ts +323 -40
- package/dist/builtin/workflows/builtin/ralph.ts +362 -176
- package/dist/builtin/workflows/package.json +2 -5
- package/dist/builtin/workflows/skills/research-codebase/SKILL.md +1 -1
- package/dist/builtin/workflows/skills/skill-creator/LICENSE.txt +202 -0
- package/dist/builtin/workflows/skills/skill-creator/SKILL.md +489 -0
- package/dist/builtin/workflows/skills/skill-creator/agents/analyzer.md +274 -0
- package/dist/builtin/workflows/skills/skill-creator/agents/comparator.md +202 -0
- package/dist/builtin/workflows/skills/skill-creator/agents/grader.md +223 -0
- package/dist/builtin/workflows/skills/skill-creator/assets/eval_review.html +146 -0
- package/dist/builtin/workflows/skills/skill-creator/eval-viewer/generate_review.py +471 -0
- package/dist/builtin/workflows/skills/skill-creator/eval-viewer/viewer.html +1325 -0
- package/dist/builtin/workflows/skills/skill-creator/references/schemas.md +430 -0
- package/dist/builtin/workflows/skills/skill-creator/scripts/__init__.py +0 -0
- package/dist/builtin/workflows/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
- package/dist/builtin/workflows/skills/skill-creator/scripts/generate_report.py +326 -0
- package/dist/builtin/workflows/skills/skill-creator/scripts/improve_description.py +247 -0
- package/dist/builtin/workflows/skills/skill-creator/scripts/package_skill.py +136 -0
- package/dist/builtin/workflows/skills/skill-creator/scripts/quick_validate.py +103 -0
- package/dist/builtin/workflows/skills/skill-creator/scripts/run_eval.py +310 -0
- package/dist/builtin/workflows/skills/skill-creator/scripts/run_loop.py +328 -0
- package/dist/builtin/workflows/skills/skill-creator/scripts/utils.py +47 -0
- package/dist/builtin/workflows/src/extension/index.ts +869 -93
- package/dist/builtin/workflows/src/extension/render-call.ts +34 -1
- package/dist/builtin/workflows/src/extension/render-result.ts +126 -21
- package/dist/builtin/workflows/src/extension/runtime.ts +91 -3
- package/dist/builtin/workflows/src/extension/wiring.ts +38 -12
- package/dist/builtin/workflows/src/extension/workflow-schema.ts +62 -5
- package/dist/builtin/workflows/src/runs/background/runner.ts +3 -3
- package/dist/builtin/workflows/src/runs/background/status.ts +42 -8
- package/dist/builtin/workflows/src/runs/foreground/executor.ts +410 -95
- package/dist/builtin/workflows/src/runs/foreground/stage-control-registry.ts +5 -2
- package/dist/builtin/workflows/src/runs/foreground/stage-runner.ts +8 -0
- package/dist/builtin/workflows/src/runs/shared/model-fallback.ts +6 -4
- package/dist/builtin/workflows/src/runs/shared/worktree.ts +3 -2
- package/dist/builtin/workflows/src/shared/persistence-restore.ts +138 -5
- package/dist/builtin/workflows/src/shared/persistence-session-entries.ts +30 -0
- package/dist/builtin/workflows/src/shared/render-inputs-schema.ts +78 -120
- package/dist/builtin/workflows/src/shared/stage-ui-broker.ts +193 -0
- package/dist/builtin/workflows/src/shared/store-types.ts +26 -1
- package/dist/builtin/workflows/src/shared/store.ts +145 -17
- package/dist/builtin/workflows/src/shared/timing.ts +6 -2
- package/dist/builtin/workflows/src/shared/workflow-failures.ts +375 -0
- package/dist/builtin/workflows/src/tui/chat-surface.ts +68 -17
- package/dist/builtin/workflows/src/tui/connectors.ts +2 -2
- package/dist/builtin/workflows/src/tui/dispatch-confirm.ts +24 -26
- package/dist/builtin/workflows/src/tui/graph-canvas.ts +4 -8
- package/dist/builtin/workflows/src/tui/graph-view.ts +17 -14
- package/dist/builtin/workflows/src/tui/header.ts +38 -0
- package/dist/builtin/workflows/src/tui/inline-form-card.ts +161 -238
- package/dist/builtin/workflows/src/tui/inline-form-editor.ts +68 -73
- package/dist/builtin/workflows/src/tui/inline-form-overlay.ts +2 -3
- package/dist/builtin/workflows/src/tui/inline-form-store.ts +2 -1
- package/dist/builtin/workflows/src/tui/inputs-overlay.ts +1 -3
- package/dist/builtin/workflows/src/tui/inputs-picker.ts +286 -399
- package/dist/builtin/workflows/src/tui/keybindings-adapter.ts +11 -0
- package/dist/builtin/workflows/src/tui/node-card.ts +2 -1
- package/dist/builtin/workflows/src/tui/overlay-adapter.ts +9 -1
- package/dist/builtin/workflows/src/tui/prompt-card.ts +46 -19
- package/dist/builtin/workflows/src/tui/run-detail.ts +63 -80
- package/dist/builtin/workflows/src/tui/session-confirm.ts +9 -3
- package/dist/builtin/workflows/src/tui/session-picker.ts +19 -16
- package/dist/builtin/workflows/src/tui/stage-chat-layout.ts +88 -0
- package/dist/builtin/workflows/src/tui/stage-chat-view.ts +368 -879
- package/dist/builtin/workflows/src/tui/status-helpers.ts +4 -0
- package/dist/builtin/workflows/src/tui/status-list.ts +67 -75
- package/dist/builtin/workflows/src/tui/store-widget-installer.ts +50 -12
- package/dist/builtin/workflows/src/tui/submit-pane.ts +164 -0
- package/dist/builtin/workflows/src/tui/switcher.ts +27 -4
- package/dist/builtin/workflows/src/tui/text-helpers.ts +98 -4
- package/dist/builtin/workflows/src/tui/widget.ts +90 -68
- package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +23 -2
- package/dist/builtin/workflows/src/tui/workflow-list.ts +44 -68
- package/dist/cli/file-processor.d.ts.map +1 -1
- package/dist/cli/file-processor.js +2 -3
- package/dist/cli/file-processor.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +3 -10
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +2 -1
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +3 -2
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session.d.ts +6 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +16 -2
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/atomic-guide-command.d.ts.map +1 -1
- package/dist/core/atomic-guide-command.js +8 -9
- package/dist/core/atomic-guide-command.js.map +1 -1
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +3 -2
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/bash-executor.d.ts.map +1 -1
- package/dist/core/bash-executor.js +2 -1
- package/dist/core/bash-executor.js.map +1 -1
- package/dist/core/export-html/index.d.ts.map +1 -1
- package/dist/core/export-html/index.js +8 -6
- package/dist/core/export-html/index.js.map +1 -1
- package/dist/core/export-html/template.js +6 -3
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +12 -29
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +5 -1
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/package-manager.d.ts +8 -0
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +145 -58
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/prompt-templates.d.ts.map +1 -1
- package/dist/core/prompt-templates.js +6 -20
- package/dist/core/prompt-templates.js.map +1 -1
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +38 -31
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +9 -4
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +32 -24
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +8 -15
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +8 -22
- package/dist/core/skills.js.map +1 -1
- package/dist/core/tools/ask-user-question/state/questionnaire-session.d.ts +5 -4
- package/dist/core/tools/ask-user-question/state/questionnaire-session.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/state/questionnaire-session.js +34 -11
- package/dist/core/tools/ask-user-question/state/questionnaire-session.js.map +1 -1
- package/dist/core/tools/ask-user-question/state/selectors/contract.d.ts +1 -0
- package/dist/core/tools/ask-user-question/state/selectors/contract.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/state/selectors/contract.js.map +1 -1
- package/dist/core/tools/ask-user-question/state/selectors/projections.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/state/selectors/projections.js +1 -0
- package/dist/core/tools/ask-user-question/state/selectors/projections.js.map +1 -1
- package/dist/core/tools/ask-user-question/state/state-reducer.d.ts +1 -2
- package/dist/core/tools/ask-user-question/state/state-reducer.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/state/state-reducer.js +26 -9
- package/dist/core/tools/ask-user-question/state/state-reducer.js.map +1 -1
- package/dist/core/tools/ask-user-question/state/state.d.ts +4 -0
- package/dist/core/tools/ask-user-question/state/state.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/state/state.js.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/option-list-view.d.ts +1 -0
- package/dist/core/tools/ask-user-question/view/components/option-list-view.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/option-list-view.js +1 -0
- package/dist/core/tools/ask-user-question/view/components/option-list-view.js.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/wrapping-select.d.ts +9 -6
- package/dist/core/tools/ask-user-question/view/components/wrapping-select.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/wrapping-select.js +28 -7
- package/dist/core/tools/ask-user-question/view/components/wrapping-select.js.map +1 -1
- package/dist/core/tools/ask-user-question/view/props-adapter.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/view/props-adapter.js +4 -1
- package/dist/core/tools/ask-user-question/view/props-adapter.js.map +1 -1
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +56 -53
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/edit-diff.d.ts +3 -1
- package/dist/core/tools/edit-diff.d.ts.map +1 -1
- package/dist/core/tools/edit-diff.js +8 -1
- package/dist/core/tools/edit-diff.js.map +1 -1
- package/dist/core/tools/edit.d.ts +3 -1
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +44 -81
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
- package/dist/core/tools/file-mutation-queue.js +27 -12
- package/dist/core/tools/file-mutation-queue.js.map +1 -1
- package/dist/core/tools/find.d.ts.map +1 -1
- package/dist/core/tools/find.js +2 -3
- 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 +3 -3
- 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 +5 -5
- package/dist/core/tools/ls.js.map +1 -1
- package/dist/core/tools/output-accumulator.d.ts +2 -0
- package/dist/core/tools/output-accumulator.d.ts.map +1 -1
- package/dist/core/tools/output-accumulator.js +11 -4
- package/dist/core/tools/output-accumulator.js.map +1 -1
- package/dist/core/tools/path-utils.d.ts +2 -0
- package/dist/core/tools/path-utils.d.ts.map +1 -1
- package/dist/core/tools/path-utils.js +39 -21
- package/dist/core/tools/path-utils.js.map +1 -1
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +9 -8
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/truncate.d.ts.map +1 -1
- package/dist/core/tools/truncate.js +12 -2
- package/dist/core/tools/truncate.js.map +1 -1
- package/dist/core/tools/write.d.ts.map +1 -1
- package/dist/core/tools/write.js +20 -35
- package/dist/core/tools/write.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +5 -6
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/chat-input-actions.d.ts +24 -0
- package/dist/modes/interactive/chat-input-actions.d.ts.map +1 -0
- package/dist/modes/interactive/chat-input-actions.js +179 -0
- package/dist/modes/interactive/chat-input-actions.js.map +1 -0
- package/dist/modes/interactive/components/chat-message-renderer.d.ts +1 -0
- package/dist/modes/interactive/components/chat-message-renderer.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-message-renderer.js +14 -3
- package/dist/modes/interactive/components/chat-message-renderer.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host.d.ts +157 -0
- package/dist/modes/interactive/components/chat-session-host.d.ts.map +1 -0
- package/dist/modes/interactive/components/chat-session-host.js +1007 -0
- package/dist/modes/interactive/components/chat-session-host.js.map +1 -0
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector.js +1 -1
- package/dist/modes/interactive/components/config-selector.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts +1 -0
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +14 -5
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/index.d.ts +1 -0
- package/dist/modes/interactive/components/index.d.ts.map +1 -1
- package/dist/modes/interactive/components/index.js +1 -0
- package/dist/modes/interactive/components/index.js.map +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts +9 -1
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/dist/modes/interactive/components/login-dialog.js +29 -4
- package/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +18 -67
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/utils/child-process.d.ts +1 -0
- package/dist/utils/child-process.d.ts.map +1 -1
- package/dist/utils/child-process.js +8 -0
- package/dist/utils/child-process.js.map +1 -1
- package/dist/utils/clipboard-native.d.ts +3 -1
- package/dist/utils/clipboard-native.d.ts.map +1 -1
- package/dist/utils/clipboard-native.js +14 -8
- package/dist/utils/clipboard-native.js.map +1 -1
- package/dist/utils/image-resize-core.d.ts +30 -0
- package/dist/utils/image-resize-core.d.ts.map +1 -0
- package/dist/utils/image-resize-core.js +124 -0
- package/dist/utils/image-resize-core.js.map +1 -0
- package/dist/utils/image-resize-worker.d.ts +2 -0
- package/dist/utils/image-resize-worker.d.ts.map +1 -0
- package/dist/utils/image-resize-worker.js +31 -0
- package/dist/utils/image-resize-worker.js.map +1 -0
- package/dist/utils/image-resize.d.ts +7 -27
- package/dist/utils/image-resize.d.ts.map +1 -1
- package/dist/utils/image-resize.js +75 -115
- package/dist/utils/image-resize.js.map +1 -1
- package/dist/utils/paths.d.ts +16 -1
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +49 -7
- package/dist/utils/paths.js.map +1 -1
- package/docs/changelog.mdx +29 -0
- package/docs/compaction.md +1 -1
- package/docs/custom-provider.md +2 -2
- package/docs/development.md +1 -1
- package/docs/docs.json +98 -143
- package/docs/extensions.md +29 -16
- package/docs/favicon.svg +29 -0
- package/docs/images/interactive-mode.png +0 -0
- package/docs/images/tree-view.png +0 -0
- package/docs/images/workflow-command.png +0 -0
- package/docs/images/workflow-graph.png +0 -0
- package/docs/images/workflow-input-picker.png +0 -0
- package/docs/images/workflow-list.png +0 -0
- package/docs/index.md +10 -1
- package/docs/logo.svg +59 -0
- package/docs/packages.md +3 -3
- package/docs/providers.md +1 -1
- package/docs/quickstart.md +98 -2
- package/docs/rpc.md +8 -8
- package/docs/sdk.md +23 -12
- package/docs/sessions.md +1 -1
- package/docs/skills.md +15 -1
- package/docs/termux.md +11 -1
- package/docs/themes.md +6 -6
- package/docs/tui.md +18 -18
- package/docs/usage.md +1 -1
- package/docs/workflows.md +172 -2
- package/examples/extensions/subagent/index.ts +2 -1
- package/package.json +6 -6
- /package/dist/builtin/{workflows → subagents}/skills/playwright-cli/SKILL.md +0 -0
- /package/dist/builtin/{workflows → subagents}/skills/playwright-cli/references/element-attributes.md +0 -0
- /package/dist/builtin/{workflows → subagents}/skills/playwright-cli/references/playwright-tests.md +0 -0
- /package/dist/builtin/{workflows → subagents}/skills/playwright-cli/references/request-mocking.md +0 -0
- /package/dist/builtin/{workflows → subagents}/skills/playwright-cli/references/running-code.md +0 -0
- /package/dist/builtin/{workflows → subagents}/skills/playwright-cli/references/session-management.md +0 -0
- /package/dist/builtin/{workflows → subagents}/skills/playwright-cli/references/spec-driven-testing.md +0 -0
- /package/dist/builtin/{workflows → subagents}/skills/playwright-cli/references/storage-state.md +0 -0
- /package/dist/builtin/{workflows → subagents}/skills/playwright-cli/references/test-generation.md +0 -0
- /package/dist/builtin/{workflows → subagents}/skills/playwright-cli/references/tracing.md +0 -0
- /package/dist/builtin/{workflows → subagents}/skills/playwright-cli/references/video-recording.md +0 -0
- /package/dist/builtin/{workflows → subagents}/skills/tdd/SKILL.md +0 -0
- /package/dist/builtin/{workflows → subagents}/skills/tdd/deep-modules.md +0 -0
- /package/dist/builtin/{workflows → subagents}/skills/tdd/interface-design.md +0 -0
- /package/dist/builtin/{workflows → subagents}/skills/tdd/mocking.md +0 -0
- /package/dist/builtin/{workflows → subagents}/skills/tdd/refactoring.md +0 -0
- /package/dist/builtin/{workflows → subagents}/skills/tdd/tests.md +0 -0
package/docs/quickstart.md
CHANGED
|
@@ -2,14 +2,30 @@
|
|
|
2
2
|
|
|
3
3
|
This page gets you from install to a useful first Atomic session.
|
|
4
4
|
|
|
5
|
+
## Prerequisites
|
|
6
|
+
|
|
7
|
+
- **Node.js 24 LTS or newer** — Atomic requires the latest Node LTS runtime. Check with `node --version`.
|
|
8
|
+
- **A package manager** — use npm (included with Node), pnpm, Yarn, or Bun. Use Bun 1.3.14+ for Bun installs or workflow-authoring examples.
|
|
9
|
+
- **Model-provider access** — bring an API key or sign in with `/login` after startup.
|
|
10
|
+
- **A compatible terminal** — for the best TUI experience, use a terminal with Kitty keyboard protocol support. See [Terminal setup](terminal-setup.md). On Windows, use Git Bash or WSL.
|
|
11
|
+
|
|
5
12
|
## Install
|
|
6
13
|
|
|
7
|
-
Atomic is distributed
|
|
14
|
+
Atomic is distributed through npm-compatible package managers. Choose one:
|
|
8
15
|
|
|
9
16
|
```bash
|
|
17
|
+
# npm
|
|
10
18
|
npm install -g @bastani/atomic
|
|
19
|
+
|
|
20
|
+
# Bun
|
|
21
|
+
bun install -g @bastani/atomic
|
|
22
|
+
|
|
23
|
+
# pnpm
|
|
24
|
+
pnpm add -g @bastani/atomic
|
|
11
25
|
```
|
|
12
26
|
|
|
27
|
+
Atomic does not require package install scripts. If you want to disable dependency lifecycle scripts during the Atomic install, you can add `--ignore-scripts` to the install command.
|
|
28
|
+
|
|
13
29
|
Then start Atomic in the project directory you want it to work on:
|
|
14
30
|
|
|
15
31
|
```bash
|
|
@@ -46,7 +62,85 @@ See [Providers](providers.md) for all supported providers, environment variables
|
|
|
46
62
|
|
|
47
63
|
## First session
|
|
48
64
|
|
|
49
|
-
Once Atomic starts,
|
|
65
|
+
Once Atomic starts, the fastest way to get value is to kick off a built-in workflow or invoke a skill — Atomic plans and executes multi-stage work for you.
|
|
66
|
+
|
|
67
|
+
For an interactive tour any time, run `/atomic` inside the TUI; `/atomic overview`, `/atomic workflows`, and `/atomic example` walk through the same flow in more depth.
|
|
68
|
+
|
|
69
|
+
### Try the built-in workflows
|
|
70
|
+
|
|
71
|
+
Atomic ships with three workflows you can run immediately. Use `/workflow list` to see them and `/workflow inputs <name>` to inspect their inputs in your environment.
|
|
72
|
+
|
|
73
|
+
| Workflow | When to use | Example |
|
|
74
|
+
|---|---|---|
|
|
75
|
+
| `deep-research-codebase` | Broad, cross-cutting research before you decide what to change. Scout → research-history → parallel specialist waves → aggregator. | `/workflow deep-research-codebase prompt="How do payment retries work end to end?"` |
|
|
76
|
+
| `ralph` | Larger implementation loops with built-in plan → orchestrate → simplify → parallel review iteration. | `/workflow ralph prompt="Implement specs/2026-03-rate-limit.md and validate the behavior" max_loops=5` |
|
|
77
|
+
| `open-claude-design` | UI and design-system work with generation, critique, and refinement loops; renders a live `preview.html` you can iterate against. | `/workflow open-claude-design prompt="Refresh the settings page hierarchy" output_type=page` |
|
|
78
|
+
|
|
79
|
+
<p align="center"><img src="images/workflow-list.png" alt="Workflow List" width="600" /></p>
|
|
80
|
+
|
|
81
|
+
Inputs are bare `key=value` tokens. Values are JSON-parsed when possible, so `max_loops=5`, `flag=true`, and `prompt="multi word value"` preserve useful types. If you call `/workflow <name>` without required inputs, the TUI opens an inline picker; pass `--no-picker` to skip it.
|
|
82
|
+
|
|
83
|
+
You can also launch workflows with **natural language** — just describe the task in chat and ask Atomic to run the matching workflow:
|
|
84
|
+
|
|
85
|
+
```text
|
|
86
|
+
Run a deep codebase research workflow on how the rate limiter behaves under burst traffic.
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Atomic picks the workflow, fills in inputs from the request, and confirms before launch.
|
|
90
|
+
|
|
91
|
+
### Monitor and steer a run
|
|
92
|
+
|
|
93
|
+
Named workflow runs execute in the background. After launch you get a run id; use it to inspect, attach, pause, or resume:
|
|
94
|
+
|
|
95
|
+
```text
|
|
96
|
+
/workflow status # list in-flight runs (add --all for ended runs)
|
|
97
|
+
/workflow connect <run-id> # open the graph viewer (F2 also opens the latest)
|
|
98
|
+
/workflow attach <run-id> <stage> # chat with one stage
|
|
99
|
+
/workflow interrupt <run-id> # pause resumably
|
|
100
|
+
/workflow resume <run-id> "go" # send a steer message and resume
|
|
101
|
+
/workflow kill <run-id> # destructive abort
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Human-in-the-loop prompts (`ctx.ui.input`, `confirm`, `select`, `editor`) surface in the graph viewer, not as chat modals — connect to the run to answer them. See [Workflows](workflows.md) for the full reference and authoring guide.
|
|
105
|
+
|
|
106
|
+
### Top skills to invoke directly
|
|
107
|
+
|
|
108
|
+
Skills are reusable expert instructions. Trigger one with `/skill:<name>` followed by a request:
|
|
109
|
+
|
|
110
|
+
| Skill | When to use | Example |
|
|
111
|
+
|---|---|---|
|
|
112
|
+
| `research-codebase` | Scoped research that writes a grounded artifact for one subsystem or question. | `/skill:research-codebase how the rate limiter works in src/middleware/` |
|
|
113
|
+
| `create-spec` | Turn research into an implementation-ready plan. | `/skill:create-spec from research/docs/2026-03-rate-limit.md` |
|
|
114
|
+
| `prompt-engineer` | Tighten a vague prompt before a long run. | `/skill:prompt-engineer Draft a sharper repo-research prompt for payment retries end to end.` |
|
|
115
|
+
| `tdd` | Test-first feature or bug work. | `/skill:tdd` |
|
|
116
|
+
| `impeccable` | Critique or refine frontend and product UI. | `/skill:impeccable` |
|
|
117
|
+
|
|
118
|
+
Use `/skill:research-codebase` for a focused area and `/workflow deep-research-codebase` when the answer spans the whole repo. A typical flow is `/skill:research-codebase` → `/skill:create-spec` → `/workflow ralph` to implement and validate.
|
|
119
|
+
|
|
120
|
+
### Create your own workflow in natural language
|
|
121
|
+
|
|
122
|
+
You do not have to write TypeScript to add a new workflow. Describe what you want in plain chat and Atomic will design and write it for you using the [Workflows](workflows.md) reference as the source of truth:
|
|
123
|
+
|
|
124
|
+
```text
|
|
125
|
+
Create a reusable Atomic workflow called review-changes. It takes one
|
|
126
|
+
required text input `target` (a diff, PR, or review focus). Run two reviewers
|
|
127
|
+
in parallel with fresh context — one for correctness and missing tests, one
|
|
128
|
+
for edge cases and maintainability — then a synthesis stage that
|
|
129
|
+
consolidates findings into blockers vs. suggestions and returns
|
|
130
|
+
{ consolidated_review, decision }.
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Atomic will:
|
|
134
|
+
|
|
135
|
+
- ask clarifying questions if stage purpose, inputs, models, or handoffs are ambiguous,
|
|
136
|
+
- write a `.atomic/workflows/<name>.ts` definition that uses `defineWorkflow(...).input(...).run(...).compile()`,
|
|
137
|
+
- and reload so you can immediately run it with `/workflow <name>`.
|
|
138
|
+
|
|
139
|
+
The same plain-chat approach works for editing or hardening an existing workflow — ask Atomic to add a stage, switch a model, save artifacts, or wire in a human approval gate. For the full authoring reference, see [Workflows](workflows.md).
|
|
140
|
+
|
|
141
|
+
### Default tools and prompts
|
|
142
|
+
|
|
143
|
+
If you'd rather start with a plain prompt, just type a request and press Enter:
|
|
50
144
|
|
|
51
145
|
```text
|
|
52
146
|
Summarize this repository and tell me how to run its checks.
|
|
@@ -136,6 +230,8 @@ Use `--mode json` for JSON event output or `--mode rpc` for process integration.
|
|
|
136
230
|
## Next steps
|
|
137
231
|
|
|
138
232
|
- [Using Atomic](usage.md) - interactive mode, slash commands, sessions, context files, and CLI reference.
|
|
233
|
+
- [Workflows](workflows.md) - run, inspect, and author multi-stage automation (including the three built-in workflows).
|
|
234
|
+
- [Skills](skills.md) - reusable expert instructions invoked with `/skill:<name>`.
|
|
139
235
|
- [Providers](providers.md) - authentication and model setup.
|
|
140
236
|
- [Settings](settings.md) - global and project configuration.
|
|
141
237
|
- [Keybindings](keybindings.md) - shortcuts and customization.
|
package/docs/rpc.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
RPC mode enables headless operation of the coding agent via a JSON protocol over stdin/stdout. This is useful for embedding the agent in other applications, IDEs, or custom UIs.
|
|
4
4
|
|
|
5
|
-
**Note for Node.js/TypeScript users**: If you're building a Node.js application, consider using `AgentSession` directly from `@bastani/atomic` instead of spawning a subprocess. See [`src/core/agent-session.ts`](
|
|
5
|
+
**Note for Node.js/TypeScript users**: If you're building a Node.js application, consider using `AgentSession` directly from `@bastani/atomic` instead of spawning a subprocess. See [`src/core/agent-session.ts`](https://github.com/flora131/atomic/blob/main/packages/coding-agent/src/core/agent-session.ts) for the API. For a subprocess-based TypeScript client, see [`src/modes/rpc/rpc-client.ts`](https://github.com/flora131/atomic/blob/main/packages/coding-agent/src/modes/rpc/rpc-client.ts).
|
|
6
6
|
|
|
7
7
|
## Starting RPC Mode
|
|
8
8
|
|
|
@@ -209,7 +209,7 @@ Response:
|
|
|
209
209
|
}
|
|
210
210
|
```
|
|
211
211
|
|
|
212
|
-
Messages are `AgentMessage` objects (see [
|
|
212
|
+
Messages are `AgentMessage` objects (see [Types](#types)).
|
|
213
213
|
|
|
214
214
|
### Model
|
|
215
215
|
|
|
@@ -1200,10 +1200,10 @@ Parse errors:
|
|
|
1200
1200
|
## Types
|
|
1201
1201
|
|
|
1202
1202
|
Source files:
|
|
1203
|
-
- [`packages/ai/src/types.ts`](
|
|
1204
|
-
- [`packages/agent/src/types.ts`](
|
|
1205
|
-
- [`src/core/messages.ts`](
|
|
1206
|
-
- [`src/modes/rpc/rpc-types.ts`](
|
|
1203
|
+
- [`packages/ai/src/types.ts`](https://github.com/earendil-works/pi-mono/blob/main/packages/ai/src/types.ts) - `Model`, `UserMessage`, `AssistantMessage`, `ToolResultMessage`
|
|
1204
|
+
- [`packages/agent/src/types.ts`](https://github.com/earendil-works/pi-mono/blob/main/packages/agent/src/types.ts) - `AgentMessage`, `AgentEvent`
|
|
1205
|
+
- [`src/core/messages.ts`](https://github.com/flora131/atomic/blob/main/packages/coding-agent/src/core/messages.ts) - `BashExecutionMessage`
|
|
1206
|
+
- [`src/modes/rpc/rpc-types.ts`](https://github.com/flora131/atomic/blob/main/packages/coding-agent/src/modes/rpc/rpc-types.ts) - RPC command/response types, extension UI request/response types
|
|
1207
1207
|
|
|
1208
1208
|
### Model
|
|
1209
1209
|
|
|
@@ -1350,9 +1350,9 @@ for event in read_events():
|
|
|
1350
1350
|
|
|
1351
1351
|
## Example: Interactive Client (Node.js)
|
|
1352
1352
|
|
|
1353
|
-
See [`test/rpc-example.ts`](
|
|
1353
|
+
See [`test/rpc-example.ts`](https://github.com/flora131/atomic/blob/main/packages/coding-agent/test/rpc-example.ts) for a complete interactive example, or [`src/modes/rpc/rpc-client.ts`](https://github.com/flora131/atomic/blob/main/packages/coding-agent/src/modes/rpc/rpc-client.ts) for a typed client implementation.
|
|
1354
1354
|
|
|
1355
|
-
For a complete example of handling the extension UI protocol, see [`examples/rpc-extension-ui.ts`](
|
|
1355
|
+
For a complete example of handling the extension UI protocol, see [`examples/rpc-extension-ui.ts`](https://github.com/flora131/atomic/blob/main/packages/coding-agent/examples/rpc-extension-ui.ts) which pairs with the [`examples/extensions/rpc-demo.ts`](https://github.com/flora131/atomic/blob/main/packages/coding-agent/examples/extensions/rpc-demo.ts) extension.
|
|
1356
1356
|
|
|
1357
1357
|
```javascript
|
|
1358
1358
|
const { spawn } = require("child_process");
|
package/docs/sdk.md
CHANGED
|
@@ -11,7 +11,7 @@ The SDK provides programmatic access to atomic's agent capabilities. Use it to e
|
|
|
11
11
|
- Build custom tools that spawn sub-agents
|
|
12
12
|
- Test agent behavior programmatically
|
|
13
13
|
|
|
14
|
-
See [examples/sdk/](
|
|
14
|
+
See [examples/sdk/](https://github.com/flora131/atomic/tree/main/packages/coding-agent/examples/sdk) for working examples from minimal to full control.
|
|
15
15
|
|
|
16
16
|
## Quick Start
|
|
17
17
|
|
|
@@ -39,10 +39,21 @@ await session.prompt("What files are in the current directory?");
|
|
|
39
39
|
|
|
40
40
|
## Installation
|
|
41
41
|
|
|
42
|
+
Choose npm, Bun, or pnpm:
|
|
43
|
+
|
|
42
44
|
```bash
|
|
45
|
+
# npm
|
|
43
46
|
npm install @bastani/atomic
|
|
47
|
+
|
|
48
|
+
# Bun
|
|
49
|
+
bun add @bastani/atomic
|
|
50
|
+
|
|
51
|
+
# pnpm
|
|
52
|
+
pnpm add @bastani/atomic
|
|
44
53
|
```
|
|
45
54
|
|
|
55
|
+
Atomic does not require package install scripts. If you want to disable dependency lifecycle scripts during the Atomic install, you can add `--ignore-scripts` to the install command.
|
|
56
|
+
|
|
46
57
|
The SDK is included in the main package. No separate installation needed.
|
|
47
58
|
|
|
48
59
|
## Core Concepts
|
|
@@ -407,7 +418,7 @@ If no model is provided:
|
|
|
407
418
|
2. Uses default from settings
|
|
408
419
|
3. Falls back to first available model
|
|
409
420
|
|
|
410
|
-
> See [examples/sdk/02-custom-model.ts](
|
|
421
|
+
> See [examples/sdk/02-custom-model.ts](https://github.com/flora131/atomic/blob/main/packages/coding-agent/examples/sdk/02-custom-model.ts)
|
|
411
422
|
|
|
412
423
|
### API Keys and OAuth
|
|
413
424
|
|
|
@@ -448,7 +459,7 @@ const { session } = await createAgentSession({
|
|
|
448
459
|
const simpleRegistry = ModelRegistry.inMemory(authStorage);
|
|
449
460
|
```
|
|
450
461
|
|
|
451
|
-
> See [examples/sdk/09-api-keys-and-oauth.ts](
|
|
462
|
+
> See [examples/sdk/09-api-keys-and-oauth.ts](https://github.com/flora131/atomic/blob/main/packages/coding-agent/examples/sdk/09-api-keys-and-oauth.ts)
|
|
452
463
|
|
|
453
464
|
### System Prompt
|
|
454
465
|
|
|
@@ -465,7 +476,7 @@ await loader.reload();
|
|
|
465
476
|
const { session } = await createAgentSession({ resourceLoader: loader });
|
|
466
477
|
```
|
|
467
478
|
|
|
468
|
-
> See [examples/sdk/03-custom-prompt.ts](
|
|
479
|
+
> See [examples/sdk/03-custom-prompt.ts](https://github.com/flora131/atomic/blob/main/packages/coding-agent/examples/sdk/03-custom-prompt.ts)
|
|
469
480
|
|
|
470
481
|
### Tools
|
|
471
482
|
|
|
@@ -513,7 +524,7 @@ const { session } = await createAgentSession({
|
|
|
513
524
|
});
|
|
514
525
|
```
|
|
515
526
|
|
|
516
|
-
> See [examples/sdk/05-tools.ts](
|
|
527
|
+
> See [examples/sdk/05-tools.ts](https://github.com/flora131/atomic/blob/main/packages/coding-agent/examples/sdk/05-tools.ts)
|
|
517
528
|
|
|
518
529
|
### Custom Tools
|
|
519
530
|
|
|
@@ -547,7 +558,7 @@ Custom tools passed via `customTools` are combined with extension-registered too
|
|
|
547
558
|
|
|
548
559
|
If you pass `tools`, include each custom or extension tool name you want enabled, for example `tools: ["read", "bash", "my_tool"]`.
|
|
549
560
|
|
|
550
|
-
> See [examples/sdk/05-tools.ts](
|
|
561
|
+
> See [examples/sdk/05-tools.ts](https://github.com/flora131/atomic/blob/main/packages/coding-agent/examples/sdk/05-tools.ts)
|
|
551
562
|
|
|
552
563
|
### Extensions
|
|
553
564
|
|
|
@@ -587,7 +598,7 @@ await loader.reload();
|
|
|
587
598
|
eventBus.on("my-extension:status", (data) => console.log(data));
|
|
588
599
|
```
|
|
589
600
|
|
|
590
|
-
> See [examples/sdk/06-extensions.ts](
|
|
601
|
+
> See [examples/sdk/06-extensions.ts](https://github.com/flora131/atomic/blob/main/packages/coding-agent/examples/sdk/06-extensions.ts) and [docs/extensions.md](extensions.md)
|
|
591
602
|
|
|
592
603
|
### Skills
|
|
593
604
|
|
|
@@ -617,7 +628,7 @@ await loader.reload();
|
|
|
617
628
|
const { session } = await createAgentSession({ resourceLoader: loader });
|
|
618
629
|
```
|
|
619
630
|
|
|
620
|
-
> See [examples/sdk/04-skills.ts](
|
|
631
|
+
> See [examples/sdk/04-skills.ts](https://github.com/flora131/atomic/blob/main/packages/coding-agent/examples/sdk/04-skills.ts)
|
|
621
632
|
|
|
622
633
|
### Context Files
|
|
623
634
|
|
|
@@ -637,7 +648,7 @@ await loader.reload();
|
|
|
637
648
|
const { session } = await createAgentSession({ resourceLoader: loader });
|
|
638
649
|
```
|
|
639
650
|
|
|
640
|
-
> See [examples/sdk/07-context-files.ts](
|
|
651
|
+
> See [examples/sdk/07-context-files.ts](https://github.com/flora131/atomic/blob/main/packages/coding-agent/examples/sdk/07-context-files.ts)
|
|
641
652
|
|
|
642
653
|
### Slash Commands
|
|
643
654
|
|
|
@@ -666,7 +677,7 @@ await loader.reload();
|
|
|
666
677
|
const { session } = await createAgentSession({ resourceLoader: loader });
|
|
667
678
|
```
|
|
668
679
|
|
|
669
|
-
> See [examples/sdk/08-prompt-templates.ts](
|
|
680
|
+
> See [examples/sdk/08-prompt-templates.ts](https://github.com/flora131/atomic/blob/main/packages/coding-agent/examples/sdk/08-prompt-templates.ts)
|
|
670
681
|
|
|
671
682
|
### Session Management
|
|
672
683
|
|
|
@@ -770,7 +781,7 @@ sm.branchWithSummary(id, "Summary..."); // Branch with context summary
|
|
|
770
781
|
sm.createBranchedSession(leafId); // Extract path to new file
|
|
771
782
|
```
|
|
772
783
|
|
|
773
|
-
> See [examples/sdk/11-sessions.ts](
|
|
784
|
+
> See [examples/sdk/11-sessions.ts](https://github.com/flora131/atomic/blob/main/packages/coding-agent/examples/sdk/11-sessions.ts) and [Session Format](session-format.md)
|
|
774
785
|
|
|
775
786
|
### Settings Management
|
|
776
787
|
|
|
@@ -821,7 +832,7 @@ Project overrides global. Nested objects merge keys. Setters modify global setti
|
|
|
821
832
|
- Call `await settingsManager.flush()` when you need a durability boundary (for example, before process exit or before asserting file contents in tests).
|
|
822
833
|
- `SettingsManager` does not print settings I/O errors. Use `settingsManager.drainErrors()` and report them in your app layer.
|
|
823
834
|
|
|
824
|
-
> See [examples/sdk/10-settings.ts](
|
|
835
|
+
> See [examples/sdk/10-settings.ts](https://github.com/flora131/atomic/blob/main/packages/coding-agent/examples/sdk/10-settings.ts)
|
|
825
836
|
|
|
826
837
|
## ResourceLoader
|
|
827
838
|
|
package/docs/sessions.md
CHANGED
|
@@ -62,7 +62,7 @@ Named sessions are easier to find in `/resume` and `atomic -r`.
|
|
|
62
62
|
|
|
63
63
|
Sessions are stored as trees. Every entry has an `id` and `parentId`, and the current position is the active leaf. `/tree` lets you jump to any previous point and continue from there without creating a new file.
|
|
64
64
|
|
|
65
|
-
<p align="center"><img src="images/tree-view.png" alt="Tree View" width="600"
|
|
65
|
+
<p align="center"><img src="images/tree-view.png" alt="Tree View" width="600" /></p>
|
|
66
66
|
|
|
67
67
|
Example shape:
|
|
68
68
|
|
package/docs/skills.md
CHANGED
|
@@ -116,9 +116,16 @@ description: What this skill does and when to use it. Be specific.
|
|
|
116
116
|
|
|
117
117
|
## Setup
|
|
118
118
|
|
|
119
|
-
Run once before first use:
|
|
119
|
+
Run once before first use (choose one):
|
|
120
120
|
```bash
|
|
121
|
+
# npm
|
|
121
122
|
cd /path/to/skill && npm install
|
|
123
|
+
|
|
124
|
+
# Bun
|
|
125
|
+
cd /path/to/skill && bun install
|
|
126
|
+
|
|
127
|
+
# pnpm
|
|
128
|
+
cd /path/to/skill && pnpm install
|
|
122
129
|
```
|
|
123
130
|
|
|
124
131
|
## Usage
|
|
@@ -209,7 +216,14 @@ description: Web search and content extraction via Brave Search API. Use for sea
|
|
|
209
216
|
## Setup
|
|
210
217
|
|
|
211
218
|
```bash
|
|
219
|
+
# npm
|
|
212
220
|
cd /path/to/brave-search && npm install
|
|
221
|
+
|
|
222
|
+
# Bun
|
|
223
|
+
cd /path/to/brave-search && bun install
|
|
224
|
+
|
|
225
|
+
# pnpm
|
|
226
|
+
cd /path/to/brave-search && pnpm install
|
|
213
227
|
```
|
|
214
228
|
|
|
215
229
|
## Search
|
package/docs/termux.md
CHANGED
|
@@ -16,9 +16,17 @@ pkg update && pkg upgrade
|
|
|
16
16
|
# Install dependencies
|
|
17
17
|
pkg install nodejs termux-api git
|
|
18
18
|
|
|
19
|
-
# Install Atomic
|
|
19
|
+
# Install Atomic (choose one package manager available in Termux)
|
|
20
|
+
# npm is installed by `pkg install nodejs`; Bun and pnpm must be installed separately before using those commands.
|
|
21
|
+
# npm
|
|
20
22
|
npm install -g @bastani/atomic
|
|
21
23
|
|
|
24
|
+
# Bun
|
|
25
|
+
bun install -g @bastani/atomic
|
|
26
|
+
|
|
27
|
+
# pnpm
|
|
28
|
+
pnpm add -g @bastani/atomic
|
|
29
|
+
|
|
22
30
|
# Create config directory
|
|
23
31
|
mkdir -p ~/.atomic/agent
|
|
24
32
|
|
|
@@ -26,6 +34,8 @@ mkdir -p ~/.atomic/agent
|
|
|
26
34
|
atomic
|
|
27
35
|
```
|
|
28
36
|
|
|
37
|
+
Atomic does not require package install scripts. If you want to disable dependency lifecycle scripts during the Atomic install, you can add `--ignore-scripts` to the install command.
|
|
38
|
+
|
|
29
39
|
## Clipboard Support
|
|
30
40
|
|
|
31
41
|
Clipboard operations use `termux-clipboard-set` and `termux-clipboard-get` when running in Termux. The Termux:API app must be installed for these to work.
|
package/docs/themes.md
CHANGED
|
@@ -291,9 +291,9 @@ echo $COLORTERM # Should output "truecolor" or "24bit"
|
|
|
291
291
|
## Examples
|
|
292
292
|
|
|
293
293
|
See the built-in themes:
|
|
294
|
-
- [dark.json](
|
|
295
|
-
- [light.json](
|
|
296
|
-
- [catppuccin-frappe.json](
|
|
297
|
-
- [catppuccin-latte.json](
|
|
298
|
-
- [catppuccin-macchiato.json](
|
|
299
|
-
- [catppuccin-mocha.json](
|
|
294
|
+
- [dark.json](https://github.com/flora131/atomic/blob/main/packages/coding-agent/src/modes/interactive/theme/dark.json)
|
|
295
|
+
- [light.json](https://github.com/flora131/atomic/blob/main/packages/coding-agent/src/modes/interactive/theme/light.json)
|
|
296
|
+
- [catppuccin-frappe.json](https://github.com/flora131/atomic/blob/main/packages/coding-agent/src/modes/interactive/theme/catppuccin-frappe.json)
|
|
297
|
+
- [catppuccin-latte.json](https://github.com/flora131/atomic/blob/main/packages/coding-agent/src/modes/interactive/theme/catppuccin-latte.json)
|
|
298
|
+
- [catppuccin-macchiato.json](https://github.com/flora131/atomic/blob/main/packages/coding-agent/src/modes/interactive/theme/catppuccin-macchiato.json)
|
|
299
|
+
- [catppuccin-mocha.json](https://github.com/flora131/atomic/blob/main/packages/coding-agent/src/modes/interactive/theme/catppuccin-mocha.json)
|
package/docs/tui.md
CHANGED
|
@@ -175,7 +175,7 @@ await showMenu(); // First show
|
|
|
175
175
|
await showMenu(); // "Back" = just call again
|
|
176
176
|
```
|
|
177
177
|
|
|
178
|
-
See [overlay-qa-tests.ts](
|
|
178
|
+
See [overlay-qa-tests.ts](https://github.com/flora131/atomic/blob/main/packages/coding-agent/examples/extensions/overlay-qa-tests.ts) for comprehensive examples covering anchors, margins, stacking, responsive visibility, and animation.
|
|
179
179
|
|
|
180
180
|
## Built-in Components
|
|
181
181
|
|
|
@@ -644,7 +644,7 @@ pi.registerCommand("pick", {
|
|
|
644
644
|
});
|
|
645
645
|
```
|
|
646
646
|
|
|
647
|
-
**Examples:** [preset.ts](
|
|
647
|
+
**Examples:** [preset.ts](https://github.com/flora131/atomic/blob/main/packages/coding-agent/examples/extensions/preset.ts), [tools.ts](https://github.com/flora131/atomic/blob/main/packages/coding-agent/examples/extensions/tools.ts)
|
|
648
648
|
|
|
649
649
|
### Pattern 2: Async Operation with Cancel (BorderedLoader)
|
|
650
650
|
|
|
@@ -676,7 +676,7 @@ pi.registerCommand("fetch", {
|
|
|
676
676
|
});
|
|
677
677
|
```
|
|
678
678
|
|
|
679
|
-
**Examples:** [qna.ts](
|
|
679
|
+
**Examples:** [qna.ts](https://github.com/flora131/atomic/blob/main/packages/coding-agent/examples/extensions/qna.ts), [handoff.ts](https://github.com/flora131/atomic/blob/main/packages/coding-agent/examples/extensions/handoff.ts)
|
|
680
680
|
|
|
681
681
|
### Pattern 3: Settings/Toggles (SettingsList)
|
|
682
682
|
|
|
@@ -720,7 +720,7 @@ pi.registerCommand("settings", {
|
|
|
720
720
|
});
|
|
721
721
|
```
|
|
722
722
|
|
|
723
|
-
**Examples:** [tools.ts](
|
|
723
|
+
**Examples:** [tools.ts](https://github.com/flora131/atomic/blob/main/packages/coding-agent/examples/extensions/tools.ts)
|
|
724
724
|
|
|
725
725
|
### Pattern 4: Persistent Status Indicator
|
|
726
726
|
|
|
@@ -734,7 +734,7 @@ ctx.ui.setStatus("my-ext", ctx.ui.theme.fg("accent", "● active"));
|
|
|
734
734
|
ctx.ui.setStatus("my-ext", undefined);
|
|
735
735
|
```
|
|
736
736
|
|
|
737
|
-
**Examples:** [status-line.ts](
|
|
737
|
+
**Examples:** [status-line.ts](https://github.com/flora131/atomic/blob/main/packages/coding-agent/examples/extensions/status-line.ts), [plan-mode/index.ts](https://github.com/flora131/atomic/blob/main/packages/coding-agent/examples/extensions/plan-mode/index.ts), [preset.ts](https://github.com/flora131/atomic/blob/main/packages/coding-agent/examples/extensions/preset.ts)
|
|
738
738
|
|
|
739
739
|
### Pattern 4b: Working Indicator Customization
|
|
740
740
|
|
|
@@ -764,7 +764,7 @@ ctx.ui.setWorkingIndicator();
|
|
|
764
764
|
|
|
765
765
|
This only affects the normal streaming working indicator. Compaction and retry loaders keep their built-in styling. Custom frames are rendered verbatim, so extensions must add their own colors when needed.
|
|
766
766
|
|
|
767
|
-
**Examples:** [working-indicator.ts](
|
|
767
|
+
**Examples:** [working-indicator.ts](https://github.com/flora131/atomic/blob/main/packages/coding-agent/examples/extensions/working-indicator.ts)
|
|
768
768
|
|
|
769
769
|
### Pattern 5: Widgets Above/Below Editor
|
|
770
770
|
|
|
@@ -794,7 +794,7 @@ ctx.ui.setWidget("my-widget", (_tui, theme) => {
|
|
|
794
794
|
ctx.ui.setWidget("my-widget", undefined);
|
|
795
795
|
```
|
|
796
796
|
|
|
797
|
-
**Examples:** [plan-mode.ts](
|
|
797
|
+
**Examples:** [plan-mode/index.ts](https://github.com/flora131/atomic/blob/main/packages/coding-agent/examples/extensions/plan-mode/index.ts)
|
|
798
798
|
|
|
799
799
|
### Pattern 6: Custom Footer
|
|
800
800
|
|
|
@@ -816,7 +816,7 @@ ctx.ui.setFooter(undefined); // restore default
|
|
|
816
816
|
|
|
817
817
|
Token stats available via `ctx.sessionManager.getBranch()` and `ctx.model`.
|
|
818
818
|
|
|
819
|
-
**Examples:** [custom-footer.ts](
|
|
819
|
+
**Examples:** [custom-footer.ts](https://github.com/flora131/atomic/blob/main/packages/coding-agent/examples/extensions/custom-footer.ts)
|
|
820
820
|
|
|
821
821
|
### Pattern 7: Custom Editor (vim mode, etc.)
|
|
822
822
|
|
|
@@ -892,7 +892,7 @@ export default function (pi: ExtensionAPI) {
|
|
|
892
892
|
- **Factory pattern**: `setEditorComponent` receives a factory function that gets `tui`, `theme`, and `keybindings`
|
|
893
893
|
- **Pass `undefined`** to restore the default editor: `ctx.ui.setEditorComponent(undefined)`
|
|
894
894
|
|
|
895
|
-
**Examples:** [modal-editor.ts](
|
|
895
|
+
**Examples:** [modal-editor.ts](https://github.com/flora131/atomic/blob/main/packages/coding-agent/examples/extensions/modal-editor.ts)
|
|
896
896
|
|
|
897
897
|
## Key Rules
|
|
898
898
|
|
|
@@ -908,12 +908,12 @@ export default function (pi: ExtensionAPI) {
|
|
|
908
908
|
|
|
909
909
|
## Examples
|
|
910
910
|
|
|
911
|
-
- **Selection UI**: [examples/extensions/preset.ts](
|
|
912
|
-
- **Async with cancel**: [examples/extensions/qna.ts](
|
|
913
|
-
- **Settings toggles**: [examples/extensions/tools.ts](
|
|
914
|
-
- **Status indicators**: [examples/extensions/plan-mode.ts](
|
|
915
|
-
- **Working indicator**: [examples/extensions/working-indicator.ts](
|
|
916
|
-
- **Custom footer**: [examples/extensions/custom-footer.ts](
|
|
917
|
-
- **Custom editor**: [examples/extensions/modal-editor.ts](
|
|
918
|
-
- **Snake game**: [examples/extensions/snake.ts](
|
|
919
|
-
- **Custom tool rendering**: [examples/extensions/todo.ts](
|
|
911
|
+
- **Selection UI**: [examples/extensions/preset.ts](https://github.com/flora131/atomic/blob/main/packages/coding-agent/examples/extensions/preset.ts) - SelectList with DynamicBorder framing
|
|
912
|
+
- **Async with cancel**: [examples/extensions/qna.ts](https://github.com/flora131/atomic/blob/main/packages/coding-agent/examples/extensions/qna.ts) - BorderedLoader for LLM calls
|
|
913
|
+
- **Settings toggles**: [examples/extensions/tools.ts](https://github.com/flora131/atomic/blob/main/packages/coding-agent/examples/extensions/tools.ts) - SettingsList for tool enable/disable
|
|
914
|
+
- **Status indicators**: [examples/extensions/plan-mode/index.ts](https://github.com/flora131/atomic/blob/main/packages/coding-agent/examples/extensions/plan-mode/index.ts) - setStatus and setWidget
|
|
915
|
+
- **Working indicator**: [examples/extensions/working-indicator.ts](https://github.com/flora131/atomic/blob/main/packages/coding-agent/examples/extensions/working-indicator.ts) - setWorkingIndicator
|
|
916
|
+
- **Custom footer**: [examples/extensions/custom-footer.ts](https://github.com/flora131/atomic/blob/main/packages/coding-agent/examples/extensions/custom-footer.ts) - setFooter with stats
|
|
917
|
+
- **Custom editor**: [examples/extensions/modal-editor.ts](https://github.com/flora131/atomic/blob/main/packages/coding-agent/examples/extensions/modal-editor.ts) - Vim-like modal editing
|
|
918
|
+
- **Snake game**: [examples/extensions/snake.ts](https://github.com/flora131/atomic/blob/main/packages/coding-agent/examples/extensions/snake.ts) - Full game with keyboard input, game loop
|
|
919
|
+
- **Custom tool rendering**: [examples/extensions/todo.ts](https://github.com/flora131/atomic/blob/main/packages/coding-agent/examples/extensions/todo.ts) - renderCall and renderResult
|
package/docs/usage.md
CHANGED
|
@@ -4,7 +4,7 @@ This page collects day-to-day usage details that do not fit on the quickstart pa
|
|
|
4
4
|
|
|
5
5
|
## Interactive Mode
|
|
6
6
|
|
|
7
|
-
<p align="center"><img src="images/interactive-mode.png" alt="Interactive Mode" width="600"
|
|
7
|
+
<p align="center"><img src="images/interactive-mode.png" alt="Interactive Mode" width="600" /></p>
|
|
8
8
|
|
|
9
9
|
The interface has four main areas:
|
|
10
10
|
|