@bastani/atomic 0.9.25-alpha.2 → 0.9.25-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 (274) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/dist/builtin/intercom/package.json +2 -2
  3. package/dist/builtin/mcp/CHANGELOG.md +43 -0
  4. package/dist/builtin/mcp/OAUTH.md +59 -269
  5. package/dist/builtin/mcp/README.md +58 -345
  6. package/dist/builtin/mcp/index.bundle.mjs +4 -27792
  7. package/dist/builtin/mcp/native-client-licenses/LICENSES/modelcontextprotocol-typescript-sdk.txt +21 -0
  8. package/dist/builtin/mcp/native-client-licenses/NOTICE +30 -0
  9. package/dist/builtin/mcp/package.json +4 -25
  10. package/dist/builtin/subagents/package.json +3 -3
  11. package/dist/builtin/web-access/package.json +2 -2
  12. package/dist/builtin/workflows/CHANGELOG.md +12 -0
  13. package/dist/builtin/workflows/builtin/{chunk-e1254zvd.js → chunk-kfsnh3w7.js} +40 -12
  14. package/dist/builtin/workflows/builtin/{chunk-cpw5gtzg.js → chunk-rqmasd3d.js} +1 -1
  15. package/dist/builtin/workflows/builtin/{chunk-qy6g0baf.js → chunk-wz783pvd.js} +1 -1
  16. package/dist/builtin/workflows/builtin/goal.js +2 -2
  17. package/dist/builtin/workflows/builtin/index.js +3 -3
  18. package/dist/builtin/workflows/builtin/ralph.js +2 -2
  19. package/dist/builtin/workflows/package.json +2 -2
  20. package/dist/builtin/workflows/src/extension/index.bundle.mjs +472 -88
  21. package/dist/builtin/workflows/src/index.js +65 -28
  22. package/dist/cli/args.d.ts.map +1 -1
  23. package/dist/cli/args.js +2 -1
  24. package/dist/cli/args.js.map +1 -1
  25. package/dist/core/agent-session-accessors.d.ts.map +1 -1
  26. package/dist/core/agent-session-accessors.js +7 -0
  27. package/dist/core/agent-session-accessors.js.map +1 -1
  28. package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
  29. package/dist/core/agent-session-extension-bindings.js +103 -7
  30. package/dist/core/agent-session-extension-bindings.js.map +1 -1
  31. package/dist/core/agent-session-methods.d.ts +7 -1
  32. package/dist/core/agent-session-methods.d.ts.map +1 -1
  33. package/dist/core/agent-session-methods.js.map +1 -1
  34. package/dist/core/agent-session-state.d.ts.map +1 -1
  35. package/dist/core/agent-session-state.js +3 -2
  36. package/dist/core/agent-session-state.js.map +1 -1
  37. package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
  38. package/dist/core/agent-session-tool-registry.js +6 -3
  39. package/dist/core/agent-session-tool-registry.js.map +1 -1
  40. package/dist/core/agent-session-types.d.ts +1 -0
  41. package/dist/core/agent-session-types.d.ts.map +1 -1
  42. package/dist/core/agent-session-types.js.map +1 -1
  43. package/dist/core/agent-session.d.ts +3 -0
  44. package/dist/core/agent-session.d.ts.map +1 -1
  45. package/dist/core/agent-session.js +6 -0
  46. package/dist/core/agent-session.js.map +1 -1
  47. package/dist/core/extensions/api-types.d.ts +3 -0
  48. package/dist/core/extensions/api-types.d.ts.map +1 -1
  49. package/dist/core/extensions/api-types.js.map +1 -1
  50. package/dist/core/extensions/context-types.d.ts +3 -1
  51. package/dist/core/extensions/context-types.d.ts.map +1 -1
  52. package/dist/core/extensions/context-types.js.map +1 -1
  53. package/dist/core/extensions/index.d.ts +2 -0
  54. package/dist/core/extensions/index.d.ts.map +1 -1
  55. package/dist/core/extensions/index.js +1 -0
  56. package/dist/core/extensions/index.js.map +1 -1
  57. package/dist/core/extensions/loader-api.d.ts.map +1 -1
  58. package/dist/core/extensions/loader-api.js +15 -0
  59. package/dist/core/extensions/loader-api.js.map +1 -1
  60. package/dist/core/extensions/loader-runtime.d.ts.map +1 -1
  61. package/dist/core/extensions/loader-runtime.js +3 -0
  62. package/dist/core/extensions/loader-runtime.js.map +1 -1
  63. package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
  64. package/dist/core/extensions/loader-virtual-modules.js +3 -0
  65. package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
  66. package/dist/core/extensions/mcp-server-registry.d.ts.map +1 -1
  67. package/dist/core/extensions/mcp-server-registry.js +4 -0
  68. package/dist/core/extensions/mcp-server-registry.js.map +1 -1
  69. package/dist/core/extensions/runner.d.ts +3 -0
  70. package/dist/core/extensions/runner.d.ts.map +1 -1
  71. package/dist/core/extensions/runner.js +4 -0
  72. package/dist/core/extensions/runner.js.map +1 -1
  73. package/dist/core/extensions/runtime-types.d.ts +3 -0
  74. package/dist/core/extensions/runtime-types.d.ts.map +1 -1
  75. package/dist/core/extensions/runtime-types.js.map +1 -1
  76. package/dist/core/extensions/tool-types.d.ts +1 -0
  77. package/dist/core/extensions/tool-types.d.ts.map +1 -1
  78. package/dist/core/extensions/tool-types.js.map +1 -1
  79. package/dist/core/extensions/workflow-run-control-hub.d.ts +23 -0
  80. package/dist/core/extensions/workflow-run-control-hub.d.ts.map +1 -0
  81. package/dist/core/extensions/workflow-run-control-hub.js +57 -0
  82. package/dist/core/extensions/workflow-run-control-hub.js.map +1 -0
  83. package/dist/core/extensions/workflow-run-control.d.ts +163 -0
  84. package/dist/core/extensions/workflow-run-control.d.ts.map +1 -0
  85. package/dist/core/extensions/workflow-run-control.js +73 -0
  86. package/dist/core/extensions/workflow-run-control.js.map +1 -0
  87. package/dist/core/mcp-child-policy.d.ts +11 -0
  88. package/dist/core/mcp-child-policy.d.ts.map +1 -0
  89. package/dist/core/mcp-child-policy.js +31 -0
  90. package/dist/core/mcp-child-policy.js.map +1 -0
  91. package/dist/core/mcp-servers.d.ts +34 -25
  92. package/dist/core/mcp-servers.d.ts.map +1 -1
  93. package/dist/core/mcp-servers.js +148 -1
  94. package/dist/core/mcp-servers.js.map +1 -1
  95. package/dist/core/package-manager-manifest.js.map +1 -1
  96. package/dist/core/package-manager-mcp-servers.js +1 -1
  97. package/dist/core/package-manager-mcp-servers.js.map +1 -1
  98. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  99. package/dist/core/remote-catalog-provider.js +4 -9
  100. package/dist/core/remote-catalog-provider.js.map +1 -1
  101. package/dist/core/sdk.js +11 -1
  102. package/dist/core/sdk.js.map +1 -1
  103. package/dist/core/tool-loadout.d.ts +1 -0
  104. package/dist/core/tool-loadout.d.ts.map +1 -1
  105. package/dist/core/tool-loadout.js +3 -0
  106. package/dist/core/tool-loadout.js.map +1 -1
  107. package/dist/core/tools/bash.d.ts.map +1 -1
  108. package/dist/core/tools/bash.js +11 -30
  109. package/dist/core/tools/bash.js.map +1 -1
  110. package/dist/core/tools/truncate.d.ts +8 -0
  111. package/dist/core/tools/truncate.d.ts.map +1 -1
  112. package/dist/core/tools/truncate.js +24 -0
  113. package/dist/core/tools/truncate.js.map +1 -1
  114. package/dist/extensions/codemode/execute.d.ts.map +1 -1
  115. package/dist/extensions/codemode/execute.js +26 -0
  116. package/dist/extensions/codemode/execute.js.map +1 -1
  117. package/dist/extensions/codemode/renderer.d.ts.map +1 -1
  118. package/dist/extensions/codemode/renderer.js +38 -23
  119. package/dist/extensions/codemode/renderer.js.map +1 -1
  120. package/dist/extensions/codemode/tool.d.ts.map +1 -1
  121. package/dist/extensions/codemode/tool.js +22 -10
  122. package/dist/extensions/codemode/tool.js.map +1 -1
  123. package/dist/extensions/mcp/cli.d.ts +21 -0
  124. package/dist/extensions/mcp/cli.d.ts.map +1 -0
  125. package/dist/extensions/mcp/cli.js +500 -0
  126. package/dist/extensions/mcp/cli.js.map +1 -0
  127. package/dist/extensions/mcp/cli.lazy.d.ts +3 -0
  128. package/dist/extensions/mcp/cli.lazy.d.ts.map +1 -0
  129. package/dist/extensions/mcp/cli.lazy.js +3 -0
  130. package/dist/extensions/mcp/cli.lazy.js.map +1 -0
  131. package/dist/extensions/mcp/client/auth-provider.d.ts +15 -0
  132. package/dist/extensions/mcp/client/auth-provider.d.ts.map +1 -0
  133. package/dist/extensions/mcp/client/auth-provider.js +2 -0
  134. package/dist/extensions/mcp/client/auth-provider.js.map +1 -0
  135. package/dist/extensions/mcp/client/client.d.ts +89 -0
  136. package/dist/extensions/mcp/client/client.d.ts.map +1 -0
  137. package/dist/extensions/mcp/client/client.js +457 -0
  138. package/dist/extensions/mcp/client/client.js.map +1 -0
  139. package/dist/extensions/mcp/client/index.d.ts +9 -0
  140. package/dist/extensions/mcp/client/index.d.ts.map +1 -0
  141. package/dist/extensions/mcp/client/index.js +7 -0
  142. package/dist/extensions/mcp/client/index.js.map +1 -0
  143. package/dist/extensions/mcp/client/oauth/callback.d.ts +42 -0
  144. package/dist/extensions/mcp/client/oauth/callback.d.ts.map +1 -0
  145. package/dist/extensions/mcp/client/oauth/callback.js +106 -0
  146. package/dist/extensions/mcp/client/oauth/callback.js.map +1 -0
  147. package/dist/extensions/mcp/client/oauth/discovery.d.ts +27 -0
  148. package/dist/extensions/mcp/client/oauth/discovery.d.ts.map +1 -0
  149. package/dist/extensions/mcp/client/oauth/discovery.js +153 -0
  150. package/dist/extensions/mcp/client/oauth/discovery.js.map +1 -0
  151. package/dist/extensions/mcp/client/oauth/errors.d.ts +24 -0
  152. package/dist/extensions/mcp/client/oauth/errors.d.ts.map +1 -0
  153. package/dist/extensions/mcp/client/oauth/errors.js +46 -0
  154. package/dist/extensions/mcp/client/oauth/errors.js.map +1 -0
  155. package/dist/extensions/mcp/client/oauth/flow.d.ts +82 -0
  156. package/dist/extensions/mcp/client/oauth/flow.d.ts.map +1 -0
  157. package/dist/extensions/mcp/client/oauth/flow.js +292 -0
  158. package/dist/extensions/mcp/client/oauth/flow.js.map +1 -0
  159. package/dist/extensions/mcp/client/oauth/index.d.ts +7 -0
  160. package/dist/extensions/mcp/client/oauth/index.d.ts.map +1 -0
  161. package/dist/extensions/mcp/client/oauth/index.js +6 -0
  162. package/dist/extensions/mcp/client/oauth/index.js.map +1 -0
  163. package/dist/extensions/mcp/client/oauth/provider.d.ts +59 -0
  164. package/dist/extensions/mcp/client/oauth/provider.d.ts.map +1 -0
  165. package/dist/extensions/mcp/client/oauth/provider.js +116 -0
  166. package/dist/extensions/mcp/client/oauth/provider.js.map +1 -0
  167. package/dist/extensions/mcp/client/oauth/types.d.ts +77 -0
  168. package/dist/extensions/mcp/client/oauth/types.d.ts.map +1 -0
  169. package/dist/extensions/mcp/client/oauth/types.js +109 -0
  170. package/dist/extensions/mcp/client/oauth/types.js.map +1 -0
  171. package/dist/extensions/mcp/client/protocol/content.d.ts +82 -0
  172. package/dist/extensions/mcp/client/protocol/content.d.ts.map +1 -0
  173. package/dist/extensions/mcp/client/protocol/content.js +41 -0
  174. package/dist/extensions/mcp/client/protocol/content.js.map +1 -0
  175. package/dist/extensions/mcp/client/protocol/jsonrpc.d.ts +59 -0
  176. package/dist/extensions/mcp/client/protocol/jsonrpc.d.ts.map +1 -0
  177. package/dist/extensions/mcp/client/protocol/jsonrpc.js +67 -0
  178. package/dist/extensions/mcp/client/protocol/jsonrpc.js.map +1 -0
  179. package/dist/extensions/mcp/client/protocol/types.d.ts +123 -0
  180. package/dist/extensions/mcp/client/protocol/types.d.ts.map +1 -0
  181. package/dist/extensions/mcp/client/protocol/types.js +7 -0
  182. package/dist/extensions/mcp/client/protocol/types.js.map +1 -0
  183. package/dist/extensions/mcp/client/testing/index.d.ts +2 -0
  184. package/dist/extensions/mcp/client/testing/index.d.ts.map +1 -0
  185. package/dist/extensions/mcp/client/testing/index.js +2 -0
  186. package/dist/extensions/mcp/client/testing/index.js.map +1 -0
  187. package/dist/extensions/mcp/client/transports/in-memory.d.ts +19 -0
  188. package/dist/extensions/mcp/client/transports/in-memory.d.ts.map +1 -0
  189. package/dist/extensions/mcp/client/transports/in-memory.js +50 -0
  190. package/dist/extensions/mcp/client/transports/in-memory.js.map +1 -0
  191. package/dist/extensions/mcp/client/transports/stdio.d.ts +32 -0
  192. package/dist/extensions/mcp/client/transports/stdio.d.ts.map +1 -0
  193. package/dist/extensions/mcp/client/transports/stdio.js +201 -0
  194. package/dist/extensions/mcp/client/transports/stdio.js.map +1 -0
  195. package/dist/extensions/mcp/client/transports/streamable-http.d.ts +96 -0
  196. package/dist/extensions/mcp/client/transports/streamable-http.d.ts.map +1 -0
  197. package/dist/extensions/mcp/client/transports/streamable-http.js +456 -0
  198. package/dist/extensions/mcp/client/transports/streamable-http.js.map +1 -0
  199. package/dist/extensions/mcp/client/transports/transport.d.ts +28 -0
  200. package/dist/extensions/mcp/client/transports/transport.d.ts.map +1 -0
  201. package/dist/extensions/mcp/client/transports/transport.js +38 -0
  202. package/dist/extensions/mcp/client/transports/transport.js.map +1 -0
  203. package/dist/extensions/mcp/config.d.ts +72 -0
  204. package/dist/extensions/mcp/config.d.ts.map +1 -0
  205. package/dist/extensions/mcp/config.js +158 -0
  206. package/dist/extensions/mcp/config.js.map +1 -0
  207. package/dist/extensions/mcp/index.d.ts +76 -0
  208. package/dist/extensions/mcp/index.d.ts.map +1 -0
  209. package/dist/extensions/mcp/index.js +1119 -0
  210. package/dist/extensions/mcp/index.js.map +1 -0
  211. package/dist/extensions/mcp/log.d.ts +16 -0
  212. package/dist/extensions/mcp/log.d.ts.map +1 -0
  213. package/dist/extensions/mcp/log.js +66 -0
  214. package/dist/extensions/mcp/log.js.map +1 -0
  215. package/dist/extensions/mcp/oauth.d.ts +103 -0
  216. package/dist/extensions/mcp/oauth.d.ts.map +1 -0
  217. package/dist/extensions/mcp/oauth.js +382 -0
  218. package/dist/extensions/mcp/oauth.js.map +1 -0
  219. package/dist/extensions/mcp/resources.d.ts +43 -0
  220. package/dist/extensions/mcp/resources.d.ts.map +1 -0
  221. package/dist/extensions/mcp/resources.js +262 -0
  222. package/dist/extensions/mcp/resources.js.map +1 -0
  223. package/dist/extensions/mcp/runtime.d.ts +104 -0
  224. package/dist/extensions/mcp/runtime.d.ts.map +1 -0
  225. package/dist/extensions/mcp/runtime.js +546 -0
  226. package/dist/extensions/mcp/runtime.js.map +1 -0
  227. package/dist/extensions/mcp/runtime.lazy.d.ts +3 -0
  228. package/dist/extensions/mcp/runtime.lazy.d.ts.map +1 -0
  229. package/dist/extensions/mcp/runtime.lazy.js +3 -0
  230. package/dist/extensions/mcp/runtime.lazy.js.map +1 -0
  231. package/dist/extensions/mcp/tools.d.ts +84 -0
  232. package/dist/extensions/mcp/tools.d.ts.map +1 -0
  233. package/dist/extensions/mcp/tools.js +251 -0
  234. package/dist/extensions/mcp/tools.js.map +1 -0
  235. package/dist/extensions/mcp/ui.d.ts +60 -0
  236. package/dist/extensions/mcp/ui.d.ts.map +1 -0
  237. package/dist/extensions/mcp/ui.js +175 -0
  238. package/dist/extensions/mcp/ui.js.map +1 -0
  239. package/dist/extensions/tool-search/tool.d.ts +1 -1
  240. package/dist/extensions/tool-search/tool.d.ts.map +1 -1
  241. package/dist/extensions/tool-search/tool.js +3 -13
  242. package/dist/extensions/tool-search/tool.js.map +1 -1
  243. package/dist/index-extensions.d.ts +2 -1
  244. package/dist/index-extensions.d.ts.map +1 -1
  245. package/dist/index-extensions.js +1 -1
  246. package/dist/index-extensions.js.map +1 -1
  247. package/dist/index.d.ts +5 -1
  248. package/dist/index.d.ts.map +1 -1
  249. package/dist/index.js +5 -0
  250. package/dist/index.js.map +1 -1
  251. package/dist/main.d.ts.map +1 -1
  252. package/dist/main.js +7 -0
  253. package/dist/main.js.map +1 -1
  254. package/dist/modes/interactive/components/visual-truncate.d.ts +27 -3
  255. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
  256. package/dist/modes/interactive/components/visual-truncate.js +39 -6
  257. package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
  258. package/docs/extensions/api-reference.md +3 -3
  259. package/docs/extensions/events.md +2 -0
  260. package/docs/extensions.md +8 -8
  261. package/docs/mcp-servers.md +171 -50
  262. package/docs/packages/authoring.md +2 -2
  263. package/docs/providers.md +8 -0
  264. package/docs/sdk/reference.md +16 -0
  265. package/docs/sdk.md +67 -1
  266. package/docs/settings.md +2 -0
  267. package/docs/tools.md +6 -0
  268. package/docs/workflows/operations.md +3 -1
  269. package/examples/extensions/built-in-tool-renderer.ts +16 -40
  270. package/examples/extensions/minimal-mode.ts +28 -108
  271. package/npm-shrinkwrap.json +69 -69
  272. package/package.json +8 -8
  273. package/dist/builtin/mcp/app-bridge.bundle.js +0 -67
  274. package/dist/builtin/mcp/xdg-open +0 -1267
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Anthropic, PBC
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,30 @@
1
+ This directory vendors packages/mcp/src from earendil-works/pi at commit
2
+ 8ce69e9d2b171d173fe4b6b2b6256f1f4411e69d:
3
+ https://github.com/earendil-works/pi/tree/8ce69e9d2b171d173fe4b6b2b6256f1f4411e69d/packages/mcp
4
+
5
+ Relative TypeScript imports use .js extensions for Atomic's compiled package.
6
+ Atomic patches OAuth discovery to refresh changed authorization-server metadata.
7
+ Upstream's license is reproduced below. The additional MCP TypeScript SDK
8
+ notice is retained in LICENSES/modelcontextprotocol-typescript-sdk.txt.
9
+
10
+ MIT License
11
+
12
+ Copyright (c) 2025 Mario Zechner
13
+
14
+ Permission is hereby granted, free of charge, to any person obtaining a copy
15
+ of this software and associated documentation files (the "Software"), to deal
16
+ in the Software without restriction, including without limitation the rights
17
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
18
+ copies of the Software, and to permit persons to whom the Software is
19
+ furnished to do so, subject to the following conditions:
20
+
21
+ The above copyright notice and this permission notice shall be included in all
22
+ copies or substantial portions of the Software.
23
+
24
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
25
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
26
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
27
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
28
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
29
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
30
+ SOFTWARE.
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@bastani/mcp",
3
- "version": "0.9.25-alpha.2",
3
+ "version": "0.9.25-alpha.4",
4
4
  "private": true,
