@bastani/atomic 0.9.11-alpha.1 → 0.9.11-alpha.3
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 +52 -0
- package/dist/builtin/cursor/package.json +3 -3
- package/dist/builtin/intercom/package.json +2 -2
- package/dist/builtin/mcp/package.json +3 -3
- package/dist/builtin/subagents/CHANGELOG.md +6 -0
- package/dist/builtin/subagents/package.json +4 -4
- package/dist/builtin/subagents/src/runs/background/notify.ts +3 -1
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-chain.ts +5 -2
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel.ts +2 -1
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-single.ts +5 -2
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-status.ts +34 -0
- package/dist/builtin/web-access/package.json +2 -2
- package/dist/builtin/workflows/CHANGELOG.md +6 -0
- package/dist/builtin/workflows/package.json +2 -2
- package/dist/builtin/workflows/src/durable/child-primitive.ts +3 -0
- package/dist/builtin/workflows/src/durable/completed-catalog.ts +182 -33
- package/dist/builtin/workflows/src/durable/completed-inspection.ts +9 -4
- package/dist/builtin/workflows/src/durable/dbos-envelope.ts +31 -8
- package/dist/builtin/workflows/src/durable/resume-runtime.ts +6 -2
- package/dist/builtin/workflows/src/durable/stage-primitive.ts +48 -10
- package/dist/builtin/workflows/src/durable/types.ts +11 -0
- package/dist/builtin/workflows/src/engine/run-durable-stage-session.ts +9 -9
- package/dist/builtin/workflows/src/engine/run-durable-topology.ts +89 -0
- package/dist/builtin/workflows/src/engine/run.ts +18 -16
- package/dist/builtin/workflows/src/extension/runtime-durable-resume.ts +3 -0
- package/dist/builtin/workflows/src/extension/ui-surface.ts +4 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-control.ts +3 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-factory.ts +6 -3
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-types.ts +2 -2
- package/dist/builtin/workflows/src/runs/foreground/executor-types.ts +4 -1
- package/dist/builtin/workflows/src/tui/host-input-form.ts +1 -1
- package/dist/builtin/workflows/src/tui/workflow-resume-selector.ts +2 -3
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +4 -2
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/config-selector.d.ts +4 -2
- package/dist/cli/config-selector.d.ts.map +1 -1
- package/dist/cli/config-selector.js +1 -1
- package/dist/cli/config-selector.js.map +1 -1
- package/dist/cli/startup-ui.d.ts +3 -0
- package/dist/cli/startup-ui.d.ts.map +1 -1
- package/dist/cli/startup-ui.js +50 -1
- package/dist/cli/startup-ui.js.map +1 -1
- package/dist/config-command-parser.d.ts +9 -0
- package/dist/config-command-parser.d.ts.map +1 -0
- package/dist/config-command-parser.js +22 -0
- package/dist/config-command-parser.js.map +1 -0
- package/dist/config-self-update.d.ts +6 -2
- package/dist/config-self-update.d.ts.map +1 -1
- package/dist/config-self-update.js +17 -10
- package/dist/config-self-update.js.map +1 -1
- package/dist/config.d.ts +3 -3
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +4 -4
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-compaction.js +7 -1
- package/dist/core/agent-session-compaction.js.map +1 -1
- package/dist/core/agent-session-export.d.ts.map +1 -1
- package/dist/core/agent-session-export.js +32 -25
- package/dist/core/agent-session-export.js.map +1 -1
- package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
- package/dist/core/agent-session-extension-bindings.js +9 -3
- package/dist/core/agent-session-extension-bindings.js.map +1 -1
- package/dist/core/agent-session-prompt.d.ts.map +1 -1
- package/dist/core/agent-session-prompt.js +5 -0
- package/dist/core/agent-session-prompt.js.map +1 -1
- package/dist/core/agent-session-services.d.ts +2 -0
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +11 -5
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session-tree.d.ts.map +1 -1
- package/dist/core/agent-session-tree.js +7 -2
- package/dist/core/agent-session-tree.js.map +1 -1
- package/dist/core/agent-session-types.d.ts +20 -0
- package/dist/core/agent-session-types.d.ts.map +1 -1
- package/dist/core/agent-session-types.js.map +1 -1
- package/dist/core/auth-storage.d.ts +6 -2
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +5 -1
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/cache-stats.d.ts +25 -0
- package/dist/core/cache-stats.d.ts.map +1 -0
- package/dist/core/cache-stats.js +68 -0
- package/dist/core/cache-stats.js.map +1 -0
- package/dist/core/compaction/branch-summarization.d.ts +7 -2
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
- package/dist/core/compaction/branch-summarization.js +8 -8
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/compaction/compaction-runner.d.ts +3 -1
- package/dist/core/compaction/compaction-runner.d.ts.map +1 -1
- package/dist/core/compaction/compaction-runner.js +6 -1
- package/dist/core/compaction/compaction-runner.js.map +1 -1
- package/dist/core/compaction/range-planner.d.ts +3 -0
- package/dist/core/compaction/range-planner.d.ts.map +1 -1
- package/dist/core/compaction/range-planner.js +2 -1
- package/dist/core/compaction/range-planner.js.map +1 -1
- package/dist/core/extensions/agent-events.d.ts +10 -0
- package/dist/core/extensions/agent-events.d.ts.map +1 -1
- package/dist/core/extensions/agent-events.js.map +1 -1
- package/dist/core/extensions/api-types.d.ts +8 -2
- package/dist/core/extensions/api-types.d.ts.map +1 -1
- package/dist/core/extensions/api-types.js.map +1 -1
- package/dist/core/extensions/event-types.d.ts +2 -2
- package/dist/core/extensions/event-types.d.ts.map +1 -1
- package/dist/core/extensions/event-types.js.map +1 -1
- 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-api.d.ts.map +1 -1
- package/dist/core/extensions/loader-api.js +13 -2
- package/dist/core/extensions/loader-api.js.map +1 -1
- package/dist/core/extensions/loader-core.d.ts.map +1 -1
- package/dist/core/extensions/loader-core.js +1 -0
- package/dist/core/extensions/loader-core.js.map +1 -1
- package/dist/core/extensions/loader-runtime.d.ts.map +1 -1
- package/dist/core/extensions/loader-runtime.js +15 -7
- package/dist/core/extensions/loader-runtime.js.map +1 -1
- package/dist/core/extensions/message-types.d.ts +5 -0
- package/dist/core/extensions/message-types.d.ts.map +1 -1
- package/dist/core/extensions/message-types.js.map +1 -1
- package/dist/core/extensions/provider-types.d.ts +46 -0
- package/dist/core/extensions/provider-types.d.ts.map +1 -1
- package/dist/core/extensions/provider-types.js.map +1 -1
- package/dist/core/extensions/runner-registries.d.ts +2 -1
- package/dist/core/extensions/runner-registries.d.ts.map +1 -1
- package/dist/core/extensions/runner-registries.js +8 -0
- package/dist/core/extensions/runner-registries.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +5 -2
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +35 -13
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/runtime-types.d.ts +8 -2
- package/dist/core/extensions/runtime-types.d.ts.map +1 -1
- package/dist/core/extensions/runtime-types.js.map +1 -1
- package/dist/core/extensions/ui-types.d.ts +4 -0
- package/dist/core/extensions/ui-types.d.ts.map +1 -1
- package/dist/core/extensions/ui-types.js.map +1 -1
- package/dist/core/http-dispatcher.d.ts +1 -0
- package/dist/core/http-dispatcher.d.ts.map +1 -1
- package/dist/core/http-dispatcher.js +16 -2
- package/dist/core/http-dispatcher.js.map +1 -1
- package/dist/core/keybindings.d.ts +6 -1
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +3 -1
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/model-registry-auth.d.ts +2 -0
- package/dist/core/model-registry-auth.d.ts.map +1 -1
- package/dist/core/model-registry-auth.js +18 -1
- package/dist/core/model-registry-auth.js.map +1 -1
- package/dist/core/model-registry-custom-loader.d.ts.map +1 -1
- package/dist/core/model-registry-custom-loader.js +14 -2
- package/dist/core/model-registry-custom-loader.js.map +1 -1
- package/dist/core/model-registry-dynamic.js +2 -2
- package/dist/core/model-registry-dynamic.js.map +1 -1
- package/dist/core/model-registry-loader.d.ts.map +1 -1
- package/dist/core/model-registry-loader.js +2 -1
- package/dist/core/model-registry-loader.js.map +1 -1
- package/dist/core/model-registry-schemas.d.ts +17 -0
- package/dist/core/model-registry-schemas.d.ts.map +1 -1
- package/dist/core/model-registry-schemas.js +2 -0
- package/dist/core/model-registry-schemas.js.map +1 -1
- package/dist/core/model-registry-types.d.ts +10 -1
- package/dist/core/model-registry-types.d.ts.map +1 -1
- package/dist/core/model-registry-types.js.map +1 -1
- package/dist/core/model-registry.d.ts +26 -36
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +73 -68
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver-defaults.d.ts.map +1 -1
- package/dist/core/model-resolver-defaults.js +5 -0
- package/dist/core/model-resolver-defaults.js.map +1 -1
- package/dist/core/model-runtime.d.ts +52 -0
- package/dist/core/model-runtime.d.ts.map +1 -0
- package/dist/core/model-runtime.js +120 -0
- package/dist/core/model-runtime.js.map +1 -0
- package/dist/core/oauth-provider-bridge.d.ts +3 -1
- package/dist/core/oauth-provider-bridge.d.ts.map +1 -1
- package/dist/core/oauth-provider-bridge.js +6 -4
- package/dist/core/oauth-provider-bridge.js.map +1 -1
- package/dist/core/package-manager-resolver.js +22 -11
- package/dist/core/package-manager-resolver.js.map +1 -1
- package/dist/core/package-manager-resource-collector.d.ts.map +1 -1
- package/dist/core/package-manager-resource-collector.js +8 -2
- package/dist/core/package-manager-resource-collector.js.map +1 -1
- package/dist/core/package-manager-resource-patterns.d.ts +1 -0
- package/dist/core/package-manager-resource-patterns.d.ts.map +1 -1
- package/dist/core/package-manager-resource-patterns.js +15 -0
- package/dist/core/package-manager-resource-patterns.js.map +1 -1
- package/dist/core/package-manager-source.d.ts.map +1 -1
- package/dist/core/package-manager-source.js +15 -8
- package/dist/core/package-manager-source.js.map +1 -1
- package/dist/core/package-manager-types.d.ts +1 -0
- package/dist/core/package-manager-types.d.ts.map +1 -1
- package/dist/core/package-manager-types.js.map +1 -1
- package/dist/core/prompt-templates.d.ts +1 -0
- package/dist/core/prompt-templates.d.ts.map +1 -1
- package/dist/core/prompt-templates.js +6 -4
- package/dist/core/prompt-templates.js.map +1 -1
- package/dist/core/provider-display-names.d.ts.map +1 -1
- package/dist/core/provider-display-names.js +4 -0
- package/dist/core/provider-display-names.js.map +1 -1
- package/dist/core/remote-catalog-provider.d.ts +1 -1
- package/dist/core/remote-catalog-provider.d.ts.map +1 -1
- package/dist/core/remote-catalog-provider.js +25 -6
- package/dist/core/remote-catalog-provider.js.map +1 -1
- package/dist/core/resource-loader-core.d.ts.map +1 -1
- package/dist/core/resource-loader-core.js.map +1 -1
- package/dist/core/resource-loader-extensions.d.ts.map +1 -1
- package/dist/core/resource-loader-extensions.js +5 -2
- package/dist/core/resource-loader-extensions.js.map +1 -1
- package/dist/core/resource-loader-helpers.d.ts.map +1 -1
- package/dist/core/resource-loader-helpers.js +1 -0
- package/dist/core/resource-loader-helpers.js.map +1 -1
- package/dist/core/resource-loader-internals.d.ts +2 -2
- package/dist/core/resource-loader-internals.d.ts.map +1 -1
- package/dist/core/resource-loader-internals.js.map +1 -1
- package/dist/core/resource-loader-types.d.ts +3 -3
- package/dist/core/resource-loader-types.d.ts.map +1 -1
- package/dist/core/resource-loader-types.js.map +1 -1
- package/dist/core/sdk-exports.d.ts +1 -1
- package/dist/core/sdk-exports.d.ts.map +1 -1
- package/dist/core/sdk-exports.js.map +1 -1
- package/dist/core/sdk-types.d.ts +3 -0
- package/dist/core/sdk-types.d.ts.map +1 -1
- package/dist/core/sdk-types.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +10 -3
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager-core.d.ts +2 -1
- package/dist/core/session-manager-core.d.ts.map +1 -1
- package/dist/core/session-manager-core.js +9 -6
- package/dist/core/session-manager-core.js.map +1 -1
- package/dist/core/session-manager-entries.d.ts +2 -2
- package/dist/core/session-manager-entries.d.ts.map +1 -1
- package/dist/core/session-manager-entries.js +2 -1
- package/dist/core/session-manager-entries.js.map +1 -1
- package/dist/core/session-manager-history.d.ts +5 -0
- package/dist/core/session-manager-history.d.ts.map +1 -1
- package/dist/core/session-manager-history.js +33 -0
- package/dist/core/session-manager-history.js.map +1 -1
- package/dist/core/session-manager-types.d.ts +4 -2
- package/dist/core/session-manager-types.d.ts.map +1 -1
- package/dist/core/session-manager-types.js.map +1 -1
- package/dist/core/session-manager-validation.d.ts.map +1 -1
- package/dist/core/session-manager-validation.js +3 -16
- package/dist/core/session-manager-validation.js.map +1 -1
- package/dist/core/session-manager.d.ts +1 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +1 -1
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-manager-basic-accessors.d.ts +7 -0
- package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
- package/dist/core/settings-manager-basic-accessors.js +35 -0
- package/dist/core/settings-manager-basic-accessors.js.map +1 -1
- package/dist/core/settings-manager-resource-accessors.d.ts +3 -0
- package/dist/core/settings-manager-resource-accessors.d.ts.map +1 -1
- package/dist/core/settings-manager-resource-accessors.js +16 -0
- package/dist/core/settings-manager-resource-accessors.js.map +1 -1
- package/dist/core/settings-types.d.ts +8 -2
- package/dist/core/settings-types.d.ts.map +1 -1
- package/dist/core/settings-types.js.map +1 -1
- package/dist/core/slash-commands.d.ts +1 -0
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +1 -1
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/summarization-retry.d.ts +11 -0
- package/dist/core/summarization-retry.d.ts.map +1 -0
- package/dist/core/summarization-retry.js +21 -0
- package/dist/core/summarization-retry.js.map +1 -0
- package/dist/core/tools/read.js +1 -1
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/usage-totals.d.ts +18 -0
- package/dist/core/usage-totals.d.ts.map +1 -0
- package/dist/core/usage-totals.js +40 -0
- package/dist/core/usage-totals.js.map +1 -0
- package/dist/extensions/index.d.ts +3 -0
- package/dist/extensions/index.d.ts.map +1 -0
- package/dist/extensions/index.js +5 -0
- package/dist/extensions/index.js.map +1 -0
- package/dist/extensions/llama/client.d.ts +61 -0
- package/dist/extensions/llama/client.d.ts.map +1 -0
- package/dist/extensions/llama/client.js +300 -0
- package/dist/extensions/llama/client.js.map +1 -0
- package/dist/extensions/llama/huggingface-ui.d.ts +33 -0
- package/dist/extensions/llama/huggingface-ui.d.ts.map +1 -0
- package/dist/extensions/llama/huggingface-ui.js +166 -0
- package/dist/extensions/llama/huggingface-ui.js.map +1 -0
- package/dist/extensions/llama/huggingface.d.ts +23 -0
- package/dist/extensions/llama/huggingface.d.ts.map +1 -0
- package/dist/extensions/llama/huggingface.js +139 -0
- package/dist/extensions/llama/huggingface.js.map +1 -0
- package/dist/extensions/llama/index.d.ts +3 -0
- package/dist/extensions/llama/index.d.ts.map +1 -0
- package/dist/extensions/llama/index.js +208 -0
- package/dist/extensions/llama/index.js.map +1 -0
- package/dist/extensions/llama/provider.d.ts +11 -0
- package/dist/extensions/llama/provider.d.ts.map +1 -0
- package/dist/extensions/llama/provider.js +93 -0
- package/dist/extensions/llama/provider.js.map +1 -0
- package/dist/extensions/llama/ui.d.ts +42 -0
- package/dist/extensions/llama/ui.d.ts.map +1 -0
- package/dist/extensions/llama/ui.js +237 -0
- package/dist/extensions/llama/ui.js.map +1 -0
- package/dist/index-extensions.d.ts +1 -1
- package/dist/index-extensions.d.ts.map +1 -1
- package/dist/index-extensions.js.map +1 -1
- package/dist/index.d.ts +5 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/main-first-time-setup.d.ts +6 -0
- package/dist/main-first-time-setup.d.ts.map +1 -0
- package/dist/main-first-time-setup.js +10 -0
- package/dist/main-first-time-setup.js.map +1 -0
- package/dist/main-types.d.ts +2 -2
- package/dist/main-types.d.ts.map +1 -1
- package/dist/main-types.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +19 -7
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/chat-input-actions.d.ts.map +1 -1
- package/dist/modes/interactive/chat-input-actions.js +14 -2
- package/dist/modes/interactive/chat-input-actions.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-events.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-events.js +16 -0
- package/dist/modes/interactive/components/chat-session-host-events.js.map +1 -1
- package/dist/modes/interactive/components/config-selector-list.d.ts +6 -6
- package/dist/modes/interactive/components/config-selector-list.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector-list.js +64 -125
- package/dist/modes/interactive/components/config-selector-list.js.map +1 -1
- package/dist/modes/interactive/components/config-selector-project-scope.d.ts +4 -0
- package/dist/modes/interactive/components/config-selector-project-scope.d.ts.map +1 -0
- package/dist/modes/interactive/components/config-selector-project-scope.js +61 -0
- package/dist/modes/interactive/components/config-selector-project-scope.js.map +1 -0
- package/dist/modes/interactive/components/config-selector.d.ts +8 -5
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector.js +46 -22
- package/dist/modes/interactive/components/config-selector.js.map +1 -1
- package/dist/modes/interactive/components/custom-entry.d.ts +16 -0
- package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -0
- package/dist/modes/interactive/components/custom-entry.js +45 -0
- package/dist/modes/interactive/components/custom-entry.js.map +1 -0
- package/dist/modes/interactive/components/first-time-setup.d.ts +24 -0
- package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -0
- package/dist/modes/interactive/components/first-time-setup.js +69 -0
- package/dist/modes/interactive/components/first-time-setup.js.map +1 -0
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +48 -26
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/host-input-form.d.ts +2 -0
- package/dist/modes/interactive/components/host-input-form.d.ts.map +1 -1
- package/dist/modes/interactive/components/host-input-form.js +6 -3
- package/dist/modes/interactive/components/host-input-form.js.map +1 -1
- package/dist/modes/interactive/components/idle-status.d.ts +8 -0
- package/dist/modes/interactive/components/idle-status.d.ts.map +1 -0
- package/dist/modes/interactive/components/idle-status.js +13 -0
- package/dist/modes/interactive/components/idle-status.js.map +1 -0
- package/dist/modes/interactive/components/index.d.ts +3 -0
- package/dist/modes/interactive/components/index.d.ts.map +1 -1
- package/dist/modes/interactive/components/index.js +3 -0
- package/dist/modes/interactive/components/index.js.map +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts +5 -5
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/dist/modes/interactive/components/login-dialog.js +14 -6
- package/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.d.ts +1 -1
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.js +10 -6
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-handlers.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-handlers.js +6 -0
- package/dist/modes/interactive/components/settings-selector-handlers.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-items.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-items.js +14 -0
- package/dist/modes/interactive/components/settings-selector-items.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-types.d.ts +4 -0
- package/dist/modes/interactive/components/settings-selector-types.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-types.js.map +1 -1
- package/dist/modes/interactive/interactive-agent-events.js +27 -0
- package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
- package/dist/modes/interactive/interactive-auth-login.js +17 -8
- package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
- package/dist/modes/interactive/interactive-auth-routing.d.ts +2 -0
- package/dist/modes/interactive/interactive-auth-routing.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-auth-routing.js +88 -40
- package/dist/modes/interactive/interactive-auth-routing.js.map +1 -1
- package/dist/modes/interactive/interactive-autocomplete.js +6 -0
- package/dist/modes/interactive/interactive-autocomplete.js.map +1 -1
- package/dist/modes/interactive/interactive-extension-runtime.js +4 -0
- package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -1
- package/dist/modes/interactive/interactive-global-clear.d.ts +10 -2
- package/dist/modes/interactive/interactive-global-clear.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-global-clear.js +3 -1
- package/dist/modes/interactive/interactive-global-clear.js.map +1 -1
- package/dist/modes/interactive/interactive-input-handling.js +6 -4
- package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-helpers.d.ts +2 -1
- package/dist/modes/interactive/interactive-mode-helpers.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-helpers.js +6 -10
- package/dist/modes/interactive/interactive-mode-helpers.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-surface.d.ts +11 -2
- package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
- package/dist/modes/interactive/interactive-model-catalog-startup.d.ts +13 -0
- package/dist/modes/interactive/interactive-model-catalog-startup.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-model-catalog-startup.js +24 -0
- package/dist/modes/interactive/interactive-model-catalog-startup.js.map +1 -0
- package/dist/modes/interactive/interactive-model-routing.js +4 -3
- package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
- package/dist/modes/interactive/interactive-queueing.js +3 -2
- package/dist/modes/interactive/interactive-queueing.js.map +1 -1
- package/dist/modes/interactive/interactive-render-chat.js +69 -12
- package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
- package/dist/modes/interactive/interactive-resource-rendering.js +1 -1
- package/dist/modes/interactive/interactive-resource-rendering.js.map +1 -1
- package/dist/modes/interactive/interactive-selectors.js +10 -0
- package/dist/modes/interactive/interactive-selectors.js.map +1 -1
- package/dist/modes/interactive/interactive-session-routing.js +3 -0
- package/dist/modes/interactive/interactive-session-routing.js.map +1 -1
- package/dist/modes/interactive/interactive-slash-commands.js +14 -0
- package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
- package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-startup.js +4 -7
- package/dist/modes/interactive/interactive-startup.js.map +1 -1
- package/dist/modes/interactive/interactive-summarization-retry-events.d.ts +8 -0
- package/dist/modes/interactive/interactive-summarization-retry-events.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-summarization-retry-events.js +40 -0
- package/dist/modes/interactive/interactive-summarization-retry-events.js.map +1 -0
- package/dist/modes/interactive/login-provider-options.d.ts +21 -0
- package/dist/modes/interactive/login-provider-options.d.ts.map +1 -0
- package/dist/modes/interactive/login-provider-options.js +51 -0
- package/dist/modes/interactive/login-provider-options.js.map +1 -0
- package/dist/modes/interactive-engine/engine-input-form.d.ts +1 -1
- package/dist/modes/interactive-engine/engine-input-form.d.ts.map +1 -1
- package/dist/modes/interactive-engine/engine-input-form.js +10 -2
- package/dist/modes/interactive-engine/engine-input-form.js.map +1 -1
- package/dist/modes/interactive-engine/input-form-host.d.ts.map +1 -1
- package/dist/modes/interactive-engine/input-form-host.js +7 -2
- package/dist/modes/interactive-engine/input-form-host.js.map +1 -1
- package/dist/modes/interactive-engine/isolated-runtime.js +1 -1
- package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
- package/dist/modes/interactive-engine/protocol.d.ts +5 -0
- package/dist/modes/interactive-engine/protocol.d.ts.map +1 -1
- package/dist/modes/interactive-engine/protocol.js +9 -1
- package/dist/modes/interactive-engine/protocol.js.map +1 -1
- package/dist/modes/interactive-engine/remote-model-catalog.d.ts +2 -0
- package/dist/modes/interactive-engine/remote-model-catalog.d.ts.map +1 -1
- package/dist/modes/interactive-engine/remote-model-catalog.js +33 -0
- package/dist/modes/interactive-engine/remote-model-catalog.js.map +1 -1
- package/dist/modes/rpc/rpc-client-api.d.ts +4 -1
- package/dist/modes/rpc/rpc-client-api.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client-api.js +18 -0
- package/dist/modes/rpc/rpc-client-api.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +1 -0
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-command-handler.d.ts +5 -1
- package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-command-handler.js +67 -2
- package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
- package/dist/modes/rpc/rpc-input-scheduler.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-input-scheduler.js +1 -0
- package/dist/modes/rpc/rpc-input-scheduler.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +1 -0
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +42 -0
- 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 +3 -3
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +55 -51
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/self-update-plan.d.ts +12 -0
- package/dist/self-update-plan.d.ts.map +1 -0
- package/dist/self-update-plan.js +42 -0
- package/dist/self-update-plan.js.map +1 -0
- package/dist/utils/clipboard-native.d.ts +1 -0
- package/dist/utils/clipboard-native.d.ts.map +1 -1
- package/dist/utils/clipboard-native.js.map +1 -1
- package/dist/utils/clipboard.d.ts +3 -0
- package/dist/utils/clipboard.d.ts.map +1 -1
- package/dist/utils/clipboard.js +10 -0
- package/dist/utils/clipboard.js.map +1 -1
- package/dist/utils/version-check.d.ts +1 -0
- package/dist/utils/version-check.d.ts.map +1 -1
- package/dist/utils/version-check.js +3 -3
- package/dist/utils/version-check.js.map +1 -1
- package/docs/docs.json +2 -1
- package/docs/extensions.md +59 -7
- package/docs/json.md +7 -1
- package/docs/keybindings.md +3 -0
- package/docs/llama-cpp.md +70 -0
- package/docs/models.md +8 -3
- package/docs/packages.md +4 -2
- package/docs/prompt-templates.md +1 -0
- package/docs/providers.md +41 -3
- package/docs/rpc.md +49 -0
- package/docs/sdk.md +21 -0
- package/docs/settings.md +19 -3
- package/docs/tui.md +2 -2
- package/docs/workflows.md +6 -6
- package/examples/extensions/README.md +1 -1
- package/examples/extensions/sandbox/package-lock.json +3 -3
- package/npm-shrinkwrap.json +36 -36
- package/package.json +5 -5
package/docs/extensions.md
CHANGED
|
@@ -573,15 +573,17 @@ The `systemPromptOptions` field gives extensions access to the same structured d
|
|
|
573
573
|
|
|
574
574
|
Inside `before_agent_start`, `event.systemPrompt` and `ctx.getSystemPrompt()` both reflect the chained system prompt as of the current handler. Later `before_agent_start` handlers can still modify it again.
|
|
575
575
|
|
|
576
|
-
#### agent_start / agent_end
|
|
576
|
+
#### agent_start / agent_end / agent_settled
|
|
577
577
|
|
|
578
|
-
|
|
578
|
+
`agent_start` begins a low-level run. `agent_end` fires when that run ends, but Atomic may still retry, compact and retry, or deliver queued follow-ups. Use `agent_settled` when a status integration needs to know Atomic has no automatic continuation left.
|
|
579
579
|
|
|
580
580
|
```typescript
|
|
581
581
|
pi.on("agent_start", async (_event, ctx) => {});
|
|
582
|
-
|
|
583
582
|
pi.on("agent_end", async (event, ctx) => {
|
|
584
|
-
// event.messages - messages from this
|
|
583
|
+
// event.messages - messages from this low-level run
|
|
584
|
+
});
|
|
585
|
+
pi.on("agent_settled", async (_event, ctx) => {
|
|
586
|
+
// ctx.isIdle() is true unless another extension started a run.
|
|
585
587
|
});
|
|
586
588
|
```
|
|
587
589
|
|
|
@@ -671,6 +673,17 @@ pi.on("context", async (event, ctx) => {
|
|
|
671
673
|
});
|
|
672
674
|
```
|
|
673
675
|
|
|
676
|
+
#### before_provider_headers
|
|
677
|
+
|
|
678
|
+
Fires after outgoing HTTP headers are assembled. Mutate `event.headers` to add, override, or remove headers. The event also identifies the provider and model.
|
|
679
|
+
|
|
680
|
+
```typescript
|
|
681
|
+
pi.on("before_provider_headers", (event, ctx) => {
|
|
682
|
+
event.headers["x-session-id"] = ctx.sessionManager.getSessionId();
|
|
683
|
+
delete event.headers["x-remove-me"];
|
|
684
|
+
});
|
|
685
|
+
```
|
|
686
|
+
|
|
674
687
|
#### before_provider_request
|
|
675
688
|
|
|
676
689
|
Fired after the provider-specific payload is built, right before the request is sent. Handlers run in extension load order. Returning `undefined` keeps the payload unchanged. Returning any other value replaces the payload for later handlers and for the actual request.
|
|
@@ -1471,6 +1484,21 @@ pi.on("session_start", async (_event, ctx) => {
|
|
|
1471
1484
|
});
|
|
1472
1485
|
```
|
|
1473
1486
|
|
|
1487
|
+
Appending emits `entry_appended` with the durable entry. This lets extensions react to session entries without polling.
|
|
1488
|
+
|
|
1489
|
+
### pi.registerEntryRenderer(customType, renderer)
|
|
1490
|
+
|
|
1491
|
+
Register a TUI renderer for durable custom entries created by `pi.appendEntry()`. These entries render in the transcript but do not enter model context.
|
|
1492
|
+
|
|
1493
|
+
```typescript
|
|
1494
|
+
import { Text } from "@earendil-works/pi-tui";
|
|
1495
|
+
|
|
1496
|
+
pi.registerEntryRenderer("status-card", (entry, { expanded }, theme) =>
|
|
1497
|
+
new Text(theme.fg("accent", `${expanded ? "Details" : "Status"}: ${JSON.stringify(entry.data)}`), 0, 0)
|
|
1498
|
+
);
|
|
1499
|
+
```
|
|
1500
|
+
|
|
1501
|
+
|
|
1474
1502
|
### pi.setSessionName(name)
|
|
1475
1503
|
|
|
1476
1504
|
Set the session display name (shown in session selector instead of first message).
|
|
@@ -1677,6 +1705,10 @@ pi.events.on("my:event", (data) => { ... });
|
|
|
1677
1705
|
pi.events.emit("my:event", { ... });
|
|
1678
1706
|
```
|
|
1679
1707
|
|
|
1708
|
+
### Native providers
|
|
1709
|
+
|
|
1710
|
+
In addition to `registerProvider(name, config)`, extensions can register a complete native `Provider` from `@earendil-works/pi-ai` with `pi.registerProvider(provider)`. Use the native overload for provider-owned authentication, catalog refresh, and transport behavior; use the config overload for ordinary proxies and custom endpoints.
|
|
1711
|
+
|
|
1680
1712
|
### pi.registerProvider(name, config)
|
|
1681
1713
|
|
|
1682
1714
|
Register or override a model provider dynamically. Useful for proxies, custom endpoints, or team-wide model configurations.
|
|
@@ -1732,6 +1764,25 @@ pi.registerProvider("corporate-ai", {
|
|
|
1732
1764
|
}
|
|
1733
1765
|
}
|
|
1734
1766
|
});
|
|
1767
|
+
|
|
1768
|
+
// Register provider-owned API-key setup for /login
|
|
1769
|
+
pi.registerProvider("local-server", {
|
|
1770
|
+
name: "Local Server",
|
|
1771
|
+
auth: {
|
|
1772
|
+
apiKey: {
|
|
1773
|
+
name: "Local server connection",
|
|
1774
|
+
async login({ signal, prompt }) {
|
|
1775
|
+
const baseUrl = await prompt({
|
|
1776
|
+
type: "text",
|
|
1777
|
+
message: "Server URL",
|
|
1778
|
+
placeholder: "http://localhost:8080"
|
|
1779
|
+
});
|
|
1780
|
+
if (signal.aborted) throw new Error("Login cancelled");
|
|
1781
|
+
return { type: "api_key", env: { LOCAL_SERVER_URL: baseUrl } };
|
|
1782
|
+
}
|
|
1783
|
+
}
|
|
1784
|
+
}
|
|
1785
|
+
});
|
|
1735
1786
|
```
|
|
1736
1787
|
|
|
1737
1788
|
**Config options:**
|
|
@@ -1743,6 +1794,7 @@ pi.registerProvider("corporate-ai", {
|
|
|
1743
1794
|
- `authHeader` - If true, adds `Authorization: Bearer` header automatically.
|
|
1744
1795
|
- `models` - Array of model definitions. If provided, replaces all existing models for this provider. Model definitions can set `baseUrl` to override the provider endpoint for that model.
|
|
1745
1796
|
- `oauth` - OAuth provider config for `/login` support. When provided, the provider appears in the login menu.
|
|
1797
|
+
- `auth.apiKey` - Provider-owned API-key or connection setup for `/login`. Its `name` appears in the provider list and `login({ signal, prompt })` returns the credential Atomic persists. Extension providers registered only in the isolated interactive engine child are synchronized into the host's `/login` list; their login callback and credential-dependent model refresh still execute in the child, while prompts are rendered by the terminal host.
|
|
1746
1798
|
- `streamSimple` - Custom streaming implementation for non-standard APIs.
|
|
1747
1799
|
|
|
1748
1800
|
See [Custom providers](/custom-provider) for advanced topics: custom streaming APIs, OAuth details, model definition reference.
|
|
@@ -2538,8 +2590,8 @@ class VimEditor extends CustomEditor {
|
|
|
2538
2590
|
|
|
2539
2591
|
export default function (pi: ExtensionAPI) {
|
|
2540
2592
|
pi.on("session_start", (_event, ctx) => {
|
|
2541
|
-
ctx.ui.setEditorComponent((
|
|
2542
|
-
new VimEditor(theme, keybindings)
|
|
2593
|
+
ctx.ui.setEditorComponent((tui, theme, keybindings) =>
|
|
2594
|
+
new VimEditor(tui, theme, keybindings)
|
|
2543
2595
|
);
|
|
2544
2596
|
});
|
|
2545
2597
|
}
|
|
@@ -2548,7 +2600,7 @@ export default function (pi: ExtensionAPI) {
|
|
|
2548
2600
|
**Key points:**
|
|
2549
2601
|
- Extend `CustomEditor` (not base `Editor`) to get app keybindings (escape to abort, ctrl+d, model switching)
|
|
2550
2602
|
- Call `super.handleInput(data)` for keys you don't handle
|
|
2551
|
-
- Factory receives `theme
|
|
2603
|
+
- Factory receives `tui`, `theme`, and `keybindings` from the app
|
|
2552
2604
|
- Use `ctx.ui.getEditorComponent()` before `setEditorComponent()` to wrap the previously configured custom editor
|
|
2553
2605
|
- Pass `undefined` to restore default: `ctx.ui.setEditorComponent(undefined)`
|
|
2554
2606
|
|
package/docs/json.md
CHANGED
|
@@ -21,13 +21,19 @@ type AgentSessionEvent =
|
|
|
21
21
|
| { type: "context_window_changed"; contextWindow: number }
|
|
22
22
|
| { type: "compaction_end"; reason: "manual" | "threshold" | "overflow"; result: VerbatimCompactionResult | undefined; aborted: boolean; willRetry: boolean; unresolvedOverflow?: boolean; errorMessage?: string }
|
|
23
23
|
| { type: "auto_retry_start"; attempt: number; maxAttempts: number; delayMs: number; errorMessage: string }
|
|
24
|
-
| { type: "auto_retry_end"; success: boolean; attempt: number; finalError?: string }
|
|
24
|
+
| { type: "auto_retry_end"; success: boolean; attempt: number; finalError?: string }
|
|
25
|
+
| { type: "summarization_retry_scheduled"; attempt: number; maxAttempts: number; delayMs: number; errorMessage: string }
|
|
26
|
+
| { type: "summarization_retry_attempt_start"; source: "branchSummary" }
|
|
27
|
+
| { type: "summarization_retry_attempt_start"; source: "compaction"; reason: "manual" | "threshold" | "overflow" }
|
|
28
|
+
| { type: "summarization_retry_finished" };
|
|
25
29
|
```
|
|
26
30
|
|
|
27
31
|
`queue_update` emits the full pending steering and follow-up queues whenever they change. `session_info_changed`, `model_changed`, `thinking_level_changed`, and `context_window_changed` report interactive session metadata changes. `context_window_changed` carries the active token budget after `AgentSession.setContextWindow()` or branch navigation replay applies a branch-scoped `context_window_change`; branch replay does not add another session journal entry or write settings. `compaction_start` and `compaction_end` cover manual and automatic verbatim line compaction: the model emits deleted ranges and Atomic mechanically reconstructs retained text.
|
|
28
32
|
|
|
29
33
|
For automatic compaction, `compaction_end.willRetry === true` means the agent is retrying the interrupted turn after compaction; `AgentSession.prompt()` waits for that continuation before resolving. This includes overflow recovery and live threshold compaction for retry-worthy interrupted work such as output-token truncation or OpenAI Responses output-budget underflow errors. Generic provider `invalid_request_body` failures still compact with `willRetry: false` when threshold compaction is warranted. If the same-model compact-and-retry overflow path is exhausted, `compaction_end` includes `unresolvedOverflow: true` plus an `errorMessage` so orchestration layers can fall back to another model instead of treating the prompt as successful.
|
|
30
34
|
|
|
35
|
+
Compaction planning and branch summaries reuse the configured retry policy for transient provider failures. Their `summarization_retry_*` events expose scheduling, each restarted request (including whether it belongs to branch summarization or a compaction reason), and retry-loop completion to JSON, RPC, SDK, and interactive consumers.
|
|
36
|
+
|
|
31
37
|
Base events come from `AgentEvent` in `@earendil-works/pi-agent-core` (installed as an Atomic dependency):
|
|
32
38
|
|
|
33
39
|
```typescript
|
package/docs/keybindings.md
CHANGED
|
@@ -88,6 +88,9 @@ Modifier combinations: `ctrl+shift+x`, `alt+ctrl+x`, `ctrl+shift+alt+x`, `ctrl+1
|
|
|
88
88
|
| `app.suspend` | `ctrl+z` (none on Windows) | Suspend to background |
|
|
89
89
|
| `app.editor.external` | `ctrl+g` | Open in external editor (`$VISUAL` or `$EDITOR`) |
|
|
90
90
|
| `app.clipboard.pasteImage` | `ctrl+v` (`alt+v` on Windows) | Paste image from clipboard |
|
|
91
|
+
| `app.message.copy` | `ctrl+x` | Copy the last assistant message (or the selected message in `/tree`) |
|
|
92
|
+
|
|
93
|
+
When `app.clipboard.pasteImage` finds text rather than an image, Atomic inserts that clipboard text into the editor instead of reporting an image-paste failure.
|
|
91
94
|
|
|
92
95
|
### Sessions
|
|
93
96
|
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# llama.cpp
|
|
2
|
+
|
|
3
|
+
Atomic supports the [llama.cpp](https://github.com/ggml-org/llama.cpp) router server. The router discovers multiple GGUF models and loads or unloads them on demand.
|
|
4
|
+
|
|
5
|
+
Use a current llama.cpp build with router support. Follow its [build instructions](https://github.com/ggml-org/llama.cpp/blob/master/docs/build.md) or install a [prebuilt release](https://github.com/ggml-org/llama.cpp/releases).
|
|
6
|
+
|
|
7
|
+
## Start the router
|
|
8
|
+
|
|
9
|
+
Start `llama-server` without `--model` or `-m`; those options start single-model mode instead of router mode.
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
llama-server \
|
|
13
|
+
--models-dir ~/models \
|
|
14
|
+
--no-models-autoload \
|
|
15
|
+
--jinja \
|
|
16
|
+
--host 127.0.0.1 \
|
|
17
|
+
--port 8080 \
|
|
18
|
+
-ngl 999 \
|
|
19
|
+
-c 32768
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
- `--models-dir` discovers local GGUF files.
|
|
23
|
+
- `--no-models-autoload` leaves loading under explicit `/llama` control.
|
|
24
|
+
- `--jinja` enables compatible chat templates and tool calling.
|
|
25
|
+
- `-ngl 999` offloads as many layers as possible to the GPU.
|
|
26
|
+
- `-c 32768` sets each model's context window. Omit it to use the model's native context, which may require substantially more memory.
|
|
27
|
+
|
|
28
|
+
Single-file models can sit directly in the model directory. Put multimodal and multi-shard models in separate subdirectories with their projection or shard files. Restart the router after manually adding files. Per-model context sizes and other options can be set with [model presets](https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md#model-presets).
|
|
29
|
+
|
|
30
|
+
## Configure Atomic
|
|
31
|
+
|
|
32
|
+
Run:
|
|
33
|
+
|
|
34
|
+
```text
|
|
35
|
+
/login llama.cpp
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Enter the router URL and optional API key. The default URL is `http://127.0.0.1:8080`. The same values can be supplied without `/login`:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
export LLAMA_BASE_URL=http://127.0.0.1:8080
|
|
42
|
+
export LLAMA_API_KEY=optional-secret
|
|
43
|
+
atomic
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
If the server requires a key, start `llama-server` with the matching `--api-key`. Keep `--host 127.0.0.1` for local-only access.
|
|
47
|
+
|
|
48
|
+
## Manage models
|
|
49
|
+
|
|
50
|
+
Run `/llama` in interactive mode:
|
|
51
|
+
|
|
52
|
+
- Select an unloaded model to load it, or a loaded model to unload it.
|
|
53
|
+
- Select **Download model…**, search Hugging Face, then choose a repository and quantization. Exact `owner/repository[:quant]` values also work.
|
|
54
|
+
- Press Escape during a load or download to confirm cancellation.
|
|
55
|
+
|
|
56
|
+
Hugging Face search uses `HF_TOKEN` when set, then checks `$HF_TOKEN_PATH`, `$HF_HOME/token`, `$XDG_CACHE_HOME/huggingface/token`, and `~/.cache/huggingface/token`. Unauthenticated search has lower rate limits. Atomic warns before gated downloads and links to the access page. Because llama.cpp performs the download, its process must also have `HF_TOKEN` for gated repositories.
|
|
57
|
+
|
|
58
|
+
Atomic asks before unloading other models, never silently unloads models, and never deletes model files. `/llama` always displays the router's current state because other clients may share it. Only loaded models appear in `/model`; load one first, then select it there. If the router disconnects, choose **Retry** to reconnect and refresh state without replaying the interrupted operation.
|
|
59
|
+
|
|
60
|
+
## Troubleshooting
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
curl http://127.0.0.1:8080/health
|
|
64
|
+
curl http://127.0.0.1:8080/models
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
- **No models in `/llama`:** Check `--models-dir`, the directory layout, and restart the router.
|
|
68
|
+
- **Model missing from `/model`:** Load it with `/llama` first.
|
|
69
|
+
- **Load fails or uses too much memory:** Lower `-c` or unload another model.
|
|
70
|
+
- **Server is not in router mode:** Start it without `--model`, `-m`, or `-hf`.
|
package/docs/models.md
CHANGED
|
@@ -136,18 +136,22 @@ The `baseUrl` is required when adding custom models to the `google-generative-ai
|
|
|
136
136
|
|
|
137
137
|
Set `api` at provider level (default for all models) or model level (override per model).
|
|
138
138
|
|
|
139
|
+
These four values are the generic custom-provider APIs supported by `models.json`. Atomic's installed native provider runtime also implements provider-owned APIs including `mistral-conversations`, `azure-openai-responses`, `openai-codex-responses`, `bedrock-converse-stream`, `google-vertex`, and `pi-messages`; those native APIs are not implied to be stable generic custom-provider contracts.
|
|
140
|
+
|
|
139
141
|
## Provider Configuration
|
|
140
142
|
|
|
141
143
|
| Field | Description |
|
|
142
144
|
| ---------------- | ---------------------------------------------------------------- |
|
|
143
|
-
| `baseUrl` | API endpoint URL
|
|
144
|
-
| `api` | API type (see above)
|
|
145
|
-
| `apiKey` | API key (see value resolution below)
|
|
145
|
+
| `baseUrl` | API endpoint or gateway URL |
|
|
146
|
+
| `api` | Generic custom-provider API type (see above) |
|
|
147
|
+
| `apiKey` | Optional API key (see value resolution below); omit when auth comes from `/login`, `auth.json`, or `--api-key` |
|
|
148
|
+
| `oauth` | Dynamic OAuth provider type. Currently `"radius"`; requires the gateway `baseUrl` |
|
|
146
149
|
| `headers` | Custom headers (see value resolution below) |
|
|
147
150
|
| `authHeader` | Set `true` to add `Authorization: Bearer <apiKey>` automatically |
|
|
148
151
|
| `models` | Array of model configurations |
|
|
149
152
|
| `modelOverrides` | Per-model overrides for matching built-in or extension-registered models on this provider |
|
|
150
153
|
|
|
154
|
+
For a custom Radius gateway, set `"oauth": "radius"` and its `baseUrl`. Atomic uses Radius OAuth credentials and the gateway's dynamic `pi-messages` catalog.
|
|
151
155
|
### Value Resolution
|
|
152
156
|
|
|
153
157
|
The `apiKey` and `headers` fields support three formats:
|
|
@@ -208,6 +212,7 @@ If your command is slow, expensive, rate-limited, or should keep using a previou
|
|
|
208
212
|
| `maxTokens` | No | `16384` | Maximum output tokens |
|
|
209
213
|
| `cost` | No | all zeros | Complete base rates per million tokens plus optional request-wide `tiers` (see below) |
|
|
210
214
|
| `compat` | No | provider `compat` | Provider compatibility overrides. Merged with provider-level `compat` when both are set. |
|
|
215
|
+
| `deferredToolsMode` | No | omitted | Deferred tool-loading protocol; set to `"kimi"` for Kimi-compatible deferred tools |
|
|
211
216
|
|
|
212
217
|
Current behavior:
|
|
213
218
|
- `/model`, `--list-models`, and the interactive footer display entries by model `id`.
|
package/docs/packages.md
CHANGED
|
@@ -47,6 +47,8 @@ atomic update --extension npm:@foo/bar
|
|
|
47
47
|
|
|
48
48
|
These commands manage Atomic packages and `atomic update` can update the Atomic CLI installation. To uninstall Atomic itself, see [Quickstart](/quickstart#uninstall).
|
|
49
49
|
|
|
50
|
+
Self-update resolves an exact advertised package/version target and installs that pinned spec, so the update cannot drift to a newer registry release during installation. Any release note supplied by the update service is shown before installation. Atomic only updates installations it can verify are writable and managed by the detected global package manager; otherwise it prints a manual command. On Windows, loaded native dependencies are temporarily quarantined during replacement and stale quarantine directories are cleaned on later update attempts.
|
|
51
|
+
|
|
50
52
|
By default, `install` and `remove` write to user settings (`~/.atomic/agent/settings.json`). Use `-l` to write to project settings (`.atomic/settings.json`; legacy `.pi/settings.json` is also read) instead. Project settings can be shared with your team, and Atomic installs any missing packages automatically on startup after the project is trusted.
|
|
51
53
|
|
|
52
54
|
To try a package without installing it, use `--extension` or `-e`. This installs to a temporary directory for the current run only:
|
|
@@ -237,11 +239,11 @@ Filter what a package loads using the object form in settings:
|
|
|
237
239
|
|
|
238
240
|
## Enable and Disable Resources
|
|
239
241
|
|
|
240
|
-
Use `atomic config` to enable or disable extensions, skills, prompt templates, and themes
|
|
242
|
+
Use `atomic config` to enable or disable extensions, skills, prompt templates, and themes. It starts in global settings (`~/.atomic/agent/settings.json`); press Tab to switch global/project scope. Use `atomic config -l` to start in project overrides (`.atomic/settings.json`) with inherited global resources dimmed. Workflow package filters can be configured with `workflows` patterns.
|
|
241
243
|
|
|
242
244
|
## Scope and Deduplication
|
|
243
245
|
|
|
244
|
-
Packages can appear in both global and project settings.
|
|
246
|
+
Packages can appear in both global and project settings. The project entry normally wins. A project entry with `autoload: false` instead acts as a delta over the global entry: it starts with no newly auto-discovered resources while explicit include/exclude patterns adjust the inherited package resources. Identity is determined by:
|
|
245
247
|
|
|
246
248
|
- npm: package name
|
|
247
249
|
- git: repository URL without ref
|
package/docs/prompt-templates.md
CHANGED
|
@@ -69,6 +69,7 @@ Templates support positional arguments, defaults, and simple slicing:
|
|
|
69
69
|
- `$1`, `$2`, ... positional args
|
|
70
70
|
- `$@` or `$ARGUMENTS` for all args joined
|
|
71
71
|
- `${1:-default}` uses arg 1 when present/non-empty, otherwise `default`
|
|
72
|
+
- `${@:-default}` or `${ARGUMENTS:-default}` uses all arguments when present/non-empty, otherwise `default`
|
|
72
73
|
- `${@:N}` for args from the Nth position (1-indexed)
|
|
73
74
|
- `${@:N:L}` for `L` args starting at N
|
|
74
75
|
|
package/docs/providers.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Providers
|
|
2
2
|
|
|
3
|
-
Atomic supports subscription-based providers via OAuth and API
|
|
3
|
+
Atomic supports subscription-based providers via OAuth and API-key providers via environment variables or the auth file. Built-in catalogs ship with Atomic; configured and native providers may refresh newer catalogs independently and cache them in `~/.atomic/agent/models-store.json` for offline use.
|
|
4
4
|
|
|
5
5
|
## Table of Contents
|
|
6
6
|
|
|
@@ -8,8 +8,9 @@ Atomic supports subscription-based providers via OAuth and API key providers via
|
|
|
8
8
|
- [API Keys](#api-keys)
|
|
9
9
|
- [Auth File](#auth-file)
|
|
10
10
|
- [Cloud Providers](#cloud-providers)
|
|
11
|
-
- [
|
|
11
|
+
- [llama.cpp](#llamacpp)
|
|
12
12
|
- [Resolution Order](#resolution-order)
|
|
13
|
+
- [Custom Providers](#custom-providers)
|
|
13
14
|
|
|
14
15
|
## Subscriptions
|
|
15
16
|
|
|
@@ -18,8 +19,9 @@ Use `/login` in interactive mode, then select a provider:
|
|
|
18
19
|
- ChatGPT Plus/Pro (Codex)
|
|
19
20
|
- Claude Pro/Max
|
|
20
21
|
- GitHub Copilot
|
|
22
|
+
- xAI (Grok/X subscription)
|
|
23
|
+
- Radius
|
|
21
24
|
- Cursor (experimental)
|
|
22
|
-
|
|
23
25
|
Use `/logout` to clear credentials. Logout immediately invalidates authentication in the active interactive engine and removes the selected provider from both `~/.atomic/agent/auth.json` and any effective legacy `~/.pi/agent/auth.json`, so the provider remains logged out after restart. Environment variables, command-line credentials, and `models.json` configuration cannot be cleared by Atomic; when one of those sources still authenticates the provider, the logout status names the remaining source. Stored tokens auto-refresh when expired.
|
|
24
26
|
|
|
25
27
|
### OpenAI Codex
|
|
@@ -48,6 +50,14 @@ Anthropic subscription auth is active for Claude Pro/Max accounts. Third-party h
|
|
|
48
50
|
- **Gemini models** (`github-copilot/gemini-3.1-pro-preview`, `github-copilot/gemini-3.5-flash`, …) are served through Copilot's CAPI gateway, which re-translates the OpenAI request into Google's GenAI format and enforces Gemini's stricter `FunctionDeclaration` schema (it rejects a tool-parameter `anyOf`/`oneOf` whose branch is a complex object, returning `400 invalid request body`). Atomic automatically sanitizes outbound tool/function JSON Schemas for these models into the supported subset — resolving object/array-bearing unions to their most expressive branch, converting `const`/literal unions to `enum`, collapsing nullable unions to `nullable`, and dropping non-portable keywords such as `additionalProperties`, `patternProperties`, `format`, and numeric/length bounds. Gemini also serializes array/object tool-call **arguments** as flattened indexed keys (`keywords[0]`, `keywords[1]`, …); Atomic reconstructs these back into proper arrays/objects before validation so tool calls (including `structured_output` and MCP tools) don't fail and loop. Both transforms are transparent and scoped to GitHub Copilot Gemini models only; no configuration is required and other providers/models are unaffected.
|
|
49
51
|
- **Claude/Anthropic Messages models** served through GitHub Copilot use Copilot SSE transport. If Copilot cleanly ends a `/v1/messages` stream after Anthropic terminal stop-reason evidence but omits the required `message_stop` event, Atomic adds that one terminal event before provider parsing so the turn can finish normally, including when the final complete SSE frame reaches EOF without a trailing blank-line separator. The repair covers public Copilot hosts and GHE tenant routes such as `copilot-api.<enterprise>.ghe.com`, and is otherwise limited to closed, non-error Copilot Anthropic event streams; malformed, truncated, already well-formed, non-Copilot/look-alike host, non-SSE, Gemini, and OpenAI-style streams continue through the normal parser and retry behavior.
|
|
50
52
|
|
|
53
|
+
### xAI (Grok/X subscription)
|
|
54
|
+
|
|
55
|
+
Run `/login xai`, then select **Use a subscription**. `XAI_API_KEY` remains available through **Use an API key**.
|
|
56
|
+
|
|
57
|
+
### Radius
|
|
58
|
+
|
|
59
|
+
Radius is a dynamic `pi-messages` gateway. `/login radius` stores OAuth tokens in `auth.json`; its model catalog refreshes independently and is cached in `models-store.json`. API-key authentication is also available through `/login radius` or `RADIUS_API_KEY`. Custom Radius gateways can be declared in `models.json` with `"oauth": "radius"` and the gateway `baseUrl`.
|
|
60
|
+
|
|
51
61
|
### Cursor (experimental)
|
|
52
62
|
|
|
53
63
|
Cursor support is bundled as the first-party `@bastani/cursor` extension and appears in `/login` as **Cursor (Experimental)**. It uses Cursor's browser PKCE flow and stores OAuth credentials in `~/.atomic/agent/auth.json`; do not paste Cursor tokens into environment variables, command-line arguments, or custom proxies. Atomic identifies as a Cursor CLI-compatible client against private endpoints; maintainers and users should explicitly accept that this may conflict with Cursor's terms of service, stop working without notice, or affect the Cursor account used to authenticate.
|
|
@@ -100,6 +110,7 @@ After a successful API-key or OAuth login, Atomic refreshes provider credentials
|
|
|
100
110
|
| ZAI Coding Plan (China) | `ZAI_CODING_CN_API_KEY` | `zai-coding-cn` |
|
|
101
111
|
| OpenCode Zen | `OPENCODE_API_KEY` | `opencode` |
|
|
102
112
|
| OpenCode Go | `OPENCODE_API_KEY` | `opencode-go` |
|
|
113
|
+
| Radius | `RADIUS_API_KEY` | `radius` |
|
|
103
114
|
| Hugging Face | `HF_TOKEN` | `huggingface` |
|
|
104
115
|
| Fireworks | `FIREWORKS_API_KEY` | `fireworks` |
|
|
105
116
|
| Together AI | `TOGETHER_API_KEY` | `together` |
|
|
@@ -108,6 +119,8 @@ After a successful API-key or OAuth login, Atomic refreshes provider credentials
|
|
|
108
119
|
| MiniMax (China) | `MINIMAX_CN_API_KEY` | `minimax-cn` |
|
|
109
120
|
| Moonshot AI | `MOONSHOT_API_KEY` | `moonshotai` |
|
|
110
121
|
| Moonshot AI (China) | `MOONSHOT_API_KEY` | `moonshotai-cn` |
|
|
122
|
+
| Qwen Token Plan | `QWEN_TOKEN_PLAN_API_KEY` | `qwen-token-plan` |
|
|
123
|
+
| Qwen Token Plan (China) | `QWEN_TOKEN_PLAN_CN_API_KEY` | `qwen-token-plan-cn` |
|
|
111
124
|
| Xiaomi MiMo | `XIAOMI_API_KEY` | `xiaomi` |
|
|
112
125
|
| Xiaomi MiMo Token Plan (China) | `XIAOMI_TOKEN_PLAN_CN_API_KEY` | `xiaomi-token-plan-cn` |
|
|
113
126
|
| Xiaomi MiMo Token Plan (Amsterdam) | `XIAOMI_TOKEN_PLAN_AMS_API_KEY` | `xiaomi-token-plan-ams` |
|
|
@@ -130,6 +143,8 @@ Store credentials in `~/.atomic/agent/auth.json`:
|
|
|
130
143
|
"opencode": { "type": "api_key", "key": "..." },
|
|
131
144
|
"opencode-go": { "type": "api_key", "key": "..." },
|
|
132
145
|
"together": { "type": "api_key", "key": "..." },
|
|
146
|
+
"qwen-token-plan": { "type": "api_key", "key": "sk-sp-..." },
|
|
147
|
+
"qwen-token-plan-cn": { "type": "api_key", "key": "sk-sp-..." },
|
|
133
148
|
"xiaomi": { "type": "api_key", "key": "..." },
|
|
134
149
|
"xiaomi-token-plan-cn": { "type": "api_key", "key": "..." },
|
|
135
150
|
"xiaomi-token-plan-ams": { "type": "api_key", "key": "..." },
|
|
@@ -139,6 +154,25 @@ Store credentials in `~/.atomic/agent/auth.json`:
|
|
|
139
154
|
|
|
140
155
|
The file is created with `0600` permissions (user read/write only). Auth file credentials take priority over environment variables.
|
|
141
156
|
|
|
157
|
+
API-key credentials may include provider-scoped `env` values. They take precedence over process environment variables while resolving the credential key, provider/model headers, and provider configuration such as Cloudflare account IDs, Azure settings, Vertex project/location, Bedrock settings, cache retention, and `HTTP_PROXY`/`HTTPS_PROXY`:
|
|
158
|
+
|
|
159
|
+
```json
|
|
160
|
+
{
|
|
161
|
+
"cloudflare-ai-gateway": {
|
|
162
|
+
"type": "api_key",
|
|
163
|
+
"key": "$CLOUDFLARE_API_KEY",
|
|
164
|
+
"env": {
|
|
165
|
+
"CLOUDFLARE_API_KEY": "...",
|
|
166
|
+
"CLOUDFLARE_ACCOUNT_ID": "account-id",
|
|
167
|
+
"CLOUDFLARE_GATEWAY_ID": "gateway-id"
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
Use this when Atomic should use provider settings different from the project shell environment.
|
|
174
|
+
|
|
175
|
+
|
|
142
176
|
### Key Resolution
|
|
143
177
|
|
|
144
178
|
The `key` field supports command execution, environment interpolation, and literals:
|
|
@@ -275,6 +309,10 @@ export GOOGLE_CLOUD_LOCATION=us-central1
|
|
|
275
309
|
|
|
276
310
|
Or set `GOOGLE_APPLICATION_CREDENTIALS` to a service account key file.
|
|
277
311
|
|
|
312
|
+
## llama.cpp
|
|
313
|
+
|
|
314
|
+
For router-mode discovery, load/unload management, and Hugging Face downloads with a local llama.cpp server, see [llama.cpp](/llama-cpp). Configure it with `/login llama.cpp` or `LLAMA_BASE_URL` and manage models with `/llama`.
|
|
315
|
+
|
|
278
316
|
## Custom Providers
|
|
279
317
|
|
|
280
318
|
**Via models.json:** Add Ollama, LM Studio, vLLM, or any provider that speaks a supported API (OpenAI Completions, OpenAI Responses, Anthropic Messages, Google Generative AI). See [Custom models](/models).
|
package/docs/rpc.md
CHANGED
|
@@ -401,6 +401,24 @@ Response:
|
|
|
401
401
|
}
|
|
402
402
|
```
|
|
403
403
|
|
|
404
|
+
#### get_available_thinking_levels
|
|
405
|
+
|
|
406
|
+
Return the thinking levels supported by the current model, in cycle order.
|
|
407
|
+
|
|
408
|
+
```json
|
|
409
|
+
{"type": "get_available_thinking_levels"}
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
Response:
|
|
413
|
+
```json
|
|
414
|
+
{
|
|
415
|
+
"type": "response",
|
|
416
|
+
"command": "get_available_thinking_levels",
|
|
417
|
+
"success": true,
|
|
418
|
+
"data": {"levels": ["off", "low", "medium", "high"]}
|
|
419
|
+
}
|
|
420
|
+
```
|
|
421
|
+
|
|
404
422
|
### Queue Modes
|
|
405
423
|
|
|
406
424
|
#### set_steering_mode
|
|
@@ -921,6 +939,9 @@ Events are streamed to stdout as JSON lines during agent operation. Events do NO
|
|
|
921
939
|
| `compaction_end` | Verbatim line compaction completes |
|
|
922
940
|
| `auto_retry_start` | Auto-retry begins (after transient error) |
|
|
923
941
|
| `auto_retry_end` | Auto-retry completes (success or final failure) |
|
|
942
|
+
| `summarization_retry_scheduled` | Retry scheduled for a transient compaction or branch-summary provider error |
|
|
943
|
+
| `summarization_retry_attempt_start` | Retried summarization request starts |
|
|
944
|
+
| `summarization_retry_finished` | Summarization retry loop completes |
|
|
924
945
|
| `extension_error` | Extension threw an error |
|
|
925
946
|
|
|
926
947
|
### agent_start
|
|
@@ -1157,6 +1178,34 @@ On final failure (max retries exceeded):
|
|
|
1157
1178
|
}
|
|
1158
1179
|
```
|
|
1159
1180
|
|
|
1181
|
+
|
|
1182
|
+
### summarization_retry_scheduled / summarization_retry_attempt_start / summarization_retry_finished
|
|
1183
|
+
|
|
1184
|
+
Emitted when compaction planning or branch summarization retries after a transient provider error. These events use the same retry settings as automatic assistant-turn retries.
|
|
1185
|
+
|
|
1186
|
+
```json
|
|
1187
|
+
{
|
|
1188
|
+
"type": "summarization_retry_scheduled",
|
|
1189
|
+
"attempt": 1,
|
|
1190
|
+
"maxAttempts": 3,
|
|
1191
|
+
"delayMs": 2000,
|
|
1192
|
+
"errorMessage": "terminated"
|
|
1193
|
+
}
|
|
1194
|
+
```
|
|
1195
|
+
|
|
1196
|
+
```json
|
|
1197
|
+
{
|
|
1198
|
+
"type": "summarization_retry_attempt_start",
|
|
1199
|
+
"source": "compaction",
|
|
1200
|
+
"reason": "threshold"
|
|
1201
|
+
}
|
|
1202
|
+
```
|
|
1203
|
+
|
|
1204
|
+
For branch summaries, `source` is `"branchSummary"` and no `reason` is present. The loop then emits:
|
|
1205
|
+
|
|
1206
|
+
```json
|
|
1207
|
+
{"type": "summarization_retry_finished"}
|
|
1208
|
+
```
|
|
1160
1209
|
### extension_error
|
|
1161
1210
|
|
|
1162
1211
|
Emitted when an extension throws an error.
|
package/docs/sdk.md
CHANGED
|
@@ -37,6 +37,24 @@ session.subscribe((event) => {
|
|
|
37
37
|
await session.prompt("What files are in the current directory?");
|
|
38
38
|
```
|
|
39
39
|
|
|
40
|
+
`ModelRuntime` is the canonical asynchronous provider runtime when an integration wants provider-owned credentials, dynamic catalogs, and native providers in one object:
|
|
41
|
+
|
|
42
|
+
```typescript
|
|
43
|
+
import { createAgentSession, ModelRuntime, SessionManager } from "@bastani/atomic";
|
|
44
|
+
|
|
45
|
+
const modelRuntime = await ModelRuntime.create();
|
|
46
|
+
const { session } = await createAgentSession({
|
|
47
|
+
sessionManager: SessionManager.inMemory(),
|
|
48
|
+
modelRuntime,
|
|
49
|
+
});
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
`ModelRuntime.create()` accepts custom `authPath`, `modelsPath`, credential storage, and runtime auth overrides. `ModelRegistry` and `AuthStorage` remain available as Atomic's synchronous compatibility facades. Use `readStoredCredential(provider, authPath?)` for a lightweight read of one stored provider credential.
|
|
53
|
+
|
|
54
|
+
Extensions supplied directly to SDK sessions can use the exported `InlineExtension` type. Extension APIs and event types include native `registerProvider(Provider)`, `registerEntryRenderer`, `entry_appended`, `before_provider_headers`, and `agent_settled`.
|
|
55
|
+
|
|
56
|
+
The package root also exports `buildContextEntries`, `sessionEntryToContextMessages`, and `CompactionEntry` for converting durable session branches into model context. The equivalent active-session operation is `sessionManager.buildContextEntries()`.
|
|
57
|
+
|
|
40
58
|
## Installation
|
|
41
59
|
|
|
42
60
|
Install `@bastani/atomic` as a project dependency with npm, pnpm, or Bun:
|
|
@@ -351,6 +369,9 @@ session.subscribe((event) => {
|
|
|
351
369
|
case "compaction_end":
|
|
352
370
|
case "auto_retry_start":
|
|
353
371
|
case "auto_retry_end":
|
|
372
|
+
case "summarization_retry_scheduled":
|
|
373
|
+
case "summarization_retry_attempt_start":
|
|
374
|
+
case "summarization_retry_finished":
|
|
354
375
|
break;
|
|
355
376
|
}
|
|
356
377
|
});
|
package/docs/settings.md
CHANGED
|
@@ -36,6 +36,7 @@ Settings and trust JSON files may start with a UTF-8 BOM, as commonly written by
|
|
|
36
36
|
| `defaultThinkingLevel` | string | - | `"off"`, `"minimal"`, `"low"`, `"medium"`, `"high"`, `"xhigh"`, `"max"`; the active model must support the selected level |
|
|
37
37
|
| `hideThinkingBlock` | boolean | `false` | Hide thinking blocks in output |
|
|
38
38
|
| `thinkingBudgets` | object | - | Custom token budgets per thinking level |
|
|
39
|
+
| `showCacheMissNotices` | boolean | `false` | Show transcript notices for significant prompt-cache misses and their attributed wasted tokens |
|
|
39
40
|
| `fallbackModels` | string[] | - | Ordered main-chat fallback models, written as `"provider/model"` with optional model-supported reasoning suffixes such as `:high`, `:xhigh`, or `:max` |
|
|
40
41
|
|
|
41
42
|
#### thinkingBudgets
|
|
@@ -102,6 +103,8 @@ Use `/fast` in interactive mode to edit these settings. Atomic applies fast mode
|
|
|
102
103
|
| `enableInstallTelemetry` | boolean | `true` | Send an anonymous install/update version ping after first install or changelog-detected updates. This does not control update checks |
|
|
103
104
|
| `firstRunOnboardingStartedVersion` | string | - | Internal first-run onboarding start marker used when no prior Atomic startup state identifies the user as returning |
|
|
104
105
|
| `onboardedVersion` | string | - | Internal one-time first-run onboarding completion marker. Returning-user detection from prior startup state or displaying the first-run workflow-engine explanation sets it |
|
|
106
|
+
| `enableAnalytics` | boolean | `false` | Opt in to analytics during first-run setup |
|
|
107
|
+
| `trackingId` | string | - | Locally generated analytics identifier when analytics is enabled |
|
|
105
108
|
| `doubleEscapeAction` | string | `"tree"` | Action for double-escape: `"tree"`, `"fork"`, or `"none"` |
|
|
106
109
|
| `treeFilterMode` | string | `"default"` | Default filter for `/tree`: `"default"`, `"no-tools"`, `"user-only"`, `"labeled-only"`, `"all"` |
|
|
107
110
|
| `editorPaddingX` | number | `0` | Horizontal padding for input editor (0-3) |
|
|
@@ -116,6 +119,19 @@ Use `/fast` in interactive mode to edit these settings. Atomic applies fast mode
|
|
|
116
119
|
|
|
117
120
|
Set `ATOMIC_SKIP_VERSION_CHECK=1` to disable the Atomic version update check. Use `--offline` or `ATOMIC_OFFLINE=1` to disable all startup network operations described here, including update checks, package update checks, and install/update telemetry. Legacy `PI_*` aliases are also supported for app-specific environment variables.
|
|
118
121
|
|
|
122
|
+
|
|
123
|
+
On a genuine first run, Atomic previews available themes and asks whether to opt into analytics. The choice and locally generated identifier are stored as `enableAnalytics` and `trackingId`; analytics remains off unless explicitly enabled.
|
|
124
|
+
|
|
125
|
+
### Network proxy
|
|
126
|
+
|
|
127
|
+
| Setting | Type | Default | Description |
|
|
128
|
+
|---------|------|---------|-------------|
|
|
129
|
+
| `httpProxy` | string | - | HTTP proxy URL applied as `HTTP_PROXY` and `HTTPS_PROXY`. Global setting only. |
|
|
130
|
+
|
|
131
|
+
```json
|
|
132
|
+
{ "httpProxy": "http://127.0.0.1:7890" }
|
|
133
|
+
```
|
|
134
|
+
|
|
119
135
|
### Warnings
|
|
120
136
|
|
|
121
137
|
| Setting | Type | Default | Description |
|
|
@@ -195,7 +211,7 @@ When a provider requests a retry delay longer than `retry.provider.maxRetryDelay
|
|
|
195
211
|
|
|
196
212
|
| Setting | Type | Default | Description |
|
|
197
213
|
|---------|------|---------|-------------|
|
|
198
|
-
| `httpIdleTimeoutMs` | number | `600000` | HTTP
|
|
214
|
+
| `httpIdleTimeoutMs` | number or string | `600000` | HTTP idle timeout as milliseconds, a duration such as `"30s"`, `"5m"`, or `"1h"`, or `"disabled"`. `0` also disables it. |
|
|
199
215
|
|
|
200
216
|
Atomic applies this timeout to the global HTTP dispatcher used by `fetch` and provider SDK HTTP clients. The default is 600,000 ms (10 minutes), which keeps slow long-context requests working while reclaiming stale idle connections. Atomic does not impose a separate fixed connect-phase timeout; connection failures surface through the provider and agent retry/error paths.
|
|
201
217
|
|
|
@@ -208,7 +224,7 @@ The `/settings` picker offers these presets:
|
|
|
208
224
|
| `5 min` | `300000` |
|
|
209
225
|
| `10 min` | `600000` |
|
|
210
226
|
| `30 min` | `1800000` |
|
|
211
|
-
| `Disabled` | `0` |
|
|
227
|
+
| `Disabled` | `"disabled"` (or `0`) |
|
|
212
228
|
|
|
213
229
|
```json
|
|
214
230
|
{
|
|
@@ -223,7 +239,7 @@ The `/settings` picker offers these presets:
|
|
|
223
239
|
| `steeringMode` | string | `"one-at-a-time"` | How steering messages are sent: `"all"` or `"one-at-a-time"` |
|
|
224
240
|
| `followUpMode` | string | `"one-at-a-time"` | How follow-up messages are sent: `"all"` or `"one-at-a-time"` |
|
|
225
241
|
| `transport` | string | `"auto"` | Preferred transport for providers that support multiple transports: `"sse"`, `"websocket"`, `"websocket-cached"`, or `"auto"` |
|
|
226
|
-
| `httpIdleTimeoutMs` | number | `600000` | HTTP
|
|
242
|
+
| `httpIdleTimeoutMs` | number or string | `600000` | HTTP idle timeout in milliseconds, a duration string, or `"disabled"`; also used by providers with explicit stream idle timeouts. |
|
|
227
243
|
| `websocketConnectTimeoutMs` | number | `15000` | WebSocket connect/open handshake timeout in milliseconds for providers that support WebSocket transports. Set to `0` to disable. |
|
|
228
244
|
|
|
229
245
|
### Terminal & Images
|
package/docs/tui.md
CHANGED
|
@@ -934,9 +934,9 @@ class VimEditor extends CustomEditor {
|
|
|
934
934
|
|
|
935
935
|
export default function (pi: ExtensionAPI) {
|
|
936
936
|
pi.on("session_start", (_event, ctx) => {
|
|
937
|
-
// Factory receives theme and keybindings from the app
|
|
937
|
+
// Factory receives the TUI, theme, and keybindings from the app
|
|
938
938
|
ctx.ui.setEditorComponent((tui, theme, keybindings) =>
|
|
939
|
-
new VimEditor(theme, keybindings)
|
|
939
|
+
new VimEditor(tui, theme, keybindings)
|
|
940
940
|
);
|
|
941
941
|
});
|
|
942
942
|
}
|