@bastani/atomic 0.9.28-alpha.2 → 0.9.28-alpha.4

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 (327) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/dist/builtin/intercom/package.json +2 -2
  3. package/dist/builtin/mcp/native-client-licenses/NOTICE +2 -0
  4. package/dist/builtin/mcp/package.json +1 -1
  5. package/dist/builtin/subagents/CHANGELOG.md +6 -0
  6. package/dist/builtin/subagents/package.json +3 -3
  7. package/dist/builtin/subagents/skills/agent-browser/SKILL.md +1 -1
  8. package/dist/builtin/subagents/skills/cua-driver/BROWSER.md +60 -39
  9. package/dist/builtin/subagents/skills/cua-driver/EMBEDDING.md +119 -36
  10. package/dist/builtin/subagents/skills/cua-driver/LINUX.md +225 -183
  11. package/dist/builtin/subagents/skills/cua-driver/MACOS.md +120 -89
  12. package/dist/builtin/subagents/skills/cua-driver/README.md +16 -7
  13. package/dist/builtin/subagents/skills/cua-driver/RECORDING.md +85 -115
  14. package/dist/builtin/subagents/skills/cua-driver/RUNTIME.md +113 -0
  15. package/dist/builtin/subagents/skills/cua-driver/SKILL.md +55 -1071
  16. package/dist/builtin/subagents/skills/cua-driver/VISUAL.md +125 -0
  17. package/dist/builtin/subagents/skills/cua-driver/WINDOWS.md +145 -185
  18. package/dist/builtin/subagents/skills/cua-driver/WORKFLOW.md +173 -0
  19. package/dist/builtin/web-access/package.json +2 -2
  20. package/dist/builtin/workflows/CHANGELOG.md +21 -0
  21. package/dist/builtin/workflows/README.md +1 -1
  22. package/dist/builtin/workflows/package.json +2 -2
  23. package/dist/builtin/workflows/skills/impeccable/SKILL.md +8 -2
  24. package/dist/builtin/workflows/skills/impeccable/reference/adapt.md +6 -0
  25. package/dist/builtin/workflows/skills/impeccable/reference/audit.md +2 -1
  26. package/dist/builtin/workflows/skills/impeccable/reference/component-review.md +63 -0
  27. package/dist/builtin/workflows/skills/impeccable/reference/degraded/asset-producer.md +5 -0
  28. package/dist/builtin/workflows/skills/impeccable/reference/degraded/finish-reviewer.md +1 -1
  29. package/dist/builtin/workflows/skills/impeccable/reference/generate.md +101 -0
  30. package/dist/builtin/workflows/skills/impeccable/reference/harden.md +9 -0
  31. package/dist/builtin/workflows/skills/impeccable/reference/hooks.md +3 -1
  32. package/dist/builtin/workflows/skills/impeccable/reference/mode-operate.md +21 -0
  33. package/dist/builtin/workflows/skills/impeccable/reference/mode-persuade.md +19 -0
  34. package/dist/builtin/workflows/skills/impeccable/reference/mode-read.md +21 -0
  35. package/dist/builtin/workflows/skills/impeccable/reference/new-work.md +19 -12
  36. package/dist/builtin/workflows/skills/impeccable/reference/region-map.md +26 -0
  37. package/dist/builtin/workflows/skills/impeccable/reference/routing.md +1 -1
  38. package/dist/builtin/workflows/skills/impeccable/reference/visualize.md +5 -5
  39. package/dist/builtin/workflows/skills/impeccable/scripts/VERSION +1 -1
  40. package/dist/builtin/workflows/skills/impeccable/scripts/command-metadata.json +4 -0
  41. package/dist/builtin/workflows/skills/impeccable/scripts/impeccable.cmd +2 -2
  42. package/dist/builtin/workflows/skills/impeccable/scripts/live-browser-session.js +5 -1
  43. package/dist/builtin/workflows/skills/impeccable/scripts/live-browser.js +524 -4
  44. package/dist/builtin/workflows/skills/prompt-engineer/SKILL.md +1 -0
  45. package/dist/builtin/workflows/skills/prompt-engineer/references/claude_haiku_5_5.md +81 -0
  46. package/dist/builtin/workflows/src/extension/index.bundle.mjs +14733 -14704
  47. package/dist/cli/args.d.ts.map +1 -1
  48. package/dist/cli/args.js +8 -1
  49. package/dist/cli/args.js.map +1 -1
  50. package/dist/codemode-worker.js +2 -2
  51. package/dist/config.d.ts +2 -1
  52. package/dist/config.d.ts.map +1 -1
  53. package/dist/config.js +4 -2
  54. package/dist/config.js.map +1 -1
  55. package/dist/core/agent-session-compaction.d.ts +3 -3
  56. package/dist/core/agent-session-compaction.d.ts.map +1 -1
  57. package/dist/core/agent-session-compaction.js +5 -1
  58. package/dist/core/agent-session-compaction.js.map +1 -1
  59. package/dist/core/agent-session-events.d.ts.map +1 -1
  60. package/dist/core/agent-session-events.js +1 -0
  61. package/dist/core/agent-session-events.js.map +1 -1
  62. package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
  63. package/dist/core/agent-session-extension-bindings.js +7 -2
  64. package/dist/core/agent-session-extension-bindings.js.map +1 -1
  65. package/dist/core/agent-session-methods.d.ts +7 -1
  66. package/dist/core/agent-session-methods.d.ts.map +1 -1
  67. package/dist/core/agent-session-methods.js.map +1 -1
  68. package/dist/core/agent-session-prompt.d.ts.map +1 -1
  69. package/dist/core/agent-session-prompt.js +3 -2
  70. package/dist/core/agent-session-prompt.js.map +1 -1
  71. package/dist/core/agent-session-tool-registry.js.map +1 -1
  72. package/dist/core/agent-session-types.d.ts +2 -0
  73. package/dist/core/agent-session-types.d.ts.map +1 -1
  74. package/dist/core/agent-session-types.js.map +1 -1
  75. package/dist/core/agent-session.d.ts +2 -0
  76. package/dist/core/agent-session.d.ts.map +1 -1
  77. package/dist/core/agent-session.js +6 -1
  78. package/dist/core/agent-session.js.map +1 -1
  79. package/dist/core/bash-executor.d.ts.map +1 -1
  80. package/dist/core/bash-executor.js +22 -4
  81. package/dist/core/bash-executor.js.map +1 -1
  82. package/dist/core/child-session-options.d.ts.map +1 -1
  83. package/dist/core/child-session-options.js +17 -2
  84. package/dist/core/child-session-options.js.map +1 -1
  85. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  86. package/dist/core/export-html/tool-renderer.js +2 -0
  87. package/dist/core/export-html/tool-renderer.js.map +1 -1
  88. package/dist/core/extensions/agent-events.d.ts +2 -0
  89. package/dist/core/extensions/agent-events.d.ts.map +1 -1
  90. package/dist/core/extensions/agent-events.js.map +1 -1
  91. package/dist/core/extensions/context-types.d.ts +2 -0
  92. package/dist/core/extensions/context-types.d.ts.map +1 -1
  93. package/dist/core/extensions/context-types.js.map +1 -1
  94. package/dist/core/extensions/loader-virtual-modules.d.ts +3 -4
  95. package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
  96. package/dist/core/extensions/loader-virtual-modules.js +14 -9
  97. package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
  98. package/dist/core/extensions/mcp-server-registry.d.ts +4 -1
  99. package/dist/core/extensions/mcp-server-registry.d.ts.map +1 -1
  100. package/dist/core/extensions/mcp-server-registry.js +7 -4
  101. package/dist/core/extensions/mcp-server-registry.js.map +1 -1
  102. package/dist/core/extensions/runner.d.ts +3 -0
  103. package/dist/core/extensions/runner.d.ts.map +1 -1
  104. package/dist/core/extensions/runner.js +19 -0
  105. package/dist/core/extensions/runner.js.map +1 -1
  106. package/dist/core/extensions/tool-events.d.ts +1 -1
  107. package/dist/core/extensions/tool-events.js.map +1 -1
  108. package/dist/core/extensions/tool-types.d.ts +2 -0
  109. package/dist/core/extensions/tool-types.d.ts.map +1 -1
  110. package/dist/core/extensions/tool-types.js.map +1 -1
  111. package/dist/core/extensions/ts-source-specifiers.d.ts +18 -0
  112. package/dist/core/extensions/ts-source-specifiers.d.ts.map +1 -0
  113. package/dist/core/extensions/ts-source-specifiers.js +142 -0
  114. package/dist/core/extensions/ts-source-specifiers.js.map +1 -0
  115. package/dist/core/fast-model-variants.d.ts.map +1 -1
  116. package/dist/core/fast-model-variants.js +3 -2
  117. package/dist/core/fast-model-variants.js.map +1 -1
  118. package/dist/core/model-resolver-defaults.d.ts.map +1 -1
  119. package/dist/core/model-resolver-defaults.js +2 -0
  120. package/dist/core/model-resolver-defaults.js.map +1 -1
  121. package/dist/core/nested-tool-calls.d.ts +1 -0
  122. package/dist/core/nested-tool-calls.d.ts.map +1 -1
  123. package/dist/core/nested-tool-calls.js +1 -0
  124. package/dist/core/nested-tool-calls.js.map +1 -1
  125. package/dist/core/sdk-exports.d.ts +2 -2
  126. package/dist/core/sdk-exports.js.map +1 -1
  127. package/dist/core/sdk-types.d.ts +3 -0
  128. package/dist/core/sdk-types.d.ts.map +1 -1
  129. package/dist/core/sdk-types.js.map +1 -1
  130. package/dist/core/sdk.d.ts.map +1 -1
  131. package/dist/core/sdk.js +17 -8
  132. package/dist/core/sdk.js.map +1 -1
  133. package/dist/core/settings-manager-basic-accessors.js.map +1 -1
  134. package/dist/core/settings-manager-core.js.map +1 -1
  135. package/dist/core/settings-merge.d.ts +3 -0
  136. package/dist/core/settings-merge.d.ts.map +1 -1
  137. package/dist/core/settings-merge.js +18 -4
  138. package/dist/core/settings-merge.js.map +1 -1
  139. package/dist/core/settings-storage.js.map +1 -1
  140. package/dist/core/settings-types.js.map +1 -1
  141. package/dist/core/tools/bash.d.ts.map +1 -1
  142. package/dist/core/tools/bash.js +7 -3
  143. package/dist/core/tools/bash.js.map +1 -1
  144. package/dist/core/tools/edit.js +1 -1
  145. package/dist/core/tools/edit.js.map +1 -1
  146. package/dist/extensions/codemode/execute.d.ts.map +1 -1
  147. package/dist/extensions/codemode/execute.js +69 -8
  148. package/dist/extensions/codemode/execute.js.map +1 -1
  149. package/dist/extensions/codemode/index.d.ts.map +1 -1
  150. package/dist/extensions/codemode/index.js +7 -0
  151. package/dist/extensions/codemode/index.js.map +1 -1
  152. package/dist/extensions/codemode/tool.d.ts +2 -0
  153. package/dist/extensions/codemode/tool.d.ts.map +1 -1
  154. package/dist/extensions/codemode/tool.js +4 -2
  155. package/dist/extensions/codemode/tool.js.map +1 -1
  156. package/dist/extensions/llama/provider.d.ts.map +1 -1
  157. package/dist/extensions/llama/provider.js +19 -8
  158. package/dist/extensions/llama/provider.js.map +1 -1
  159. package/dist/extensions/mcp/cli.js +18 -24
  160. package/dist/extensions/mcp/cli.js.map +1 -1
  161. package/dist/extensions/mcp/client/auth-provider.d.ts +4 -0
  162. package/dist/extensions/mcp/client/auth-provider.d.ts.map +1 -1
  163. package/dist/extensions/mcp/client/auth-provider.js.map +1 -1
  164. package/dist/extensions/mcp/client/oauth/discovery.d.ts +3 -0
  165. package/dist/extensions/mcp/client/oauth/discovery.d.ts.map +1 -1
  166. package/dist/extensions/mcp/client/oauth/discovery.js +8 -5
  167. package/dist/extensions/mcp/client/oauth/discovery.js.map +1 -1
  168. package/dist/extensions/mcp/client/oauth/flow.d.ts +4 -0
  169. package/dist/extensions/mcp/client/oauth/flow.d.ts.map +1 -1
  170. package/dist/extensions/mcp/client/oauth/flow.js +12 -2
  171. package/dist/extensions/mcp/client/oauth/flow.js.map +1 -1
  172. package/dist/extensions/mcp/client/transports/streamable-http.d.ts +3 -0
  173. package/dist/extensions/mcp/client/transports/streamable-http.d.ts.map +1 -1
  174. package/dist/extensions/mcp/client/transports/streamable-http.js +17 -14
  175. package/dist/extensions/mcp/client/transports/streamable-http.js.map +1 -1
  176. package/dist/extensions/mcp/index.d.ts.map +1 -1
  177. package/dist/extensions/mcp/index.js +150 -72
  178. package/dist/extensions/mcp/index.js.map +1 -1
  179. package/dist/extensions/mcp/oauth.d.ts +5 -3
  180. package/dist/extensions/mcp/oauth.d.ts.map +1 -1
  181. package/dist/extensions/mcp/oauth.js +36 -10
  182. package/dist/extensions/mcp/oauth.js.map +1 -1
  183. package/dist/extensions/mcp/ui.d.ts +3 -3
  184. package/dist/extensions/mcp/ui.d.ts.map +1 -1
  185. package/dist/extensions/mcp/ui.js +10 -2
  186. package/dist/extensions/mcp/ui.js.map +1 -1
  187. package/dist/index.d.ts +2 -2
  188. package/dist/index.d.ts.map +1 -1
  189. package/dist/index.js.map +1 -1
  190. package/dist/main-deferred-startup.d.ts +1 -0
  191. package/dist/main-deferred-startup.d.ts.map +1 -1
  192. package/dist/main-deferred-startup.js +9 -21
  193. package/dist/main-deferred-startup.js.map +1 -1
  194. package/dist/main.d.ts.map +1 -1
  195. package/dist/main.js +8 -6
  196. package/dist/main.js.map +1 -1
  197. package/dist/modes/interactive/components/bash-execution.d.ts +5 -1
  198. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  199. package/dist/modes/interactive/components/bash-execution.js +17 -14
  200. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  201. package/dist/modes/interactive/components/branch-summary-message.d.ts +2 -1
  202. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  203. package/dist/modes/interactive/components/branch-summary-message.js +5 -2
  204. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  205. package/dist/modes/interactive/components/chat-message-renderer.d.ts +1 -0
  206. package/dist/modes/interactive/components/chat-message-renderer.d.ts.map +1 -1
  207. package/dist/modes/interactive/components/chat-message-renderer.js +19 -8
  208. package/dist/modes/interactive/components/chat-message-renderer.js.map +1 -1
  209. package/dist/modes/interactive/components/compaction-boundary-message.d.ts +3 -2
  210. package/dist/modes/interactive/components/compaction-boundary-message.d.ts.map +1 -1
  211. package/dist/modes/interactive/components/compaction-boundary-message.js +7 -4
  212. package/dist/modes/interactive/components/compaction-boundary-message.js.map +1 -1
  213. package/dist/modes/interactive/components/custom-entry.d.ts +3 -1
  214. package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -1
  215. package/dist/modes/interactive/components/custom-entry.js +8 -2
  216. package/dist/modes/interactive/components/custom-entry.js.map +1 -1
  217. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  218. package/dist/modes/interactive/components/custom-message.js +1 -0
  219. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  220. package/dist/modes/interactive/components/settings-selector-items.js +1 -1
  221. package/dist/modes/interactive/components/settings-selector-items.js.map +1 -1
  222. package/dist/modes/interactive/components/skill-invocation-message.d.ts +2 -1
  223. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  224. package/dist/modes/interactive/components/skill-invocation-message.js +5 -2
  225. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  226. package/dist/modes/interactive/components/tool-execution.d.ts +4 -0
  227. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  228. package/dist/modes/interactive/components/tool-execution.js +10 -0
  229. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  230. package/dist/modes/interactive/interactive-agent-events.js +3 -1
  231. package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
  232. package/dist/modes/interactive/interactive-auth-login.js +6 -0
  233. package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
  234. package/dist/modes/interactive/interactive-bash-compact.js +2 -2
  235. package/dist/modes/interactive/interactive-bash-compact.js.map +1 -1
  236. package/dist/modes/interactive/interactive-extension-dialogs.js +11 -2
  237. package/dist/modes/interactive/interactive-extension-dialogs.js.map +1 -1
  238. package/dist/modes/interactive/interactive-input-handling.d.ts.map +1 -1
  239. package/dist/modes/interactive/interactive-input-handling.js +1 -47
  240. package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
  241. package/dist/modes/interactive/interactive-mode-base.d.ts +3 -1
  242. package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
  243. package/dist/modes/interactive/interactive-mode-base.js +6 -1
  244. package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
  245. package/dist/modes/interactive/interactive-mode-surface.d.ts +2 -2
  246. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
  247. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
  248. package/dist/modes/interactive/interactive-prompt-restore.d.ts.map +1 -1
  249. package/dist/modes/interactive/interactive-prompt-restore.js +0 -5
  250. package/dist/modes/interactive/interactive-prompt-restore.js.map +1 -1
  251. package/dist/modes/interactive/interactive-render-chat.js +7 -10
  252. package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
  253. package/dist/modes/interactive/interactive-selectors.js +8 -1
  254. package/dist/modes/interactive/interactive-selectors.js.map +1 -1
  255. package/dist/modes/interactive/interactive-session-runtime.js +1 -0
  256. package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
  257. package/dist/modes/interactive/interactive-startup.js +1 -0
  258. package/dist/modes/interactive/interactive-startup.js.map +1 -1
  259. package/dist/modes/interactive/program-status-reporter.d.ts +24 -0
  260. package/dist/modes/interactive/program-status-reporter.d.ts.map +1 -0
  261. package/dist/modes/interactive/program-status-reporter.js +96 -0
  262. package/dist/modes/interactive/program-status-reporter.js.map +1 -0
  263. package/dist/modes/interactive-engine/engine-custom-ui.d.ts.map +1 -1
  264. package/dist/modes/interactive-engine/engine-custom-ui.js +1 -0
  265. package/dist/modes/interactive-engine/engine-custom-ui.js.map +1 -1
  266. package/dist/modes/interactive-engine/engine-render-service.d.ts.map +1 -1
  267. package/dist/modes/interactive-engine/engine-render-service.js +3 -1
  268. package/dist/modes/interactive-engine/engine-render-service.js.map +1 -1
  269. package/dist/modes/interactive-engine/protocol.d.ts +1 -0
  270. package/dist/modes/interactive-engine/protocol.d.ts.map +1 -1
  271. package/dist/modes/interactive-engine/protocol.js +1 -0
  272. package/dist/modes/interactive-engine/protocol.js.map +1 -1
  273. package/dist/modes/interactive-engine/remote-renderer.d.ts +3 -0
  274. package/dist/modes/interactive-engine/remote-renderer.d.ts.map +1 -1
  275. package/dist/modes/interactive-engine/remote-renderer.js +7 -0
  276. package/dist/modes/interactive-engine/remote-renderer.js.map +1 -1
  277. package/dist/modes/rpc/rpc-client-process.d.ts +7 -0
  278. package/dist/modes/rpc/rpc-client-process.d.ts.map +1 -1
  279. package/dist/modes/rpc/rpc-client-process.js +20 -3
  280. package/dist/modes/rpc/rpc-client-process.js.map +1 -1
  281. package/dist/modes/rpc/rpc-command-timeouts.d.ts.map +1 -1
  282. package/dist/modes/rpc/rpc-command-timeouts.js +1 -0
  283. package/dist/modes/rpc/rpc-command-timeouts.js.map +1 -1
  284. package/dist/utils/ansi.d.ts +8 -0
  285. package/dist/utils/ansi.d.ts.map +1 -1
  286. package/dist/utils/ansi.js +29 -10
  287. package/dist/utils/ansi.js.map +1 -1
  288. package/dist/utils/clipboard.d.ts.map +1 -1
  289. package/dist/utils/clipboard.js +13 -3
  290. package/dist/utils/clipboard.js.map +1 -1
  291. package/dist/utils/image-resize-core.d.ts +8 -0
  292. package/dist/utils/image-resize-core.d.ts.map +1 -1
  293. package/dist/utils/image-resize-core.js +1 -0
  294. package/dist/utils/image-resize-core.js.map +1 -1
  295. package/dist/utils/image-resize-worker.js +3 -2
  296. package/dist/utils/image-resize-worker.js.map +1 -1
  297. package/dist/utils/image-resize.d.ts +2 -2
  298. package/dist/utils/image-resize.d.ts.map +1 -1
  299. package/dist/utils/image-resize.js +7 -10
  300. package/dist/utils/image-resize.js.map +1 -1
  301. package/docs/codemode.md +30 -6
  302. package/docs/compaction.md +1 -1
  303. package/docs/computer-use.md +9 -9
  304. package/docs/custom-provider/streaming.md +4 -0
  305. package/docs/environment-variables.md +2 -0
  306. package/docs/extensions/api-reference.md +1 -1
  307. package/docs/extensions/authoring.md +2 -0
  308. package/docs/extensions/events.md +5 -1
  309. package/docs/getting-started/first-session.md +1 -1
  310. package/docs/json.md +6 -1
  311. package/docs/llama-cpp.md +9 -2
  312. package/docs/mcp-servers.md +3 -3
  313. package/docs/models/evals.md +34 -3
  314. package/docs/models.md +10 -0
  315. package/docs/providers.md +35 -4
  316. package/docs/reference/cli.md +2 -2
  317. package/docs/sdk/reference.md +3 -3
  318. package/docs/sdk.md +7 -1
  319. package/docs/settings.md +3 -3
  320. package/docs/skills.md +1 -1
  321. package/docs/terminal-setup.md +14 -0
  322. package/docs/tools.md +1 -1
  323. package/docs/workflows/authoring.md +3 -3
  324. package/docs/workflows/operations.md +2 -2
  325. package/examples/extensions/sandbox/package-lock.json +3 -3
  326. package/npm-shrinkwrap.json +67 -67
  327. package/package.json +8 -8
