@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
@@ -18,13 +18,13 @@
18
18
 
19
19
  import type { ExtensionAPI } from "@bastani/atomic";
20
20
  import {
21
- createBashTool,
22
- createEditTool,
23
- createFindTool,
24
- createGrepTool,
25
- createLsTool,
26
- createReadTool,
27
- createWriteTool,
21
+ createBashToolDefinition,
22
+ createEditToolDefinition,
23
+ createFindToolDefinition,
24
+ createLsToolDefinition,
25
+ createReadToolDefinition,
26
+ createSearchToolDefinition,
27
+ createWriteToolDefinition,
28
28
  } from "@bastani/atomic";
29
29
  import { Text } from "@earendil-works/pi-tui";
30
30
  import { homedir } from "os";
@@ -40,45 +40,26 @@ function shortenPath(path: string): string {
40
40
  return path;
41
41
  }
42
42
 
43
- // Cache for built-in tools by cwd
44
- const toolCache = new Map<string, ReturnType<typeof createBuiltInTools>>();
45
-
46
43
  function createBuiltInTools(cwd: string) {
47
44
  return {
48
- read: createReadTool(cwd),
49
- bash: createBashTool(cwd),
50
- edit: createEditTool(cwd),
51
- write: createWriteTool(cwd),
52
- find: createFindTool(cwd),
53
- grep: createGrepTool(cwd),
54
- ls: createLsTool(cwd),
45
+ read: createReadToolDefinition(cwd),
46
+ bash: createBashToolDefinition(cwd),
47
+ edit: createEditToolDefinition(cwd),
48
+ write: createWriteToolDefinition(cwd),
49
+ find: createFindToolDefinition(cwd),
50
+ search: createSearchToolDefinition(cwd),
51
+ ls: createLsToolDefinition(cwd),
55
52
  };
56
53
  }
57
54
 
