@bastani/atomic 0.9.27-alpha.1 → 0.9.28-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (227) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/dist/builtin/intercom/CHANGELOG.md +12 -0
  3. package/dist/builtin/intercom/broker/broker.ts +13 -1
  4. package/dist/builtin/intercom/package.json +2 -2
  5. package/dist/builtin/mcp/CHANGELOG.md +6 -0
  6. package/dist/builtin/mcp/package.json +1 -1
  7. package/dist/builtin/subagents/CHANGELOG.md +8 -0
  8. package/dist/builtin/subagents/package.json +3 -3
  9. package/dist/builtin/web-access/index.bundle.mjs +194 -44
  10. package/dist/builtin/web-access/package.json +3 -3
  11. package/dist/builtin/workflows/CHANGELOG.md +16 -0
  12. package/dist/builtin/workflows/builtin/{chunk-gts8wgjr.js → chunk-f61w0hpm.js} +1 -1
  13. package/dist/builtin/workflows/builtin/{chunk-9bhs02gm.js → chunk-tecnpe8j.js} +1 -1
  14. package/dist/builtin/workflows/builtin/{chunk-gw7rghda.js → chunk-wz8v67bn.js} +1 -1
  15. package/dist/builtin/workflows/builtin/goal.js +2 -2
  16. package/dist/builtin/workflows/builtin/index.js +3 -3
  17. package/dist/builtin/workflows/builtin/ralph.js +2 -2
  18. package/dist/builtin/workflows/package.json +2 -2
  19. package/dist/builtin/workflows/src/extension/index.bundle.mjs +7958 -7904
  20. package/dist/builtin/workflows/src/index.js +11210 -11204
  21. package/dist/cli/args.d.ts +1 -0
  22. package/dist/cli/args.d.ts.map +1 -1
  23. package/dist/cli/args.js +12 -5
  24. package/dist/cli/args.js.map +1 -1
  25. package/dist/codemode-worker.js +99 -3
  26. package/dist/core/agent-session-events.js +1 -1
  27. package/dist/core/agent-session-events.js.map +1 -1
  28. package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
  29. package/dist/core/agent-session-extension-bindings.js +9 -5
  30. package/dist/core/agent-session-extension-bindings.js.map +1 -1
  31. package/dist/core/agent-session-methods.d.ts +2 -0
  32. package/dist/core/agent-session-methods.d.ts.map +1 -1
  33. package/dist/core/agent-session-methods.js.map +1 -1
  34. package/dist/core/agent-session-prompt.d.ts.map +1 -1
  35. package/dist/core/agent-session-prompt.js +5 -2
  36. package/dist/core/agent-session-prompt.js.map +1 -1
  37. package/dist/core/agent-session-services.d.ts +1 -0
  38. package/dist/core/agent-session-services.d.ts.map +1 -1
  39. package/dist/core/agent-session-services.js +1 -0
  40. package/dist/core/agent-session-services.js.map +1 -1
  41. package/dist/core/agent-session-state.d.ts.map +1 -1
  42. package/dist/core/agent-session-state.js +3 -2
  43. package/dist/core/agent-session-state.js.map +1 -1
  44. package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
  45. package/dist/core/agent-session-tool-registry.js +10 -16
  46. package/dist/core/agent-session-tool-registry.js.map +1 -1
  47. package/dist/core/agent-session.d.ts +2 -0
  48. package/dist/core/agent-session.d.ts.map +1 -1
  49. package/dist/core/agent-session.js +5 -0
  50. package/dist/core/agent-session.js.map +1 -1
  51. package/dist/core/auth-storage-backends.d.ts.map +1 -1
  52. package/dist/core/auth-storage-backends.js +2 -1
  53. package/dist/core/auth-storage-backends.js.map +1 -1
  54. package/dist/core/auth-storage.d.ts +1 -1
  55. package/dist/core/auth-storage.d.ts.map +1 -1
  56. package/dist/core/auth-storage.js +15 -7
  57. package/dist/core/auth-storage.js.map +1 -1
  58. package/dist/core/azure-provider-compat.d.ts +8 -0
  59. package/dist/core/azure-provider-compat.d.ts.map +1 -0
  60. package/dist/core/azure-provider-compat.js +65 -0
  61. package/dist/core/azure-provider-compat.js.map +1 -0
  62. package/dist/core/child-session-options.d.ts +1 -1
  63. package/dist/core/child-session-options.d.ts.map +1 -1
  64. package/dist/core/child-session-options.js +11 -2
  65. package/dist/core/child-session-options.js.map +1 -1
  66. package/dist/core/extensions/api-types.d.ts +1 -0
  67. package/dist/core/extensions/api-types.d.ts.map +1 -1
  68. package/dist/core/extensions/api-types.js.map +1 -1
  69. package/dist/core/extensions/loader-api.d.ts.map +1 -1
  70. package/dist/core/extensions/loader-api.js +5 -0
  71. package/dist/core/extensions/loader-api.js.map +1 -1
  72. package/dist/core/extensions/loader-host-modules.d.ts +1 -0
  73. package/dist/core/extensions/loader-host-modules.d.ts.map +1 -1
  74. package/dist/core/extensions/loader-host-modules.js +12 -0
  75. package/dist/core/extensions/loader-host-modules.js.map +1 -1
  76. package/dist/core/extensions/runner.d.ts +1 -1
  77. package/dist/core/extensions/runner.d.ts.map +1 -1
  78. package/dist/core/extensions/runner.js +7 -2
  79. package/dist/core/extensions/runner.js.map +1 -1
  80. package/dist/core/extensions/tool-types.d.ts +2 -0
  81. package/dist/core/extensions/tool-types.d.ts.map +1 -1
  82. package/dist/core/extensions/tool-types.js.map +1 -1
  83. package/dist/core/fast-model-variants.d.ts +1 -1
  84. package/dist/core/fast-model-variants.js +1 -1
  85. package/dist/core/fast-model-variants.js.map +1 -1
  86. package/dist/core/keybindings.d.ts +4 -4
  87. package/dist/core/model-config.d.ts.map +1 -1
  88. package/dist/core/model-config.js +2 -1
  89. package/dist/core/model-config.js.map +1 -1
  90. package/dist/core/model-fallback-failures.d.ts.map +1 -1
  91. package/dist/core/model-fallback-failures.js +5 -1
  92. package/dist/core/model-fallback-failures.js.map +1 -1
  93. package/dist/core/model-resolver-cli.d.ts.map +1 -1
  94. package/dist/core/model-resolver-cli.js +5 -1
  95. package/dist/core/model-resolver-cli.js.map +1 -1
  96. package/dist/core/model-resolver-defaults.js +1 -1
  97. package/dist/core/model-resolver-defaults.js.map +1 -1
  98. package/dist/core/model-resolver-initial.d.ts.map +1 -1
  99. package/dist/core/model-resolver-initial.js +6 -1
  100. package/dist/core/model-resolver-initial.js.map +1 -1
  101. package/dist/core/model-resolver-patterns.d.ts.map +1 -1
  102. package/dist/core/model-resolver-patterns.js +2 -1
  103. package/dist/core/model-resolver-patterns.js.map +1 -1
  104. package/dist/core/model-resolver-scope.d.ts.map +1 -1
  105. package/dist/core/model-resolver-scope.js +3 -1
  106. package/dist/core/model-resolver-scope.js.map +1 -1
  107. package/dist/core/model-runtime-streaming.d.ts.map +1 -1
  108. package/dist/core/model-runtime-streaming.js +2 -0
  109. package/dist/core/model-runtime-streaming.js.map +1 -1
  110. package/dist/core/model-runtime.d.ts.map +1 -1
  111. package/dist/core/model-runtime.js +48 -22
  112. package/dist/core/model-runtime.js.map +1 -1
  113. package/dist/core/provider-composer-internal.d.ts.map +1 -1
  114. package/dist/core/provider-composer-internal.js +4 -1
  115. package/dist/core/provider-composer-internal.js.map +1 -1
  116. package/dist/core/provider-display-names.js +1 -1
  117. package/dist/core/provider-display-names.js.map +1 -1
  118. package/dist/core/resource-loader-core.d.ts +1 -0
  119. package/dist/core/resource-loader-core.d.ts.map +1 -1
  120. package/dist/core/resource-loader-core.js +4 -0
  121. package/dist/core/resource-loader-core.js.map +1 -1
  122. package/dist/core/resource-loader-internals.d.ts +1 -0
  123. package/dist/core/resource-loader-internals.d.ts.map +1 -1
  124. package/dist/core/resource-loader-internals.js.map +1 -1
  125. package/dist/core/resource-loader-reload.d.ts.map +1 -1
  126. package/dist/core/resource-loader-reload.js +28 -5
  127. package/dist/core/resource-loader-reload.js.map +1 -1
  128. package/dist/core/resource-loader-types.d.ts +2 -0
  129. package/dist/core/resource-loader-types.d.ts.map +1 -1
  130. package/dist/core/resource-loader-types.js.map +1 -1
  131. package/dist/core/sdk-types.d.ts +6 -4
  132. package/dist/core/sdk-types.d.ts.map +1 -1
  133. package/dist/core/sdk-types.js.map +1 -1
  134. package/dist/core/sdk.d.ts.map +1 -1
  135. package/dist/core/sdk.js +5 -3
  136. package/dist/core/sdk.js.map +1 -1
  137. package/dist/core/session-lifecycle-work.d.ts +2 -1
  138. package/dist/core/session-lifecycle-work.d.ts.map +1 -1
  139. package/dist/core/session-lifecycle-work.js +15 -1
  140. package/dist/core/session-lifecycle-work.js.map +1 -1
  141. package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
  142. package/dist/core/settings-manager-basic-accessors.js +4 -4
  143. package/dist/core/settings-manager-basic-accessors.js.map +1 -1
  144. package/dist/core/settings-manager-core.d.ts.map +1 -1
  145. package/dist/core/settings-manager-core.js +2 -0
  146. package/dist/core/settings-manager-core.js.map +1 -1
  147. package/dist/core/settings-storage.d.ts.map +1 -1
  148. package/dist/core/settings-storage.js +2 -1
  149. package/dist/core/settings-storage.js.map +1 -1
  150. package/dist/core/skills.d.ts +1 -1
  151. package/dist/core/skills.d.ts.map +1 -1
  152. package/dist/core/skills.js +3 -1
  153. package/dist/core/skills.js.map +1 -1
  154. package/dist/core/system-prompt.d.ts +3 -0
  155. package/dist/core/system-prompt.d.ts.map +1 -1
  156. package/dist/core/system-prompt.js +7 -3
  157. package/dist/core/system-prompt.js.map +1 -1
  158. package/dist/core/tool-loadout.d.ts.map +1 -1
  159. package/dist/core/tool-loadout.js +8 -1
  160. package/dist/core/tool-loadout.js.map +1 -1
  161. package/dist/core/tool-selection.d.ts +13 -0
  162. package/dist/core/tool-selection.d.ts.map +1 -0
  163. package/dist/core/tool-selection.js +43 -0
  164. package/dist/core/tool-selection.js.map +1 -0
  165. package/dist/core/tools/read.d.ts +7 -0
  166. package/dist/core/tools/read.d.ts.map +1 -1
  167. package/dist/core/tools/read.js +11 -1
  168. package/dist/core/tools/read.js.map +1 -1
  169. package/dist/extensions/codemode/execute.d.ts.map +1 -1
  170. package/dist/extensions/codemode/execute.js +2 -1
  171. package/dist/extensions/codemode/execute.js.map +1 -1
  172. package/dist/extensions/codemode/index.d.ts.map +1 -1
  173. package/dist/extensions/codemode/index.js +1 -0
  174. package/dist/extensions/codemode/index.js.map +1 -1
  175. package/dist/extensions/codemode/tool.d.ts +4 -1
  176. package/dist/extensions/codemode/tool.d.ts.map +1 -1
  177. package/dist/extensions/codemode/tool.js +6 -3
  178. package/dist/extensions/codemode/tool.js.map +1 -1
  179. package/dist/extensions/mcp/client/oauth/flow.d.ts.map +1 -1
  180. package/dist/extensions/mcp/client/oauth/flow.js +14 -1
  181. package/dist/extensions/mcp/client/oauth/flow.js.map +1 -1
  182. package/dist/extensions/mcp/client/oauth/types.d.ts +1 -0
  183. package/dist/extensions/mcp/client/oauth/types.d.ts.map +1 -1
  184. package/dist/extensions/mcp/client/oauth/types.js.map +1 -1
  185. package/dist/extensions/mcp/index.js.map +1 -1
  186. package/dist/extensions/mcp/runtime.d.ts +5 -2
  187. package/dist/extensions/mcp/runtime.d.ts.map +1 -1
  188. package/dist/extensions/mcp/runtime.js +18 -4
  189. package/dist/extensions/mcp/runtime.js.map +1 -1
  190. package/dist/main.d.ts.map +1 -1
  191. package/dist/main.js +2 -0
  192. package/dist/main.js.map +1 -1
  193. package/dist/migrations-azure.d.ts +4 -0
  194. package/dist/migrations-azure.d.ts.map +1 -0
  195. package/dist/migrations-azure.js +41 -0
  196. package/dist/migrations-azure.js.map +1 -0
  197. package/dist/migrations.d.ts.map +1 -1
  198. package/dist/migrations.js +2 -0
  199. package/dist/migrations.js.map +1 -1
  200. package/dist/modes/interactive/components/chat-session-host-state.d.ts.map +1 -1
  201. package/dist/modes/interactive/components/chat-session-host-state.js +2 -1
  202. package/dist/modes/interactive/components/chat-session-host-state.js.map +1 -1
  203. package/dist/modes/interactive/components/chat-transcript.d.ts +2 -0
  204. package/dist/modes/interactive/components/chat-transcript.d.ts.map +1 -1
  205. package/dist/modes/interactive/components/chat-transcript.js +9 -3
  206. package/dist/modes/interactive/components/chat-transcript.js.map +1 -1
  207. package/dist/modes/interactive/theme/tui-theme.d.ts.map +1 -1
  208. package/dist/modes/interactive/theme/tui-theme.js +1 -0
  209. package/dist/modes/interactive/theme/tui-theme.js.map +1 -1
  210. package/dist/modes/interactive-engine/engine-args.d.ts.map +1 -1
  211. package/dist/modes/interactive-engine/engine-args.js +1 -0
  212. package/dist/modes/interactive-engine/engine-args.js.map +1 -1
  213. package/dist/utils/syntax-highlight.d.ts.map +1 -1
  214. package/dist/utils/syntax-highlight.js +6 -1
  215. package/dist/utils/syntax-highlight.js.map +1 -1
  216. package/docs/codemode.md +3 -2
  217. package/docs/extensions/api-reference.md +14 -0
  218. package/docs/extensions/authoring.md +1 -1
  219. package/docs/extensions.md +2 -0
  220. package/docs/keybindings.md +9 -9
  221. package/docs/mcp-servers.md +4 -0
  222. package/docs/providers.md +21 -2
  223. package/docs/reference/cli.md +10 -3
  224. package/docs/workflows/api-reference.md +3 -1
  225. package/docs/workflows/authoring.md +6 -2
  226. package/npm-shrinkwrap.json +78 -74
  227. package/package.json +9 -9