package/docs/providers.md CHANGED
@@ -65,6 +65,14 @@ Run `/login openai`, then choose **API key** or **Sign in with ChatGPT**. The Ch
65
65
 
66
66
  Complete the browser callback, or paste the full callback URL into the login dialog on a remote machine. If your browser cannot reach `127.0.0.1:1455`, copy the final URL from its address bar, including `code`, `state`, and `client_id`, and paste it into Atomic. Atomic creates a global device identity on first use of this sign-in; project settings do not override it. A saved subscription credential does not verify model entitlement or remaining usage.
67
67
 
68
+ Apps using `@bastani/pi-ai` directly can pass `{ agentName: "my-app" }` as the fourth argument to `models.login()` to set the OpenAI ChatGPT name hint or Codex browser-login originator. ChatGPT sign-in keeps `Atomic` as its default name.
69
+
70
+ ### Subscription and API key at the same time
71
+
72
+ `openai` and `anthropic` hold one credential each, so a subscription login there replaces the API key. To keep both, use the API-key-only providers `openai-api` and `anthropic-api`. They list the same chat models, send requests to the same endpoints, and read `OPENAI_API_KEY` or `ANTHROPIC_API_KEY` unless you save a key with `/login openai-api` or `/login anthropic-api`. They never offer subscription sign-in, and `anthropic-api` ignores `ANTHROPIC_OAUTH_TOKEN` and `ANTHROPIC_AUTH_TOKEN`.
73
+
74
+ For example, sign in with ChatGPT under `openai` and select `openai/gpt-6-sol` for subscription chat, while a workflow stage pinned to `openai-api/gpt-6-sol` bills the API key.
75
+
68
76
  ### OpenAI Codex