5
- "description": "Atomic extension that adapts MCP (Model Context Protocol) servers into the coding agent. Fork of: https://github.com/nicobailon/pi-mcp-adapter",
5
+ "description": "Atomic's pi-compatible MCP integration for server connections, OAuth, tools, resources, and terminal management.",
6
6
  "contributors": [
7
7
  "Norin Lavaee",
8
8
  "Alex Lavaee"
@@ -18,8 +18,7 @@
18
18
  ".": "./index.ts"
19
19
  },
20
20
  "files": [
21
- "*.ts",
22
- "app-bridge.bundle.js",
21
+ "index.ts",
23
22
  "README.md",
24
23
  "OAUTH.md",
25
24
  "CHANGELOG.md",
@@ -31,31 +30,11 @@
31
30
  ]
32
31
  },
33
32
  "peerDependencies": {
34
- "@bastani/atomic": "*",
35
- "@bastani/pi-ai": "*",
36
- "@earendil-works/pi-tui": "^0.99.1",
37
- "zod": "^3.25.0 || ^4.0.0",
38
- "typebox": "*"
33
+ "@bastani/atomic": "*"
39
34
  },
40
35
  "peerDependenciesMeta": {
41
36
  "@bastani/atomic": {
42
37
  "optional": true
43
- },
44
- "@bastani/pi-ai": {
45
- "optional": true
46
- },
47
- "@earendil-works/pi-tui": {
48
- "optional": true
49
38
  }
50
- },
51
- "dependencies": {
52
- "@modelcontextprotocol/ext-apps": "^1.7.5",
53
- "@modelcontextprotocol/sdk": "^1.30.0",
54
- "open": "^11.0.1",
55
- "proper-lockfile": "4.1.2",
56
- "zod": "^3.25.0 || ^4.0.0"
57
- },
58
- "devDependencies": {
59
- "@types/proper-lockfile": "4.1.4"
60
39
  }
