@bastani/atomic 0.9.16-alpha.4 → 0.9.16-alpha.6

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 (404) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/README.md +11 -6
  3. package/dist/builtin/intercom/CHANGELOG.md +15 -0
  4. package/dist/builtin/intercom/README.md +6 -4
  5. package/dist/builtin/intercom/broker/broker.ts +34 -8
  6. package/dist/builtin/intercom/broker/client.ts +13 -0
  7. package/dist/builtin/intercom/broker/pending-question-index.ts +50 -0
  8. package/dist/builtin/intercom/broker/send-handler.ts +8 -0
  9. package/dist/builtin/intercom/index.bundle.mjs +2045 -1211
  10. package/dist/builtin/intercom/package.json +2 -2
  11. package/dist/builtin/intercom/skills/intercom/SKILL.md +20 -19
  12. package/dist/builtin/mcp/index.bundle.mjs +1778 -1026
  13. package/dist/builtin/mcp/package.json +2 -2
  14. package/dist/builtin/subagents/CHANGELOG.md +11 -0
  15. package/dist/builtin/subagents/README.md +3 -3
  16. package/dist/builtin/subagents/package.json +3 -3
  17. package/dist/builtin/subagents/skills/subagent/SKILL.md +4 -4
  18. package/dist/builtin/subagents/src/extension/index.bundle.mjs +2645 -1506
  19. package/dist/builtin/web-access/index.bundle.mjs +1754 -1002
  20. package/dist/builtin/web-access/package.json +2 -2
  21. package/dist/builtin/workflows/CHANGELOG.md +28 -0
  22. package/dist/builtin/workflows/README.md +3 -1
  23. package/dist/builtin/workflows/builtin/goal-ledger.ts +54 -10
  24. package/dist/builtin/workflows/builtin/goal-runner.ts +57 -12
  25. package/dist/builtin/workflows/package.json +2 -2
  26. package/dist/builtin/workflows/src/extension/index.bundle.mjs +13626 -12023
  27. package/dist/builtin/workflows/src/index.bundle.mjs +2338 -1279
  28. package/dist/bun/split-loader.js +2 -1
  29. package/dist/bun/split-loader.js.map +1 -1
  30. package/dist/cli/args.d.ts.map +1 -1
  31. package/dist/cli/args.js +6 -1
  32. package/dist/cli/args.js.map +1 -1
  33. package/dist/cli/file-processor.d.ts.map +1 -1
  34. package/dist/cli/file-processor.js +2 -1
  35. package/dist/cli/file-processor.js.map +1 -1
  36. package/dist/config-package-identity.d.ts.map +1 -1
  37. package/dist/config-package-identity.js +2 -1
  38. package/dist/config-package-identity.js.map +1 -1
  39. package/dist/config.d.ts.map +1 -1
  40. package/dist/config.js +2 -1
  41. package/dist/config.js.map +1 -1
  42. package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
  43. package/dist/core/agent-session-auto-compaction.js +64 -28
  44. package/dist/core/agent-session-auto-compaction.js.map +1 -1
  45. package/dist/core/agent-session-compaction.d.ts +2 -0
  46. package/dist/core/agent-session-compaction.d.ts.map +1 -1
  47. package/dist/core/agent-session-compaction.js +25 -5
  48. package/dist/core/agent-session-compaction.js.map +1 -1
  49. package/dist/core/agent-session-custom-message-commit.d.ts.map +1 -1
  50. package/dist/core/agent-session-custom-message-commit.js +12 -0
  51. package/dist/core/agent-session-custom-message-commit.js.map +1 -1
  52. package/dist/core/agent-session-events.d.ts.map +1 -1
  53. package/dist/core/agent-session-events.js +2 -0
  54. package/dist/core/agent-session-events.js.map +1 -1
  55. package/dist/core/agent-session-export.d.ts +3 -1
  56. package/dist/core/agent-session-export.d.ts.map +1 -1
  57. package/dist/core/agent-session-export.js +22 -2
  58. package/dist/core/agent-session-export.js.map +1 -1
  59. package/dist/core/agent-session-message-queue.d.ts +3 -0
  60. package/dist/core/agent-session-message-queue.d.ts.map +1 -1
  61. package/dist/core/agent-session-message-queue.js +10 -0
  62. package/dist/core/agent-session-message-queue.js.map +1 -1
  63. package/dist/core/agent-session-methods.d.ts +15 -9
  64. package/dist/core/agent-session-methods.d.ts.map +1 -1
  65. package/dist/core/agent-session-methods.js.map +1 -1
  66. package/dist/core/agent-session-models.d.ts +8 -13
  67. package/dist/core/agent-session-models.d.ts.map +1 -1
  68. package/dist/core/agent-session-models.js +53 -19
  69. package/dist/core/agent-session-models.js.map +1 -1
  70. package/dist/core/agent-session-post-tool-compaction.d.ts.map +1 -1
  71. package/dist/core/agent-session-post-tool-compaction.js +12 -0
  72. package/dist/core/agent-session-post-tool-compaction.js.map +1 -1
  73. package/dist/core/agent-session-prompt.d.ts.map +1 -1
  74. package/dist/core/agent-session-prompt.js +3 -1
  75. package/dist/core/agent-session-prompt.js.map +1 -1
  76. package/dist/core/agent-session-tool-registry.js +3 -3
  77. package/dist/core/agent-session-tool-registry.js.map +1 -1
  78. package/dist/core/agent-session-transfer.d.ts.map +1 -1
  79. package/dist/core/agent-session-transfer.js +1 -0
  80. package/dist/core/agent-session-transfer.js.map +1 -1
  81. package/dist/core/agent-session-tree.d.ts.map +1 -1
  82. package/dist/core/agent-session-tree.js +1 -1
  83. package/dist/core/agent-session-tree.js.map +1 -1
  84. package/dist/core/agent-session-types.d.ts +3 -0
  85. package/dist/core/agent-session-types.d.ts.map +1 -1
  86. package/dist/core/agent-session-types.js.map +1 -1
  87. package/dist/core/agent-session.d.ts +2 -0
  88. package/dist/core/agent-session.d.ts.map +1 -1
  89. package/dist/core/agent-session.js +2 -0
  90. package/dist/core/agent-session.js.map +1 -1
  91. package/dist/core/auth-storage-backends.d.ts.map +1 -1
  92. package/dist/core/auth-storage-backends.js +10 -6
  93. package/dist/core/auth-storage-backends.js.map +1 -1
  94. package/dist/core/auth-storage.d.ts.map +1 -1
  95. package/dist/core/auth-storage.js +4 -3
  96. package/dist/core/auth-storage.js.map +1 -1
  97. package/dist/core/builtin-packages.d.ts.map +1 -1
  98. package/dist/core/builtin-packages.js +2 -1
  99. package/dist/core/builtin-packages.js.map +1 -1
  100. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  101. package/dist/core/compaction/branch-summarization.js +6 -0
  102. package/dist/core/compaction/branch-summarization.js.map +1 -1
  103. package/dist/core/compaction/compaction-runner.d.ts +3 -1
  104. package/dist/core/compaction/compaction-runner.d.ts.map +1 -1
  105. package/dist/core/compaction/compaction-runner.js +30 -4
  106. package/dist/core/compaction/compaction-runner.js.map +1 -1
  107. package/dist/core/compaction/compaction-types.d.ts +3 -1
  108. package/dist/core/compaction/compaction-types.d.ts.map +1 -1
  109. package/dist/core/compaction/compaction-types.js.map +1 -1
  110. package/dist/core/compaction/range-planner.d.ts +3 -1
  111. package/dist/core/compaction/range-planner.d.ts.map +1 -1
  112. package/dist/core/compaction/range-planner.js +11 -1
  113. package/dist/core/compaction/range-planner.js.map +1 -1
  114. package/dist/core/compaction/session-summarization.d.ts.map +1 -1
  115. package/dist/core/compaction/session-summarization.js +6 -0
  116. package/dist/core/compaction/session-summarization.js.map +1 -1
  117. package/dist/core/extensions/api-types.d.ts +8 -3
  118. package/dist/core/extensions/api-types.d.ts.map +1 -1
  119. package/dist/core/extensions/api-types.js.map +1 -1
  120. package/dist/core/extensions/index.d.ts +2 -2
  121. package/dist/core/extensions/index.d.ts.map +1 -1
  122. package/dist/core/extensions/index.js +1 -1
  123. package/dist/core/extensions/index.js.map +1 -1
  124. package/dist/core/extensions/loader-api.d.ts +5 -1
  125. package/dist/core/extensions/loader-api.d.ts.map +1 -1
  126. package/dist/core/extensions/loader-api.js +124 -36
  127. package/dist/core/extensions/loader-api.js.map +1 -1
  128. package/dist/core/extensions/loader-core.d.ts.map +1 -1
  129. package/dist/core/extensions/loader-core.js +18 -4
  130. package/dist/core/extensions/loader-core.js.map +1 -1
  131. package/dist/core/extensions/loader-runtime.d.ts.map +1 -1
  132. package/dist/core/extensions/loader-runtime.js +10 -2
  133. package/dist/core/extensions/loader-runtime.js.map +1 -1
  134. package/dist/core/extensions/session-events.d.ts +11 -2
  135. package/dist/core/extensions/session-events.d.ts.map +1 -1
  136. package/dist/core/extensions/session-events.js.map +1 -1
  137. package/dist/core/extensions/tool-events.d.ts +13 -3
  138. package/dist/core/extensions/tool-events.d.ts.map +1 -1
  139. package/dist/core/extensions/tool-events.js +3 -0
  140. package/dist/core/extensions/tool-events.js.map +1 -1
  141. package/dist/core/extensions/types.d.ts +1 -1
  142. package/dist/core/extensions/types.d.ts.map +1 -1
  143. package/dist/core/extensions/types.js +1 -1
  144. package/dist/core/extensions/types.js.map +1 -1
  145. package/dist/core/extensions/ui-types.d.ts +2 -2
  146. package/dist/core/extensions/ui-types.js.map +1 -1
  147. package/dist/core/footer-data-provider.d.ts +1 -1
  148. package/dist/core/footer-data-provider.js +1 -1
  149. package/dist/core/footer-data-provider.js.map +1 -1
  150. package/dist/core/keybindings.d.ts +17 -16
  151. package/dist/core/keybindings.d.ts.map +1 -1
  152. package/dist/core/keybindings.js +23 -6
  153. package/dist/core/keybindings.js.map +1 -1
  154. package/dist/core/model-config.d.ts.map +1 -1
  155. package/dist/core/model-config.js +2 -1
  156. package/dist/core/model-config.js.map +1 -1
  157. package/dist/core/model-resolver-initial.d.ts +1 -0
  158. package/dist/core/model-resolver-initial.d.ts.map +1 -1
  159. package/dist/core/model-resolver-initial.js +9 -5
  160. package/dist/core/model-resolver-initial.js.map +1 -1
  161. package/dist/core/models-store.d.ts.map +1 -1
  162. package/dist/core/models-store.js +2 -1
  163. package/dist/core/models-store.js.map +1 -1
  164. package/dist/core/package-manager-git.d.ts.map +1 -1
  165. package/dist/core/package-manager-git.js +2 -1
  166. package/dist/core/package-manager-git.js.map +1 -1
  167. package/dist/core/package-manager-manifest.d.ts.map +1 -1
  168. package/dist/core/package-manager-manifest.js +2 -1
  169. package/dist/core/package-manager-manifest.js.map +1 -1
  170. package/dist/core/package-manager-npm.d.ts.map +1 -1
  171. package/dist/core/package-manager-npm.js +4 -3
  172. package/dist/core/package-manager-npm.js.map +1 -1
  173. package/dist/core/package-manager-operations.d.ts.map +1 -1
  174. package/dist/core/package-manager-operations.js +2 -1
  175. package/dist/core/package-manager-operations.js.map +1 -1
  176. package/dist/core/package-manager-resource-collector.d.ts.map +1 -1
  177. package/dist/core/package-manager-resource-collector.js +2 -1
  178. package/dist/core/package-manager-resource-collector.js.map +1 -1
  179. package/dist/core/package-manager-resource-files.d.ts.map +1 -1
  180. package/dist/core/package-manager-resource-files.js +7 -2
  181. package/dist/core/package-manager-resource-files.js.map +1 -1
  182. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  183. package/dist/core/remote-catalog-provider.js +2 -1
  184. package/dist/core/remote-catalog-provider.js.map +1 -1
  185. package/dist/core/resource-loader-context-files.d.ts.map +1 -1
  186. package/dist/core/resource-loader-context-files.js +3 -2
  187. package/dist/core/resource-loader-context-files.js.map +1 -1
  188. package/dist/core/sdk-exports.d.ts +5 -3
  189. package/dist/core/sdk-exports.d.ts.map +1 -1
  190. package/dist/core/sdk-exports.js +4 -2
  191. package/dist/core/sdk-exports.js.map +1 -1
  192. package/dist/core/sdk.d.ts.map +1 -1
  193. package/dist/core/sdk.js +7 -3
  194. package/dist/core/sdk.js.map +1 -1
  195. package/dist/core/session-manager-core.d.ts +2 -2
  196. package/dist/core/session-manager-core.d.ts.map +1 -1
  197. package/dist/core/session-manager-core.js +4 -4
  198. package/dist/core/session-manager-core.js.map +1 -1
  199. package/dist/core/session-manager-entries.d.ts +2 -2
  200. package/dist/core/session-manager-entries.d.ts.map +1 -1
  201. package/dist/core/session-manager-entries.js +4 -3
  202. package/dist/core/session-manager-entries.js.map +1 -1
  203. package/dist/core/session-manager-storage.d.ts.map +1 -1
  204. package/dist/core/session-manager-storage.js +4 -2
  205. package/dist/core/session-manager-storage.js.map +1 -1
  206. package/dist/core/session-manager-types.d.ts +2 -0
  207. package/dist/core/session-manager-types.d.ts.map +1 -1
  208. package/dist/core/session-manager-types.js.map +1 -1
  209. package/dist/core/settings-diagnostics.d.ts +4 -0
  210. package/dist/core/settings-diagnostics.d.ts.map +1 -0
  211. package/dist/core/settings-diagnostics.js +12 -0
  212. package/dist/core/settings-diagnostics.js.map +1 -0
  213. package/dist/core/settings-manager-basic-accessors.d.ts +4 -0
  214. package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
  215. package/dist/core/settings-manager-basic-accessors.js +23 -0
  216. package/dist/core/settings-manager-basic-accessors.js.map +1 -1
  217. package/dist/core/settings-manager-core.d.ts.map +1 -1
  218. package/dist/core/settings-manager-core.js +10 -2
  219. package/dist/core/settings-manager-core.js.map +1 -1
  220. package/dist/core/settings-storage.d.ts.map +1 -1
  221. package/dist/core/settings-storage.js +10 -3
  222. package/dist/core/settings-storage.js.map +1 -1
  223. package/dist/core/settings-types.d.ts +2 -0
  224. package/dist/core/settings-types.d.ts.map +1 -1
  225. package/dist/core/settings-types.js.map +1 -1
  226. package/dist/core/skills.d.ts.map +1 -1
  227. package/dist/core/skills.js +51 -33
  228. package/dist/core/skills.js.map +1 -1
  229. package/dist/core/slash-commands.d.ts.map +1 -1
  230. package/dist/core/slash-commands.js +3 -2
  231. package/dist/core/slash-commands.js.map +1 -1
  232. package/dist/core/system-prompt.d.ts.map +1 -1
  233. package/dist/core/system-prompt.js +15 -3
  234. package/dist/core/system-prompt.js.map +1 -1
  235. package/dist/core/tools/ask-user-question/config.d.ts.map +1 -1
  236. package/dist/core/tools/ask-user-question/config.js +2 -1
  237. package/dist/core/tools/ask-user-question/config.js.map +1 -1
  238. package/dist/core/tools/bash.d.ts +13 -1
  239. package/dist/core/tools/bash.d.ts.map +1 -1
  240. package/dist/core/tools/bash.js +9 -5
  241. package/dist/core/tools/bash.js.map +1 -1
  242. package/dist/core/tools/index.d.ts +21 -5
  243. package/dist/core/tools/index.d.ts.map +1 -1
  244. package/dist/core/tools/index.js +45 -13
  245. package/dist/core/tools/index.js.map +1 -1
  246. package/dist/core/tools/powershell.d.ts +83 -0
  247. package/dist/core/tools/powershell.d.ts.map +1 -0
  248. package/dist/core/tools/powershell.js +89 -0
  249. package/dist/core/tools/powershell.js.map +1 -0
  250. package/dist/core/usage-totals.d.ts.map +1 -1
  251. package/dist/core/usage-totals.js +2 -1
  252. package/dist/core/usage-totals.js.map +1 -1
  253. package/dist/extensions/llama/client.d.ts +6 -0
  254. package/dist/extensions/llama/client.d.ts.map +1 -1
  255. package/dist/extensions/llama/client.js +12 -0
  256. package/dist/extensions/llama/client.js.map +1 -1
  257. package/dist/extensions/llama/index.d.ts.map +1 -1
  258. package/dist/extensions/llama/index.js +2 -0
  259. package/dist/extensions/llama/index.js.map +1 -1
  260. package/dist/extensions/llama/provider.d.ts +3 -1
  261. package/dist/extensions/llama/provider.d.ts.map +1 -1
  262. package/dist/extensions/llama/provider.js +25 -8
  263. package/dist/extensions/llama/provider.js.map +1 -1
  264. package/dist/index-extensions.d.ts +2 -2
  265. package/dist/index-extensions.d.ts.map +1 -1
  266. package/dist/index-extensions.js +1 -1
  267. package/dist/index-extensions.js.map +1 -1
  268. package/dist/index.d.ts +4 -3
  269. package/dist/index.d.ts.map +1 -1
  270. package/dist/index.js +4 -3
  271. package/dist/index.js.map +1 -1
  272. package/dist/main-stdio.d.ts.map +1 -1
  273. package/dist/main-stdio.js +4 -2
  274. package/dist/main-stdio.js.map +1 -1
  275. package/dist/main.d.ts.map +1 -1
  276. package/dist/main.js +10 -3
  277. package/dist/main.js.map +1 -1
  278. package/dist/migrations-config-values.d.ts.map +1 -1
  279. package/dist/migrations-config-values.js +2 -1
  280. package/dist/migrations-config-values.js.map +1 -1
  281. package/dist/migrations.d.ts.map +1 -1
  282. package/dist/migrations.js +5 -4
  283. package/dist/migrations.js.map +1 -1
  284. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  285. package/dist/modes/interactive/components/footer.js +2 -1
  286. package/dist/modes/interactive/components/footer.js.map +1 -1
  287. package/dist/modes/interactive/components/model-selector.d.ts +2 -2
  288. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  289. package/dist/modes/interactive/components/model-selector.js +27 -16
  290. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  291. package/dist/modes/interactive/components/settings-selector-items.d.ts.map +1 -1
  292. package/dist/modes/interactive/components/settings-selector-items.js +67 -14
  293. package/dist/modes/interactive/components/settings-selector-items.js.map +1 -1
  294. package/dist/modes/interactive/components/settings-selector-submenus.d.ts +7 -1
  295. package/dist/modes/interactive/components/settings-selector-submenus.d.ts.map +1 -1
  296. package/dist/modes/interactive/components/settings-selector-submenus.js +38 -3
  297. package/dist/modes/interactive/components/settings-selector-submenus.js.map +1 -1
  298. package/dist/modes/interactive/components/settings-selector-types.d.ts +5 -1
  299. package/dist/modes/interactive/components/settings-selector-types.d.ts.map +1 -1
  300. package/dist/modes/interactive/components/settings-selector-types.js.map +1 -1
  301. package/dist/modes/interactive/components/thinking-selector.d.ts +15 -6
  302. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  303. package/dist/modes/interactive/components/thinking-selector.js +65 -27
  304. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  305. package/dist/modes/interactive/external-editor.d.ts.map +1 -1
  306. package/dist/modes/interactive/external-editor.js +2 -1
  307. package/dist/modes/interactive/external-editor.js.map +1 -1
  308. package/dist/modes/interactive/interactive-agent-events.js +2 -0
  309. package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
  310. package/dist/modes/interactive/interactive-auth-login.d.ts +1 -1
  311. package/dist/modes/interactive/interactive-auth-login.d.ts.map +1 -1
  312. package/dist/modes/interactive/interactive-auth-login.js +9 -1
  313. package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
  314. package/dist/modes/interactive/interactive-autocomplete.js +9 -0
  315. package/dist/modes/interactive/interactive-autocomplete.js.map +1 -1
  316. package/dist/modes/interactive/interactive-deferred-startup.d.ts.map +1 -1
  317. package/dist/modes/interactive/interactive-deferred-startup.js +2 -0
  318. package/dist/modes/interactive/interactive-deferred-startup.js.map +1 -1
  319. package/dist/modes/interactive/interactive-editor-actions.js +11 -10
  320. package/dist/modes/interactive/interactive-editor-actions.js.map +1 -1
  321. package/dist/modes/interactive/interactive-input-handling.js +6 -0
  322. package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
  323. package/dist/modes/interactive/interactive-mode-deps.d.ts +1 -0
  324. package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -1
  325. package/dist/modes/interactive/interactive-mode-deps.js +1 -0
  326. package/dist/modes/interactive/interactive-mode-deps.js.map +1 -1
  327. package/dist/modes/interactive/interactive-mode-surface.d.ts +7 -0
  328. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
  329. package/dist/modes/interactive/interactive-mode-surface.js +0 -1
  330. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
  331. package/dist/modes/interactive/interactive-mode-types.d.ts +3 -0
  332. package/dist/modes/interactive/interactive-mode-types.d.ts.map +1 -1
  333. package/dist/modes/interactive/interactive-mode-types.js.map +1 -1
  334. package/dist/modes/interactive/interactive-model-routing.d.ts +16 -1
  335. package/dist/modes/interactive/interactive-model-routing.d.ts.map +1 -1
  336. package/dist/modes/interactive/interactive-model-routing.js +62 -3
  337. package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
  338. package/dist/modes/interactive/interactive-render-chat.js +18 -0
  339. package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
  340. package/dist/modes/interactive/interactive-selectors.js +10 -8
  341. package/dist/modes/interactive/interactive-selectors.js.map +1 -1
  342. package/dist/modes/interactive/interactive-slash-commands.js +6 -5
  343. package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
  344. package/dist/modes/interactive/interactive-startup.js +9 -1
  345. package/dist/modes/interactive/interactive-startup.js.map +1 -1
  346. package/dist/modes/interactive/theme/theme-parse.d.ts.map +1 -1
  347. package/dist/modes/interactive/theme/theme-parse.js +2 -1
  348. package/dist/modes/interactive/theme/theme-parse.js.map +1 -1
  349. package/dist/modes/json-event.d.ts +15 -18
  350. package/dist/modes/json-event.d.ts.map +1 -1
  351. package/dist/modes/json-event.js +21 -17
  352. package/dist/modes/json-event.js.map +1 -1
  353. package/dist/modes/rpc/rpc-client-api.d.ts +4 -0
  354. package/dist/modes/rpc/rpc-client-api.d.ts.map +1 -1
  355. package/dist/modes/rpc/rpc-client-api.js +3 -0
  356. package/dist/modes/rpc/rpc-client-api.js.map +1 -1
  357. package/dist/utils/frontmatter.d.ts.map +1 -1
  358. package/dist/utils/frontmatter.js +2 -1
  359. package/dist/utils/frontmatter.js.map +1 -1
  360. package/dist/utils/management-http.d.ts +2 -0
  361. package/dist/utils/management-http.d.ts.map +1 -1
  362. package/dist/utils/management-http.js +11 -7
  363. package/dist/utils/management-http.js.map +1 -1
  364. package/dist/utils/shell.d.ts +3 -0
  365. package/dist/utils/shell.d.ts.map +1 -1
  366. package/dist/utils/shell.js +41 -10
  367. package/dist/utils/shell.js.map +1 -1
  368. package/dist/utils/syntax-highlight.d.ts +1 -0
  369. package/dist/utils/syntax-highlight.d.ts.map +1 -1
  370. package/dist/utils/syntax-highlight.js +61 -1
  371. package/dist/utils/syntax-highlight.js.map +1 -1
  372. package/dist/utils/text.d.ts +8 -0
  373. package/dist/utils/text.d.ts.map +1 -0
  374. package/dist/utils/text.js +9 -0
  375. package/dist/utils/text.js.map +1 -0
  376. package/docs/changelog.mdx +1 -1
  377. package/docs/compaction.md +16 -3
  378. package/docs/containerization.md +17 -0
  379. package/docs/custom-provider.md +1 -1
  380. package/docs/environment-variables.md +3 -3
  381. package/docs/extensions.md +22 -5
  382. package/docs/index.md +12 -10
  383. package/docs/intercom.md +5 -3
  384. package/docs/keybindings.md +1 -1
  385. package/docs/llama-cpp.md +1 -1
  386. package/docs/models.md +2 -0
  387. package/docs/quickstart.md +80 -9
  388. package/docs/rpc.md +24 -1
  389. package/docs/sdk.md +11 -0
  390. package/docs/settings.md +16 -7
  391. package/docs/skills.md +3 -2
  392. package/docs/subagents.md +7 -0
  393. package/docs/termux.md +1 -1
  394. package/docs/usage.md +4 -3
  395. package/docs/windows.md +33 -3
  396. package/docs/workflows.md +22 -10
  397. package/examples/extensions/border-status-editor.ts +1 -1
  398. package/examples/extensions/git-checkpoint.ts +1 -1
  399. package/examples/extensions/notify.ts +1 -1
  400. package/examples/extensions/titlebar-spinner.ts +1 -1
  401. package/examples/rpc-extension-ui.ts +1 -1
  402. package/examples/sdk/README.md +1 -1
  403. package/npm-shrinkwrap.json +73 -65
  404. package/package.json +11 -13