69
77
 
70
78
  - Requires ChatGPT Plus or Pro subscription
@@ -72,6 +80,8 @@ Complete the browser callback, or paste the full callback URL into the login dia
72
80
 
73
81
  If the Codex backend reports that an OAuth/auth token was invalidated or revoked, retry the request once in case the rejection is transient. If it persists, run `/logout` and select **OpenAI ChatGPT Plus/Pro**, then run `/login`, authenticate that subscription again, and retry the request. Atomic displays these recovery steps with the provider error; it does not automatically delete the stored credential or repeatedly retry a definitive authentication rejection.
74
82
 
83
+ For Codex requests, `models.json` headers or per-request SDK headers can override `originator` and `User-Agent`. The transport still supplies the authenticated bearer token and ChatGPT account ID.
84
+
75
85
  GPT-6-Astra is selectable as `openai-codex/gpt-6-astra`. Atomic also derives the canonical `openai-codex/gpt-6-astra-fast` choice. The fast choice sends upstream model `gpt-6-astra` with `service_tier: priority` and keeps the first-party Codex transport identity described below. Access can still depend on the account, rollout, and minimum client policy even though Atomic lists the model.
76
86
 
77
87
  GPT-6 Sol and GPT-6 Luna are selectable as `openai/gpt-6-sol`, `openai/gpt-6-luna`, `openai-codex/gpt-6-sol`, and `openai-codex/gpt-6-luna`. Each has a derived `-fast` choice, such as `openai-codex/gpt-6-sol-fast`, that sends the base upstream model with `service_tier: priority`. Copilot's bundled catalog and account policy determine which Sol models are available; fast siblings require an exact advertised ID.