58
- function getBuiltInTools(cwd: string) {
59
- let tools = toolCache.get(cwd);
60
- if (!tools) {
61
- tools = createBuiltInTools(cwd);
62
- toolCache.set(cwd, tools);
63
- }
64
- return tools;
65
- }
66
-
67
55
  export default function (pi: ExtensionAPI) {
56
+ const tools = createBuiltInTools(process.cwd());
57
+
68
58
  // =========================================================================
69
59
  // Read Tool
70
60
  // =========================================================================
71
61
  pi.registerTool({
72
- name: "read",
73
- label: "read",
74
- description:
75
- "Read the contents of a file. Supports text files and images (jpg, png, gif, webp). Images are sent as attachments. For text files, output is truncated to 2000 lines or 50KB (whichever is hit first). Use offset/limit for large files.",
76
- parameters: getBuiltInTools(process.cwd()).read.parameters,
77
-
78
- async execute(toolCallId, params, signal, onUpdate, ctx) {
79
- const tools = getBuiltInTools(ctx.cwd);
80
- return tools.read.execute(toolCallId, params, signal, onUpdate);
81
- },
62
+ ...tools.read,
82
63
 
83
64
  renderCall(args, theme, _context) {
84
65
  const path = shortenPath(args.path || "");
@@ -116,16 +97,7 @@ export default function (pi: ExtensionAPI) {
116
97
  // Bash Tool
117
98
  // =========================================================================
118
99
  pi.registerTool({
119
- name: "bash",
120
- label: "bash",
121
- description:
122
- "Execute a bash command in the current working directory. Returns stdout and stderr. Output is truncated to last 2000 lines or 50KB (whichever is hit first).",
123
- parameters: getBuiltInTools(process.cwd()).bash.parameters,
124
-
125
- async execute(toolCallId, params, signal, onUpdate, ctx) {
126
- const tools = getBuiltInTools(ctx.cwd);
127
- return tools.bash.execute(toolCallId, params, signal, onUpdate);
128
- },
100
+ ...tools.bash,
129
101
 
130
102
  renderCall(args, theme, _context) {
131
103
  const command = args.command || "...";
@@ -165,16 +137,7 @@ export default function (pi: ExtensionAPI) {
165
137
  // Write Tool
166
138
  // =========================================================================
167
139
  pi.registerTool({
168
- name: "write",
169
- label: "write",
170
- description:
171
- "Write content to a file. Creates the file if it doesn't exist, overwrites if it does. Automatically creates parent directories.",
172
- parameters: getBuiltInTools(process.cwd()).write.parameters,
173
-
174
- async execute(toolCallId, params, signal, onUpdate, ctx) {
175
- const tools = getBuiltInTools(ctx.cwd);
176
- return tools.write.execute(toolCallId, params, signal, onUpdate);
177
- },
140
+ ...tools.write,
178
141
 
179
142
  renderCall(args, theme, _context) {
180
143
  const path = shortenPath(args.path || "");
@@ -207,16 +170,8 @@ export default function (pi: ExtensionAPI) {
207
170
  // Edit Tool
208
171
  // =========================================================================
209
172
  pi.registerTool({
210
- name: "edit",
211
- label: "edit",
212
- description:
213
- "Edit a file by replacing exact text. The oldText must match exactly (including whitespace). Use this for precise, surgical edits.",
214
- parameters: getBuiltInTools(process.cwd()).edit.parameters,
215
-
216
- async execute(toolCallId, params, signal, onUpdate, ctx) {
217
- const tools = getBuiltInTools(ctx.cwd);
218
- return tools.edit.execute(toolCallId, params, signal, onUpdate);
219
- },
173
+ ...tools.edit,
174
+ renderShell: "default",
220
175
 
221
176
  renderCall(args, theme, _context) {
222
177
  const path = shortenPath(args.path || "");
@@ -252,16 +207,7 @@ export default function (pi: ExtensionAPI) {
252
207
  // Find Tool
253
208
  // =========================================================================
254
209
  pi.registerTool({
255
- name: "find",
256
- label: "find",
257
- description:
258
- "Find files by name pattern (glob). Searches recursively from the specified path. Output limited to 200 results.",
259
- parameters: getBuiltInTools(process.cwd()).find.parameters,
260
-
261
- async execute(toolCallId, params, signal, onUpdate, ctx) {
262
- const tools = getBuiltInTools(ctx.cwd);
263
- return tools.find.execute(toolCallId, params, signal, onUpdate);
264
- },
210
+ ...tools.find,
265
211
 
266
212
  renderCall(args, theme, _context) {
267
213
  const pattern = args.pattern || "";
@@ -307,34 +253,17 @@ export default function (pi: ExtensionAPI) {
307
253
  });
308
254
 
309
255
  // =========================================================================
310
- // Grep Tool
256
+ // Search Tool
311
257
  // =========================================================================
312
258
  pi.registerTool({
313
- name: "grep",
314
- label: "grep",
315
- description:
316
- "Search file contents by regex pattern. Uses ripgrep for fast searching. Output limited to 200 matches.",
317
- parameters: getBuiltInTools(process.cwd()).grep.parameters,
318
-
319
- async execute(toolCallId, params, signal, onUpdate, ctx) {
320
- const tools = getBuiltInTools(ctx.cwd);
321
- return tools.grep.execute(toolCallId, params, signal, onUpdate);
322
- },
259
+ ...tools.search,
323
260
 
324
261
  renderCall(args, theme, _context) {
325
262
  const pattern = args.pattern || "";
326
- const path = shortenPath(args.path || ".");
327
- const glob = args.glob;
328
- const limit = args.limit;
263
+ const paths = typeof args.paths === "string" ? args.paths : args.paths?.join(", ") || ".";
329
264
 
330
- let text = `${theme.fg("toolTitle", theme.bold("grep"))} ${theme.fg("accent", `/${pattern}/`)}`;
331
- text += theme.fg("toolOutput", ` in ${path}`);
332
- if (glob) {
333
- text += theme.fg("toolOutput", ` (${glob})`);
334
- }
335
- if (limit !== undefined) {
336
- text += theme.fg("toolOutput", ` limit ${limit}`);
337
- }
265
+ let text = `${theme.fg("toolTitle", theme.bold("search"))} ${theme.fg("accent", `/${pattern}/`)}`;
266
+ text += theme.fg("toolOutput", ` in ${shortenPath(paths)}`);
338
267
 
339
268
  return new Text(text, 0, 0);
340
269
  },
@@ -372,16 +301,7 @@ export default function (pi: ExtensionAPI) {
372
301
  // Ls Tool
373
302
  // =========================================================================
374
303
  pi.registerTool({
375
- name: "ls",
376
- label: "ls",
377
- description:
378
- "List directory contents with file sizes. Shows files and directories with their sizes. Output limited to 500 entries.",
379
- parameters: getBuiltInTools(process.cwd()).ls.parameters,
380
-
381
- async execute(toolCallId, params, signal, onUpdate, ctx) {
382
- const tools = getBuiltInTools(ctx.cwd);
383
- return tools.ls.execute(toolCallId, params, signal, onUpdate);
384
- },
304
+ ...tools.ls,
385
305
 
386
306
  renderCall(args, theme, _context) {
387
307
  const path = shortenPath(args.path || ".");
@@ -1,22 +1,22 @@
1
1
  {
2
2
  "name": "@bastani/atomic",
3
- "version": "0.9.25-alpha.2",
3
+ "version": "0.9.25-alpha.4",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@bastani/atomic",
9
- "version": "0.9.25-alpha.2",
9
+ "version": "0.9.25-alpha.4",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
- "@bastani/atomic-natives": "0.9.25-alpha.2",
13
- "@bastani/pi-ai": "0.9.25-alpha.2",
12
+ "@bastani/atomic-natives": "0.9.25-alpha.4",
13
+ "@bastani/pi-ai": "0.9.25-alpha.4",
14
14
  "@dbos-inc/dbos-sdk": "4.25.14",
15
- "@earendil-works/pi-agent-core": "0.99.1",
16
- "@earendil-works/pi-client": "0.99.1",
17
- "@earendil-works/pi-codemode": "0.99.1",
18
- "@earendil-works/pi-protocol": "0.99.1",
19
- "@earendil-works/pi-tui": "0.99.1",
15
+ "@earendil-works/pi-agent-core": "0.99.2",
16
+ "@earendil-works/pi-client": "0.99.2",
17
+ "@earendil-works/pi-codemode": "0.99.2",
18
+ "@earendil-works/pi-protocol": "0.99.2",
19
+ "@earendil-works/pi-tui": "0.99.2",
20
20
  "@modelcontextprotocol/ext-apps": "^1.7.5",
21
21
  "@modelcontextprotocol/sdk": "1.30.0",
22
22
  "@mozilla/readability": "^0.6.0",
@@ -431,18 +431,18 @@
431
431
  }
432
432
  },
433
433
  "node_modules/@bastani/atomic-natives": {
434
- "version": "0.9.25-alpha.2",
435
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives/-/atomic-natives-0.9.25-alpha.2.tgz",
434
+ "version": "0.9.25-alpha.4",
435
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives/-/atomic-natives-0.9.25-alpha.4.tgz",
436
436
  "license": "MIT",
437
437
  "optionalDependencies": {
438
- "@bastani/atomic-natives-darwin-arm64": "0.9.25-alpha.2",
439
- "@bastani/atomic-natives-darwin-x64": "0.9.25-alpha.2",
440
- "@bastani/atomic-natives-linux-arm64-gnu": "0.9.25-alpha.2",
441
- "@bastani/atomic-natives-linux-arm64-musl": "0.9.25-alpha.2",
442
- "@bastani/atomic-natives-linux-x64-gnu": "0.9.25-alpha.2",
443
- "@bastani/atomic-natives-linux-x64-musl": "0.9.25-alpha.2",
444
- "@bastani/atomic-natives-win32-arm64-msvc": "0.9.25-alpha.2",
445
- "@bastani/atomic-natives-win32-x64-msvc": "0.9.25-alpha.2"
438
+ "@bastani/atomic-natives-darwin-arm64": "0.9.25-alpha.4",
439
+ "@bastani/atomic-natives-darwin-x64": "0.9.25-alpha.4",
440
+ "@bastani/atomic-natives-linux-arm64-gnu": "0.9.25-alpha.4",
441
+ "@bastani/atomic-natives-linux-arm64-musl": "0.9.25-alpha.4",
442
+ "@bastani/atomic-natives-linux-x64-gnu": "0.9.25-alpha.4",
443
+ "@bastani/atomic-natives-linux-x64-musl": "0.9.25-alpha.4",
444
+ "@bastani/atomic-natives-win32-arm64-msvc": "0.9.25-alpha.4",
445
+ "@bastani/atomic-natives-win32-x64-msvc": "0.9.25-alpha.4"
446
446
  },
447
447
  "engines": {
448
448
  "bun": ">=1.4.2",
@@ -450,8 +450,8 @@
450
450
  }
451
451
  },
452
452
  "node_modules/@bastani/atomic-natives-darwin-arm64": {
453
- "version": "0.9.25-alpha.2",
454
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-arm64/-/atomic-natives-darwin-arm64-0.9.25-alpha.2.tgz",
453
+ "version": "0.9.25-alpha.4",
454
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-arm64/-/atomic-natives-darwin-arm64-0.9.25-alpha.4.tgz",
455
455
  "license": "MIT",
456
456
  "os": [
457
457
  "darwin"
@@ -462,8 +462,8 @@
462
462
  "optional": true
463
463
  },
464
464
  "node_modules/@bastani/atomic-natives-darwin-x64": {
465
- "version": "0.9.25-alpha.2",
466
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-x64/-/atomic-natives-darwin-x64-0.9.25-alpha.2.tgz",
465
+ "version": "0.9.25-alpha.4",
466
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-x64/-/atomic-natives-darwin-x64-0.9.25-alpha.4.tgz",
467
467
  "license": "MIT",
468
468
  "os": [
469
469
  "darwin"
@@ -474,8 +474,8 @@
474
474
  "optional": true
475
475
  },
476
476
  "node_modules/@bastani/atomic-natives-linux-arm64-gnu": {
477
- "version": "0.9.25-alpha.2",
478
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-gnu/-/atomic-natives-linux-arm64-gnu-0.9.25-alpha.2.tgz",
477
+ "version": "0.9.25-alpha.4",
478
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-gnu/-/atomic-natives-linux-arm64-gnu-0.9.25-alpha.4.tgz",
479
479
  "license": "MIT",
480
480
  "os": [
481
481
  "linux"
@@ -489,8 +489,8 @@
489
489
  "optional": true
490
490
  },
491
491
  "node_modules/@bastani/atomic-natives-linux-arm64-musl": {
492
- "version": "0.9.25-alpha.2",
493
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-musl/-/atomic-natives-linux-arm64-musl-0.9.25-alpha.2.tgz",
492
+ "version": "0.9.25-alpha.4",
493
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-musl/-/atomic-natives-linux-arm64-musl-0.9.25-alpha.4.tgz",
494
494
  "license": "MIT",
495
495
  "os": [
496
496
  "linux"
@@ -504,8 +504,8 @@
504
504
  "optional": true
505
505
  },
506
506
  "node_modules/@bastani/atomic-natives-linux-x64-gnu": {
507
- "version": "0.9.25-alpha.2",
508
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-gnu/-/atomic-natives-linux-x64-gnu-0.9.25-alpha.2.tgz",
507
+ "version": "0.9.25-alpha.4",
508
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-gnu/-/atomic-natives-linux-x64-gnu-0.9.25-alpha.4.tgz",
509
509
  "license": "MIT",
510
510
  "os": [
511
511
  "linux"
@@ -519,8 +519,8 @@
519
519
  "optional": true
520
520
  },
521
521
  "node_modules/@bastani/atomic-natives-linux-x64-musl": {
522
- "version": "0.9.25-alpha.2",
523
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-musl/-/atomic-natives-linux-x64-musl-0.9.25-alpha.2.tgz",
522
+ "version": "0.9.25-alpha.4",
523
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-musl/-/atomic-natives-linux-x64-musl-0.9.25-alpha.4.tgz",
524
524
  "license": "MIT",
525
525
  "os": [
526
526
  "linux"
@@ -534,8 +534,8 @@
534
534
  "optional": true
535
535
  },
536
536
  "node_modules/@bastani/atomic-natives-win32-arm64-msvc": {
537
- "version": "0.9.25-alpha.2",
538
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-arm64-msvc/-/atomic-natives-win32-arm64-msvc-0.9.25-alpha.2.tgz",
537
+ "version": "0.9.25-alpha.4",
538
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-arm64-msvc/-/atomic-natives-win32-arm64-msvc-0.9.25-alpha.4.tgz",
539
539
  "license": "MIT",
540
540
  "os": [
541
541
  "win32"
@@ -546,8 +546,8 @@
546
546
  "optional": true
547
547
  },
548
548
  "node_modules/@bastani/atomic-natives-win32-x64-msvc": {
549
- "version": "0.9.25-alpha.2",
550
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-x64-msvc/-/atomic-natives-win32-x64-msvc-0.9.25-alpha.2.tgz",
549
+ "version": "0.9.25-alpha.4",
550
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-x64-msvc/-/atomic-natives-win32-x64-msvc-0.9.25-alpha.4.tgz",
551
551
  "license": "MIT",
552
552
  "os": [
553
553
  "win32"
@@ -558,13 +558,13 @@
558
558
  "optional": true
559
559
  },
560
560
  "node_modules/@bastani/pi-ai": {
561
- "version": "0.9.25-alpha.2",
562
- "resolved": "https://registry.npmjs.org/@bastani/pi-ai/-/pi-ai-0.9.25-alpha.2.tgz",
561
+ "version": "0.9.25-alpha.4",
562
+ "resolved": "https://registry.npmjs.org/@bastani/pi-ai/-/pi-ai-0.9.25-alpha.4.tgz",
563
563
  "license": "MIT",
564
564
  "dependencies": {
565
565
  "@anthropic-ai/sdk": "0.124.0",
566
566
  "@aws-sdk/client-bedrock-runtime": "3.1127.0",
567
- "@earendil-works/pi-telemetry": "0.99.1",
567
+ "@earendil-works/pi-telemetry": "0.99.2",
568
568
  "@google/genai": "2.21.0",
569
569
  "@smithy/node-http-handler": "4.12.1",
570
570
  "http-proxy-agent": "9.1.0",
@@ -665,9 +665,9 @@
665
665
  }
666
666
  },
667
667
  "node_modules/@earendil-works/chord": {
668
- "version": "0.99.1",
669
- "resolved": "https://registry.npmjs.org/@earendil-works/chord/-/chord-0.99.1.tgz",
670
- "integrity": "sha512-4xyn0IBzJ+Xu/iOGi2hjXJGAR61QEhEWZsIqTDqr+GmItdquYwBO5jYFnqGiBaTqlY12/EpM7QHoEKSHbyvOug==",
668
+ "version": "0.99.2",
669
+ "resolved": "https://registry.npmjs.org/@earendil-works/chord/-/chord-0.99.2.tgz",
670
+ "integrity": "sha512-2dJWiNsOJm/ioBl1fhpJmw0hIjFUhM0CAteEnVkiVG0Kg4LimR7Asq8PfjclEvrbCPsDntzy7rGKhTZObI9TZw==",
671
671
  "license": "MIT",
672
672
  "dependencies": {
673
673
  "esbuild": "0.28.2"
@@ -677,14 +677,14 @@
677
677
  }
678
678
  },
679
679
  "node_modules/@earendil-works/pi-agent-core": {
680
- "version": "0.99.1",
681
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-0.99.1.tgz",
682
- "integrity": "sha512-zywvWnj5FujeuFI/x/CJHwwxhcLIQgjqseTA+bQgX4O8gJTcgjRd/I8SZnQDqJvxC9QcV12ujiGLviv6EgwcCg==",
680
+ "version": "0.99.2",
681
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-0.99.2.tgz",
682
+ "integrity": "sha512-VX0QMcg8HKBsv1bYP2NwmutBYa44OrwmtqR6Dq7QC3Ln8X/IlpHhUxB5L1JgnXNUUkTm8Wg/HZhzS797NBDMCQ==",
683
683
  "license": "MIT",
684
684
  "dependencies": {
685
- "@earendil-works/chord": "^0.99.1",
686
- "@earendil-works/pi-ai": "^0.99.1",
687
- "@earendil-works/pi-telemetry": "^0.99.1",
685
+ "@earendil-works/chord": "^0.99.2",
686
+ "@earendil-works/pi-ai": "^0.99.2",
687
+ "@earendil-works/pi-telemetry": "^0.99.2",
688
688
  "diff": "8.0.4",
689
689
  "ignore": "7.0.8",
690
690
  "typebox": "1.3.27",
@@ -695,14 +695,14 @@
695
695
  }
696
696
  },
697
697
  "node_modules/@earendil-works/pi-ai": {
698
- "version": "0.99.1",
699
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-0.99.1.tgz",
700
- "integrity": "sha512-4nV9JKc94iPX8bwdGPc2nTuVPKIPsffhnp3WoN9NYCNqbtoOF8LhYcIs/+Sn/alroqJK/5QRu6/Z6Ck+n0hyBA==",
698
+ "version": "0.99.2",
699
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-0.99.2.tgz",
700
+ "integrity": "sha512-9RFOEdY+ZTJ1AI+UuAFs4RM0tF2Tje/R/CEv9gWTJHt0iTu8XHZs64U/EIZxNSllFmec/4HfwsOxYj1qQek9bg==",
701
701
  "license": "MIT",
702
702
  "dependencies": {
703
703
  "@anthropic-ai/sdk": "0.124.0",
704
704
  "@aws-sdk/client-bedrock-runtime": "3.1127.0",
705
- "@earendil-works/pi-telemetry": "^0.99.1",
705
+ "@earendil-works/pi-telemetry": "^0.99.2",
706
706
  "@google/genai": "2.21.0",
707
707
  "@smithy/node-http-handler": "4.12.1",
708
708
  "http-proxy-agent": "9.1.0",
@@ -742,22 +742,22 @@
742
742
  }
743
743
  },
744
744
  "node_modules/@earendil-works/pi-client": {
745
- "version": "0.99.1",
746
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-client/-/pi-client-0.99.1.tgz",
747
- "integrity": "sha512-0wlRybJZK3mSJagJvKh8CDfVykhDQsoB9Mtn9JekZn/FK9WN1GWWv+gxnYRfBoS1sG9+u1J+ZN9VZsCKfRJm9g==",
745
+ "version": "0.99.2",
746
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-client/-/pi-client-0.99.2.tgz",
747
+ "integrity": "sha512-j8dc4gOC3ExalNZqJODfmaT3Ei2nQNMFKDe4KbyGSMbByD/fbKXjbNeQLy2H0aG3L9fZJc4bZh+cR10D3XTfQQ==",
748
748
  "license": "MIT",
749
749
  "dependencies": {
750
- "@earendil-works/chord": "^0.99.1",
751
- "@earendil-works/pi-protocol": "^0.99.1"
750
+ "@earendil-works/chord": "^0.99.2",
751
+ "@earendil-works/pi-protocol": "^0.99.2"
752
752
  },
753
753
  "engines": {
754
754
  "node": ">=22.19.0"
755
755
  }
756
756
  },
757
757
  "node_modules/@earendil-works/pi-codemode": {
758
- "version": "0.99.1",
759
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-codemode/-/pi-codemode-0.99.1.tgz",
760
- "integrity": "sha512-oh8TMsBI3SWTN3xTQtX8u5n+BKhnVXcFagroWumfn6/WWfBnDYL/LmeQtjLb83WRTb9rcu+ZdK8rFa4vggvCJg==",
758
+ "version": "0.99.2",
759
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-codemode/-/pi-codemode-0.99.2.tgz",
760
+ "integrity": "sha512-PVxNGu4l7LI92MvwUbaY3trjznU1Mlp2OMGwHwCWzLsjG7/lDa8xf6ei+Gws7VCt+Ri1tO+nFVl9KV2EeX7HWg==",
761
761
  "license": "MIT",
762
762
  "dependencies": {
763
763
  "quickjs-wasi": "3.6.2"
@@ -767,12 +767,12 @@
767
767
  }
768
768
  },
769
769
  "node_modules/@earendil-works/pi-protocol": {
770
- "version": "0.99.1",
771
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-protocol/-/pi-protocol-0.99.1.tgz",
772
- "integrity": "sha512-BNPwOMNCd/L1IqovKZ0+p1xDydqnHd4tIGHf9uVZNOQJTq9QacLRKXBMzRzgy/Yqv1rPnTDjauDiIcZeOgg2xA==",
770
+ "version": "0.99.2",
771
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-protocol/-/pi-protocol-0.99.2.tgz",
772
+ "integrity": "sha512-ry9hfwZy06sEjsQFsQJXptJ9EO5w8wxBUYVNNSo1WwkHVeItu5lTtCBAC80i9oRlTaSb2rXLjuuh+NWILhFw8g==",
773
773
  "license": "MIT",
774
774
  "dependencies": {
775
- "@earendil-works/chord": "^0.99.1",
775
+ "@earendil-works/chord": "^0.99.2",
776
776
  "typebox": "1.3.27"
777
777
  },
778
778
  "engines": {
@@ -780,18 +780,18 @@
780
780
  }
781
781
  },
782
782
  "node_modules/@earendil-works/pi-telemetry": {
783
- "version": "0.99.1",
784
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-telemetry/-/pi-telemetry-0.99.1.tgz",
785
- "integrity": "sha512-9PBPjGk+TXRtuMianpqBbHBpYpyKusESF6rwdmgD0WTZSTUQXhcKEO0hAINRLuSwy4V7yPvXV+EVV0ONY7mbpQ==",
783
+ "version": "0.99.2",
784
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-telemetry/-/pi-telemetry-0.99.2.tgz",
785
+ "integrity": "sha512-WThYU4XM6jjjzH4FzLdreN7QAPS9SDdokL0W0Ldheg1ssCIJkfpK7PgebFm7/PoQub7OiXx+SRF6B/oF7z7lXA==",
786
786
  "license": "MIT",
787
787
  "engines": {
788
788
  "node": ">=22.19.0"
789
789
  }
790
790
  },
791
791
  "node_modules/@earendil-works/pi-tui": {
792
- "version": "0.99.1",
793
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-0.99.1.tgz",
794
- "integrity": "sha512-gZp0Guat96Fr1AuC/xqVz5B2lulZakp/PxD1lXx3lSgBdjiqmwYhJbcQ0HRrGAfy0WtMGn9b05RJr5qJf7oIuw==",
792
+ "version": "0.99.2",
793
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-0.99.2.tgz",
794
+ "integrity": "sha512-IOcNnd390NCIwBEKeOiBK/bvaR7Z+vEsvB5TtKsFdsY/vAZE6qRHbQqt6jpTefTiKPfQlwG8eS1BU42DeG2v4w==",
795
795
  "license": "MIT",
796
796
  "dependencies": {
797
797
  "get-east-asian-width": "1.6.0",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bastani/atomic",
3
- "version": "0.9.25-alpha.2",
3
+ "version": "0.9.25-alpha.4",
4
4
  "description": "Atomic coding agent CLI with read, bash, edit, write tools and session management",
5
5
  "type": "module",
6
6
  "atomicConfig": {
@@ -80,14 +80,14 @@
80
80
  "prepublishOnly": "bun run clean && bun run build && bun run shrinkwrap"
81
81
  },
82
82
  "dependencies": {
83
- "@bastani/atomic-natives": "0.9.25-alpha.2",
84
- "@bastani/pi-ai": "0.9.25-alpha.2",
83
+ "@bastani/atomic-natives": "0.9.25-alpha.4",
84
+ "@bastani/pi-ai": "0.9.25-alpha.4",
85
85
  "@dbos-inc/dbos-sdk": "4.25.14",
86
- "@earendil-works/pi-agent-core": "0.99.1",
87
- "@earendil-works/pi-client": "0.99.1",
88
- "@earendil-works/pi-codemode": "0.99.1",
89
- "@earendil-works/pi-protocol": "0.99.1",
90
- "@earendil-works/pi-tui": "0.99.1",
86
+ "@earendil-works/pi-agent-core": "0.99.2",
87
+ "@earendil-works/pi-client": "0.99.2",
88
+ "@earendil-works/pi-codemode": "0.99.2",
89
+ "@earendil-works/pi-protocol": "0.99.2",
90
+ "@earendil-works/pi-tui": "0.99.2",
91
91
  "@modelcontextprotocol/ext-apps": "^1.7.5",
92
92
  "@modelcontextprotocol/sdk": "1.30.0",
93
93
  "@mozilla/readability": "^0.6.0",