package/docs/index.md CHANGED
@@ -9,9 +9,7 @@ Atomic is the loop engine for all engineering work: a terminal coding-agent runt
9
9
 
10
10
  ## Quick start
11
11
 
12
- Install Atomic globally with npm, pnpm, or Bun:
13
-
14
- With npm:
12
+ Install the published package globally with npm:
15
13
 
16
14
  ```bash
17
15
  npm install -g @bastani/atomic
@@ -29,19 +27,23 @@ With Bun:
29
27
  bun add -g @bastani/atomic
30
28
  ```
31
29
 
32
- Atomic does not require package install scripts. If you want to disable dependency lifecycle scripts during the Atomic install, you can add `--ignore-scripts` to the install command.
33
-
34
- Or download an `atomic-*` archive from the Atomic GitHub Release for your platform.
30
+ Package installation requires Node.js. Atomic does not require package install scripts; add `--ignore-scripts` if you want to disable dependency lifecycle scripts during a package install.
35
31
 
36
- ### Alpine and musl Linux archives
32
+ Alternatively, install the self-contained release archive, which needs no Node.js or package manager.
37
33
 
38
- Alpine Linux x64 and arm64 users can download `atomic-linux-x64-musl.tar.gz` or `atomic-linux-arm64-musl.tar.gz`. These archives include native search and PTY bindings. Install the required runtime libraries before running an archive:
34
+ On macOS or Linux:
39
35
 