@@ -128,6 +138,8 @@ Anthropic subscription auth is active for Claude Pro/Max accounts. Third-party h
128
138
 
129
139
  Run `/login anthropic` and choose subscription authentication. **Browser login (default)** uses a local callback and still accepts a pasted redirect URL. Choose **Copy code login (headless)** when your browser runs on another machine: complete sign-in in that browser, then paste the `code#state` value Anthropic displays into Atomic. This method does not need a reachable local callback.
130
140
 
141
+ Browser login tries loopback port `53692` first and uses a free port if it is unavailable. For SSH or container port forwarding, forward `53692` when it is free; otherwise use **Copy code login (headless)** or paste the final redirect URL.
142
+
131
143
  For gateway-issued Anthropic bearer credentials, set `ANTHROPIC_AUTH_TOKEN` without `ANTHROPIC_API_KEY` or `ANTHROPIC_OAUTH_TOKEN`. A populated bearer token counts as configured Anthropic authentication, so `/model`, saved/default selection, cycling, RPC catalogs, and isolated model pickers keep Anthropic models available. Atomic sends it as `Authorization: Bearer …` for normal turns, branch summaries, and Verbatim Compaction without replacing caller-supplied custom headers.
132
144
 
133
145
  Claude Opus 5 is available from the bundled/dynamic Anthropic and Amazon Bedrock catalogs. With bearer-only Anthropic auth, select the exact `anthropic/claude-opus-5-*` entry through `/model`; Bedrock uses its catalog-advertised inference profile. `xhigh` appears only when the chosen entry advertises it. Bedrock requests retain adaptive thinking, prompt caching, and AWS validation/error details from the provider runtime.
@@ -188,6 +200,8 @@ Run `/login meta`, then select **Sign in with Meta** to open the device authoriz
188
200
 
189
201
  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`.
190
202
 
203
+ Once a fetched or cached Radius catalog is available, it replaces the bundled defaults. Models disabled by your organization no longer appear; an empty gateway catalog leaves no Radius models to select. Ask your organization owner to enable models if the list is empty.
204
+
191
205
  ## API Keys
192
206
 
193
207
  ### Environment Variables or Auth File
@@ -210,9 +224,11 @@ Catalog failures preserve the last usable models for each provider. See [catalog
210
224
  | Provider | Environment Variable | `auth.json` key |
211
225
  | ---------------------------------- | ------------------------------------------------------------------------- | ---------------------------- |
212
226
  | Anthropic | `ANTHROPIC_API_KEY` or bearer-only `ANTHROPIC_AUTH_TOKEN` | `anthropic` |
227
+ | Anthropic (API key only) | `ANTHROPIC_API_KEY` | `anthropic-api` |
213
228
  | Ant Ling | `ANT_LING_API_KEY` | `ant-ling` |
214
229
  | Azure | `AZURE_OPENAI_API_KEY` | `azure` |
215
230
  | OpenAI | `OPENAI_API_KEY` | `openai` |
231
+ | OpenAI (API key only) | `OPENAI_API_KEY` | `openai-api` |
216
232
  | DeepSeek | `DEEPSEEK_API_KEY` | `deepseek` |
217
233
  | NVIDIA NIM | `NVIDIA_API_KEY` | `nvidia` |
218
234
  | Google Gemini | `GEMINI_API_KEY` | `google` |
@@ -351,7 +367,7 @@ Use `--list-models` or `/model` to check the current catalog and replace a missi
351
367
 
352
368
  ### Azure
353
369
 
354
- Use the `azure` provider for OpenAI Responses models and Azure Foundry Chat Completions, including `azure/deepseek-v4-pro`:
370
+ Use the `azure` provider for OpenAI Responses models and Microsoft Foundry Chat Completions models, including `azure/deepseek-v4-pro`. The provider ID `azure` is the key in `auth.json`, `models.json`, and `settings.json`, and the prefix in model references:
355
371
 
356
372
  ```bash
357
373
  atomic --model azure/deepseek-v4-pro:high
@@ -359,8 +375,6 @@ atomic --model azure/deepseek-v4-pro:high
359
375
 
360
376
  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`.
361
377
 
362
- 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.
363
-
364
378
  ```bash
365
379
  export AZURE_OPENAI_API_KEY=...
366
380
  export AZURE_OPENAI_BASE_URL=https://your-resource.openai.azure.com
@@ -375,10 +389,25 @@ export AZURE_OPENAI_API_VERSION=2024-02-01
375
389
  export AZURE_OPENAI_DEPLOYMENT_NAME_MAP=gpt-4=my-gpt4,gpt-4o=my-gpt4o
376
390
  ```
377
391
 
378
- `AZURE_OPENAI_API_VERSION` configures Responses requests. Chat Completions uses the normalized `/openai/v1` endpoint.
392
+ `AZURE_OPENAI_API_VERSION` configures Responses requests and defaults to `v1`. Chat Completions uses the normalized `/openai/v1` endpoint.
379
393
 
380
394
  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.
381
395
 
396
+ 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, for example for a Foundry model that Atomic does not include. Custom models require a `baseUrl`; `AZURE_OPENAI_BASE_URL` and `AZURE_OPENAI_RESOURCE_NAME` take priority over it when set:
397
+
398
+ ```json
399
+ {
400
+ "providers": {
401
+ "azure": {
402
+ "baseUrl": "https://your-resource.services.ai.azure.com",
403
+ "models": [
404
+ { "id": "your-deployment", "api": "openai-completions" }
405
+ ]
406
+ }
407
+ }
408
+ }
409
+ ```
410
+
382
411
  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.
383
412
 
384
413
  ### Amazon Bedrock
@@ -414,6 +443,8 @@ us.openai.gpt-6-astra
414
443
 
415
444
  Select them under the single `amazon-bedrock` provider. Atomic passes the chosen ID unchanged to Bedrock Converse and sends the selected `low`, `medium`, `high`, `xhigh`, or `max` setting as the OpenAI `reasoning_effort` field. The unprefixed ID is Codex's direct/Mantle entry; `global.` and `us.` are Bedrock Runtime inference profiles. Bedrock does not advertise Astra Fast, so Atomic derives no fast sibling for these models. AWS's public region and pricing pages did not list Astra when this catalog entry was added. Availability can vary by account and region, and Atomic records zero catalog cost until AWS publishes an authoritative rate.
416
445
 
446
+ Other Bedrock GPT models receive the selected thinking level as `reasoning.effort`; `minimal` maps to `low`. GPT-oss uses `reasoning_effort` and maps `minimal` to `low` and `xhigh` or `max` to `high`. For a custom application inference profile, give the model a recognizable GPT name in `models.json` so the reasoning setting is sent.
447
+
417
448
  Prompt caching is enabled automatically for Claude models whose ID contains a recognizable model name (base models and system-defined inference profiles). For application inference profiles (whose ARNs don't contain the model name), set `AWS_BEDROCK_FORCE_CACHE=1` to enable cache points:
418
449
 
419
450
  ```bash