@@ -435,7 +435,7 @@ Atomic's workflow, subagent, Intercom/supervisor, and user-question tools are `m
435
435
 
436
436
  `direct` and `model-only` tools activate by default. Set `defaultActive: false` to keep a registered tool inactive until you select it with `pi.setActiveTools()`. `namespace: { name, description }` groups related tools. Optional `annotations` carry `readOnlyHint`, `destructiveHint`, `idempotentHint`, and `openWorldHint`; these are advisory hints, not permission checks or verified guarantees.
437
437
 
438
- An active orchestrator may implement `prepareLoadout(loadout)`. The loadout lists `declared`, `callable`, and `registered` tools and provides `getExposure(name)` and `getNamespace(name)`. Return `descriptions` to replace model-facing descriptions or `hiddenDeclarations` to hide declarations while retaining permitted nested access. This changes presentation, not authorization.
438
+ An active orchestrator may implement `prepareLoadout(loadout)`. The loadout lists `declared`, `callable`, and `registered` tools and provides `getExposure(name)`, `getNamespace(name)`, and `getPromptGuidelines(name)`. Return `descriptions` to replace model-facing descriptions or `hiddenDeclarations` to hide declarations while retaining permitted nested access. This changes presentation, not authorization.
439
439
 
440
440
  ### Fireworks deferred tool loading