40
36
  ```bash
41
- apk add --no-cache libgcc libstdc++
37
+ curl -fsSL https://raw.githubusercontent.com/bastani-inc/atomic/main/install.sh | sh
38
+ ```
39
+
40
+ On Windows PowerShell:
41
+
42
+ ```powershell
43
+ irm https://raw.githubusercontent.com/bastani-inc/atomic/main/install.ps1 | iex
42
44
  ```
43
45
 
44
- The musl archives deliberately omit a clipboard native binding because `@mariozechner/clipboard` 0.3.9 publishes metadata-only musl stubs without a `.node` payload; Atomic uses Linux clipboard commands and OSC52 fallback instead. They also omit `@embedded-postgres/*` binary packages because those packages are glibc-linked. Durable workflows on Alpine therefore require external Postgres via `DBOS_SYSTEM_DATABASE_URL` or Docker; without a durable backend, Atomic uses a loud non-durable in-memory fallback.
46
+ The archive installer verifies the GitHub Release checksum and installs the full payload under a versioned root. See the [Quickstart](/quickstart#release-archive) for its parameters (`ATOMIC_VERSION`, `ATOMIC_INSTALL_DIR`, `ATOMIC_BIN_DIR`, `GITHUB_TOKEN`/`GH_TOKEN`), default paths, and PATH guidance.
45
47
 
46
48
  Then run it in a project directory:
47
49
 
package/docs/intercom.md CHANGED
@@ -152,7 +152,7 @@ Name sessions with `/name` so they can target each other (for example `/name pla
152
152
  | `leave` | Returns the session to its resolved home group from startup. It takes no `group` parameter. |
153
153
  | `list` | Returns the current session plus other active intercom-connected sessions with name, full session ID, working directory, model, and live status (`idle`, `thinking`, or `tool:<name>`, derived from lifecycle events). Every displayed full session ID is a valid target. |
154
154
  | `send` | Fire-and-forget delivery. Requires `to` and `message`; returns delivery confirmation or the delivery-failure reason. Cannot message the current session. |
155
- | `ask` | Sends a message and blocks until the recipient replies (10-minute timeout). From a foreground child to its resolved launching parent, it instead ends the child and returns a fresh-subagent handoff through the parent `subagent` call. |
155
+ | `ask` | Sends a message and blocks until the recipient replies (10-minute timeout). A recipient disconnect after delivery fails the wait promptly; the timeout remains the backstop for a connected but unresponsive recipient. From a foreground child to its resolved launching parent, it instead ends the child and returns a fresh-subagent handoff through the parent `subagent` call. |
156
156
  | `reply` | Replies to the intercom-triggered message of the current turn; otherwise falls back to the single unresolved inbound ask. With multiple pending asks, pass `to` or inspect with `pending` first. |
157
157
  | `pending` | Lists unresolved inbound asks with sender, message ID, elapsed time, and a short preview. |
158
158
  | `status` | Shows connection status, session ID, current group, and the count of active sessions in that group. A `group` filter remains a read-only peek. |
@@ -185,9 +185,11 @@ A session's home group is resolved with this precedence: explicit stage/task/sub
185
185
 
186
186
  **`send`** is fire-and-forget — the tool returns immediately after delivery. By default it sends immediately, including in interactive sessions. If you want an approval dialog before non-reply sends, set `confirmSend: true` in config; replies that include `replyTo` still skip confirmation so reply-hint flows continue without an extra approval step.
187
187
 
188
- **`ask`** normally sends the message and blocks until the recipient responds (10-minute timeout). The reply comes back as the tool result, so the agent continues in the same turn with full context. A foreground child asking its resolved launching parent is the exception: Atomic ends the child before send or waiter admission and returns a dynamic `[TASK_CONTEXT]` handoff through the parent `subagent` call. The supervisor answer is placed in a fresh child task with a new run identity. Asks to siblings and other peers keep the normal waiter path. Only one normal pending `ask` is allowed per session at a time; if several such requests race, one wins the reservation and each other call returns "Already waiting for a reply" without disturbing it.
188
+ **`ask`** normally sends the message and blocks until the recipient responds (10-minute timeout). If the recipient disconnects after delivery, only the exact ask to that peer fails promptly; the timeout remains the backstop for a connected but unresponsive recipient. Up to `maxPendingAsks` waits (default: 6) may run concurrently, including same-target and mixed-target fan-out. Exact sender/message correlation keeps out-of-order replies and selective disconnects from cross-settling another call. A foreground child asking its resolved launching parent is the exception: Atomic ends the child before send or waiter admission and returns a dynamic `[TASK_CONTEXT]` handoff through the parent `subagent` call. Multiple children may hand off independently; each request is keyed by child/run identity and each request has a first-claim-wins owner.
189
189
 
190
- **`reply`** is receiver-side sugar for replying to an inbound ask. In the turn triggered by an incoming intercom message, `intercom({ action: "reply", message: "..." })` targets that exact sender and message automatically. If you reply later, it falls back to the single unresolved inbound ask; with multiple pending asks, use `pending` to inspect them and pass `to` to disambiguate. Under the hood this is still a normal `send` with the exact `replyTo` value.
190
+ **`contact_supervisor`** keeps a narrower policy: one blocking decision/interview wait per child may coexist with ordinary peer asks, but a second concurrent supervisor wait receives `Already waiting for a supervisor reply`. Claimed foreground handoffs allocate no waiter. Mutual peer asks are supported, although both sessions must process inbound work to reply; the per-waiter timeout remains the backstop.
191
+
192
+ **`reply`** is receiver-side sugar for replying to an inbound ask. In the turn triggered by an incoming intercom message, `intercom({ action: "reply", message: "..." })` targets that exact sender and message automatically. If you reply later, it falls back to the single unresolved inbound ask; with multiple pending asks, use `pending` and pass `to`, or pass the listed message ID as `replyTo` to disambiguate multiple asks from the same sender. Under the hood this is still a normal `send` with the exact `replyTo` value.
191
193
 
192
194
  ### Attachments
193
195
 
@@ -87,7 +87,7 @@ The dedicated history actions always change history entries, regardless of the c
87
87
  Interactive sessions always use this fullscreen viewport for the primary transcript scroll region. Mouse-wheel input scrolls the region under the pointer, falling back to the transcript over the fixed editor/status/footer dock. Clicking an OSC 8 hyperlink opens it in the default handler; the jump-to-bottom indicator's internal OSC 8 link returns the focused transcript surface to its live end, including an attached workflow stage chat. Dragging with the primary mouse button selects text and copies it to the clipboard. See [Terminal setup](/terminal-setup) for terminal-specific mouse and trackpad behavior.
88
88
 
89
89
 
90
- Fullscreen text selection comes from the installed pi-tui 0.84.2 renderer. Drag with the primary button to select characters; double-click selects a word and triple-click selects a line. Focus changes and non-drag clicks clear transient selection state, preventing a stale highlight from appearing. A drag release reported with the generic SGR button code also ends the selection. The renderer also reduces mouse tracking in tmux, Zellij, and GNU Screen.
90
+ Fullscreen text selection comes from the installed pi-tui 0.84.3 renderer. Drag with the primary button to select characters; double-click selects a word and triple-click selects a line. Focus changes and non-drag clicks clear transient selection state, preventing a stale highlight from appearing. A drag release reported with the generic SGR button code also ends the selection. The renderer also reduces mouse tracking in tmux, Zellij, and GNU Screen.
91
91
  Fullscreen transcript bindings take precedence over editor bindings while the main editor has focus. The default unmodified navigation keys therefore control the transcript, while their `ctrl` variants continue to control the editor. When a fullscreen overlay or inline custom component has focus, Atomic sends matching viewport bindings to that component first. Returning `true` keeps the key local. For an in-process component, returning `false`, `undefined`, or `void` lets transcript scrolling handle it. A remote component's correlated reply falls through on `false`, failure, or timeout; `undefined` after disposal is dropped because that component no longer owns focus.
92
92
 
93
93
  | Key | Editor action | Fullscreen action |
package/docs/llama-cpp.md CHANGED
@@ -35,7 +35,7 @@ Run:
35
35
  /login llama.cpp
36
36
  ```
37
37
 
38
- Enter the router URL and optional API key. The default URL is `http://127.0.0.1:8080`. The same values can be supplied without `/login`:
38
+ Enter the router URL and optional API key. The default URL is `http://127.0.0.1:8080`. If the router uses `--no-models-autoload`, login only stores the connection; use `/llama` to load a model, then `/model` to select it. The same values can be supplied without `/login`:
39
39
 
40
40
  ```bash
41
41
  export LLAMA_BASE_URL=http://127.0.0.1:8080
package/docs/models.md CHANGED
@@ -334,6 +334,8 @@ Example for a model where thinking cannot be disabled:
334
334
 
335
335
  Migration: older configs that used `compat.reasoningEffortMap` should move that mapping to model-level `thinkingLevelMap`. Use `null` for levels that should not appear in the UI.
336
336
 
337
+ `/thinking` opens the thinking-level selector. Enter applies the level to the current session only. Persist (the selector's save action) writes `settings.modelThinkingLevels` for the active model instead of replacing the global `defaultThinkingLevel`. Settings → Default thinking level per model lists those overrides.
338
+
337
339
  ### Context Window
338
340
 
339
341
  `contextWindow` is the model's context size in tokens and drives local budgeting,
@@ -4,15 +4,15 @@ This page gets you from install to a useful first Atomic session. Atomic is the
4
4
 
5
5
  ## Prerequisites
6
6
 
7
- - **Node.js 24 LTS or newer** Atomic requires the latest Node LTS runtime. Check with `node --version`.
8
- - **A package manager** use npm (included with Node), pnpm, Yarn, or Bun. Bun installs need Bun 1.4.0+.
9
- - **Model-provider access** — Use `/login` after startup. Supports provider subscriptions and APIs.
7
+ - **Package install:** Node.js 22.19 or newer plus npm, pnpm, Yarn, or Bun. Use Bun 1.4.0+ for Bun installs or workflow-authoring examples.
8
+ - **Release archive install:** macOS and Linux need `tar` and either `curl` or `wget`; Windows uses built-in PowerShell commands. This path does not need Node.js or a package manager.
9
+ - **Model-provider access** — use a supported subscription login or API key. Run `/login` after startup.
10
10
 
11
11
  ## Install
12
12
 
13
- Install the published package globally with npm, pnpm, or Bun:
13
+ ### Package managers
14
14
 
15
- With npm:
15
+ Install with npm:
16
16
 
17
17
  ```bash
18
18
  npm install -g @bastani/atomic
@@ -30,7 +30,59 @@ With Bun:
30
30
  bun add -g @bastani/atomic
31
31
  ```
32
32
 
33
- Atomic does not require package install scripts. If you want to disable dependency lifecycle scripts during the Atomic install, you can add `--ignore-scripts` to the install command.
33
+ Atomic does not require package install scripts. Add `--ignore-scripts` if you want to disable dependency lifecycle scripts during a package install.
34
+
35
+ ### Release archive
36
+
37
+ Alternatively, install the self-contained release archive, which needs no Node.js or package manager.
38
+
39
+ On macOS or Linux:
40
+
41
+ ```bash
42
+ curl -fsSL https://raw.githubusercontent.com/bastani-inc/atomic/main/install.sh | sh
43
+ ```
44
+
45
+ On Windows PowerShell:
46
+
47
+ ```powershell
48
+ irm https://raw.githubusercontent.com/bastani-inc/atomic/main/install.ps1 | iex
49
+ ```
50
+
51
+ The installer downloads only the matching GitHub Release archive and `SHA256SUMS`, verifies the checksum, and keeps the complete payload in a versioned directory.
52
+
53
+ On macOS or Linux, the default paths are `~/.local/share/atomic` for versioned payloads and `~/.local/bin/atomic` for the launcher. The installer prints a paste-safe `export PATH=...` command if needed.
54
+
55
+ On Windows, the defaults are `%LOCALAPPDATA%\atomic` for payloads and `%LOCALAPPDATA%\atomic\bin\atomic.cmd` for the launcher. The installer updates the User PATH and current process, then asks you to restart the terminal.
56
+
57
+ The installer accepts these environment variables:
58
+
59
+ #### ATOMIC_VERSION
60
+
61
+ Pin an exact release tag instead of the latest release, or pass a flag that overrides it. On macOS or Linux:
62
+
63
+ ```bash
64
+ curl -fsSL https://raw.githubusercontent.com/bastani-inc/atomic/main/install.sh | sh -s -- --ref 0.9.11
65
+ ```
66
+
67
+ On Windows PowerShell:
68
+
69
+ ```powershell
70
+ & ([scriptblock]::Create((irm https://raw.githubusercontent.com/bastani-inc/atomic/main/install.ps1))) -Ref 0.9.11
71
+ ```
72
+
73
+ Pins use Atomic's `MAJOR.MINOR.PATCH` or `MAJOR.MINOR.PATCH-alpha.REVISION` release tag form and are honored literally: if GitHub answers with a different release tag, the installer stops before downloading anything rather than installing a version you did not ask for.
74
+
75
+ #### ATOMIC_INSTALL_DIR
76
+
77
+ Override the install root that holds the versioned payloads (default `~/.local/share/atomic` on macOS/Linux, `%LOCALAPPDATA%\atomic` on Windows). On macOS/Linux, a relative value resolves against the physical directory where the installer starts and is used exactly as given, including any trailing whitespace or newline. The install root cannot equal or sit inside the launcher path (`ATOMIC_BIN_DIR/atomic`); impossible layouts fail before any download or filesystem change.
78
+
79
+ #### ATOMIC_BIN_DIR
80
+
81
+ Override the launcher directory (default `~/.local/bin` on macOS/Linux, `%LOCALAPPDATA%\atomic\bin` on Windows). Relative values resolve the same way as `ATOMIC_INSTALL_DIR`. It cannot sit inside the install root's `current` or `versions` directories, which the installer replaces on every install. A Unix value containing `:` cannot be one PATH entry, so the installer prints direct-run guidance instead of editing PATH.
82
+
83
+ #### GITHUB_TOKEN / GH_TOKEN
84
+
85
+ Optional; raises GitHub API limits on shared networks. Curl and GNU Wget keep the token in a protected temporary file instead of process arguments. BusyBox Wget remains supported without a token, and with a token when the latest-release redirect avoids the API; if an authenticated API fallback is needed, install curl or GNU Wget rather than exposing the token.
34
86
 
35
87
  ### Which runtime runs your workflows
36
88
 
@@ -38,7 +90,12 @@ How you install Atomic decides which runtime hosts it: a package-manager install
38
90
 
39
91
  ### Alpine and musl Linux archives
40
92
 
41
- For Alpine Linux, use `atomic-linux-x64-musl.tar.gz` on x64 or `atomic-linux-arm64-musl.tar.gz` on arm64. These archives provide native search and PTY bindings. Install their runtime libraries with `apk add --no-cache libgcc libstdc++`, then see the [Alpine and musl Linux archive notes](/index#alpine-and-musl-linux-archives) for the clipboard fallback and external Postgres or Docker requirement for durable workflows.
93
+ The shell installer detects Alpine and selects `atomic-linux-x64-musl.tar.gz` or `atomic-linux-arm64-musl.tar.gz`. Each archive includes its matching native search and PTY bindings plus payload-local `libgcc` and `libstdc++` runtimes, so stock Alpine needs no runtime package install.
94
+
95
+ Two features work differently on musl:
96
+
97
+ - **Clipboard:** the musl archives omit a clipboard native binding because `@mariozechner/clipboard` 0.3.9 publishes metadata-only musl stubs without a `.node` payload; Atomic uses Linux clipboard commands and OSC52 fallback instead.
98
+ - **Durable workflows:** the archives omit the glibc-linked `@embedded-postgres/*` binary packages, so durable workflows on Alpine require external Postgres via `DBOS_SYSTEM_DATABASE_URL` or Docker. Without a durable backend, Atomic uses a loud non-durable in-memory fallback.
42
99
 
43
100
  Then start Atomic in the project directory you want it to work on:
44
101
 
@@ -49,15 +106,29 @@ atomic
49
106
 
50
107
  ## Uninstall
51
108
 
52
- Remove the global package with the same package manager you used to install it:
109
+ On macOS or Linux, for a default archive install, remove `~/.local/share/atomic` and the `~/.local/bin/atomic` link.
110
+
111
+ On Windows, remove `%LOCALAPPDATA%\atomic`. If you set `ATOMIC_BIN_DIR`, also remove `atomic.cmd` and the `atomic-current` junction from that directory, then remove the directory from your User PATH.
112
+
113
+ For a package install, remove the global package with the same package manager. With npm:
53
114
 
54
115
  ```bash
55
116
  npm uninstall -g @bastani/atomic
117
+ ```
118
+
119
+ With pnpm:
120
+
121
+ ```bash
56
122
  pnpm remove -g @bastani/atomic
123
+ ```
124
+
125
+ With Bun:
126
+
127
+ ```bash
57
128
  bun remove -g @bastani/atomic
58
129
  ```
59
130
 
60
- This removes the CLI package only. User configuration, auth, sessions, and packages remain under `~/.atomic/agent/` unless you delete that directory yourself.
131
+ These commands remove the CLI only. User configuration, auth, sessions, and packages remain under `~/.atomic/agent/` unless you delete that directory yourself.
61
132
 
62
133
  ## Authenticate
63
134
 
package/docs/rpc.md CHANGED
@@ -138,6 +138,29 @@ Response:
138
138
  {"type": "response", "command": "abort", "success": true}
139
139
  ```
140
140
 
141
+ #### clear_queue
142
+
143
+ Remove queued steering and follow-up messages and return their text.
144
+
145
+ ```json
146
+ {"type": "clear_queue"}
147
+ ```
148
+
149
+ Response:
150
+ ```json
151
+ {
152
+ "type": "response",
153
+ "command": "clear_queue",
154
+ "success": true,
155
+ "data": {
156
+ "steering": ["Change direction"],
157
+ "followUp": ["Summarize when finished"]
158
+ }
159
+ }
160
+ ```
161
+
162
+ To implement interactive Esc behavior, send `clear_queue` before `abort`, then restore the returned text in the client editor. `abort` continues queued messages when they remain in the session.
163
+
141
164
  #### new_session
142
165
 
143
166
  Start a fresh session. Can be cancelled by a `session_before_switch` extension event handler.
@@ -894,7 +917,7 @@ Events are streamed to stdout as JSON lines. Most events do not include an `id`;
894
917
  | `message_start` | Message begins |
895
918
  | `message_update` | Streaming update (text/thinking/toolcall deltas) |
896
919
  | `message_end` | Message completes |
897
- | `tool_execution_start` | Tool begins execution |
920
+ | `tool_execution_start` | Tool begins execution; includes `toolCallId`, `toolName`, and initial arguments |
898
921
  | `tool_execution_update` | Tool execution progress (streaming output) |
899
922
  | `tool_execution_end` | Tool completes |
900
923
  | `bash_execution_update` | Correlated direct-bash stdout/stderr delta |
package/docs/sdk.md CHANGED
@@ -608,6 +608,17 @@ const { session } = await createAgentSession({
608
608
 
609
609
  Atomic's built-in `bash` tool matches upstream pi: when `bash` is enabled, commands execute through the configured shell with the Atomic process permissions. Use `tools`, `excludedTools`, or `noTools` to decide whether a session exposes the `bash` tool at all. Atomic no longer provides a command-level allow/deny option for `bash`; use an operating-system/container sandbox or a custom tool/extension when you need command allowlisting or stronger isolation.
610
610
 
611
+
612
+ #### PowerShell tool behavior
613
+
614
+ `createPowerShellTool()` and `createPowerShellToolDefinition()` provide the same tool used by interactive sessions. When their default local operations execute on native Windows, they prefer `pwsh.exe`, fall back to `powershell.exe`, and throw a clear error when neither executable is available. `createLocalPowerShellOperations()` and `getPowerShellConfig()` are also exported for custom integrations. The PowerShell factories expose the current `ATOMIC_*` and legacy `PI_*` session snapshot by default; set `exposeSessionEnvironment: false` to opt out.
615
+
616
+ ```typescript
617
+ import { createPowerShellTool } from "@bastani/atomic";
618
+
619
+ const powershell = createPowerShellTool("C:\\path\\to\\project");
620
+ ```
621
+
611
622
  #### Tools with Custom cwd
612
623
 
613
624
  When you pass a custom `cwd`, `createAgentSession()` builds selected built-in tools for that cwd.
package/docs/settings.md CHANGED
@@ -7,7 +7,7 @@ Atomic uses JSON settings files with project settings overriding global settings
7
7
  | `~/.atomic/agent/settings.json` | Global (all projects) |
8
8
  | `.atomic/settings.json` | Project (current directory) |
9
9
 
10
- Edit directly or use `/settings` for common options. Atomic also reads legacy `~/.pi/agent/settings.json` and `.pi/settings.json` as compatibility fallbacks, with `.atomic` paths taking precedence.
10
+ Edit directly or use `/settings` for common options. To save startup model defaults interactively, use `/model` and press Ctrl+S on the desired model; to save the startup thinking level, use `/thinking` and press Ctrl+S. Atomic also reads legacy `~/.pi/agent/settings.json` and `.pi/settings.json` as compatibility fallbacks, with `.atomic` paths taking precedence.
11
11
 
12
12
  ## Project Trust
13
13
 
@@ -31,12 +31,13 @@ Settings and trust JSON files may start with a UTF-8 BOM, as commonly written by
31
31
 
32
32
  | Setting | Type | Default | Description |
33
33
  |---------|------|---------|-------------|
34
- | `defaultProvider` | string | - | Default provider (e.g., `"anthropic"`, `"openai"`) |
35
- | `defaultModel` | string | - | Default model ID |
36
- | `defaultThinkingLevel` | string | - | `"off"`, `"minimal"`, `"low"`, `"medium"`, `"high"`, `"xhigh"`, `"max"`; the active model must support the selected level |
34
+ | `defaultProvider` | string | - | Startup provider (e.g., `"anthropic"`, `"openai"`; saved with Ctrl+S in `/model`, or edited manually) |
35
+ | `defaultModel` | string | - | Startup model ID (saved with Ctrl+S in `/model`, or edited manually) |
36
+ | `defaultThinkingLevel` | string | - | Startup thinking level (saved with Ctrl+S in `/thinking`, or edited manually): `"off"`, `"minimal"`, `"low"`, `"medium"`, `"high"`, `"xhigh"`, `"max"`; the active model must support the selected level |
37
+ | `modelThinkingLevels` | object | - | Per-model startup thinking levels keyed by `"provider/modelId"`; configure from `/settings` → Default thinking level per model, or edit manually |
37
38
  | `hideThinkingBlock` | boolean | `false` | Hide thinking blocks in output |
38
39
  | `thinkingBudgets` | object | - | Custom token budgets per thinking level. Anthropic, Google, and Bedrock use these natively. OpenAI-compatible models use them when `compat.thinkingTokenBudgetField` (or `supportsThinkingTokenBudget`) is set. |
39
- | `showCacheMissNotices` | boolean | `false` | Show transcript notices for significant prompt-cache misses and their attributed wasted tokens |
40
+ | `showCacheMissNotices` | boolean | `false` | Show transcript notices for significant prompt-cache misses and billed compaction or branch-summary usage |
40
41
  | `fallbackModels` | string[] | - | Ordered fallback models, written as `"provider/model"` with optional model-supported reasoning suffixes such as `:high`, `:xhigh`, or `:max`. Used by main-chat turns and, since compaction fallback rungs, borrowed for compaction planner requests |
41
42
 
42
43
  `defaultProvider` and `defaultModel` form one exact saved selection when both are present. Atomic waits for built-in, configured, and extension provider registration before classifying that provider. If it remains unsupported, Atomic does not silently switch providers: interactive mode stays live with a generic configuration warning; print and JSON modes write the warning to stderr and exit nonzero before prompting (with JSON stdout remaining JSONL-clean); and RPC rejects `prompt` until a successful explicit `set_model` selects an available model or an explicit model cycle returns a different available model. A null or unchanged cycle does not clear the condition. If the provider is supported but its saved model is unknown or lacks configured authentication, normal automatic selection of an available authenticated model remains enabled; the same is true when either field is omitted. Valid extension-provider defaults can resolve after deferred extension loading. Update an unsupported pair or choose a model with `/model`.
@@ -327,7 +328,7 @@ On Windows, JSON paths must use forward slashes or escaped backslashes:
327
328
  |---------|------|---------|-------------|
328
329
  | `defaultTools` | string[] | - | Built-in tools enabled at startup. When omitted, Atomic uses its standard defaults |
329
330
 
330
- `defaultTools` selects the built-in tools a session starts with. Extension and SDK custom tools stay enabled regardless:
331
+ `defaultTools` selects the built-in tools a session starts with. Extension and SDK custom tools stay enabled regardless. Available built-ins are `read`, `bash`, `powershell`, `edit`, `write`, `find`, `search`, `ask_user_question`, `todo`, and `ls`:
331
332
 
332
333
  ```json
333
334
  {
@@ -335,6 +336,14 @@ On Windows, JSON paths must use forward slashes or escaped backslashes:
335
336
  }
336
337
  ```
337
338
 
339
+ On Windows, select `powershell` instead of `bash`, or include both:
340
+
341
+ ```json
342
+ {
343
+ "defaultTools": ["read", "powershell", "edit", "write"]
344
+ }
345
+ ```
346
+
338
347
  An empty array starts with no built-in tools while preserving extension and custom tools. `--tools` replaces this behavior with a strict allowlist covering all tools, `--no-tools` disables all tools, and `--no-builtin-tools` disables only the built-in defaults. `--exclude-tools` filters the resulting list. A project `defaultTools` array replaces the global array.
339
348
 
340
349
  ### Sessions
@@ -374,7 +383,7 @@ When multiple sources specify a session directory, precedence is `--session-dir`
374
383
 
375
384
  Mermaid code blocks render as themed Unicode diagrams in interactive transcripts when they fit the available width. `"off"` keeps the Markdown fence, `"final"` renders only finalized responses, and `"streaming"` also renders partial assistant responses. Invalid or too-wide diagrams remain as code, and rendering is display-only: stored messages and model context keep the original Markdown. LaTeX rendering is also display-only and converts supported expressions to terminal-friendly Unicode math; set `markdown.latex` to `false` to keep the source form.
376
385
 
377
- The installed pi-tui 0.84.2 LaTeX renderer also handles whitespace and matrix layouts correctly.
386
+ The installed pi-tui 0.84.3 LaTeX renderer also handles whitespace and matrix layouts correctly.
378
387
 
379
388
  ### Resources
380
389
 
package/docs/skills.md CHANGED
@@ -34,9 +34,10 @@ Atomic loads skills from:
34
34
  - CLI: `--skill <path>` (repeatable, additive even with `--no-skills`)
35
35
 
36
36
  Discovery rules:
37
- - In `~/.atomic/agent/skills/` and `.atomic/skills/` (plus legacy `~/.pi/agent/skills/` and `.pi/skills/`), direct root `.md` files are discovered as individual skills
37
+ - In `~/.atomic/agent/skills/` and `.atomic/skills/` (plus legacy `~/.pi/agent/skills/` and `.pi/skills/`), direct root `.md` files are discovered as individual skills when they have valid skill frontmatter with a non-empty `description`
38
38
  - In all skill locations, directories containing `SKILL.md` are discovered recursively
39
39
  - In `~/.agents/skills/` and project `.agents/skills/`, root `.md` files are ignored
40
+ - Root Markdown files other than `SKILL.md` that do not look like skills are ignored silently
40
41
 
41
42
  Disable discovery with `--no-skills` (explicit `--skill` paths still load).
42
43
 
@@ -211,7 +212,7 @@ Atomic validates skills against the Agent Skills standard. Most issues produce w
211
212
 
212
213
  Unknown frontmatter fields are ignored.
213
214
 
214
- **Exception:** Skills with missing description are not loaded.
215
+ Declared skills with missing descriptions are not loaded. Malformed `SKILL.md` files and `SKILL.md` files without a description produce warnings and are not loaded. Other Markdown files without valid skill frontmatter are ignored.
215
216
 
216
217
  Name collisions (the same name from different real files) produce diagnostics and keep the existing first-winner precedence for `/skill:name`. Atomic also retains the other files as source-qualified candidates as described in [Skill Commands](#skill-commands).
217
218
 
package/docs/subagents.md CHANGED
@@ -117,6 +117,13 @@ subagent({ agent: "codebase-analyzer", task: "Trace the auth flow with file refe
117
117
 
118
118
  Use `interrupt` to stop a live child. Interrupted children are terminal for continuation; launch a fresh child with an explicit context handoff for follow-up work.
119
119
 
120
+ If the parent turn is cancelled while a foreground in-process child is still running, the child stops through the existing abort/interrupted state. That outcome is terminal and non-retryable: it does not count as a failure, never looks completed, and preserves any fallback metadata already recorded before abort. Parent receipts, Intercom summaries, and progress present the child as cancelled; persisted metadata records `interrupted` with abort cause rather than a new public status. Atomic recovers bounded, clearly labelled partial findings in this order:
121
+ 1. A modified run-scoped `progress.md`
122
+ 2. The last assistant message that contains actual text
123
+ 3. A cancellation notice with session, progress, and output artifact references
124
+
125
+ A thinking-only aborted final message is skipped so earlier text can still be recovered. Session, Progress, and Output paths are cited only when those files exist when the cancelled envelope or receipt is built. A parallel set shares one `progress.md`; recovery attributes that file to the first progress-enabled child so siblings are not each given a copy of the same findings. A mixed parallel set that contains both a user interrupt and a parent cancellation presents the cancellation summary rather than interrupt-specific follow-up guidance.
126
+
120
127
  Status and interrupt use the live Rust registry and status watch; `list` and `get` remain read-only management actions. No retained foreground-run map, resume generation, session rehydration, or bare-run-ID continuation exists. Terminal delivery remains an in-memory bounded envelope with artifacts and run history persisted once.
121
128
 
122
129
  Inside workflow stages, completion delivery observes the stage generation boundary. A completion received before the boundary closes is queued through the stage AgentSession and processed before the stage publishes its terminal snapshot. A completion that arrives after close is routed once to the parent/main chat and cannot reopen or append to the completed stage transcript. Explicit post-mortem stage chat is still available separately.
package/docs/termux.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Atomic runs on Android via [Termux](https://termux.dev/), a terminal emulator and Linux environment for Android.
4
4
 
5
- Termux uses Android's bionic libc, not Alpine's musl libc. Atomic's Alpine musl archives target x64 and arm64 musl Linux only; they are not Termux packages and do not provide an Android target. Android ARM64 still has no Atomic native target, so musl support does not change Termux's native-addon limitations.
5
+ Termux uses Android's bionic libc, not Alpine's musl libc. Do not run the root `install.sh` there: Atomic's glibc and musl Linux release archives are not Android packages and do not provide a Termux target. Use the npm path below. Android ARM64 still has no Atomic native target, so musl support does not change Termux's native-addon limitations.
6
6
 
7
7
  ## Prerequisites
8
8
 
package/docs/usage.md CHANGED
@@ -42,11 +42,12 @@ Type `/` in the editor to open command completion. Extensions can register custo
42
42
  | Command | Description |
43
43
  |---------|-------------|
44
44
  | `/login`, `/logout` | Manage OAuth or API-key credentials |
45
- | `/model` | Switch models |
45
+ | `/model` | Switch models; Ctrl+S in the picker saves the startup default |
46
+ | `/thinking` | Switch thinking level; Ctrl+S in the picker saves the startup default |
46
47
  | `/scoped-models` | Enable/disable models for CTRL+P cycling |
47
48
  | `/fast` | Toggle Codex fast mode for chat and workflow stages when supported OpenAI or shared ChatGPT Codex transport models are available |
48
49
  | `/workflow` | List/run workflows; manage runs (connect/inspect/pause/interrupt/quit/resume); reload workflow resources |
49
- | `/settings` | Thinking level, theme, message delivery, transport |
50
+ | `/settings` | Theme, message delivery, transport, and other preferences |
50
51
  | `/resume` | Pick from previous sessions |
51
52
  | `/new` | Start a new session |
52
53
  | `/name <name>` | Set session display name |
@@ -273,7 +274,7 @@ When a print-mode turn correctly finishes by calling an opt-in terminating struc
273
274
  | `--no-builtin-tools`, `-nbt` | Disable built-in tools but keep extension/custom tools enabled |
274
275
  | `--no-tools`, `-nt` | Disable all tools |
275
276
 
276
- Default built-in tools: `read`, `bash`, `edit`, `write`, `find`, `search`, `ask_user_question`, `todo`. `find.paths` accepts directories, files, or glob paths such as `*.ts` and honors `timeout`; `search` accepts `pattern`, optional `paths`, `i`, `gitignore`, and `skip` for regex content-search pagination. Use `--exclude-tools` to disable one or more tools while leaving the rest available, for example `atomic --exclude-tools ask_user_question`. The `defaultTools` setting selects which built-in tools a session starts with including none, with an empty array while extension and custom tools stay enabled; see [Settings](/settings#tools).
277
+ Default built-in tools: `read`, `bash`, `edit`, `write`, `find`, `search`, `ask_user_question`, `todo`, plus `powershell` on native Windows when a PowerShell executable is available. `find.paths` accepts directories, files, or glob paths such as `*.ts` and honors `timeout`; `search` accepts `pattern`, optional `paths`, `i`, `gitignore`, and `skip` for regex content-search pagination. Use `--exclude-tools` to disable one or more tools while leaving the rest available, for example `atomic --exclude-tools ask_user_question`. The `defaultTools` setting selects which built-in tools a session starts with; `--tools` replaces that default with a strict allowlist over built-in, custom, and extension tools; `--no-builtin-tools` removes only built-ins; `--no-tools` removes all tools. `ls` remains available as an SDK compatibility tool but is not enabled by default.
277
278
 
278
279
  ### Project Trust Options
279
280
 
package/docs/windows.md CHANGED
@@ -1,12 +1,34 @@
1
1
  # Windows Setup
2
2
 
3
- Atomic requires a bash shell on Windows. Checked locations (in order):
3
+ ## Install
4
+
5
+ Install the self-contained Windows release archive with Windows PowerShell 5.1 or newer:
6
+
7
+ ```powershell
8
+ irm https://raw.githubusercontent.com/bastani-inc/atomic/main/install.ps1 | iex
9
+ ```
10
+
11
+ This path does not require Node.js or a package manager. To pin an exact release:
12
+
13
+ ```powershell
14
+ & ([scriptblock]::Create((irm https://raw.githubusercontent.com/bastani-inc/atomic/main/install.ps1))) -Ref 0.9.11
15
+ ```
16
+
17
+ The installer verifies `SHA256SUMS` before changing an existing install. It stores versioned payloads under `%LOCALAPPDATA%\atomic` and places an ASCII-only `atomic.cmd` plus an `atomic-current` junction in `%LOCALAPPDATA%\atomic\bin` by default. The relative shim remains safe when the install path contains Unicode text or the bin directory is elsewhere. Set `ATOMIC_INSTALL_DIR`, `ATOMIC_BIN_DIR`, or `ATOMIC_VERSION` to override those values. `GITHUB_TOKEN` or `GH_TOKEN` is optional for higher GitHub API limits. Exact pins use Atomic's `MAJOR.MINOR.PATCH` or `MAJOR.MINOR.PATCH-alpha.REVISION` release tag form.
18
+
19
+ Every attempt removes its own `atomic-install-*` staging directory under the Windows temp path before it finishes. Windows can hold a file or an executable image open briefly after the process that used it exits, so the installer clears read-only attributes, retries the removal a bounded number of times, and verifies the directory is gone after each try. If it still cannot remove the directory, it reports the exact path, the number of attempts, and the last Windows error instead of leaving the residue unmentioned. A cleanup failure never replaces the original error: when an install fails for another reason, that error is still the one you see and the incomplete cleanup is reported as a warning.
20
+
21
+ After the script is fetched, it enables TLS 1.2 for its own GitHub requests and restores the caller's prior protocol setting. A downloaded script cannot repair the connection used to fetch itself: on a legacy Windows PowerShell 5.1 host where the literal `irm` command cannot reach GitHub, enable TLS 1.2 in that shell before rerunning the same one-liner.
22
+
23
+ The installer adds the bin directory to the User PATH and the current PowerShell process. Restart the terminal when it finishes so other processes see the new PATH. A custom `ATOMIC_BIN_DIR` containing `;` cannot be one Windows PATH entry, so the installer leaves PATH untouched and prints a direct-run command for `atomic.cmd` instead. If the bin directory already holds a same-stem launcher that `PATHEXT` resolves before `atomic.cmd`, such as a stale `atomic.exe` from an older Node-based install, the installer reports it and stops before downloading anything; remove that entry and rerun. Because the shim is `atomic.cmd`, `PATHEXT` must include `.CMD` for bare `atomic` to resolve; if it does not, the installer says so and stops rather than reporting a success you could not use. An unexpected regular `current` entry under `ATOMIC_INSTALL_DIR`, or a regular `atomic-current` entry under `ATOMIC_BIN_DIR`, is reported and left untouched instead of being moved or deleted. A pinned `-Ref` is honored literally: if GitHub answers with a different release tag, the install stops before downloading anything. Package-manager installation remains available but requires Node.js; see the [Quickstart](/quickstart#package-managers).
24
+
25
+ By default, Atomic uses a Bash shell for the `bash` tool and `!`/`!!` shortcuts. If you use those surfaces, Atomic checks these locations in order:
4
26
 
5
27
  1. Custom path from `~/.atomic/agent/settings.json` (legacy `~/.pi/agent/settings.json` also supported)
6
28
  2. Git Bash (`C:\Program Files\Git\bin\bash.exe`)
7
29
  3. `bash.exe` on PATH (Cygwin, MSYS2, WSL)
8
30
 
9
- For most users, [Git for Windows](https://git-scm.com/download/win) is sufficient.
31
+ For users who want the default Bash surfaces, [Git for Windows](https://git-scm.com/download/win) is sufficient. Native Windows users can instead enable the optional PowerShell tool described below; `!`/`!!` remain Bash-only.
10
32
 
11
33
  ## Custom Shell Path
12
34
 
@@ -28,4 +50,12 @@ On Windows, Atomic canonicalizes paths before starting native filesystem watcher
28
50
 
29
51
  When self-update starts on Windows, Atomic first cleans any previous `.atomic-native-quarantine` directory under the global package root. If native add-ons from the current install are loaded by the running process, Atomic moves those files into a per-run quarantine directory and copies them back into place before invoking the package manager. This lets the package manager replace native dependency files that Windows would otherwise keep locked.
30
52
 
31
- If Atomic cannot safely self-update the current installation, it exits with a clear message instead of guessing. The message explains that the install is unsupported, unmanaged, or not writable; prints the detected executable path when available; and tells you to update Atomic with the package manager, wrapper, source checkout, or release artifact that originally installed it. Standalone Bun binaries direct users to the current [Atomic releases](https://github.com/bastani-inc/atomic/releases/latest), never upstream Pi artifacts.
53
+ If Atomic cannot safely self-update the current installation, it exits with a clear message instead of guessing. The message explains that the install is unsupported, unmanaged, or not writable; prints the detected executable path when available; and tells you to update Atomic with the package manager, wrapper, source checkout, or release artifact that originally installed it. Archive installs are not managed by `atomic update`; rerun the PowerShell installer to replace `current` with the requested release. Standalone Bun binaries direct users to the current [Atomic releases](https://github.com/bastani-inc/atomic/releases/latest), never upstream Pi artifacts.
54
+
55
+ ### PowerShell tool
56
+
57
+ On native Windows, Atomic registers the `powershell` tool by default when PowerShell 7 (`pwsh.exe`) or Windows PowerShell (`powershell.exe`) is on `PATH`. If neither executable is available, the tool is omitted so the agent is not offered a command that cannot run. Add `powershell` to `defaultTools` to enable it explicitly when you want it active alongside a narrower built-in selection. The `bash` tool and `!`/`!!` shortcuts continue to use Bash. Both `ATOMIC_*` and legacy `PI_*` session variables are available.
58
+
59
+ PowerShell calls are rendered in the transcript with a `PS>` prompt so they are never mistaken for Bash, and truncated PowerShell output is spilled to its own `atomic-powershell-*` temp file rather than the Bash one.
60
+
61
+ The package root exports `createPowerShellTool()`, `createPowerShellToolDefinition()`, `createLocalPowerShellOperations()`, their public option/input/detail types, and `getPowerShellConfig()` for SDK integrations. Factory-created tools expose the current `ATOMIC_*` and legacy `PI_*` session snapshot by default; set `exposeSessionEnvironment: false` to opt out. Executing the default local operations remains Windows-only and requires a resolvable PowerShell executable.