@@ -144,14 +144,14 @@ 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 tool names or `*` patterns; keeps MCP tools unless an entry starts with `mcp__` |
147
+ | `--tools <list>`, `-t <list>` | Allowlist tool names or `*` patterns, or modify defaults with only `+name`/`-name` entries; an allowlist keeps MCP tools unless an entry starts with `mcp__` |
148
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
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
- 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.
154
+ To add opt-in [codemode](/tools#codemode) or [tool search](/tools#tool_search) alongside defaults, use `atomic --tools +codemode,+tool_search` for one invocation, or `"defaultTools": ["+codemode", "+tool_search"]` in settings. `atomic --tools +codemode,-write` keeps the other defaults and disables `write`. Modifier entries take exact names, not `*` patterns, and cannot be mixed with plain allowlist entries. Use `--exclude-tools` for pattern exclusions. On `/reload`, modifiers apply to the reloaded `defaultTools` setting too, so tools removed with `-name` stay removed. Modifiers do not narrow extension/custom tools or filter MCP exposure; `--no-tools` still disables every tool.
155
155
 
156
156
  ### MCP tools
157
157
 
@@ -180,9 +180,9 @@ Specify which tools to expose by name:
180
180
  - Built-in tool names enabled by default: `read`, `bash`, `kill`, `edit`, `write`, `find`, `search`, `ask_user_question`, `todo`
181
181
  - `find` discovers filesystem paths by glob; `search` searches file contents with regex patterns across files, directories, globs, and internal URLs.
182
182
  - `builtins` selects shipped packages independently of tools: keys are `workflows`, `subagents`, `mcp`, `web-access`, and `intercom`. Omitted, `{}`, and omitted keys enable packages. A `false` value removes that package's extensions and resources, including on reload; `true` enables it.
183
- - `tools` is an allowlist of coding, extension, and custom tool names. `tools: []` exposes none, including Intercom.
183
+ - `tools` accepts an allowlist of coding, extension, and custom tool names or `*` patterns. `tools: []` exposes none, including Intercom. A list containing only `+name`/`-name` entries instead changes the resolved defaults, for example `tools: ["+codemode", "-write"]`. Modifiers take exact names, cannot be mixed with plain entries, and apply to reloaded defaults too. Invalid lists throw. Extension/custom tools and MCP exposure retain their default behavior with modifiers.
184
184
  - `excludedTools` removes matching names from the registry and active selection. Exclusions win over `tools`; unknown names are ignored.
185
- - `noTools: "all"` exposes no tools, even with a nonempty `tools` allowlist. It does not remove package resources or authorize services.
185
+ - `noTools: "all"` exposes no tools, even with a nonempty `tools` allowlist or modifiers. It does not remove package resources or authorize services.
186
186
  - `noTools: "builtin"` suppresses coding-tool defaults when `tools` is omitted, keeping extension/custom tools except exclusions. An explicit `tools` list still wins over this mode.
187
187
  - Configured `defaultTools` selects initial coding tools when `tools` and `noTools` are omitted. Plain names replace the defaults; modifier-only lists such as `["-bash", "+ls"]` change the defaults, and project modifier-only lists layer over the global selection. Extension/custom tools retain their own activation behavior. See [defaultTools](/settings#tools).
188
188
 
@@ -298,7 +298,7 @@ Use `defineTool()` for standalone definitions and arrays like `customTools: [myT
298
298
 
299
299
  Custom tools passed via `customTools` are combined with extension-registered tools. Extensions loaded by the ResourceLoader can also register tools via `pi.registerTool()`.
300
300
 
301
- If you pass `tools`, include each custom or extension tool name you want enabled, for example `tools: ["read", "bash", "my_tool"]`. Use `excludedTools` to remove a custom or extension tool by name from the final exposed set.
301
+ If you pass a plain-name `tools` allowlist, include each custom or extension tool name you want enabled, for example `tools: ["read", "bash", "my_tool"]`. Modifier-only lists retain default activation and can enable inactive registered tools with `+name`. Use `excludedTools` to remove a custom or extension tool by name from the final exposed set.
302
302
 
303
303
  `ToolDefinition.constrainedSampling` is part of the public SDK and survives `defineTool()`, `customTools`, tool wrappers, session/staged inspection, and isolated execution. Use `{ type: "json_schema", strict: "prefer" | "require" }`, `{ type: "grammar", variants: { openai_lark?: string, openai_regex?: string } }`, or `false`. `prefer` can fall back; `require` fails when the active model cannot enforce strict JSON Schema. Grammar constraints require one required string parameter and capable model metadata. Public inspection preserves optional-property identity exactly: an omitted key stays absent, an explicitly present `undefined` stays present, and `false` or a config object remains unchanged. The exported `ConstrainedSamplingConfig` type and [extension reference](/extensions/authoring#constrained-sampling) define the exact shape. Typed RPC clients receive the four model capability flags through optional `ModelInfo.compat`; see [RPC](/rpc/protocol#get_available_models).
304
304
 
package/docs/sdk.md CHANGED
@@ -420,7 +420,7 @@ interface AgentSession {
420
420
  navigateTree(targetId: string, options?: { summarize?: boolean; customInstructions?: string; replaceInstructions?: boolean; label?: string }): Promise<{ editorText?: string; cancelled: boolean; aborted?: boolean; summaryEntry?: BranchSummaryEntry }>;
421
421
 
422
422
  // Verbatim line compaction
423
- compact(options?: Partial<VerbatimCompactionParameters>): Promise<VerbatimCompactionResult>;
423
+ compact(options?: SessionCompactOptions): Promise<VerbatimCompactionResult>; // Partial<VerbatimCompactionParameters> & { compactionModel?: string }
424
424
  abortCompaction(): void;
425
425
 
426
426
  // Abort current operation
@@ -493,6 +493,12 @@ Caller-supplied `executeBash()` IDs remain correlation IDs, not unique operation
493
493
 
494
494
  `compact()` removes selected older transcript lines without asking the model to rewrite retained text. It appends a durable `compaction` entry with `details.strategy: "verbatim-lines"` and respects the configured recent-message count. See [Compaction](/compaction) for controls and [Session format](/session-format#compactionentry) for persisted fields.
495
495
 
496
+ Pass `compactionModel` to choose the compaction model for one call without changing settings. It accepts the same exact `provider/model` IDs as the [`compactionModel` setting](/compaction#compaction-model): a chat model, a registered classifier, or `morph/morph-compactor`. An unknown ID rejects before the active run is interrupted. A call made while another manual compaction is running joins that run and uses its model.
497
+
498
+ ```typescript
499
+ await session.compact({ compactionModel: "typesafe/jev-latest", query: "keep the auth decisions" });
500
+ ```
501
+
496
502
  `session.navigateTree()` rejects during streaming, compaction, or branch summarization rather than queueing the navigation. The active branch stays unchanged. Wait for the operation to finish before retrying.
497
503
 
498
504
  Session replacement APIs such as new-session, resume, fork, and import live on `AgentSessionRuntime`, not on `AgentSession`.
package/docs/settings.md CHANGED
@@ -201,7 +201,7 @@ See [Providers](/providers#fast-models) for which providers publish fast variant
201
201
  | `doubleEscapeAction` | string | `"tree"` | Action for double-escape: `"tree"`, `"fork"`, or `"none"` |
202
202
  | `treeFilterMode` | string | `"default"` | Default filter for `/tree`: `"default"`, `"no-tools"`, `"user-only"`, `"labeled-only"`, `"all"` |
203
203
  | `editorPaddingX` | number | `0` | Horizontal padding for input editor (0-3) |
204
- | `outputPad` | number | `1` | Horizontal padding for chat message output (user messages, assistant messages, thinking blocks). `0` or `1` |
204
+ | `outputPad` | number | `1` | Horizontal transcript padding for messages, tool output, `!` command output, and summary blocks. `0` or `1` |
205
205
  | `externalEditor` | string | - | Command for the Ctrl+G external editor; takes precedence over `$VISUAL`/`$EDITOR`. Defaults to Notepad on Windows and `nano` elsewhere |
206
206
  | `autocompleteMaxVisible` | number | `5` | Max visible items in the default editor and custom editors installed through `ctx.ui.setEditorComponent()` (3-20) |
207
207
  | `showHardwareCursor` | boolean | `false` | Show the terminal cursor while TUI positions it for IME support |
@@ -468,7 +468,7 @@ On Windows, select `powershell` instead of `bash`, or include both:
468
468
  }
469
469
  ```
470
470
 
471
- An empty array starts with no coding tools while preserving extension/custom tools. `--tools` replaces this behavior with an allowlist including Intercom; `--no-tools` disables every tool even with an allowlist. `--no-builtin-tools` suppresses coding defaults when no allowlist is given. `--exclude-tools` filters the result, including Intercom.
471
+ An empty array starts with no coding tools while preserving extension/custom tools. `--tools` with plain names replaces this behavior with an allowlist including Intercom; modifier-only lists change the resolved selection instead. `--no-tools` disables every tool even with an allowlist or modifiers. `--no-builtin-tools` suppresses coding defaults when no allowlist is given. `--exclude-tools` filters the result, including Intercom.
472
472
 
473
473
  A list containing only modifiers starts from Atomic's standard defaults. Modifiers are applied in order; adding an existing name or removing an absent one has no effect:
474
474
 
@@ -478,7 +478,7 @@ A list containing only modifiers starts from Atomic's standard defaults. Modifie
478
478
 
479
479
  Plain names establish a replacement list before its modifiers apply. A project list of only modifiers layers over the global selection. A project list with plain names, or an empty list, replaces the global selection. For example, global `["read", "bash"]` plus project `["-bash", "+ls"]` resolves to `["read", "ls"]`.
480
480
 
481
- `/reload` enables tools newly added to `defaultTools`. It does not disable removed tools or re-enable unchanged tools you turned off during the session. Explicit `--tools`, `--no-tools`, and `--no-builtin-tools` choices override the setting on reload too; excluded tools remain excluded.
481
+ `/reload` enables tools newly added to `defaultTools`. It does not disable removed tools or re-enable unchanged tools you turned off during the session. `--tools` with plain names, `--no-tools`, and `--no-builtin-tools` override the setting on reload too; excluded tools remain excluded. Modifier-only `--tools` lists apply on top of the reloaded setting, so a tool removed with `-name` stays removed.
482
482
 
483
483
  `codemode` and `tool_search` are built-in extension tools registered inactive. Add `"+codemode"` or `"+tool_search"` to `defaultTools` to activate them alongside ordinary defaults. See [codemode](/tools#codemode) and [tool search](/tools#tool_search) for usage and safety boundaries.
484
484
 
package/docs/skills.md CHANGED
@@ -117,7 +117,7 @@ Offline, `qlty metrics` and `qlty smells` still work through built-in static ana
117
117
 
118
118
  Load `/skill:agent-browser` first for anything it covers: websites and web apps in Chrome/Chromium, Mobile Safari in the iOS Simulator (`agent-browser -p ios`), Electron and other apps that expose a CDP port, Slack, and cloud browsers. Its text snapshots cost far fewer tokens than screenshot-driven CUA. For everything else, including native desktop apps, native iOS apps in the Simulator, Android emulators, OS dialogs, and desktop Safari or other non-Chromium browsers, load `/skill:cua-driver` and drive the exact window with one-shot `cua-driver call <tool>` commands; when a custom workflow's TypeScript owns the scenario, use the `@trycua/cua-driver` SDK inside `ctx.tool` instead. See [what agent-browser covers](/computer-use#what-agent-browser-covers) for the full split, and [Computer use](/computer-use#desktop-automation-with-cua-driver) for installing the Cua Driver executable, turning telemetry off, readiness, and permissions. For terminal automation/testing, prefer `/skill:herdr` on macOS, Linux and Windows. Install Herdr if missing when network access and permissions permit; fall back to `/skill:tmux` or native Windows psmux when installation or use is not possible. Preserve the upstream skill's explicit-request and managed-pane requirements. These are separate interfaces, not interchangeable command names. See [verification and desktop safety](/workflows/verification) for installation, permissions, dedicated sessions and evidence.
119
119
 
120
- The bundled [Cua Driver skill](https://github.com/trycua/cua/tree/cua-driver-rs-v0.28.2/libs/cua-driver/rust/Skills/cua-driver) is upstream's `libs/cua-driver/rust/Skills/cua-driver` at tag `cua-driver-rs-v0.28.2`, vendored verbatim with all three platform guides (`MACOS.md`, `WINDOWS.md`, `LINUX.md`) plus `BROWSER.md`, `RECORDING.md`, and `EMBEDDING.md`; only the `SKILL.md` frontmatter is Atomic-owned. MIT licensed, © 2025 Cua AI, Inc. It teaches the snapshot → act → fresh snapshot → verify loop for the `cua-driver` CLI; it does not install the `cua-driver` executable, grant permissions, or turn telemetry off, and Atomic never runs `cua-driver skills install`. Chromium browsers, Mobile Safari, and CDP-exposing apps stay with `agent-browser` even though the vendored `BROWSER.md` describes upstream's browser route; that route applies only to browsers agent-browser cannot reach, such as desktop Safari or Firefox.
120
+ The bundled [Cua Driver skill](https://github.com/trycua/cua/tree/cua-driver-rs-v0.34.0/libs/cua-driver/rust/Skills/cua-driver) is upstream's `libs/cua-driver/rust/Skills/cua-driver` at tag `cua-driver-rs-v0.34.0`, vendored verbatim with all three platform guides (`MACOS.md`, `WINDOWS.md`, `LINUX.md`) plus `WORKFLOW.md`, `RUNTIME.md`, `VISUAL.md`, `BROWSER.md`, `RECORDING.md`, and `EMBEDDING.md`; only the `SKILL.md` frontmatter is Atomic-owned. MIT licensed, © 2025 Cua AI, Inc. Its core guide routes to focused references for authorization, exact targets, observation, and outcome verification. It does not install the `cua-driver` executable, grant permissions, or turn telemetry off, and Atomic never runs `cua-driver skills install`. Chromium browsers, Mobile Safari, and CDP-exposing apps stay with `agent-browser` even though the vendored `BROWSER.md` describes upstream's browser route; that route applies only to browsers agent-browser cannot reach, such as desktop Safari or Firefox.
121
121
 
122
122
  The bundled [Herdr skill](https://github.com/herdrdev/herdr/blob/v0.9.0/skills/herdr/SKILL.md) requires an explicit Herdr mention or request and `HERDR_ENV=1`; it stops outside a Herdr-managed pane. It does not install Herdr or authorize control of unrelated panes. Use returned pane IDs, and check completion separately from command submission.
123
123
 
@@ -182,3 +182,17 @@ The built-in terminal has limited escape sequence support. SHIFT+Enter cannot be
182
182
  If you want the hardware cursor visible, set `ATOMIC_HARDWARE_CURSOR=1` before running Atomic. The legacy `PI_HARDWARE_CURSOR=1` alias also works; the hardware cursor is disabled by default for compatibility.
183
183
 
184
184
  Consider using a dedicated terminal emulator for the best experience.
185
+
186
+ ## Program status
187
+
188
+ Atomic reports its state with the [Program Status Protocol (OSC 7501)](https://www.superlogical.com/rex/docs/build/program-status), so supporting terminals and dashboards can show whether it is working, waiting for you, done, or failed:
189
+
190
+ | State | When |
191
+ |---|---|
192
+ | `working` | An agent run or compaction is in progress. The message is the session name, or `Compacting context`. |
193
+ | `blocked` | An extension dialog or login waits for you. The message is the dialog title. |
194
+ | `done` | A run finished. The message is the session name. |
195
+ | `error` | A run ended with an error that is not retried. The message is the first line of the error. |
196
+ | `idle` | Atomic started, or you cancelled the run. |
197
+
198
+ Reports never contain prompts or model output. Atomic sends them only after the terminal answers the protocol's support query; tmux and screen do not forward them. Set `PI_PROGRAM_STATUS=1` to send reports without asking, or `PI_PROGRAM_STATUS=0` to disable reports.
package/docs/tools.md CHANGED
@@ -22,7 +22,7 @@ Codemode lets the model compose permitted tool calls in JavaScript and return on
22
22
  { "defaultTools": ["+codemode"] }
23
23
  ```
24
24
 
25
- For one invocation, `--tools` is a replacement allowlist: `atomic --tools read,search,find,codemode`. Include every tool you want available, including `intercom` when needed. `codemode({ code: "..." })` accepts top-level `await` and `return`, for example:
25
+ For one invocation, use `atomic --tools +codemode` to keep the defaults and add codemode. Plain-name lists remain replacement allowlists, for example `atomic --tools read,search,find,codemode`; include every tool you want available, including `intercom` when needed. `codemode({ code: "..." })` accepts top-level `await` and `return`, for example:
26
26
 
27
27
  ```js
28
28
  const files = await Promise.all([
@@ -529,11 +529,11 @@ Prerequisites and setup, each as one bounded attempt:
529
529
 
530
530
  - `node` (preferred) or `bun` on the host. If neither is present, install one in a bounded attempt (Node via [fnm](https://github.com/Schniz/fnm) with `fnm install --lts` or the host's package manager, Bun via `curl -fsSL https://bun.sh/install | bash`) and report what the installer did; if the install is refused or fails, report that as the limitation rather than retrying.
531
531
  - The `cua-driver` executable (`cua-driver --version`), installed with upstream's one-line installer if missing, followed by `cua-driver telemetry disable` once.
532
- - The SDK installed at the exact driver version into a scratch directory outside the user's repository, for example `npm install @trycua/cua-driver@0.28.2 --prefix ~/.cache/atomic-cua`. The package ships per-platform native optional dependencies. Daemon-backed clients verify contract, tool-schema, capability, and protocol versions before each action and refuse on mismatch, so the pin must match `cua-driver --version`.
532
+ - The SDK installed at the exact driver version into a scratch directory outside the user's repository, for example `npm install @trycua/cua-driver@0.34.0 --prefix ~/.cache/atomic-cua`. The package ships per-platform native optional dependencies. Daemon-backed clients verify contract, tool-schema, capability, and protocol versions before each action and refuse on mismatch, so the pin must match `cua-driver --version`.
533
533
 
534
534
  The executable installer does not install an agent skill. Atomic bundles the skill, so skip upstream's optional `cua-driver skills install`, `cua-driver skills update`, and `clawhub install @cua/driver` steps; leave existing user-level skills alone.
535
535
 
536
- The scenario itself is a small script in that scratch directory. It acquires the driver with `CuaDriver.connect()` when a daemon is running, so it reuses the daemon's permission identity (on macOS, `CuaDriver.app`'s Accessibility and Screen Recording grants) and the persisted telemetry-off preference; upstream describes `connect()` as a compatibility and app-hosting path, which is exactly the role it plays here. Only when no daemon is reachable does it fall back to `CuaDriver.create()`, which loads the runtime into the node process. On macOS that in-process fallback attributes permissions to the node host, normally the terminal app, as a **separate grant** from the app's; `checkPermissions` is then read-only, and the host must fully quit and relaunch after granting. Save it as `~/.cache/atomic-cua/verify-counter.mjs`:
536
+ The scenario itself is a small script in that scratch directory. It acquires the driver with `CuaDriver.connect(undefined)` when a daemon is running, so it reuses the daemon's permission identity (on macOS, `CuaDriver.app`'s Accessibility and Screen Recording grants) and the persisted telemetry-off preference; upstream describes `connect()` as a compatibility and app-hosting path, which is exactly the role it plays here. Only when no daemon is reachable does it fall back to `CuaDriver.create(undefined)`, which loads the runtime into the node process. On macOS that in-process fallback attributes permissions to the node host, normally the terminal app, as a **separate grant** from the app's; `checkPermissions` is then read-only, and the host must fully quit and relaunch after granting. Save it as `~/.cache/atomic-cua/verify-counter.mjs`:
537
537
 
538
538
  ```js
539
539
  // Reads {"daemon":true|false,"artifactsDir":"..."} from argv[2]; prints one JSON result line.
@@ -558,7 +558,7 @@ const finish = (result, detail) => {
558
558
 
559
559
  // The wrapper already set CUA_DRIVER_RS_TELEMETRY_ENABLED=false in this process's environment
560
560
  // before the driver was constructed; the SDK is one of the faces that reports telemetry by default.
561
- const driver = daemon ? await CuaDriver.connect() : CuaDriver.create(undefined);
561
+ const driver = daemon ? CuaDriver.connect(undefined) : CuaDriver.create(undefined);
562
562
  try {
563
563
  const apps = await driver.listApps(ListAppsInput.new({}));
564
564
  const app = unique(apps.apps.filter((a) => a.name === "Window Demo" && a.running), "app");
@@ -939,7 +939,7 @@ Example config:
939
939
  "budget": { "maxDurationMs": 0, "maxTokens": 0, "maxCost": 0, "warnAtPercent": 80 },
940
940
  "persistRuns": true,
941
941
  "statusFile": false,
942
- "resumeInFlight": "ask",
942
+ "resumeInFlight": "never",
943
943
  "workflowNotifications": {
944
944
  "enabled": true,
945
945
  "notifyOn": ["started", "completed", "failed", "blocked", "budget_warning", "awaiting_input", "paused", "quit", "resumed"]
@@ -959,7 +959,7 @@ Runtime config defaults:
959
959
  | `budget` | `{ maxDurationMs: 0, maxTokens: 0, maxCost: 0, warnAtPercent: 80 }` | Default per-run budget declaration; `0` disables a dimension; warnings default to `80` percent |
960
960
  | `persistRuns` | `true` | Persist run metadata for status/resume/history |
961
961
  | `statusFile` | `false` | Write a derived status file; defaults under `.atomic/workflows/status.json` when enabled |
962
- | `resumeInFlight` | `"ask"` | At process startup, `"auto"` resumes interrupted durable workflows, `"ask"` requests confirmation, and `"never"` leaves them for manual resume |
962
+ | `resumeInFlight` | `"never"` | At process startup, `"never"` leaves interrupted durable workflows for manual `/workflow resume`, `"ask"` requests confirmation, and `"auto"` resumes them |
963
963
  | `workflowNotifications.enabled` | `true` | Emit workflow lifecycle notices into the active main chat |
964
964
  | `workflowNotifications.notifyOn` | `["started", "completed", "failed", "blocked", "budget_warning", "awaiting_input", "paused", "quit", "resumed"]` | Lifecycle states to track; terminal `completed`/`failed`/`blocked` outcomes, active recoverable blocks, duration budget warnings, and attributed user `started`/`quit`/`resumed` actions on a top-level run create main-chat notices. `pause` does not attribute an actor; `awaiting_input` is tracked for dedupe/restore without waking the main agent. |
965
965
  | `worktree.symlinkDirectories` | `["node_modules"]` | Main-root directories symlinked into each runner-managed temporary worktree during post-creation setup |
@@ -68,9 +68,9 @@
68
68
  "license": "MIT"
69
69
  },
70
70
  "node_modules/shell-quote": {
71
- "version": "1.10.0",
72
- "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.10.0.tgz",
73
- "integrity": "sha512-w1aiOKwKuRgtwAReIIj89puqg+I7GvX4IbLrvmhXbzQsj1+Zwi4VO3+fa6ZF91TWSjIxoEkKnMeHcLEODK5ZXA==",
71
+ "version": "1.12.0",
72
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.12.0.tgz",
73
+ "integrity": "sha512-PcByqNyT/38F2kDNi006HAMRJaULuBzq/FOsw3qdZvX/GA9W/jamDaRskgHjubHiftXK5sIFxLNkvrXUwcof6Q==",
74
74
  "license": "MIT",
75
75
  "engines": {
76
76
  "node": ">= 0.4"
@@ -1,22 +1,22 @@
1
1
  {
2
2
  "name": "@bastani/atomic",
3
- "version": "0.9.28-alpha.2",
3
+ "version": "0.9.28-alpha.4",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@bastani/atomic",
9
- "version": "0.9.28-alpha.2",
9
+ "version": "0.9.28-alpha.4",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
- "@bastani/atomic-natives": "0.9.28-alpha.2",
13
- "@bastani/pi-ai": "0.9.28-alpha.2",
12
+ "@bastani/atomic-natives": "0.9.28-alpha.4",
13
+ "@bastani/pi-ai": "0.9.28-alpha.4",
14
14
  "@dbos-inc/dbos-sdk": "4.25.14",
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",
15
+ "@earendil-works/pi-agent-core": "1.1.0",
16
+ "@earendil-works/pi-client": "1.1.0",
17
+ "@earendil-works/pi-codemode": "1.1.0",
18
+ "@earendil-works/pi-protocol": "1.1.0",
19
+ "@earendil-works/pi-tui": "1.1.0",
20
20
  "@modelcontextprotocol/ext-apps": "^1.7.5",
21
21
  "@modelcontextprotocol/sdk": "1.32.1",
22
22
  "@mozilla/readability": "^0.6.0",
@@ -432,18 +432,18 @@
432
432
  }
433
433
  },
434
434
  "node_modules/@bastani/atomic-natives": {
435
- "version": "0.9.28-alpha.2",
436
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives/-/atomic-natives-0.9.28-alpha.2.tgz",
435
+ "version": "0.9.28-alpha.4",
436
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives/-/atomic-natives-0.9.28-alpha.4.tgz",
437
437
  "license": "MIT",
438
438
  "optionalDependencies": {
439
- "@bastani/atomic-natives-darwin-arm64": "0.9.28-alpha.2",
440
- "@bastani/atomic-natives-darwin-x64": "0.9.28-alpha.2",
441
- "@bastani/atomic-natives-linux-arm64-gnu": "0.9.28-alpha.2",
442
- "@bastani/atomic-natives-linux-arm64-musl": "0.9.28-alpha.2",
443
- "@bastani/atomic-natives-linux-x64-gnu": "0.9.28-alpha.2",
444
- "@bastani/atomic-natives-linux-x64-musl": "0.9.28-alpha.2",
445
- "@bastani/atomic-natives-win32-arm64-msvc": "0.9.28-alpha.2",
446
- "@bastani/atomic-natives-win32-x64-msvc": "0.9.28-alpha.2"
439
+ "@bastani/atomic-natives-darwin-arm64": "0.9.28-alpha.4",
440
+ "@bastani/atomic-natives-darwin-x64": "0.9.28-alpha.4",
441
+ "@bastani/atomic-natives-linux-arm64-gnu": "0.9.28-alpha.4",
442
+ "@bastani/atomic-natives-linux-arm64-musl": "0.9.28-alpha.4",
443
+ "@bastani/atomic-natives-linux-x64-gnu": "0.9.28-alpha.4",
444
+ "@bastani/atomic-natives-linux-x64-musl": "0.9.28-alpha.4",
445
+ "@bastani/atomic-natives-win32-arm64-msvc": "0.9.28-alpha.4",
446
+ "@bastani/atomic-natives-win32-x64-msvc": "0.9.28-alpha.4"
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.28-alpha.2",
455
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-arm64/-/atomic-natives-darwin-arm64-0.9.28-alpha.2.tgz",
454
+ "version": "0.9.28-alpha.4",
455
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-arm64/-/atomic-natives-darwin-arm64-0.9.28-alpha.4.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.28-alpha.2",
467
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-x64/-/atomic-natives-darwin-x64-0.9.28-alpha.2.tgz",
466
+ "version": "0.9.28-alpha.4",
467
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-x64/-/atomic-natives-darwin-x64-0.9.28-alpha.4.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.28-alpha.2",
479
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-gnu/-/atomic-natives-linux-arm64-gnu-0.9.28-alpha.2.tgz",
478
+ "version": "0.9.28-alpha.4",
479
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-gnu/-/atomic-natives-linux-arm64-gnu-0.9.28-alpha.4.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.28-alpha.2",
494
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-musl/-/atomic-natives-linux-arm64-musl-0.9.28-alpha.2.tgz",
493
+ "version": "0.9.28-alpha.4",
494
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-musl/-/atomic-natives-linux-arm64-musl-0.9.28-alpha.4.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.28-alpha.2",
509
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-gnu/-/atomic-natives-linux-x64-gnu-0.9.28-alpha.2.tgz",
508
+ "version": "0.9.28-alpha.4",
509
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-gnu/-/atomic-natives-linux-x64-gnu-0.9.28-alpha.4.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.28-alpha.2",
524
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-musl/-/atomic-natives-linux-x64-musl-0.9.28-alpha.2.tgz",
523
+ "version": "0.9.28-alpha.4",
524
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-musl/-/atomic-natives-linux-x64-musl-0.9.28-alpha.4.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.28-alpha.2",
539
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-arm64-msvc/-/atomic-natives-win32-arm64-msvc-0.9.28-alpha.2.tgz",
538
+ "version": "0.9.28-alpha.4",
539
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-arm64-msvc/-/atomic-natives-win32-arm64-msvc-0.9.28-alpha.4.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.28-alpha.2",
551
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-x64-msvc/-/atomic-natives-win32-x64-msvc-0.9.28-alpha.2.tgz",
550
+ "version": "0.9.28-alpha.4",
551
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-x64-msvc/-/atomic-natives-win32-x64-msvc-0.9.28-alpha.4.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.28-alpha.2",
563
- "resolved": "https://registry.npmjs.org/@bastani/pi-ai/-/pi-ai-0.9.28-alpha.2.tgz",
562
+ "version": "0.9.28-alpha.4",
563
+ "resolved": "https://registry.npmjs.org/@bastani/pi-ai/-/pi-ai-0.9.28-alpha.4.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.4",
568
+ "@earendil-works/pi-telemetry": "1.1.0",
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.4",
670
- "resolved": "https://registry.npmjs.org/@earendil-works/chord/-/chord-1.0.4.tgz",
671
- "integrity": "sha512-d2JZw2utoa/reoSmL07O71wsXiMDhIlnnxTb4LCNV+Oq8Evj2rGLvjVuYrlXZGbXUr0IDNfvd1RT/utCY1UhkQ==",
669
+ "version": "1.1.0",
670
+ "resolved": "https://registry.npmjs.org/@earendil-works/chord/-/chord-1.1.0.tgz",
671
+ "integrity": "sha512-gsHzKfyQ3t0ZIQ3cLBjJ5Vqy1TYnFyruHIV3g3BwmulCDYe5BW4yT9vaJk9QzN6YANILIO75uzuq+Gdxtzz1og==",
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.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==",
681
+ "version": "1.1.0",
682
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-1.1.0.tgz",
683
+ "integrity": "sha512-aX1KZomNCPmwYnXa3OivF3VYLJ+WPUkIJlEIZTgwdOZdY/+oToWTQ334WYpQeOz9POpiYFNMJLPwIhXQ4e48kg==",
684
684
  "license": "MIT",
685
685
  "dependencies": {
686
- "@earendil-works/pi-ai": "^1.0.4",
686
+ "@earendil-works/pi-ai": "^1.1.0",
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.4",
695
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-1.0.4.tgz",
696
- "integrity": "sha512-/Eu5R0gfor6wcmRcVyOmulUiZmsHJ0bKu5wXXnpCoSHF3y4FnW4fgnjRlLjNza8NJWXdvW5Uew90Zukx7Sh2rw==",
694
+ "version": "1.1.0",
695
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-1.1.0.tgz",
696
+ "integrity": "sha512-1T7LAkc/5Bvc0v6w4vAGVdCrli0o/E0pEmYKTnixu95vSFArBjvbhS/G4ZwI0RUePgf0Imcu0VyqlM4EcXxqfw==",
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.4",
701
+ "@earendil-works/pi-telemetry": "^1.1.0",
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.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==",
741
+ "version": "1.1.0",
742
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-client/-/pi-client-1.1.0.tgz",
743
+ "integrity": "sha512-FARsu7NP59wA4tpzNaW6FqHG7N98OzPvwbdTbPE4dgkPzaIMjd0yMiW82Kfx8jqYLX5hujZfoj4SI80D6cOnrw==",
744
744
  "license": "MIT",
745
745
  "dependencies": {
746
- "@earendil-works/chord": "^1.0.4",
747
- "@earendil-works/pi-protocol": "^1.0.4"
746
+ "@earendil-works/chord": "^1.1.0",
747
+ "@earendil-works/pi-protocol": "^1.1.0"
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.4",
755
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-codemode/-/pi-codemode-1.0.4.tgz",
756
- "integrity": "sha512-e198pjBsdEQJ/RCjJ9ZeYIjRaQYWUgtoZbPCmJ57auuOsiRsBXeSZ1aiWtTah0/7gx97WIOD1XqHvgRU0gOXtg==",
754
+ "version": "1.1.0",
755
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-codemode/-/pi-codemode-1.1.0.tgz",
756
+ "integrity": "sha512-8Asc2AzhoNaXS1snmRFa96OhcWIlFM5k1Kuiz6p2DvIYgi5QHQccRAmDVY9oO92TzWrizpvQpconZGQ7JhlI7Q==",
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.4",
767
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-protocol/-/pi-protocol-1.0.4.tgz",
768
- "integrity": "sha512-GJ1ieSJdguV3VaO5fXD+LEm6w1Rx0HKk7P1g8I6ZelmiGpmQAYOneUZaCUhAz5BeC6FpyUFzBb+AOo0Npfxtvw==",
766
+ "version": "1.1.0",
767
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-protocol/-/pi-protocol-1.1.0.tgz",
768
+ "integrity": "sha512-XMZIOJeqodY9QRfcnyBwDEKA1upgVgl2Rq0hm0Jnd/VmvGhgwHUvxu7PA/5aWLL+umJI2mwG10uW2SMzgEGvEA==",
769
769
  "license": "MIT",
770
770
  "dependencies": {
771
- "@earendil-works/chord": "^1.0.4",
771
+ "@earendil-works/chord": "^1.1.0",
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.4",
780
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-telemetry/-/pi-telemetry-1.0.4.tgz",
781
- "integrity": "sha512-DL2eXXtnL5/VQkuQd97fL57GXTG1/zKHtMmDsrv8tGeJ5EgYYTWvzy44dqbYL0lD0Z22v/NOwqU3PHO75HVrqA==",
779
+ "version": "1.1.0",
780
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-telemetry/-/pi-telemetry-1.1.0.tgz",
781
+ "integrity": "sha512-8gAK05/2pPozZZz6hCLOi8x2vsqzvsmO9gG92kbvuvTPm0qMHaFlaXX98ndXsrOi5pmzha7vNLguuG4+0Rgxjw==",
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.4",
789
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-1.0.4.tgz",
790
- "integrity": "sha512-TgvDJohtxvG3XWQID5w6bwEyBocywdG0F9yHZtP+Ywvtiq9RgeSMbeB8quUobk7/4ko6IvFOQo45AqIqNVr8Rg==",
788
+ "version": "1.1.0",
789
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-1.1.0.tgz",
790
+ "integrity": "sha512-v7wkS0y2ErZvZkSfemqd9RrBZJ5x6p8Ujsv7NdJj01IXJyFM0kNL6rMdcKcvTe7EVTd6ugvDB9VPZSoaBF9QxQ==",
791
791
  "license": "MIT",
792
792
  "dependencies": {
793
793
  "get-east-asian-width": "1.6.0",