441
441
 
@@ -522,6 +522,8 @@ Moved to [Extension API reference](/extensions/api-reference#pi-on-event-handler
522
522
 
523
523
  Moved to [Extension API reference](/extensions/api-reference#pi-registertool-definition).
524
524
 
525
+ A tool that orchestrates other tools can adjust what the model sees with `prepareLoadout(loadout)`. The hook receives declared, callable, and registered tools, with `getExposure()`, `getNamespace()`, and `getPromptGuidelines()`. Return replacement `descriptions` or `hiddenDeclarations` to hide active tools' declarations while keeping them callable. The default system prompt omits hidden tools from its tool list and rules, and names no tool in the skills hint when the file reader is hidden. The orchestrating tool should present those guidelines itself, as `codemode` does.
526
+
525
527
  #### Built-in tool prompt contributions
526
528
 
527
529
  Moved to [Extension API reference](/extensions/api-reference#built-in-tool-prompt-contributions).
@@ -51,8 +51,8 @@ Modifier combinations: `ctrl+shift+x`, `alt+ctrl+x`, `ctrl+shift+alt+x`, `ctrl+s
51
51
  | `tui.editor.cursorWordRight` | `alt+right`, `ctrl+right`, `alt+f` | Move cursor word right |
52
52
  | `tui.editor.historyPrevious` | *(none)* | Select the previous prompt history entry |
53
53
  | `tui.editor.historyNext` | *(none)* | Select the next prompt history entry |
54
- | `tui.editor.cursorLineStart` | `home`, `ctrl+home`, `ctrl+a` | Move to line start |
55
- | `tui.editor.cursorLineEnd` | `end`, `ctrl+end`, `ctrl+e` | Move to line end |
54
+ | `tui.editor.cursorLineStart` | `home`, `ctrl+a` | Move to line start |
55
+ | `tui.editor.cursorLineEnd` | `end`, `ctrl+e` | Move to line end |
56
56
  | `tui.editor.jumpForward` | `ctrl+]` | Jump forward to character |
57
57
  | `tui.editor.jumpBackward` | `ctrl+alt+]` | Jump backward to character |
58
58
  | `tui.editor.pageUp` | `pageUp`, `ctrl+pageUp` | Scroll up by page |
@@ -111,21 +111,21 @@ Hold Alt while using the mouse wheel to scroll five times as far in fullscreen m
111
111
 
112
112
  Drag with the primary button to select characters, double-click for a word or path, and triple-click for a line. Changing focus or clicking elsewhere clears the selection.
113
113
 
114
- While the main editor has focus, fullscreen transcript bindings take precedence. Unmodified navigation keys control the transcript; their `ctrl` variants control the editor.
114
+ While the main editor has focus, fullscreen transcript bindings take precedence. `home` and `end` stay with the editor; `ctrl+home` and `ctrl+end` jump to the transcript top and bottom. `pageUp` and `pageDown` control the transcript, while their `ctrl` variants control the editor.
115
115
 
116
116
  | Key | Editor action | Fullscreen action |
117
117
  |-----|---------------|------------------|
118
- | `home`, `end` | Editor | Transcript |
119
- | `ctrl+home`, `ctrl+end` | Editor | Editor |
118
+ | `home`, `end` | Editor | Editor |
119
+ | `ctrl+home`, `ctrl+end` | *(none)* | Transcript |
120
120
  | `pageUp`, `pageDown` | Editor | Transcript |
121
121
  | `ctrl+pageUp`, `ctrl+pageDown` | Editor | Editor |
122
122
 
123
123
  This routing remains configurable through the ordinary action bindings. For example, `"tui.altScreen.pageUp": "ctrl+pageUp"` makes `pageUp` control the editor and `ctrl+pageUp` control the transcript in fullscreen mode. Bind `tui.altScreen.halfPageUp` and `tui.altScreen.halfPageDown` for half-page steps, or `tui.altScreen.lineUp` and `tui.altScreen.lineDown` for single-line steps, while keeping the full-page bindings. Setting `"tui.altScreen.pageUp": []` disables that transcript shortcut entirely. User bindings replace the defaults for that action.
124
124
  A focused custom component may consume viewport keys and mouse input before the transcript. Extension authors should follow the [input handling contract](/extensions/ui#custom-components).
125
125
 
126
- The blocking `ask_user_question` dialog is a bottom-pinned overlay. Opening it does not shrink the transcript viewport or change the page step. `pageUp`, `pageDown`, `home`, `end`, and the wheel still reach every scrollback line, including the newest ones, in the visible strip above the dialog.
126
+ The blocking `ask_user_question` dialog is a bottom-pinned overlay. Opening it does not shrink the transcript viewport or change the page step. `pageUp`, `pageDown`, `ctrl+home`, `ctrl+end`, and the wheel still reach every scrollback line, including the newest ones, in the visible strip above the dialog.
127
127
 
128
- These transcript actions also work while Notes is open. Notes keeps ordinary text and edit actions, including the default `ctrl+home` and `ctrl+end`. A key moves the transcript instead only when configured for a `tui.altScreen.*` action.
128
+ These transcript actions also work while Notes is open. Notes keeps ordinary text and edit actions, including the default `home` and `end`. A key moves the transcript instead only when configured for a `tui.altScreen.*` action.
129
129
 
130
130
  On short terminals, the dialog is bounded to preserve that visible strip. The active questionnaire row stays visible as you move through single-select and multi-select choices, Next, Submit, Cancel, and inline inputs. The dialog keeps its own arrow, `enter`, `tab`, `space`, `esc`, click, and selection input.
131
131
 
@@ -139,8 +139,8 @@ On short terminals, the dialog is bounded to preserve that visible strip. The ac
139
139
  | `tui.altScreen.lineDown` | *(none)* | Scroll the transcript down by one line |
140
140
  | `tui.altScreen.previousPrompt` | `ctrl+shift+up` | Jump to the previous marked message |
141
141
  | `tui.altScreen.nextPrompt` | `ctrl+shift+down` | Jump to the next marked message |
142
- | `tui.altScreen.top` | `home` | Scroll to the beginning of the transcript |
143
- | `tui.altScreen.bottom` | `end` | Scroll to the transcript end and follow new output |
142
+ | `tui.altScreen.top` | `ctrl+home` | Scroll to the beginning of the transcript |
143
+ | `tui.altScreen.bottom` | `ctrl+end` | Scroll to the transcript end and follow new output |
144
144
 
145
145
  Atomic does not ship a find-in-transcript shortcut. The four `tui.altScreen.search*` actions remain in the keybinding table so an existing `keybindings.json` still validates, but they have no default keys and do nothing.
146
146
 
@@ -145,6 +145,10 @@ Tools are named `mcp__<server>__<tool>`, with punctuation replaced by `_`. Names
145
145
 
146
146
  Codemode and deferred tools can be reached through either indirect mechanism. Server summaries appear in the `mcp_servers` system prompt section. Scripts can read instructions and tool names with `describeNamespace("mcp__github")`.
147
147
 
148
+ `--tools` keeps MCP tools unless an entry starts with `mcp__`. For example, `atomic --tools read,codemode` can still call non-hidden MCP tools with codemode or deferred exposure from scripts, but unmatched MCP tools are not declared directly. Unmatched direct-exposure tools remain registered but inactive. Include `tool_search` to load unmatched tools with non-direct exposure. To restrict the server tools, use `atomic --tools read,codemode,'mcp__docs__*'`. `--exclude-tools` accepts the same `*` patterns and also applies to MCP resource tools.
149
+
150
+ `--no-mcp` disables built-in MCP support for one run. No built-in servers connect, MCP tools load, or `/mcp` command registers. A replacement extension is unaffected.
151
+
148
152
  Codemode receives the complete MCP result, including `content`, `structuredContent`, and `isError`. Text over 20 KB is shortened for the model, with the complete text saved to a temporary file named in the result. Every MCP call passes through Atomic's tool pipeline, including permission hooks.
149
153
 
150
154
  ## Use resources
package/docs/providers.md CHANGED
@@ -209,7 +209,7 @@ Catalog failures preserve the last usable models for each provider. See [catalog
209
209
  | ---------------------------------- | ------------------------------------------------------------------------- | ---------------------------- |
210
210
  | Anthropic | `ANTHROPIC_API_KEY` or bearer-only `ANTHROPIC_AUTH_TOKEN` | `anthropic` |
211
211
  | Ant Ling | `ANT_LING_API_KEY` | `ant-ling` |
212
- | Azure OpenAI Responses | `AZURE_OPENAI_API_KEY` | `azure-openai-responses` |
212
+ | Azure | `AZURE_OPENAI_API_KEY` | `azure` |
213
213
  | OpenAI | `OPENAI_API_KEY` | `openai` |
214
214
  | DeepSeek | `DEEPSEEK_API_KEY` | `deepseek` |
215
215
  | NVIDIA NIM | `NVIDIA_API_KEY` | `nvidia` |
@@ -344,12 +344,25 @@ atomic --provider nvidia --model nvidia/nemotron-3-ultra-550b-a55b
344
344
 
345
345
  Use `--list-models` or `/model` to check the current catalog and replace a missing saved model. A catalog listing does not verify account access or serving availability.
346
346
 
347
- ### Azure OpenAI
347
+ <a id="azure-openai" />
348
+
349
+ ### Azure
350
+
351
+ Use the `azure` provider for OpenAI Responses models and Azure Foundry Chat Completions, including `azure/deepseek-v4-pro`:
352
+
353
+ ```bash
354
+ atomic --model azure/deepseek-v4-pro:high
355
+ ```
356
+
357
+ DeepSeek V4 Pro supports `low`, `medium`, and `high` reasoning effort. Azure OpenAI models keep the `azure-openai-responses` API ID; Chat Completions models use `openai-completions`.
358
+
359
+ Custom Azure deployments in `models.json` or extension registrations default to the Responses API when no API is specified and the model ID is not in the catalog. Set `api: "openai-completions"` at the provider or model level to use Chat Completions.
348
360
 
349
361
  ```bash
350
362
  export AZURE_OPENAI_API_KEY=...
351
363
  export AZURE_OPENAI_BASE_URL=https://your-resource.openai.azure.com
352
364
  # also supported: https://your-resource.cognitiveservices.azure.com
365
+ # Azure Foundry endpoints such as https://your-resource.services.ai.azure.com are supported too
353
366
  # root endpoints are auto-normalized to /openai/v1
354
367
  # or use resource name instead of base URL
355
368
  export AZURE_OPENAI_RESOURCE_NAME=your-resource
@@ -359,6 +372,12 @@ export AZURE_OPENAI_API_VERSION=2024-02-01
359
372
  export AZURE_OPENAI_DEPLOYMENT_NAME_MAP=gpt-4=my-gpt4,gpt-4o=my-gpt4o
360
373
  ```
361
374
 
375
+ `AZURE_OPENAI_API_VERSION` configures Responses requests. Chat Completions uses the normalized `/openai/v1` endpoint.
376
+
377
+ Deployment names default to model IDs. Set `AZURE_OPENAI_DEPLOYMENT_NAME_MAP` when your deployments have different names; it applies to both APIs without changing the model ID shown in sessions.
378
+
379
+ The former provider name `azure-openai-responses` remains accepted in model selections, saved sessions, and SDK lookups. Startup renames that provider in `auth.json`, `settings.json`, and `models.json`, including legacy Pi configuration paths. Existing `azure` entries win on collisions. Project configuration is migrated only after the project is trusted; session files are not rewritten. Use `azure` in new configuration.
380
+
362
381
  ### Amazon Bedrock
363
382
 
364
383
  ```bash
@@ -144,15 +144,21 @@ When a print-mode turn correctly finishes by calling an opt-in terminating struc
144
144
 
145
145
  | Option | Description |
146
146
  |--------|-------------|
147
- | `--tools <list>`, `-t <list>` | Allowlist specific coding, extension, and custom tools, including Intercom |
148
- | `--exclude-tools <list>`, `-xt <list>` | Exclude specific coding, extension, and custom tools, including Intercom |
147
+ | `--tools <list>`, `-t <list>` | Allowlist tool names or `*` patterns; keeps MCP tools unless an entry starts with `mcp__` |
148
+ | `--exclude-tools <list>`, `-xt <list>` | Exclude tool names or `*` patterns, including MCP tools and Intercom |
149
149
  | `--no-builtin-tools`, `-nbt` | Disable built-in tools but keep extension/custom tools enabled |
150
150
  | `--no-tools`, `-nt` | Disable every tool, including Intercom, even with `--tools` |
151
151
 
152
- Default built-in tools: `read`, `bash`, `kill`, `edit`, `write`, `find`, `search`, `ask_user_question`, `todo`, plus `powershell` on native Windows when a PowerShell executable is available. `ls` remains available but is not a default. `defaultTools` selects initial coding tools without narrowing extension/custom tools. `--tools` selects an explicit allowlist; `--exclude-tools` subtracts from it. `--no-builtin-tools` suppresses coding defaults when no allowlist is given. `--no-tools` overrides all selection. To retain Intercom with an allowlist, include `intercom` explicitly.
152
+ Default built-in tools: `read`, `bash`, `kill`, `edit`, `write`, `find`, `search`, `ask_user_question`, `todo`, plus `powershell` on native Windows when a PowerShell executable is available. `ls` remains available but is not a default. `defaultTools` selects initial coding tools without narrowing extension/custom tools. `--tools` selects an explicit allowlist; `--exclude-tools` subtracts from it. `--no-builtin-tools` suppresses coding defaults when no allowlist is given. The bundled Intercom extension remains loaded with `--no-extensions`, but its tool follows the allowlist, exclusions, and `--no-tools` like other extension tools.
153
153
 
154
154
  To add opt-in [codemode](/tools#codemode) or [tool search](/tools#tool_search) alongside defaults, use `"defaultTools": ["+codemode", "+tool_search"]` in settings. With `--tools`, include their names and every other tool you want available.
155
155
 
156
+ ### MCP tools
157
+
158
+ `--tools read,codemode` keeps non-hidden MCP tools with codemode or deferred exposure callable from codemode scripts. MCP tools unmatched by the allowlist are not declared directly, regardless of exposure. Unmatched direct-exposure tools remain registered but inactive. Only an enabled `tool_search` can load unmatched tools with non-direct exposure.
159
+
160
+ An entry starting with `mcp__` filters MCP tools too. For example, `atomic --tools read,codemode,'mcp__docs__*'` keeps only tools from the `docs` server. MCP resource tools also count as MCP tools. Exclusions apply to both server and resource tools. Use `--no-mcp` to disable built-in MCP connections and resources entirely.
161
+
156
162
  ## Project Trust Options
157
163
 
158
164
  | Option | Description |
@@ -168,6 +174,7 @@ Project trust gates `.atomic`/legacy `.pi` project resources, project package se
168
174
  |--------|-------------|
169
175
  | `-e`, `--extension <source>` | Load an extension from path, npm, or git; repeatable |
170
176
  | `--no-extensions`, `-ne` | Disable optional extension discovery; mandatory bundled Intercom remains loaded |
177
+ | `--no-mcp` | Disable built-in MCP support for this run, even when explicitly enabled; replacement extensions are unaffected |
171
178
  | `--skill <path>` | Load a skill; repeatable |
172
179
  | `--no-skills`, `-ns` | Disable skill discovery |
173
180
  | `--prompt-template <path>` | Load a prompt template; repeatable |
@@ -1174,7 +1174,9 @@ Programmatic `run(...)` returns this type. `exited` identifies `ctx.exit(...)` t
1174
1174
 
1175
1175
  `@bastani/atomic/workflows` is Atomic's published workflow SDK. Import `workflow` from that specifier, import `Type` from `typebox`, and export the definition returned by `workflow({...})`. Workflow helpers may also import the host TypeBox runtime subpaths `typebox/compile` and `typebox/value`; the legacy `@sinclair/typebox` root and matching subpaths remain supported. Keep runtime helpers such as widget factories and shared utilities in a subdirectory outside the top-level discovery scan, such as `.atomic/workflows/lib/`; see [Workflow Locations](/workflows/operations#workflow-locations).
1176
1176
 
1177
- Package authors list both `@bastani/atomic` and `typebox` in `peerDependencies`. The `@bastani/atomic` package publishes compiled JavaScript and declarations for `@bastani/atomic/workflows`, `@bastani/atomic/workflows/builtin`, and each `@bastani/atomic/workflows/builtin/*` module. TypeScript resolves those exports directly under `moduleResolution: NodeNext`. When Atomic executes a workflow file or an imported helper, its runtime loader resolves the workflow SDK and supported TypeBox aliases to the same in-memory host modules. It intentionally does not expose extension-only host modules such as the agent core, UI, provider transport, or lockfile implementation.
1177
+ Package authors list both `@bastani/atomic` and `typebox` in `peerDependencies`. The `@bastani/atomic` package publishes compiled JavaScript and declarations for `@bastani/atomic/workflows`, `@bastani/atomic/workflows/builtin`, and each `@bastani/atomic/workflows/builtin/*` module. TypeScript resolves those exports directly under `moduleResolution: NodeNext`. When Atomic executes a workflow file or an imported helper, its runtime loader resolves the workflow SDK and supported TypeBox aliases to the same in-memory host modules.
1178
+
1179
+ The loader also shares the host's modules for the exact specifiers `@bastani/atomic`, `@bastani/pi-ai`, and `@bastani/pi-ai/providers/all`. These exceptions expose Atomic's public root API and the AI compatibility API and provider transports. The host's versions take precedence over project-local copies, including in standalone-binary installs without project packages. Workflow files and relative imports still refresh on reload. Other deep subpaths resolve from disk. The workflow loader does not share the extension loader's remaining host aliases, including the separate agent-core and UI packages, other AI subpaths, and `proper-lockfile`. Older or alternative hosts without [`getWorkflowHostModules()`](/extensions/api-reference#pi-getworkflowhostmodules) retain filesystem resolution for the three specifiers.
1178
1180
 
1179
1181
  ```ts
1180
1182
  import { workflow } from "@bastani/atomic/workflows";
@@ -716,12 +716,16 @@ A `verified` result is cached durably, so a resumed run does not click again. A
716
716
 
717
717
  Workflow stages run chat language models. For a schema-backed decision, use the stage's `schema` and `structured_output` tool. It resolves an exact chat or registered classifier ID through the stage model registry and falls back on a classifier runtime failure. The direct `@bastani/pi-ai` examples below are for cases that need the classifier's probabilities or image generation from workflow TypeScript inside `ctx.tool(name, args, fn, { timeoutMs })`. Those calls are durable, replayable nodes. `model: "auto"` selects only chat language models for stage execution; `routerModel` may select a classifier for routing, but a classifier never executes a chat stage.
718
718
 
719
- Discovery loads a workflow file with the project that owns it as the module root. The host provides `@bastani/atomic/workflows` and `typebox`; other imports, including `@bastani/atomic` for `AuthStorage`, resolve from that project's `node_modules` in npm and standalone-binary installs alike. Install both libraries next to the workflow at the version `atomic --version` prints, because older releases have no `classify()` or `generateImages()`:
719
+ Atomic provides `@bastani/atomic/workflows`, `typebox`, and the exact imports `@bastani/atomic`, `@bastani/pi-ai`, and `@bastani/pi-ai/providers/all` to workflow files. The latter three use the running CLI's module instances and version, including `AuthStorage`. These examples need no project-local package installation, in npm or standalone-binary installs. A project copy does not override these host-provided imports.
720
+
721
+ For editor type checking, install the packages as dev dependencies at the version `atomic --version` prints. Atomic still runs these imports from the CLI, not from the project copy:
720
722
 
721
723
  ```sh
722
724
  npm install --save-dev @bastani/atomic@"$(atomic --version)" @bastani/pi-ai@"$(atomic --version)"
723
725
  ```
724
726
 
727
+ Other imports, including unlisted deep package subpaths, still resolve from the owning project's `node_modules`. Install those dependencies next to the workflow. `/workflow reload` reloads workflow files and their relative imports, but does not replace the shared host modules; restart Atomic to use a different host version.
728
+
725
729
  Pass `AuthStorage.create()` to `builtinModels()` so classifier and image requests use credentials saved by Atomic's `/login` flows in `auth.json`; this is the recommended default for workflows running inside Atomic. Ambient provider environment variables such as `TYPESAFE_API_KEY` and `OPENROUTER_API_KEY` continue to work. Never read, print, or pass credential values in workflow state, prompts, or artifacts. Both operations resolve instead of throwing: check `stopReason === "stop"` before using a result, and forward the tool's `signal` so a quit or targeted abort cancels the request.
726
730
 
727
731
  #### Classify a request before choosing a stage
@@ -777,7 +781,7 @@ export default workflow({
777
781
  });
778
782
  ```
779
783
 
780
- The cached `{ choice, confidence }` is what a resumed run replays; the classifier is not asked again. For a consequential action, add policy checks or `ctx.ui.confirm(...)` before the side effect. Without the extra install, a schema-backed stage or task (`ctx.task(name, { schema, prompt })`, as the `classify-and-act` builtin does) can also make a validated decision. Its `structured_output` call can name a registered classifier or omit `model` and use the current chat model. A classifier probability is available only from a direct `classify()` call like the example above; a chat result does not supply one.
784
+ The cached `{ choice, confidence }` is what a resumed run replays; the classifier is not asked again. For a consequential action, add policy checks or `ctx.ui.confirm(...)` before the side effect. A schema-backed stage or task (`ctx.task(name, { schema, prompt })`, as the `classify-and-act` builtin does) can also make a validated decision. Its `structured_output` call can name a registered classifier or omit `model` and use the current chat model. A classifier probability is available only from a direct `classify()` call like the example above; a chat result does not supply one.
781
785
 
782
786
  #### Generate an image artifact in a durable tool step
783
787
 
@@ -1,24 +1,24 @@
1
1
  {
2
2
  "name": "@bastani/atomic",
3
- "version": "0.9.27-alpha.1",
3
+ "version": "0.9.28-alpha.1",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@bastani/atomic",
9
- "version": "0.9.27-alpha.1",
9
+ "version": "0.9.28-alpha.1",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
- "@bastani/atomic-natives": "0.9.27-alpha.1",
13
- "@bastani/pi-ai": "0.9.27-alpha.1",
12
+ "@bastani/atomic-natives": "0.9.28-alpha.1",
13
+ "@bastani/pi-ai": "0.9.28-alpha.1",
14
14
  "@dbos-inc/dbos-sdk": "4.25.14",
15
- "@earendil-works/pi-agent-core": "1.0.2",
16
- "@earendil-works/pi-client": "1.0.2",
17
- "@earendil-works/pi-codemode": "1.0.2",
18
- "@earendil-works/pi-protocol": "1.0.2",
19
- "@earendil-works/pi-tui": "1.0.2",
15
+ "@earendil-works/pi-agent-core": "1.0.4",
16
+ "@earendil-works/pi-client": "1.0.4",
17
+ "@earendil-works/pi-codemode": "1.0.4",
18
+ "@earendil-works/pi-protocol": "1.0.4",
19
+ "@earendil-works/pi-tui": "1.0.4",
20
20
  "@modelcontextprotocol/ext-apps": "^1.7.5",
21
- "@modelcontextprotocol/sdk": "1.30.0",
21
+ "@modelcontextprotocol/sdk": "1.32.1",
22
22
  "@mozilla/readability": "^0.6.0",
23
23
  "@silvia-odwyer/photon-node": "0.3.4",
24
24
  "@typesafe-ai/sdk": "0.6.0",
@@ -432,18 +432,18 @@
432
432
  }
433
433
  },
434
434
  "node_modules/@bastani/atomic-natives": {
435
- "version": "0.9.27-alpha.1",
436
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives/-/atomic-natives-0.9.27-alpha.1.tgz",
435
+ "version": "0.9.28-alpha.1",
436
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives/-/atomic-natives-0.9.28-alpha.1.tgz",
437
437
  "license": "MIT",
438
438
  "optionalDependencies": {
439
- "@bastani/atomic-natives-darwin-arm64": "0.9.27-alpha.1",
440
- "@bastani/atomic-natives-darwin-x64": "0.9.27-alpha.1",
441
- "@bastani/atomic-natives-linux-arm64-gnu": "0.9.27-alpha.1",
442
- "@bastani/atomic-natives-linux-arm64-musl": "0.9.27-alpha.1",
443
- "@bastani/atomic-natives-linux-x64-gnu": "0.9.27-alpha.1",
444
- "@bastani/atomic-natives-linux-x64-musl": "0.9.27-alpha.1",
445
- "@bastani/atomic-natives-win32-arm64-msvc": "0.9.27-alpha.1",
446
- "@bastani/atomic-natives-win32-x64-msvc": "0.9.27-alpha.1"
439
+ "@bastani/atomic-natives-darwin-arm64": "0.9.28-alpha.1",
440
+ "@bastani/atomic-natives-darwin-x64": "0.9.28-alpha.1",
441
+ "@bastani/atomic-natives-linux-arm64-gnu": "0.9.28-alpha.1",
442
+ "@bastani/atomic-natives-linux-arm64-musl": "0.9.28-alpha.1",
443
+ "@bastani/atomic-natives-linux-x64-gnu": "0.9.28-alpha.1",
444
+ "@bastani/atomic-natives-linux-x64-musl": "0.9.28-alpha.1",
445
+ "@bastani/atomic-natives-win32-arm64-msvc": "0.9.28-alpha.1",
446
+ "@bastani/atomic-natives-win32-x64-msvc": "0.9.28-alpha.1"
447
447
  },
448
448
  "engines": {
449
449
  "bun": ">=1.4.2",
@@ -451,8 +451,8 @@
451
451
  }
452
452
  },
453
453
  "node_modules/@bastani/atomic-natives-darwin-arm64": {
454
- "version": "0.9.27-alpha.1",
455
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-arm64/-/atomic-natives-darwin-arm64-0.9.27-alpha.1.tgz",
454
+ "version": "0.9.28-alpha.1",
455
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-arm64/-/atomic-natives-darwin-arm64-0.9.28-alpha.1.tgz",
456
456
  "license": "MIT",
457
457
  "os": [
458
458
  "darwin"
@@ -463,8 +463,8 @@
463
463
  "optional": true
464
464
  },
465
465
  "node_modules/@bastani/atomic-natives-darwin-x64": {
466
- "version": "0.9.27-alpha.1",
467
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-x64/-/atomic-natives-darwin-x64-0.9.27-alpha.1.tgz",
466
+ "version": "0.9.28-alpha.1",
467
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-x64/-/atomic-natives-darwin-x64-0.9.28-alpha.1.tgz",
468
468
  "license": "MIT",
469
469
  "os": [
470
470
  "darwin"
@@ -475,8 +475,8 @@
475
475
  "optional": true
476
476
  },
477
477
  "node_modules/@bastani/atomic-natives-linux-arm64-gnu": {
478
- "version": "0.9.27-alpha.1",
479
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-gnu/-/atomic-natives-linux-arm64-gnu-0.9.27-alpha.1.tgz",
478
+ "version": "0.9.28-alpha.1",
479
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-gnu/-/atomic-natives-linux-arm64-gnu-0.9.28-alpha.1.tgz",
480
480
  "license": "MIT",
481
481
  "os": [
482
482
  "linux"
@@ -490,8 +490,8 @@
490
490
  "optional": true
491
491
  },
492
492
  "node_modules/@bastani/atomic-natives-linux-arm64-musl": {
493
- "version": "0.9.27-alpha.1",
494
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-musl/-/atomic-natives-linux-arm64-musl-0.9.27-alpha.1.tgz",
493
+ "version": "0.9.28-alpha.1",
494
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-musl/-/atomic-natives-linux-arm64-musl-0.9.28-alpha.1.tgz",
495
495
  "license": "MIT",
496
496
  "os": [
497
497
  "linux"
@@ -505,8 +505,8 @@
505
505
  "optional": true
506
506
  },
507
507
  "node_modules/@bastani/atomic-natives-linux-x64-gnu": {
508
- "version": "0.9.27-alpha.1",
509
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-gnu/-/atomic-natives-linux-x64-gnu-0.9.27-alpha.1.tgz",
508
+ "version": "0.9.28-alpha.1",
509
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-gnu/-/atomic-natives-linux-x64-gnu-0.9.28-alpha.1.tgz",
510
510
  "license": "MIT",
511
511
  "os": [
512
512
  "linux"
@@ -520,8 +520,8 @@
520
520
  "optional": true
521
521
  },
522
522
  "node_modules/@bastani/atomic-natives-linux-x64-musl": {
523
- "version": "0.9.27-alpha.1",
524
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-musl/-/atomic-natives-linux-x64-musl-0.9.27-alpha.1.tgz",
523
+ "version": "0.9.28-alpha.1",
524
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-musl/-/atomic-natives-linux-x64-musl-0.9.28-alpha.1.tgz",
525
525
  "license": "MIT",
526
526
  "os": [
527
527
  "linux"
@@ -535,8 +535,8 @@
535
535
  "optional": true
536
536
  },
537
537
  "node_modules/@bastani/atomic-natives-win32-arm64-msvc": {
538
- "version": "0.9.27-alpha.1",
539
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-arm64-msvc/-/atomic-natives-win32-arm64-msvc-0.9.27-alpha.1.tgz",
538
+ "version": "0.9.28-alpha.1",
539
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-arm64-msvc/-/atomic-natives-win32-arm64-msvc-0.9.28-alpha.1.tgz",
540
540
  "license": "MIT",
541
541
  "os": [
542
542
  "win32"
@@ -547,8 +547,8 @@
547
547
  "optional": true
548
548
  },
549
549
  "node_modules/@bastani/atomic-natives-win32-x64-msvc": {
550
- "version": "0.9.27-alpha.1",
551
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-x64-msvc/-/atomic-natives-win32-x64-msvc-0.9.27-alpha.1.tgz",
550
+ "version": "0.9.28-alpha.1",
551
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-x64-msvc/-/atomic-natives-win32-x64-msvc-0.9.28-alpha.1.tgz",
552
552
  "license": "MIT",
553
553
  "os": [
554
554
  "win32"
@@ -559,13 +559,13 @@
559
559
  "optional": true
560
560
  },
561
561
  "node_modules/@bastani/pi-ai": {
562
- "version": "0.9.27-alpha.1",
563
- "resolved": "https://registry.npmjs.org/@bastani/pi-ai/-/pi-ai-0.9.27-alpha.1.tgz",
562
+ "version": "0.9.28-alpha.1",
563
+ "resolved": "https://registry.npmjs.org/@bastani/pi-ai/-/pi-ai-0.9.28-alpha.1.tgz",
564
564
  "license": "MIT",
565
565
  "dependencies": {
566
566
  "@anthropic-ai/sdk": "0.129.0",
567
567
  "@aws-sdk/client-bedrock-runtime": "3.1127.0",
568
- "@earendil-works/pi-telemetry": "1.0.2",
568
+ "@earendil-works/pi-telemetry": "1.0.4",
569
569
  "@google/genai": "2.21.0",
570
570
  "@smithy/node-http-handler": "4.12.1",
571
571
  "http-proxy-agent": "9.1.0",
@@ -666,9 +666,9 @@
666
666
  }
667
667
  },
668
668
  "node_modules/@earendil-works/chord": {
669
- "version": "1.0.2",
670
- "resolved": "https://registry.npmjs.org/@earendil-works/chord/-/chord-1.0.2.tgz",
671
- "integrity": "sha512-eUXGZjigyEQsFiT/oBJUOaCrzYZRmqf8AgLrlbyuS4u02hjSVhLYRi3xqk1o4UERCgRfjRegqwj/oucawIR7YQ==",
669
+ "version": "1.0.4",
670
+ "resolved": "https://registry.npmjs.org/@earendil-works/chord/-/chord-1.0.4.tgz",
671
+ "integrity": "sha512-d2JZw2utoa/reoSmL07O71wsXiMDhIlnnxTb4LCNV+Oq8Evj2rGLvjVuYrlXZGbXUr0IDNfvd1RT/utCY1UhkQ==",
672
672
  "license": "MIT",
673
673
  "dependencies": {
674
674
  "esbuild": "0.28.2"
@@ -678,12 +678,12 @@
678
678
  }
679
679
  },
680
680
  "node_modules/@earendil-works/pi-agent-core": {
681
- "version": "1.0.2",
682
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-1.0.2.tgz",
683
- "integrity": "sha512-VRfewY1R5mbedJzlm01PxdCmqU8QrSXjXXhV50bp6rvVuT8YYQv1inTXRY4YzssmGAYpkC2rXipJKP5BpBFXew==",
681
+ "version": "1.0.4",
682
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-1.0.4.tgz",
683
+ "integrity": "sha512-/xGICE+N/+G9N7KfYFSxlE8G8fQcBlLHKiY+j1Ehz9vvb1zhvGneWosFK56d2qmA5oteafeG7yKr2nqU4ed9ig==",
684
684
  "license": "MIT",
685
685
  "dependencies": {
686
- "@earendil-works/pi-ai": "^1.0.2",
686
+ "@earendil-works/pi-ai": "^1.0.4",
687
687
  "typebox": "1.3.27"
688
688
  },
689
689
  "engines": {
@@ -691,14 +691,14 @@
691
691
  }
692
692
  },
693
693
  "node_modules/@earendil-works/pi-ai": {
694
- "version": "1.0.2",
695
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-1.0.2.tgz",
696
- "integrity": "sha512-JP59xGlSAQ/HhQ6EHN5qmneBlWfDyu6FPPryAvAaSo8A38ubAsEpS9YisCM5Jbbns0srrDffLZonE0OXorHI5A==",
694
+ "version": "1.0.4",
695
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-1.0.4.tgz",
696
+ "integrity": "sha512-/Eu5R0gfor6wcmRcVyOmulUiZmsHJ0bKu5wXXnpCoSHF3y4FnW4fgnjRlLjNza8NJWXdvW5Uew90Zukx7Sh2rw==",
697
697
  "license": "MIT",
698
698
  "dependencies": {
699
699
  "@anthropic-ai/sdk": "0.129.0",
700
700
  "@aws-sdk/client-bedrock-runtime": "3.1127.0",
701
- "@earendil-works/pi-telemetry": "^1.0.2",
701
+ "@earendil-works/pi-telemetry": "^1.0.4",
702
702
  "@google/genai": "2.21.0",
703
703
  "@smithy/node-http-handler": "4.12.1",
704
704
  "http-proxy-agent": "9.1.0",
@@ -738,22 +738,22 @@
738
738
  }
739
739
  },
740
740
  "node_modules/@earendil-works/pi-client": {
741
- "version": "1.0.2",
742
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-client/-/pi-client-1.0.2.tgz",
743
- "integrity": "sha512-KwznnEx24irb2pBIMeha6iIVyoYtrfpbtKkgw31xVn2Q/yzCbTtMe81a5Ep0BAN001iLn5D+aALjQ9vQDpSnGw==",
741
+ "version": "1.0.4",
742
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-client/-/pi-client-1.0.4.tgz",
743
+ "integrity": "sha512-c+hB+VE+K+2990do99wk4m+R7RvRt7A/Wb9JOHWM3c+vCFqZqo8VdU65a+P/hUZp2cVhoxFnzFZsDf9yqaGvUA==",
744
744
  "license": "MIT",
745
745
  "dependencies": {
746
- "@earendil-works/chord": "^1.0.2",
747
- "@earendil-works/pi-protocol": "^1.0.2"
746
+ "@earendil-works/chord": "^1.0.4",
747
+ "@earendil-works/pi-protocol": "^1.0.4"
748
748
  },
749
749
  "engines": {
750
750
  "node": ">=22.19.0"
751
751
  }
752
752
  },
753
753
  "node_modules/@earendil-works/pi-codemode": {
754
- "version": "1.0.2",
755
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-codemode/-/pi-codemode-1.0.2.tgz",
756
- "integrity": "sha512-tvfDSVz984ra/4y/hIFmYGpP5ojC+C6/ey+DNbjTzfJvbXviW4JYTXwVcm33KAceI0xcOuE+P1yRGLtQgis0/w==",
754
+ "version": "1.0.4",
755
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-codemode/-/pi-codemode-1.0.4.tgz",
756
+ "integrity": "sha512-e198pjBsdEQJ/RCjJ9ZeYIjRaQYWUgtoZbPCmJ57auuOsiRsBXeSZ1aiWtTah0/7gx97WIOD1XqHvgRU0gOXtg==",
757
757
  "license": "MIT",
758
758
  "dependencies": {
759
759
  "quickjs-wasi": "3.6.2"
@@ -763,12 +763,12 @@
763
763
  }
764
764
  },
765
765
  "node_modules/@earendil-works/pi-protocol": {
766
- "version": "1.0.2",
767
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-protocol/-/pi-protocol-1.0.2.tgz",
768
- "integrity": "sha512-VT3/ha2XDDP6mesDVbsv2W7AQDnJFbNSdmCezmpaod6Jcq8KnV/2EPzDPtQ7qYntPq2Esx67M/4/c1YbhmkPag==",
766
+ "version": "1.0.4",
767
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-protocol/-/pi-protocol-1.0.4.tgz",
768
+ "integrity": "sha512-GJ1ieSJdguV3VaO5fXD+LEm6w1Rx0HKk7P1g8I6ZelmiGpmQAYOneUZaCUhAz5BeC6FpyUFzBb+AOo0Npfxtvw==",
769
769
  "license": "MIT",
770
770
  "dependencies": {
771
- "@earendil-works/chord": "^1.0.2",
771
+ "@earendil-works/chord": "^1.0.4",
772
772
  "typebox": "1.3.27"
773
773
  },
774
774
  "engines": {
@@ -776,18 +776,18 @@
776
776
  }
777
777
  },
778
778
  "node_modules/@earendil-works/pi-telemetry": {
779
- "version": "1.0.2",
780
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-telemetry/-/pi-telemetry-1.0.2.tgz",
781
- "integrity": "sha512-Ev5h9TE8nEXHCfRKhWj0qpUFhQgVqNteS95vsM2KNGRGm533vOO2ruDPaEwImBKPMBKXy4omz3D6V2cm41gLOQ==",
779
+ "version": "1.0.4",
780
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-telemetry/-/pi-telemetry-1.0.4.tgz",
781
+ "integrity": "sha512-DL2eXXtnL5/VQkuQd97fL57GXTG1/zKHtMmDsrv8tGeJ5EgYYTWvzy44dqbYL0lD0Z22v/NOwqU3PHO75HVrqA==",
782
782
  "license": "MIT",
783
783
  "engines": {
784
784
  "node": ">=22.19.0"
785
785
  }
786
786
  },
787
787
  "node_modules/@earendil-works/pi-tui": {
788
- "version": "1.0.2",
789
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-1.0.2.tgz",
790
- "integrity": "sha512-ElfzjnckohEjzHK5Q5iOpqLpQ1YbM/c/XmjBdPVR5k4uoorQPnny5BtT+rvC0cAjVVCUOHWAWppust7FAaEsOQ==",
788
+ "version": "1.0.4",
789
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-1.0.4.tgz",
790
+ "integrity": "sha512-TgvDJohtxvG3XWQID5w6bwEyBocywdG0F9yHZtP+Ywvtiq9RgeSMbeB8quUobk7/4ko6IvFOQo45AqIqNVr8Rg==",
791
791
  "license": "MIT",
792
792
  "dependencies": {
793
793
  "get-east-asian-width": "1.6.0",
@@ -1600,9 +1600,9 @@
1600
1600
  ]
1601
1601
  },
1602
1602
  "node_modules/@modelcontextprotocol/sdk": {
1603
- "version": "1.30.0",
1604
- "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.30.0.tgz",
1605
- "integrity": "sha512-xKd8OIzlqNzcqcNumGAa6g+PW2kjD5vrpcKOnfldAUPP3j7lnqMPwlTXQm8gF+UwH72z0lqaRbjr9hqGz0eITA==",
1603
+ "version": "1.32.1",
1604
+ "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.32.1.tgz",
1605
+ "integrity": "sha512-2DdE+SJDtzLEEWzY1ZjY7Q+VcPhcV1KisD3zI4u0XZyktsjHum1mwbMI+JaulUBi2OZk+KJAi2uPXzxichPkdw==",
1606
1606
  "license": "MIT",
1607
1607
  "dependencies": {
1608
1608
  "@hono/node-server": "^1.19.9 || ^2.0.5",
@@ -4242,9 +4242,9 @@
4242
4242
  "hasInstallScript": true
4243
4243
  },
4244
4244
  "node_modules/proxy-addr": {
4245
- "version": "2.0.7",
4246
- "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
4247
- "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
4245
+ "version": "2.0.8",
4246
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.8.tgz",
4247
+ "integrity": "sha512-5nnx0yGyVUcY6t9RnWcARWtwT9F1D8O9rt08htPvnd49W1IgZtmLkhu9WfMzQj1cFxjHIO6connUNVW5k7AVyQ==",
4248
4248
  "license": "MIT",
4249
4249
  "dependencies": {
4250
4250
  "forwarded": "0.2.0",
@@ -4252,6 +4252,10 @@
4252
4252
  },
4253
4253
  "engines": {
4254
4254
  "node": ">= 0.10"
4255
+ },
4256
+ "funding": {
4257
+ "type": "opencollective",
4258
+ "url": "https://opencollective.com/express"
4255
4259
  }
4256
4260
  },
4257
4261
  "node_modules/proxy-agent-negotiate": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bastani/atomic",
3
- "version": "0.9.27-alpha.1",
3
+ "version": "0.9.28-alpha.1",
4
4
  "description": "Atomic coding agent CLI with read, bash, edit, write tools and session management",
5
5
  "type": "module",
6
6
  "atomicConfig": {
@@ -80,16 +80,16 @@
80
80
  "prepublishOnly": "bun run clean && bun run build && bun run shrinkwrap"
81
81
  },
82
82
  "dependencies": {
83
- "@bastani/atomic-natives": "0.9.27-alpha.1",
84
- "@bastani/pi-ai": "0.9.27-alpha.1",
83
+ "@bastani/atomic-natives": "0.9.28-alpha.1",
84
+ "@bastani/pi-ai": "0.9.28-alpha.1",
85
85
  "@dbos-inc/dbos-sdk": "4.25.14",
86
- "@earendil-works/pi-agent-core": "1.0.2",
87
- "@earendil-works/pi-client": "1.0.2",
88
- "@earendil-works/pi-codemode": "1.0.2",
89
- "@earendil-works/pi-protocol": "1.0.2",
90
- "@earendil-works/pi-tui": "1.0.2",
86
+ "@earendil-works/pi-agent-core": "1.0.4",
87
+ "@earendil-works/pi-client": "1.0.4",
88
+ "@earendil-works/pi-codemode": "1.0.4",
89
+ "@earendil-works/pi-protocol": "1.0.4",
90
+ "@earendil-works/pi-tui": "1.0.4",
91
91
  "@modelcontextprotocol/ext-apps": "^1.7.5",
92
- "@modelcontextprotocol/sdk": "1.30.0",
92
+ "@modelcontextprotocol/sdk": "1.32.1",
93
93
  "@mozilla/readability": "^0.6.0",
94
94
  "@silvia-odwyer/photon-node": "0.3.4",
95
95
  "@typesafe-ai/sdk": "0.6.0",