61
40
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bastani/subagents",
3
- "version": "0.9.25-alpha.2",
3
+ "version": "0.9.25-alpha.4",
4
4
  "private": true,
5
5
  "description": "Atomic extension for delegating tasks to subagents with parallel execution. Fork of: https://github.com/nicobailon/pi-subagents",
6
6
  "contributors": [
@@ -35,8 +35,8 @@
35
35
  "peerDependencies": {
36
36
  "@bastani/atomic": "*",
37
37
  "@bastani/pi-ai": "*",
38
- "@earendil-works/pi-agent-core": "^0.99.1",
39
- "@earendil-works/pi-tui": "^0.99.1",
38
+ "@earendil-works/pi-agent-core": "^0.99.2",
39
+ "@earendil-works/pi-tui": "^0.99.2",
40
40
  "typebox": "*"
41
41
  },
42
42
  "peerDependenciesMeta": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bastani/web-access",
3
- "version": "0.9.25-alpha.2",
3
+ "version": "0.9.25-alpha.4",
4
4
  "private": true,
5
5
  "description": "Atomic extension for web search, URL fetching, GitHub repo cloning, PDF/video extraction. Fork of: https://github.com/nicobailon/pi-web-access",
6
6
  "contributors": [
@@ -31,7 +31,7 @@
31
31
  },
32
32
  "peerDependencies": {
33
33
  "@bastani/atomic": "*",
34
- "@earendil-works/pi-tui": "^0.99.1"
34
+ "@earendil-works/pi-tui": "^0.99.2"
35
35
  },
36
36
  "peerDependenciesMeta": {
37
37
  "@bastani/atomic": {
@@ -6,6 +6,18 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.9.25-alpha.3] - 2026-09-30
10
+
11
+ ### Added
12
+
13
+ - `pause`, `quit` and `resume` results from the `workflow` tool now carry a machine-readable `code` (`run_not_found`, `not_resumable`, `owned_elsewhere`, `database_unavailable`, `stage_not_found`, `stage_ambiguous`, `stage_resume_unsupported` or `control_failed`) when the request could not be carried out, so SDK hosts using `session.workflows` receive typed errors. Resuming a run that is executing in another live Atomic process now reports `owned_elsewhere` instead of `not_resumable`. Pausing or quitting, by full run id, a run owned by another session or executing in another live Atomic process now reports `owned_elsewhere` instead of `Run not found`. Pausing or resuming a stage that does not exist or matches several stages, and resuming a single stage of a durable run, now report `stage_not_found`, `stage_ambiguous` or `stage_resume_unsupported` instead of an uncoded no-op ([#3377](https://github.com/bastani-inc/atomic/issues/3377)).
14
+
15
+ ### Fixed
16
+
17
+ - `pause` and `quit` with `all: true` no longer report success when some runs could not be stopped. The result is `partial` only when that call stopped at least one run and others are still active, and a `noop` with `control_failed` when active runs could not be stopped and the call stopped none, even if other runs were already paused. Either result lists each failed run id and reason in the message and in a `failedRuns` list. Runs that are already paused or already ended are not failures, and a batch with nothing left to stop is a benign `noop`. `/workflow pause --all` now names runs that failed to pause instead of reporting them as paused or as "No in-flight runs to pause", and reports an error when it stopped no run. Any failure while inspecting the database to pause or quit an unknown full run id now returns a structured `database_unavailable` result instead of throwing or a generic `control_failed` ([#3377](https://github.com/bastani-inc/atomic/issues/3377)).
18
+ - On a heavily loaded machine, a workflow run could fail with a bare `Query read timeout` while Atomic verified its managed PostgreSQL connection, even though the database was healthy. Health queries now get more time (3 s) on every path, and both the check of a borrowed connection and Atomic's periodic background health check repeat once after a timeout. If the timeout persists, the run fails with a resumable database-unavailable error instead of `Query read timeout`, and other running workflows' database connections are not closed and PostgreSQL is not restarted. A refused or terminated connection, a server shutdown, or a changed database identity is still treated as an outage.
19
+ - Fixed a workflow run resumed right after it was paused failing with `Workflow database admission timed out`. A pause or resume now waits for the control write already in flight instead of cancelling it mid-write, which could leave the run's database claim stuck and stall every later pause, resume, or quit on that run until the admission timeout ([#3377](https://github.com/bastani-inc/atomic/issues/3377)).
20
+
9
21
  ## [0.9.25-alpha.1] - 2026-09-29
10
22
 
11
23
  ### Added
@@ -6308,6 +6308,9 @@ function isMonitoringConnectionFailure(error) {
6308
6308
  return ["ECONNREFUSED", "ECONNRESET", "EPIPE", "ETIMEDOUT", "57P01", "57P02", "57P03"].includes(String(error.code));
6309
6309
  return error.message === "timeout expired" || error.message === "Connection terminated due to connection timeout";
6310
6310
  }
6311
+ function isQueryReadTimeout(error) {
6312
+ return error instanceof Error && error.message === "Query read timeout";
6313
+ }
6311
6314
 
6312
6315
  class PostgresHealth {
6313
6316
  operations;
@@ -6340,11 +6343,20 @@ class PostgresHealth {
6340
6343
  try {
6341
6344
  if (this.stopped)
6342
6345
  throw new DbosDependencyError;
6343
- await this.operations.validate?.(client);
6346
+ try {
6347
+ await this.operations.validate?.(client);
6348
+ } catch (error) {
6349
+ if (!isQueryReadTimeout(error) || this.stopped)
6350
+ throw error;
6351
+ await this.operations.validate?.(client);
6352
+ }
6344
6353
  } catch (error) {
6345
6354
  this.failure = error instanceof Error ? error : new Error(String(error));
6346
- this.invalidate();
6347
- throw error;
6355
+ if (!isQueryReadTimeout(error)) {
6356
+ this.invalidate();
6357
+ throw error;
6358
+ }
6359
+ throw new DbosDependencyError("Managed PostgreSQL did not answer a connection identity check in time.");
6348
6360
  }
6349
6361
  }
6350
6362
  check() {
@@ -6378,7 +6390,7 @@ class PostgresHealth {
6378
6390
  try {
6379
6391
  identity = await this.operations.probe();
6380
6392
  } catch (error) {
6381
- if (!isMonitoringConnectionFailure(error) || this.stopped)
6393
+ if (!(isMonitoringConnectionFailure(error) || isQueryReadTimeout(error)) || this.stopped)
6382
6394
  throw error;
6383
6395
  try {
6384
6396
  identity = await this.operations.probe();
@@ -6408,6 +6420,10 @@ class PostgresHealth {
6408
6420
  if (ready !== undefined)
6409
6421
  return ready;
6410
6422
  } catch (error) {
6423
+ if (isQueryReadTimeout(error)) {
6424
+ this.failure = new DbosDependencyError("Managed PostgreSQL did not answer a health check in time.");
6425
+ throw this.failure;
6426
+ }
6411
6427
  this.failure = error instanceof Error ? error : new Error(String(error));
6412
6428
  if (!(error instanceof Error && ("code" in error) && error.code === "53300"))
6413
6429
  this.invalidate();
@@ -6670,6 +6686,7 @@ var POSTGRES_IDENTITY_SQL = `SELECT current_setting('data_directory') AS data_di
6670
6686
  split_part(pg_read_file('postmaster.pid'), E'\\n', 3) AS started,
6671
6687
  system_identifier::text, current_setting('server_version') AS server_version FROM pg_control_system()`;
6672
6688
  var POSTGRES_TIMEZONE_SQL = "SELECT set_config('timezone_abbreviations', 'Default', true)";
6689
+ var POSTGRES_HEALTH_QUERY_TIMEOUT_MS = 3000;
6673
6690
  async function probePostgresTimezoneData(port) {
6674
6691
  const client = new Client({
6675
6692
  host: "127.0.0.1",
@@ -6679,8 +6696,8 @@ async function probePostgresTimezoneData(port) {
6679
6696
  database: "postgres",
6680
6697
  ssl: false,
6681
6698
  connectionTimeoutMillis: 1000,
6682
- query_timeout: 1000,
6683
- statement_timeout: 1000
6699
+ query_timeout: POSTGRES_HEALTH_QUERY_TIMEOUT_MS,
6700
+ statement_timeout: POSTGRES_HEALTH_QUERY_TIMEOUT_MS
6684
6701
  });
6685
6702
  client.on("error", () => {});
6686
6703
  try {
@@ -6699,8 +6716,8 @@ async function probePostgresIdentity(port) {
6699
6716
  database: "postgres",
6700
6717
  ssl: false,
6701
6718
  connectionTimeoutMillis: 1000,
6702
- query_timeout: 1000,
6703
- statement_timeout: 1000
6719
+ query_timeout: POSTGRES_HEALTH_QUERY_TIMEOUT_MS,
6720
+ statement_timeout: POSTGRES_HEALTH_QUERY_TIMEOUT_MS
6704
6721
  });
6705
6722
  client.on("error", () => {});
6706
6723
  try {
@@ -6708,6 +6725,8 @@ async function probePostgresIdentity(port) {
6708
6725
  const result = await client.query(POSTGRES_IDENTITY_SQL);
6709
6726
  return result.rows[0];
6710
6727
  } catch (error) {
6728
+ if (isQueryReadTimeout(error))
6729
+ throw error;
6711
6730
  const code = error instanceof Error && "code" in error ? error.code : undefined;
6712
6731
  if (code === "ECONNREFUSED" || code === "ECONNRESET" || code === "EPIPE" || code === "57P01" || code === "57P02" || code === "57P03" || error instanceof Error && /timeout|timed out|connection terminated/i.test(error.message))
6713
6732
  return;
@@ -6875,6 +6894,15 @@ async function ensureCluster(options = {}) {
6875
6894
  }
6876
6895
  let verified;
6877
6896
  const existingServerProbe = () => options.probeIdentity ?? probePostgresIdentity;
6897
+ const startupServerProbe = async (probePort) => {
6898
+ try {
6899
+ return await existingServerProbe()(probePort);
6900
+ } catch (error) {
6901
+ if (isQueryReadTimeout(error))
6902
+ return;
6903
+ throw error;
6904
+ }
6905
+ };
6878
6906
  let prepared = options.prepared ? options.binaries : undefined;
6879
6907
  let selectedIdentity = options.runtimeIdentity;
6880
6908
  let reservedLiveGeneration;
@@ -6995,7 +7023,7 @@ async function ensureCluster(options = {}) {
6995
7023
  }
6996
7024
  } else if (existing) {
6997
7025
  await waitForClusterReadiness(logFile, undefined, async () => {
6998
- verified = await verifyPostgresIdentity(metadata, port, existing.pid, existingServerProbe());
7026
+ verified = await verifyPostgresIdentity(metadata, port, existing.pid, startupServerProbe);
6999
7027
  return verified !== undefined || managedPostmaster(metadata) === undefined;
7000
7028
  }, READY_ATTEMPTS, delay, port, dataDir);
7001
7029
  }
@@ -7027,7 +7055,7 @@ async function ensureCluster(options = {}) {
7027
7055
  startedCluster = { lease };
7028
7056
  activeCluster = startedCluster;
7029
7057
  await waitForClusterReadiness(logFile, startedCluster, async () => {
7030
- verified = await verifyPostgresIdentity(metadata, port, lease.pid, options.probeIdentity);
7058
+ verified = await verifyPostgresIdentity(metadata, port, lease.pid, startupServerProbe);
7031
7059
  return verified !== undefined;
7032
7060
  }, READY_ATTEMPTS, delay, port, dataDir);
7033
7061
  break;
@@ -7096,14 +7124,14 @@ async function ensureCluster(options = {}) {
7096
7124
  probe: () => inspect(),
7097
7125
  validate: async (client) => {
7098
7126
  const identity = await inspect(async () => {
7099
- const query = { text: POSTGRES_IDENTITY_SQL, query_timeout: 1000 };
7127
+ const query = { text: POSTGRES_IDENTITY_SQL, query_timeout: POSTGRES_HEALTH_QUERY_TIMEOUT_MS };
7100
7128
  const result = await client.query(query);
7101
7129
  return result.rows[0];
7102
7130
  });
7103
7131
  if (!identity)
7104
7132
  throw new DbosDependencyError;
7105
7133
  if (options.probeIdentity === undefined) {
7106
- const query = { text: POSTGRES_TIMEZONE_SQL, query_timeout: 1000 };
7134
+ const query = { text: POSTGRES_TIMEZONE_SQL, query_timeout: POSTGRES_HEALTH_QUERY_TIMEOUT_MS };
7107
7135
  await client.query(query);
7108
7136
  }
7109
7137
  },
@@ -39,7 +39,7 @@ import {
39
39
  reviewerFailureText,
40
40
  summarizeReviewConvergence,
41
41
  reverify_consolidated_batch
42
- } from "./chunk-e1254zvd.js";
42
+ } from "./chunk-kfsnh3w7.js";
43
43
  import {
44
44
  fold_usage
45
45
  } from "./chunk-tgt0s5e5.js";
@@ -38,7 +38,7 @@ import {
38
38
  reviewerFailureText,
39
39
  summarizeReviewConvergence,
40
40
  reverify_consolidated_batch
41
- } from "./chunk-e1254zvd.js";
41
+ } from "./chunk-kfsnh3w7.js";
42
42
  import {
43
43
  VERIFICATION_SCALE
44
44
  } from "./chunk-n1910xc4.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  goal_default
3
- } from "./chunk-qy6g0baf.js";
4
- import"./chunk-e1254zvd.js";
3
+ } from "./chunk-wz783pvd.js";
4
+ import"./chunk-kfsnh3w7.js";
5
5
  import"./chunk-2377r57g.js";
6
6
  import"./chunk-z0d03ktm.js";
7
7
  import"./chunk-n1910xc4.js";
@@ -14,11 +14,11 @@ import {
14
14
  import {
15
15
  generate_and_filter_default
16
16
  } from "./chunk-kb7s3gx2.js";
17
- import"./chunk-e1254zvd.js";
17
+ import"./chunk-kfsnh3w7.js";
18
18
  import"./chunk-z0d03ktm.js";
19
19
  import {
20
20
  goal_default
21
- } from "./chunk-qy6g0baf.js";
21
+ } from "./chunk-wz783pvd.js";
22
22
  import {
23
23
  open_claude_design_default
24
24
  } from "./chunk-nkj4qhj6.js";
@@ -27,7 +27,7 @@ import {
27
27
  } from "./chunk-94f8zfz1.js";
28
28
  import {
29
29
  ralph_default
30
- } from "./chunk-cpw5gtzg.js";
30
+ } from "./chunk-rqmasd3d.js";
31
31
  import {
32
32
  tournament_default
33
33
  } from "./chunk-wf876n16.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  ralph_default
3
- } from "./chunk-cpw5gtzg.js";
4
- import"./chunk-e1254zvd.js";
3
+ } from "./chunk-rqmasd3d.js";
4
+ import"./chunk-kfsnh3w7.js";
5
5
  import"./chunk-2377r57g.js";
6
6
  import"./chunk-z0d03ktm.js";
7
7
  import"./chunk-n1910xc4.js";
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bastani/workflows",
3
- "version": "0.9.25-alpha.2",
3
+ "version": "0.9.25-alpha.4",
4
4
  "private": true,
5
5
  "description": "Atomic extension for multi-stage workflow authoring and execution.",
6
6
  "contributors": [
@@ -85,7 +85,7 @@
85
85
  },
86
86
  "peerDependencies": {
87
87
  "@bastani/atomic": "*",
88
- "@earendil-works/pi-tui": "^0.99.1",
88
+ "@earendil-works/pi-tui": "^0.99.2",
89
89
  "typebox": "*"
90
90
  },
91
91
  "peerDependenciesMeta": {