@strands-agents/sdk 1.4.0 → 1.5.0

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 (352) hide show
  1. package/README.md +11 -11
  2. package/dist/src/__fixtures__/agent-helpers.d.ts.map +1 -1
  3. package/dist/src/__fixtures__/agent-helpers.js +6 -0
  4. package/dist/src/__fixtures__/agent-helpers.js.map +1 -1
  5. package/dist/src/__fixtures__/register-node-defaults.d.ts +2 -0
  6. package/dist/src/__fixtures__/register-node-defaults.d.ts.map +1 -0
  7. package/dist/src/__fixtures__/register-node-defaults.js +6 -0
  8. package/dist/src/__fixtures__/register-node-defaults.js.map +1 -0
  9. package/dist/src/__fixtures__/test-sandbox.node.d.ts.map +1 -1
  10. package/dist/src/__fixtures__/test-sandbox.node.js +4 -3
  11. package/dist/src/__fixtures__/test-sandbox.node.js.map +1 -1
  12. package/dist/src/__tests__/default-slot.test.d.ts +2 -0
  13. package/dist/src/__tests__/default-slot.test.d.ts.map +1 -0
  14. package/dist/src/__tests__/default-slot.test.js +33 -0
  15. package/dist/src/__tests__/default-slot.test.js.map +1 -0
  16. package/dist/src/a2a/__tests__/async-lock.test.d.ts +2 -0
  17. package/dist/src/a2a/__tests__/async-lock.test.d.ts.map +1 -0
  18. package/dist/src/a2a/__tests__/async-lock.test.js +137 -0
  19. package/dist/src/a2a/__tests__/async-lock.test.js.map +1 -0
  20. package/dist/src/a2a/__tests__/executor.test.js +146 -8
  21. package/dist/src/a2a/__tests__/executor.test.js.map +1 -1
  22. package/dist/src/a2a/__tests__/server.test.js +20 -0
  23. package/dist/src/a2a/__tests__/server.test.js.map +1 -1
  24. package/dist/src/a2a/async-lock.d.ts +22 -0
  25. package/dist/src/a2a/async-lock.d.ts.map +1 -0
  26. package/dist/src/a2a/async-lock.js +38 -0
  27. package/dist/src/a2a/async-lock.js.map +1 -0
  28. package/dist/src/a2a/executor.d.ts +59 -24
  29. package/dist/src/a2a/executor.d.ts.map +1 -1
  30. package/dist/src/a2a/executor.js +209 -32
  31. package/dist/src/a2a/executor.js.map +1 -1
  32. package/dist/src/a2a/index.d.ts +1 -1
  33. package/dist/src/a2a/index.d.ts.map +1 -1
  34. package/dist/src/a2a/index.js +1 -1
  35. package/dist/src/a2a/index.js.map +1 -1
  36. package/dist/src/a2a/server.d.ts +18 -2
  37. package/dist/src/a2a/server.d.ts.map +1 -1
  38. package/dist/src/a2a/server.js +13 -2
  39. package/dist/src/a2a/server.js.map +1 -1
  40. package/dist/src/agent/__tests__/agent.context-manager.test.d.ts +2 -0
  41. package/dist/src/agent/__tests__/agent.context-manager.test.d.ts.map +1 -0
  42. package/dist/src/agent/__tests__/agent.context-manager.test.js +107 -0
  43. package/dist/src/agent/__tests__/agent.context-manager.test.js.map +1 -0
  44. package/dist/src/agent/__tests__/agent.tracer.test.node.js +14 -0
  45. package/dist/src/agent/__tests__/agent.tracer.test.node.js.map +1 -1
  46. package/dist/src/agent/agent.d.ts +132 -2
  47. package/dist/src/agent/agent.d.ts.map +1 -1
  48. package/dist/src/agent/agent.js +478 -188
  49. package/dist/src/agent/agent.js.map +1 -1
  50. package/dist/src/conversation-manager/__tests__/pin.test.d.ts +2 -0
  51. package/dist/src/conversation-manager/__tests__/pin.test.d.ts.map +1 -0
  52. package/dist/src/conversation-manager/__tests__/pin.test.js +119 -0
  53. package/dist/src/conversation-manager/__tests__/pin.test.js.map +1 -0
  54. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js +49 -0
  55. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js.map +1 -1
  56. package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.js +58 -0
  57. package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.js.map +1 -1
  58. package/dist/src/conversation-manager/pin-message.d.ts +45 -0
  59. package/dist/src/conversation-manager/pin-message.d.ts.map +1 -0
  60. package/dist/src/conversation-manager/pin-message.js +106 -0
  61. package/dist/src/conversation-manager/pin-message.js.map +1 -0
  62. package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts +7 -0
  63. package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts.map +1 -1
  64. package/dist/src/conversation-manager/sliding-window-conversation-manager.js +27 -4
  65. package/dist/src/conversation-manager/sliding-window-conversation-manager.js.map +1 -1
  66. package/dist/src/conversation-manager/summarizing-conversation-manager.d.ts +7 -0
  67. package/dist/src/conversation-manager/summarizing-conversation-manager.d.ts.map +1 -1
  68. package/dist/src/conversation-manager/summarizing-conversation-manager.js +18 -4
  69. package/dist/src/conversation-manager/summarizing-conversation-manager.js.map +1 -1
  70. package/dist/src/default-slot.d.ts +6 -0
  71. package/dist/src/default-slot.d.ts.map +1 -0
  72. package/dist/src/default-slot.js +18 -0
  73. package/dist/src/default-slot.js.map +1 -0
  74. package/dist/src/errors.d.ts +8 -0
  75. package/dist/src/errors.d.ts.map +1 -1
  76. package/dist/src/errors.js +11 -0
  77. package/dist/src/errors.js.map +1 -1
  78. package/dist/src/index.d.ts +8 -1
  79. package/dist/src/index.d.ts.map +1 -1
  80. package/dist/src/index.js +7 -1
  81. package/dist/src/index.js.map +1 -1
  82. package/dist/src/index.node.d.ts +2 -0
  83. package/dist/src/index.node.d.ts.map +1 -0
  84. package/dist/src/index.node.js +9 -0
  85. package/dist/src/index.node.js.map +1 -0
  86. package/dist/src/interrupt.d.ts +5 -1
  87. package/dist/src/interrupt.d.ts.map +1 -1
  88. package/dist/src/interrupt.js +6 -0
  89. package/dist/src/interrupt.js.map +1 -1
  90. package/dist/src/memory/__tests__/memory-manager.test.d.ts +2 -0
  91. package/dist/src/memory/__tests__/memory-manager.test.d.ts.map +1 -0
  92. package/dist/src/memory/__tests__/memory-manager.test.js +493 -0
  93. package/dist/src/memory/__tests__/memory-manager.test.js.map +1 -0
  94. package/dist/src/memory/extraction/__tests__/extraction.test.d.ts +2 -0
  95. package/dist/src/memory/extraction/__tests__/extraction.test.d.ts.map +1 -0
  96. package/dist/src/memory/extraction/__tests__/extraction.test.js +637 -0
  97. package/dist/src/memory/extraction/__tests__/extraction.test.js.map +1 -0
  98. package/dist/src/memory/extraction/__tests__/model-extractor.test.d.ts +2 -0
  99. package/dist/src/memory/extraction/__tests__/model-extractor.test.d.ts.map +1 -0
  100. package/dist/src/memory/extraction/__tests__/model-extractor.test.js +68 -0
  101. package/dist/src/memory/extraction/__tests__/model-extractor.test.js.map +1 -0
  102. package/dist/src/memory/extraction/__tests__/resolve-extraction-config.test.d.ts +2 -0
  103. package/dist/src/memory/extraction/__tests__/resolve-extraction-config.test.d.ts.map +1 -0
  104. package/dist/src/memory/extraction/__tests__/resolve-extraction-config.test.js +81 -0
  105. package/dist/src/memory/extraction/__tests__/resolve-extraction-config.test.js.map +1 -0
  106. package/dist/src/memory/extraction/coordinator.d.ts +128 -0
  107. package/dist/src/memory/extraction/coordinator.d.ts.map +1 -0
  108. package/dist/src/memory/extraction/coordinator.js +245 -0
  109. package/dist/src/memory/extraction/coordinator.js.map +1 -0
  110. package/dist/src/memory/extraction/model-extractor.d.ts +32 -0
  111. package/dist/src/memory/extraction/model-extractor.d.ts.map +1 -0
  112. package/dist/src/memory/extraction/model-extractor.js +118 -0
  113. package/dist/src/memory/extraction/model-extractor.js.map +1 -0
  114. package/dist/src/memory/extraction/resolve-extraction-config.d.ts +46 -0
  115. package/dist/src/memory/extraction/resolve-extraction-config.d.ts.map +1 -0
  116. package/dist/src/memory/extraction/resolve-extraction-config.js +59 -0
  117. package/dist/src/memory/extraction/resolve-extraction-config.js.map +1 -0
  118. package/dist/src/memory/extraction/triggers.d.ts +41 -0
  119. package/dist/src/memory/extraction/triggers.d.ts.map +1 -0
  120. package/dist/src/memory/extraction/triggers.js +59 -0
  121. package/dist/src/memory/extraction/triggers.js.map +1 -0
  122. package/dist/src/memory/extraction/types.d.ts +133 -0
  123. package/dist/src/memory/extraction/types.d.ts.map +1 -0
  124. package/dist/src/memory/extraction/types.js +19 -0
  125. package/dist/src/memory/extraction/types.js.map +1 -0
  126. package/dist/src/memory/index.d.ts +9 -0
  127. package/dist/src/memory/index.d.ts.map +1 -0
  128. package/dist/src/memory/index.js +5 -0
  129. package/dist/src/memory/index.js.map +1 -0
  130. package/dist/src/memory/memory-manager.d.ts +131 -0
  131. package/dist/src/memory/memory-manager.d.ts.map +1 -0
  132. package/dist/src/memory/memory-manager.js +404 -0
  133. package/dist/src/memory/memory-manager.js.map +1 -0
  134. package/dist/src/memory/types.d.ts +213 -0
  135. package/dist/src/memory/types.d.ts.map +1 -0
  136. package/dist/src/memory/types.js +2 -0
  137. package/dist/src/memory/types.js.map +1 -0
  138. package/dist/src/middleware/__tests__/agent-middleware.test.d.ts +2 -0
  139. package/dist/src/middleware/__tests__/agent-middleware.test.d.ts.map +1 -0
  140. package/dist/src/middleware/__tests__/agent-middleware.test.js +1207 -0
  141. package/dist/src/middleware/__tests__/agent-middleware.test.js.map +1 -0
  142. package/dist/src/middleware/__tests__/custom-stages.test.d.ts +2 -0
  143. package/dist/src/middleware/__tests__/custom-stages.test.d.ts.map +1 -0
  144. package/dist/src/middleware/__tests__/custom-stages.test.js +97 -0
  145. package/dist/src/middleware/__tests__/custom-stages.test.js.map +1 -0
  146. package/dist/src/middleware/__tests__/middleware-interrupts.test.d.ts +2 -0
  147. package/dist/src/middleware/__tests__/middleware-interrupts.test.d.ts.map +1 -0
  148. package/dist/src/middleware/__tests__/middleware-interrupts.test.js +267 -0
  149. package/dist/src/middleware/__tests__/middleware-interrupts.test.js.map +1 -0
  150. package/dist/src/middleware/__tests__/registry.test.d.ts +2 -0
  151. package/dist/src/middleware/__tests__/registry.test.d.ts.map +1 -0
  152. package/dist/src/middleware/__tests__/registry.test.js +525 -0
  153. package/dist/src/middleware/__tests__/registry.test.js.map +1 -0
  154. package/dist/src/middleware/index.d.ts +5 -0
  155. package/dist/src/middleware/index.d.ts.map +1 -0
  156. package/dist/src/middleware/index.js +3 -0
  157. package/dist/src/middleware/index.js.map +1 -0
  158. package/dist/src/middleware/registry.d.ts +58 -0
  159. package/dist/src/middleware/registry.d.ts.map +1 -0
  160. package/dist/src/middleware/registry.js +107 -0
  161. package/dist/src/middleware/registry.js.map +1 -0
  162. package/dist/src/middleware/stages.d.ts +138 -0
  163. package/dist/src/middleware/stages.d.ts.map +1 -0
  164. package/dist/src/middleware/stages.js +31 -0
  165. package/dist/src/middleware/stages.js.map +1 -0
  166. package/dist/src/middleware/types.d.ts +88 -0
  167. package/dist/src/middleware/types.d.ts.map +1 -0
  168. package/dist/src/middleware/types.js +2 -0
  169. package/dist/src/middleware/types.js.map +1 -0
  170. package/dist/src/models/__tests__/anthropic.test.js +16 -1
  171. package/dist/src/models/__tests__/anthropic.test.js.map +1 -1
  172. package/dist/src/models/__tests__/bedrock.test.js +39 -0
  173. package/dist/src/models/__tests__/bedrock.test.js.map +1 -1
  174. package/dist/src/models/__tests__/model.test.js +46 -3
  175. package/dist/src/models/__tests__/model.test.js.map +1 -1
  176. package/dist/src/models/anthropic.js +2 -2
  177. package/dist/src/models/anthropic.js.map +1 -1
  178. package/dist/src/models/bedrock.d.ts.map +1 -1
  179. package/dist/src/models/bedrock.js +12 -5
  180. package/dist/src/models/bedrock.js.map +1 -1
  181. package/dist/src/models/defaults.d.ts.map +1 -1
  182. package/dist/src/models/defaults.js +2 -0
  183. package/dist/src/models/defaults.js.map +1 -1
  184. package/dist/src/models/model.d.ts.map +1 -1
  185. package/dist/src/models/model.js +7 -3
  186. package/dist/src/models/model.js.map +1 -1
  187. package/dist/src/models/openai/__tests__/responses.test.js +8 -14
  188. package/dist/src/models/openai/__tests__/responses.test.js.map +1 -1
  189. package/dist/src/sandbox/__tests__/default.test.browser.d.ts +2 -0
  190. package/dist/src/sandbox/__tests__/default.test.browser.d.ts.map +1 -0
  191. package/dist/src/sandbox/__tests__/default.test.browser.js +11 -0
  192. package/dist/src/sandbox/__tests__/default.test.browser.js.map +1 -0
  193. package/dist/src/sandbox/__tests__/default.test.node.d.ts +2 -0
  194. package/dist/src/sandbox/__tests__/default.test.node.d.ts.map +1 -0
  195. package/dist/src/sandbox/__tests__/default.test.node.js +23 -0
  196. package/dist/src/sandbox/__tests__/default.test.node.js.map +1 -0
  197. package/dist/src/sandbox/__tests__/docker.test.node.d.ts +2 -0
  198. package/dist/src/sandbox/__tests__/docker.test.node.d.ts.map +1 -0
  199. package/dist/src/sandbox/__tests__/docker.test.node.js +89 -0
  200. package/dist/src/sandbox/__tests__/docker.test.node.js.map +1 -0
  201. package/dist/src/sandbox/__tests__/errors.test.node.d.ts +2 -0
  202. package/dist/src/sandbox/__tests__/errors.test.node.d.ts.map +1 -0
  203. package/dist/src/sandbox/__tests__/errors.test.node.js +33 -0
  204. package/dist/src/sandbox/__tests__/errors.test.node.js.map +1 -0
  205. package/dist/src/sandbox/__tests__/not-a-sandbox-local-environment.test.node.d.ts +2 -0
  206. package/dist/src/sandbox/__tests__/not-a-sandbox-local-environment.test.node.d.ts.map +1 -0
  207. package/dist/src/sandbox/__tests__/not-a-sandbox-local-environment.test.node.js +124 -0
  208. package/dist/src/sandbox/__tests__/not-a-sandbox-local-environment.test.node.js.map +1 -0
  209. package/dist/src/sandbox/__tests__/posix-shell.test.node.js +50 -4
  210. package/dist/src/sandbox/__tests__/posix-shell.test.node.js.map +1 -1
  211. package/dist/src/sandbox/__tests__/ssh.test.node.d.ts +2 -0
  212. package/dist/src/sandbox/__tests__/ssh.test.node.d.ts.map +1 -0
  213. package/dist/src/sandbox/__tests__/ssh.test.node.js +262 -0
  214. package/dist/src/sandbox/__tests__/ssh.test.node.js.map +1 -0
  215. package/dist/src/sandbox/base.d.ts +22 -4
  216. package/dist/src/sandbox/base.d.ts.map +1 -1
  217. package/dist/src/sandbox/base.js +15 -2
  218. package/dist/src/sandbox/base.js.map +1 -1
  219. package/dist/src/sandbox/constants.d.ts +18 -0
  220. package/dist/src/sandbox/constants.d.ts.map +1 -1
  221. package/dist/src/sandbox/constants.js +20 -0
  222. package/dist/src/sandbox/constants.js.map +1 -1
  223. package/dist/src/sandbox/default.d.ts +3 -0
  224. package/dist/src/sandbox/default.d.ts.map +1 -0
  225. package/dist/src/sandbox/default.js +3 -0
  226. package/dist/src/sandbox/default.js.map +1 -0
  227. package/dist/src/sandbox/docker.d.ts +38 -0
  228. package/dist/src/sandbox/docker.d.ts.map +1 -0
  229. package/dist/src/sandbox/docker.js +59 -0
  230. package/dist/src/sandbox/docker.js.map +1 -0
  231. package/dist/src/sandbox/errors.d.ts +26 -0
  232. package/dist/src/sandbox/errors.d.ts.map +1 -0
  233. package/dist/src/sandbox/errors.js +35 -0
  234. package/dist/src/sandbox/errors.js.map +1 -0
  235. package/dist/src/sandbox/index.d.ts +5 -0
  236. package/dist/src/sandbox/index.d.ts.map +1 -0
  237. package/dist/src/sandbox/index.js +4 -0
  238. package/dist/src/sandbox/index.js.map +1 -0
  239. package/dist/src/sandbox/not-a-sandbox-local-environment.d.ts +16 -0
  240. package/dist/src/sandbox/not-a-sandbox-local-environment.d.ts.map +1 -0
  241. package/dist/src/sandbox/not-a-sandbox-local-environment.js +83 -0
  242. package/dist/src/sandbox/not-a-sandbox-local-environment.js.map +1 -0
  243. package/dist/src/sandbox/posix-shell.d.ts +21 -0
  244. package/dist/src/sandbox/posix-shell.d.ts.map +1 -1
  245. package/dist/src/sandbox/posix-shell.js +41 -3
  246. package/dist/src/sandbox/posix-shell.js.map +1 -1
  247. package/dist/src/sandbox/ssh.d.ts +56 -0
  248. package/dist/src/sandbox/ssh.d.ts.map +1 -0
  249. package/dist/src/sandbox/ssh.js +119 -0
  250. package/dist/src/sandbox/ssh.js.map +1 -0
  251. package/dist/src/sandbox/stream-process.d.ts.map +1 -1
  252. package/dist/src/sandbox/stream-process.js +3 -2
  253. package/dist/src/sandbox/stream-process.js.map +1 -1
  254. package/dist/src/tsconfig.tsbuildinfo +1 -1
  255. package/dist/src/types/agent.d.ts +21 -0
  256. package/dist/src/types/agent.d.ts.map +1 -1
  257. package/dist/src/types/agent.js.map +1 -1
  258. package/dist/src/types/messages.d.ts +1 -1
  259. package/dist/src/types/messages.d.ts.map +1 -1
  260. package/dist/src/types/messages.js.map +1 -1
  261. package/dist/src/vended-memory-stores/bedrock-knowledge-base/__tests__/bedrock-knowledge-base-store.test.d.ts +2 -0
  262. package/dist/src/vended-memory-stores/bedrock-knowledge-base/__tests__/bedrock-knowledge-base-store.test.d.ts.map +1 -0
  263. package/dist/src/vended-memory-stores/bedrock-knowledge-base/__tests__/bedrock-knowledge-base-store.test.js +611 -0
  264. package/dist/src/vended-memory-stores/bedrock-knowledge-base/__tests__/bedrock-knowledge-base-store.test.js.map +1 -0
  265. package/dist/src/vended-memory-stores/bedrock-knowledge-base/index.d.ts +2 -0
  266. package/dist/src/vended-memory-stores/bedrock-knowledge-base/index.d.ts.map +1 -0
  267. package/dist/src/vended-memory-stores/bedrock-knowledge-base/index.js +2 -0
  268. package/dist/src/vended-memory-stores/bedrock-knowledge-base/index.js.map +1 -0
  269. package/dist/src/vended-memory-stores/bedrock-knowledge-base/store.d.ts +230 -0
  270. package/dist/src/vended-memory-stores/bedrock-knowledge-base/store.d.ts.map +1 -0
  271. package/dist/src/vended-memory-stores/bedrock-knowledge-base/store.js +370 -0
  272. package/dist/src/vended-memory-stores/bedrock-knowledge-base/store.js.map +1 -0
  273. package/dist/src/vended-plugins/context-offloader/__tests__/file-storage-sandbox.test.node.d.ts +2 -0
  274. package/dist/src/vended-plugins/context-offloader/__tests__/file-storage-sandbox.test.node.d.ts.map +1 -0
  275. package/dist/src/vended-plugins/context-offloader/__tests__/file-storage-sandbox.test.node.js +68 -0
  276. package/dist/src/vended-plugins/context-offloader/__tests__/file-storage-sandbox.test.node.js.map +1 -0
  277. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.node.d.ts +2 -0
  278. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.node.d.ts.map +1 -0
  279. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.node.js +93 -0
  280. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.node.js.map +1 -0
  281. package/dist/src/vended-plugins/context-offloader/index.d.ts +1 -1
  282. package/dist/src/vended-plugins/context-offloader/index.d.ts.map +1 -1
  283. package/dist/src/vended-plugins/context-offloader/plugin.d.ts +4 -1
  284. package/dist/src/vended-plugins/context-offloader/plugin.d.ts.map +1 -1
  285. package/dist/src/vended-plugins/context-offloader/plugin.js +29 -7
  286. package/dist/src/vended-plugins/context-offloader/plugin.js.map +1 -1
  287. package/dist/src/vended-plugins/context-offloader/search.d.ts.map +1 -1
  288. package/dist/src/vended-plugins/context-offloader/search.js +3 -5
  289. package/dist/src/vended-plugins/context-offloader/search.js.map +1 -1
  290. package/dist/src/vended-plugins/context-offloader/storage.d.ts +29 -5
  291. package/dist/src/vended-plugins/context-offloader/storage.d.ts.map +1 -1
  292. package/dist/src/vended-plugins/context-offloader/storage.js +75 -11
  293. package/dist/src/vended-plugins/context-offloader/storage.js.map +1 -1
  294. package/dist/src/vended-plugins/goal/__tests__/plugin.test.d.ts +2 -0
  295. package/dist/src/vended-plugins/goal/__tests__/plugin.test.d.ts.map +1 -0
  296. package/dist/src/vended-plugins/goal/__tests__/plugin.test.js +736 -0
  297. package/dist/src/vended-plugins/goal/__tests__/plugin.test.js.map +1 -0
  298. package/dist/src/vended-plugins/goal/index.d.ts +21 -0
  299. package/dist/src/vended-plugins/goal/index.d.ts.map +1 -0
  300. package/dist/src/vended-plugins/goal/index.js +20 -0
  301. package/dist/src/vended-plugins/goal/index.js.map +1 -0
  302. package/dist/src/vended-plugins/goal/judge.d.ts +41 -0
  303. package/dist/src/vended-plugins/goal/judge.d.ts.map +1 -0
  304. package/dist/src/vended-plugins/goal/judge.js +92 -0
  305. package/dist/src/vended-plugins/goal/judge.js.map +1 -0
  306. package/dist/src/vended-plugins/goal/plugin.d.ts +214 -0
  307. package/dist/src/vended-plugins/goal/plugin.d.ts.map +1 -0
  308. package/dist/src/vended-plugins/goal/plugin.js +287 -0
  309. package/dist/src/vended-plugins/goal/plugin.js.map +1 -0
  310. package/dist/src/vended-plugins/index.d.ts +2 -1
  311. package/dist/src/vended-plugins/index.d.ts.map +1 -1
  312. package/dist/src/vended-plugins/index.js +2 -1
  313. package/dist/src/vended-plugins/index.js.map +1 -1
  314. package/dist/src/vended-plugins/skills/__tests__/agent-skills.test.node.js +17 -7
  315. package/dist/src/vended-plugins/skills/__tests__/agent-skills.test.node.js.map +1 -1
  316. package/dist/src/vended-plugins/skills/agent-skills.d.ts +21 -7
  317. package/dist/src/vended-plugins/skills/agent-skills.d.ts.map +1 -1
  318. package/dist/src/vended-plugins/skills/agent-skills.js +144 -77
  319. package/dist/src/vended-plugins/skills/agent-skills.js.map +1 -1
  320. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js +44 -4
  321. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js.map +1 -1
  322. package/dist/src/vended-tools/bash/bash.d.ts +3 -24
  323. package/dist/src/vended-tools/bash/bash.d.ts.map +1 -1
  324. package/dist/src/vended-tools/bash/bash.js +9 -9
  325. package/dist/src/vended-tools/bash/bash.js.map +1 -1
  326. package/dist/src/vended-tools/bash/index.d.ts +3 -1
  327. package/dist/src/vended-tools/bash/index.d.ts.map +1 -1
  328. package/dist/src/vended-tools/bash/index.js +2 -1
  329. package/dist/src/vended-tools/bash/index.js.map +1 -1
  330. package/dist/src/vended-tools/bash/make-bash.d.ts +22 -0
  331. package/dist/src/vended-tools/bash/make-bash.d.ts.map +1 -0
  332. package/dist/src/vended-tools/bash/make-bash.js +40 -0
  333. package/dist/src/vended-tools/bash/make-bash.js.map +1 -0
  334. package/dist/src/vended-tools/bash/types.d.ts +1 -0
  335. package/dist/src/vended-tools/bash/types.d.ts.map +1 -1
  336. package/dist/src/vended-tools/bash/types.js +2 -0
  337. package/dist/src/vended-tools/bash/types.js.map +1 -1
  338. package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.js +83 -1
  339. package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.js.map +1 -1
  340. package/dist/src/vended-tools/file-editor/file-editor.d.ts +19 -10
  341. package/dist/src/vended-tools/file-editor/file-editor.d.ts.map +1 -1
  342. package/dist/src/vended-tools/file-editor/file-editor.js +188 -218
  343. package/dist/src/vended-tools/file-editor/file-editor.js.map +1 -1
  344. package/dist/src/vended-tools/file-editor/index.d.ts +2 -1
  345. package/dist/src/vended-tools/file-editor/index.d.ts.map +1 -1
  346. package/dist/src/vended-tools/file-editor/index.js +1 -1
  347. package/dist/src/vended-tools/file-editor/index.js.map +1 -1
  348. package/package.json +41 -6
  349. package/dist/src/utils/shell-quote.d.ts +0 -12
  350. package/dist/src/utils/shell-quote.d.ts.map +0 -1
  351. package/dist/src/utils/shell-quote.js +0 -14
  352. package/dist/src/utils/shell-quote.js.map +0 -1
@@ -1,6 +1,8 @@
1
1
  import { tool } from '../../tools/tool-factory.js';
2
2
  import { z } from 'zod';
3
- import { promises as fs } from 'fs';
3
+ import { Buffer } from 'buffer';
4
+ import { Sandbox } from '../../sandbox/base.js';
5
+ import { SandboxPathNotFoundError } from '../../sandbox/errors.js';
4
6
  import * as path from 'path';
5
7
  const SNIPPET_LINES = 4;
6
8
  const DEFAULT_MAX_FILE_SIZE = 1048576; // 1MB
@@ -25,20 +27,11 @@ const fileEditorInputSchema = z.object({
25
27
  .optional()
26
28
  .describe('Line number where text should be inserted (0-indexed, required for insert command).'),
27
29
  });
28
- /**
29
- * Text file reader implementation.
30
- * Reads files as UTF-8 encoded text.
31
- */
32
- class TextFileReader {
33
- async read(filePath) {
34
- return await fs.readFile(filePath, 'utf-8');
35
- }
36
- }
37
30
  /**
38
31
  * File editor tool for viewing, creating, and editing files programmatically.
39
32
  *
40
33
  * Provides commands for viewing files/directories, creating files, string replacement,
41
- * and line insertion.
34
+ * and line insertion. All I/O routes through the agent's configured sandbox.
42
35
  *
43
36
  * @example
44
37
  * ```typescript
@@ -55,84 +48,130 @@ class TextFileReader {
55
48
  * await agent.invoke('Replace "Hello" with "Hi" in /tmp/notes.txt')
56
49
  * ```
57
50
  */
58
- export const fileEditor = tool({
59
- name: 'fileEditor',
60
- description: 'Filesystem editor tool for viewing, creating, and editing files. Supports view (with line ranges), create, str_replace, and insert operations. Files must use absolute paths.',
61
- inputSchema: fileEditorInputSchema,
62
- callback: async (input, context) => {
63
- if (!context) {
64
- throw new Error('Tool context is required for file editor operations');
65
- }
66
- const fileReader = new TextFileReader();
67
- let result;
68
- switch (input.command) {
69
- case 'view':
70
- result = await handleView(input.path, input.view_range, fileReader);
71
- break;
72
- case 'create':
73
- result = await handleCreate(input.path, input.file_text);
74
- break;
75
- case 'str_replace':
76
- result = await handleStrReplace(input.path, input.old_str, input.new_str, fileReader);
77
- break;
78
- case 'insert':
79
- result = await handleInsert(input.path, input.insert_line, input.new_str, fileReader);
80
- break;
81
- default:
82
- throw new Error(`Unknown command: ${input.command}`);
83
- }
84
- return result;
85
- },
86
- });
51
+ export const DEFAULT_FILE_EDITOR_DESCRIPTION = 'Filesystem editor tool for viewing, creating, and editing files. Supports view (with line ranges), create, str_replace, and insert operations. Files must use absolute paths.';
52
+ export function makeFileEditor(sandboxOrOptions, maybeOptions) {
53
+ const boundSandbox = sandboxOrOptions instanceof Sandbox ? sandboxOrOptions : undefined;
54
+ const options = sandboxOrOptions instanceof Sandbox || maybeOptions ? (maybeOptions ?? {}) : (sandboxOrOptions ?? {});
55
+ return tool({
56
+ name: options.name ?? 'fileEditor',
57
+ description: options.description ?? DEFAULT_FILE_EDITOR_DESCRIPTION,
58
+ inputSchema: fileEditorInputSchema,
59
+ callback: async (input, context) => {
60
+ if (!context)
61
+ throw new Error('Tool context is required for fileEditor operations');
62
+ const sandbox = boundSandbox ?? context.agent.sandbox;
63
+ const filePath = input.path.replace(/[/\\]+$/, '');
64
+ switch (input.command) {
65
+ case 'view':
66
+ return handleView(sandbox, filePath, input.view_range);
67
+ case 'create':
68
+ return handleCreate(sandbox, filePath, input.file_text);
69
+ case 'str_replace':
70
+ return handleStrReplace(sandbox, filePath, input.old_str, input.new_str);
71
+ case 'insert':
72
+ return handleInsert(sandbox, filePath, input.insert_line, input.new_str);
73
+ default:
74
+ throw new Error(`Unknown command: ${input.command}`);
75
+ }
76
+ },
77
+ });
78
+ }
79
+ /**
80
+ * Default file editor tool. Reads the sandbox from the agent's context at call time.
81
+ */
82
+ export const fileEditor = makeFileEditor();
87
83
  /**
88
84
  * Validates that a path is absolute and doesn't contain directory traversal.
89
85
  */
90
- function validatePath(command, filePath) {
86
+ function validatePath(filePath) {
91
87
  // Check if it's an absolute path
92
88
  if (!path.isAbsolute(filePath)) {
93
89
  const suggestedPath = path.resolve(filePath);
94
90
  throw new Error(`The path ${filePath} is not an absolute path, it should start with \`/\`. Maybe you meant ${suggestedPath}?`);
95
91
  }
96
- // Check for directory traversal - reject paths containing '..' segments
97
- const normalized = path.normalize(filePath);
98
- if (normalized.includes('..')) {
92
+ // Check for '..' segments on the raw input path.normalize resolves them away,
93
+ // so checking after normalize is ineffective.
94
+ if (filePath.split(/[/\\]/).includes('..')) {
99
95
  throw new Error(`Invalid path: path traversal is not allowed`);
100
96
  }
101
97
  }
102
98
  /**
103
- * Checks if a file exists.
99
+ * Validates a view_range tuple and slices the file content to it. Returns the
100
+ * visible content along with the line number to use as the first line in the
101
+ * formatted output.
104
102
  */
105
- async function fileExists(filePath) {
106
- try {
107
- await fs.access(filePath);
108
- return true;
103
+ function applyViewRange(fileContent, viewRange) {
104
+ if (!viewRange) {
105
+ return { content: fileContent, initLine: 1 };
106
+ }
107
+ const lines = fileContent.split('\n');
108
+ const nLines = lines.length;
109
+ const [start, end] = viewRange;
110
+ if (start < 1 || start > nLines) {
111
+ throw new Error(`Invalid \`view_range\`: [${start}, ${end}]. Its first element \`${start}\` should be within the range of lines of the file: [1, ${nLines}]`);
109
112
  }
110
- catch {
111
- return false;
113
+ if (end !== -1 && end > nLines) {
114
+ throw new Error(`Invalid \`view_range\`: [${start}, ${end}]. Its second element \`${end}\` should be smaller than the number of lines in the file: \`${nLines}\``);
112
115
  }
116
+ if (end !== -1 && end < start) {
117
+ throw new Error(`Invalid \`view_range\`: [${start}, ${end}]. Its second element \`${end}\` should be larger or equal than its first \`${start}\``);
118
+ }
119
+ const content = end === -1 ? lines.slice(start - 1).join('\n') : lines.slice(start - 1, end).join('\n');
120
+ return { content, initLine: start };
113
121
  }
114
122
  /**
115
- * Checks if a path is a directory.
123
+ * Performs a unique str_replace transformation on file content. Validates that
124
+ * `oldStr` appears exactly once. Returns the new content plus a snippet around
125
+ * the change site (with 0-indexed `startLine`).
116
126
  */
117
- async function isDirectory(filePath) {
118
- try {
119
- const stats = await fs.stat(filePath);
120
- return stats.isDirectory();
127
+ function buildStrReplaceResult(originalContent, oldStr, newStr, filePath) {
128
+ const fileContent = originalContent.replace(/\t/g, ' ');
129
+ const expandedOldStr = oldStr.replace(/\t/g, ' ');
130
+ const expandedNewStr = newStr ? newStr.replace(/\t/g, ' ') : '';
131
+ const occurrences = (fileContent.match(new RegExp(escapeRegExp(expandedOldStr), 'g')) || []).length;
132
+ if (occurrences === 0) {
133
+ throw new Error(`No replacement was performed, old_str \`${oldStr}\` did not appear verbatim in ${filePath}.`);
121
134
  }
122
- catch {
123
- return false;
135
+ if (occurrences > 1) {
136
+ const lines = fileContent.split('\n');
137
+ const lineNumbers = lines
138
+ .map((line, index) => (line.includes(expandedOldStr) ? index + 1 : -1))
139
+ .filter((num) => num !== -1);
140
+ throw new Error(`No replacement was performed. Multiple occurrences of old_str \`${oldStr}\` in lines ${JSON.stringify(lineNumbers)}. Please ensure it is unique`);
124
141
  }
142
+ const newContent = fileContent.replace(expandedOldStr, () => expandedNewStr);
143
+ const replacementLine = fileContent.substring(0, fileContent.indexOf(expandedOldStr)).split('\n').length - 1;
144
+ const insertedLines = expandedNewStr.split('\n').length;
145
+ const originalLines = expandedOldStr.split('\n').length;
146
+ const lineDifference = insertedLines - originalLines;
147
+ const newLines = newContent.split('\n');
148
+ const startLine = Math.max(0, replacementLine - SNIPPET_LINES);
149
+ const endLine = Math.min(newLines.length, replacementLine + SNIPPET_LINES + lineDifference + 1);
150
+ const snippet = newLines.slice(startLine, endLine).join('\n');
151
+ return { newContent, snippet, startLine };
125
152
  }
126
153
  /**
127
- * Checks file size against limit.
154
+ * Inserts text at a 0-indexed line in file content. Validates the insertion
155
+ * point. Returns the new content plus a snippet around the insertion site
156
+ * (with 0-indexed `startLine`).
128
157
  */
129
- async function checkFileSize(filePath, maxSize = DEFAULT_MAX_FILE_SIZE) {
130
- const stats = await fs.stat(filePath).catch((err) => {
131
- throw new Error(`Failed to check file size: ${err}`);
132
- });
133
- if (stats.size > maxSize) {
134
- throw new Error(`File size (${stats.size} bytes) exceeds maximum allowed size (${maxSize} bytes)`);
158
+ function buildInsertResult(originalContent, insertLine, newStr) {
159
+ const fileText = originalContent.replace(/\t/g, ' ');
160
+ const expandedNewStr = newStr.replace(/\t/g, ' ');
161
+ const fileTextLines = fileText.split('\n');
162
+ const nLines = fileTextLines.length;
163
+ if (insertLine < 0 || insertLine > nLines) {
164
+ throw new Error(`Invalid \`insert_line\` parameter: ${insertLine}. It should be within the range of lines of the file: [0, ${nLines}]`);
135
165
  }
166
+ const newStrLines = expandedNewStr.split('\n');
167
+ const newFileTextLines = fileText === ''
168
+ ? newStrLines
169
+ : [...fileTextLines.slice(0, insertLine), ...newStrLines, ...fileTextLines.slice(insertLine)];
170
+ const newContent = newFileTextLines.join('\n');
171
+ const snippetStartLine = Math.max(0, insertLine - SNIPPET_LINES);
172
+ const snippetEndLine = Math.min(newFileTextLines.length, insertLine + newStrLines.length + SNIPPET_LINES);
173
+ const snippet = newFileTextLines.slice(snippetStartLine, snippetEndLine).join('\n');
174
+ return { newContent, snippet, startLine: snippetStartLine };
136
175
  }
137
176
  /**
138
177
  * Formats file content with line numbers (cat -n style).
@@ -147,207 +186,138 @@ function makeOutput(fileContent, fileDescriptor, initLine = 1) {
147
186
  });
148
187
  return `Here's the result of running \`cat -n\` on ${fileDescriptor}:\n${numberedLines.join('\n')}\n`;
149
188
  }
189
+ /**
190
+ * Escapes special regex characters in a string.
191
+ */
192
+ function escapeRegExp(string) {
193
+ return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
194
+ }
195
+ // ---- Sandbox-routed I/O helpers ----
196
+ /**
197
+ * Probes a path through the sandbox, reporting existence and directory-ness by listing
198
+ * the parent directory. A missing parent or entry resolves to `exists: false`; permission,
199
+ * transport, and other failures propagate so they aren't disguised as non-existence.
200
+ */
201
+ async function probeSandboxPath(sandbox, filePath) {
202
+ const normalized = filePath.replaceAll('\\', '/');
203
+ const parent = normalized.split('/').slice(0, -1).join('/') || '/';
204
+ const name = normalized.split('/').pop();
205
+ try {
206
+ const entry = (await sandbox.listFiles(parent)).find((e) => e.name === name);
207
+ if (!entry) {
208
+ return { exists: false, isDir: false };
209
+ }
210
+ return { exists: true, isDir: entry.isDir ?? false };
211
+ }
212
+ catch (err) {
213
+ if (err instanceof SandboxPathNotFoundError) {
214
+ return { exists: false, isDir: false };
215
+ }
216
+ throw err;
217
+ }
218
+ }
219
+ /**
220
+ * Asserts content size is within the limit, checked after read since `listFiles`
221
+ * does not reliably report size across sandbox backends.
222
+ */
223
+ function assertWithinSizeLimit(content, maxSize = DEFAULT_MAX_FILE_SIZE) {
224
+ const size = Buffer.byteLength(content, 'utf-8');
225
+ if (size > maxSize) {
226
+ throw new Error(`File size (${size} bytes) exceeds maximum allowed size (${maxSize} bytes)`);
227
+ }
228
+ }
150
229
  /**
151
230
  * Lists directory contents up to 2 levels deep, excluding hidden files.
152
231
  */
153
- async function listDirectory(dirPath) {
232
+ async function listDirectory(sandbox, dirPath) {
154
233
  const items = [];
155
- async function walk(currentPath, depth) {
234
+ async function walk(currentPath, prefix, depth) {
235
+ let entries;
156
236
  try {
157
- const entries = await fs.readdir(currentPath, { withFileTypes: true });
158
- for (const entry of entries) {
159
- // Skip hidden files/directories
160
- if (entry.name.startsWith('.'))
161
- continue;
162
- const fullPath = path.join(currentPath, entry.name);
163
- const relativePath = path.relative(dirPath, fullPath);
164
- items.push(relativePath || entry.name);
165
- // Continue walking if we haven't reached max depth yet
166
- if (entry.isDirectory() && depth < MAX_DIRECTORY_DEPTH) {
167
- await walk(fullPath, depth + 1);
168
- }
169
- }
237
+ entries = await sandbox.listFiles(currentPath);
170
238
  }
171
239
  catch {
172
240
  // Ignore permission errors and continue
241
+ return;
242
+ }
243
+ for (const entry of entries) {
244
+ if (entry.name.startsWith('.'))
245
+ continue;
246
+ const relativePath = prefix ? `${prefix}/${entry.name}` : entry.name;
247
+ items.push(relativePath);
248
+ if (entry.isDir && depth < MAX_DIRECTORY_DEPTH) {
249
+ await walk(`${currentPath}/${entry.name}`, relativePath, depth + 1);
250
+ }
173
251
  }
174
252
  }
175
- await walk(dirPath, 0);
253
+ await walk(dirPath, '', 0);
176
254
  const result = items.sort().join('\n');
177
255
  return `Here's the files and directories up to 2 levels deep in ${dirPath}, excluding hidden items:\n${result}\n`;
178
256
  }
179
- /**
180
- * Handles the view command.
181
- */
182
- async function handleView(filePath, viewRange, fileReader) {
183
- validatePath('view', filePath);
184
- const exists = await fileExists(filePath);
257
+ // ---- Sandbox-path handlers ----
258
+ async function handleView(sandbox, filePath, viewRange) {
259
+ validatePath(filePath);
260
+ const { exists, isDir } = await probeSandboxPath(sandbox, filePath);
185
261
  if (!exists) {
186
262
  throw new Error(`The path ${filePath} does not exist. Please provide a valid path.`);
187
263
  }
188
- const isDir = await isDirectory(filePath);
189
264
  if (isDir) {
190
265
  if (viewRange) {
191
266
  throw new Error('The `view_range` parameter is not allowed when `path` points to a directory.');
192
267
  }
193
- return await listDirectory(filePath);
194
- }
195
- // Check file size before reading
196
- await checkFileSize(filePath);
197
- // Read file content - only if not a directory
198
- const fileContent = await fileReader.read(filePath);
199
- let initLine = 1;
200
- let contentToShow = fileContent;
201
- if (viewRange) {
202
- const lines = fileContent.split('\n');
203
- const nLines = lines.length;
204
- let [start, end] = viewRange;
205
- // Validate range
206
- if (start < 1 || start > nLines) {
207
- throw new Error(`Invalid \`view_range\`: [${start}, ${end}]. Its first element \`${start}\` should be within the range of lines of the file: [1, ${nLines}]`);
208
- }
209
- if (end !== -1 && end > nLines) {
210
- throw new Error(`Invalid \`view_range\`: [${start}, ${end}]. Its second element \`${end}\` should be smaller than the number of lines in the file: \`${nLines}\``);
211
- }
212
- if (end !== -1 && end < start) {
213
- throw new Error(`Invalid \`view_range\`: [${start}, ${end}]. Its second element \`${end}\` should be larger or equal than its first \`${start}\``);
214
- }
215
- initLine = start;
216
- if (end === -1) {
217
- contentToShow = lines.slice(start - 1).join('\n');
218
- }
219
- else {
220
- contentToShow = lines.slice(start - 1, end).join('\n');
221
- }
268
+ return listDirectory(sandbox, filePath);
222
269
  }
223
- return makeOutput(contentToShow, filePath, initLine);
270
+ const fileContent = await sandbox.readText(filePath);
271
+ assertWithinSizeLimit(fileContent);
272
+ const { content, initLine } = applyViewRange(fileContent, viewRange);
273
+ return makeOutput(content, filePath, initLine);
224
274
  }
225
- /**
226
- * Handles the create command.
227
- */
228
- async function handleCreate(filePath, fileText) {
275
+ async function handleCreate(sandbox, filePath, fileText) {
229
276
  if (fileText === undefined) {
230
277
  throw new Error('Parameter `file_text` is required for command: create');
231
278
  }
232
- validatePath('create', filePath);
233
- const exists = await fileExists(filePath);
279
+ validatePath(filePath);
280
+ const { exists } = await probeSandboxPath(sandbox, filePath);
234
281
  if (exists) {
235
282
  throw new Error(`File already exists at: ${filePath}. Cannot overwrite files using command \`create\`.`);
236
283
  }
237
- // Create parent directories if needed
238
- const dir = path.dirname(filePath);
239
- await fs.mkdir(dir, { recursive: true });
240
- // Write file
241
- await fs.writeFile(filePath, fileText, 'utf-8');
284
+ await sandbox.writeText(filePath, fileText);
242
285
  return `File created successfully at: ${filePath}`;
243
286
  }
244
- /**
245
- * Handles the str_replace command.
246
- */
247
- async function handleStrReplace(filePath, oldStr, newStr, fileReader) {
287
+ async function handleStrReplace(sandbox, filePath, oldStr, newStr) {
248
288
  if (oldStr === undefined) {
249
289
  throw new Error('Parameter `old_str` is required for command: str_replace');
250
290
  }
251
- validatePath('str_replace', filePath);
252
- const exists = await fileExists(filePath);
291
+ validatePath(filePath);
292
+ const { exists, isDir } = await probeSandboxPath(sandbox, filePath);
253
293
  if (!exists) {
254
294
  throw new Error(`The path ${filePath} does not exist. Please provide a valid path.`);
255
295
  }
256
- const isDir = await isDirectory(filePath);
257
296
  if (isDir) {
258
297
  throw new Error(`The path ${filePath} is a directory and only the \`view\` command can be used on directories`);
259
298
  }
260
- await checkFileSize(filePath);
261
- // Read file content
262
- let fileContent = await fileReader.read(filePath);
263
- // Expand tabs in content and search string
264
- fileContent = fileContent.replace(/\t/g, ' ');
265
- const expandedOldStr = oldStr.replace(/\t/g, ' ');
266
- const expandedNewStr = newStr ? newStr.replace(/\t/g, ' ') : '';
267
- // Check if old_str is unique
268
- const occurrences = (fileContent.match(new RegExp(escapeRegExp(expandedOldStr), 'g')) || []).length;
269
- if (occurrences === 0) {
270
- throw new Error(`No replacement was performed, old_str \`${oldStr}\` did not appear verbatim in ${filePath}.`);
271
- }
272
- if (occurrences > 1) {
273
- const lines = fileContent.split('\n');
274
- const lineNumbers = lines
275
- .map((line, index) => (line.includes(expandedOldStr) ? index + 1 : -1))
276
- .filter((num) => num !== -1);
277
- throw new Error(`No replacement was performed. Multiple occurrences of old_str \`${oldStr}\` in lines ${JSON.stringify(lineNumbers)}. Please ensure it is unique`);
278
- }
279
- // Perform replacement
280
- const newFileContent = fileContent.replace(expandedOldStr, () => expandedNewStr);
281
- // Write back to file
282
- await fs.writeFile(filePath, newFileContent, 'utf-8');
283
- // Create snippet
284
- const replacementLine = fileContent.substring(0, fileContent.indexOf(expandedOldStr)).split('\n').length - 1;
285
- const insertedLines = expandedNewStr.split('\n').length;
286
- const originalLines = expandedOldStr.split('\n').length;
287
- const lineDifference = insertedLines - originalLines;
288
- const lines = newFileContent.split('\n');
289
- const startLine = Math.max(0, replacementLine - SNIPPET_LINES);
290
- const endLine = Math.min(lines.length, replacementLine + SNIPPET_LINES + lineDifference + 1);
291
- const snippetLines = lines.slice(startLine, endLine);
292
- const snippet = snippetLines.join('\n');
293
- const successMsg = `The file ${filePath} has been edited. ${makeOutput(snippet, `a snippet of ${filePath}`, startLine + 1)}Review the changes and make sure they are as expected. Edit the file again if necessary.`;
294
- return successMsg;
299
+ const fileContent = await sandbox.readText(filePath);
300
+ assertWithinSizeLimit(fileContent);
301
+ const { newContent, snippet, startLine } = buildStrReplaceResult(fileContent, oldStr, newStr, filePath);
302
+ await sandbox.writeText(filePath, newContent);
303
+ return `The file ${filePath} has been edited. ${makeOutput(snippet, `a snippet of ${filePath}`, startLine + 1)}Review the changes and make sure they are as expected. Edit the file again if necessary.`;
295
304
  }
296
- /**
297
- * Handles the insert command.
298
- */
299
- async function handleInsert(filePath, insertLine, newStr, fileReader) {
305
+ async function handleInsert(sandbox, filePath, insertLine, newStr) {
300
306
  if (insertLine === undefined || newStr === undefined) {
301
307
  throw new Error('Parameters `insert_line` and `new_str` are required for command: insert');
302
308
  }
303
- validatePath('insert', filePath);
304
- const exists = await fileExists(filePath);
309
+ validatePath(filePath);
310
+ const { exists, isDir } = await probeSandboxPath(sandbox, filePath);
305
311
  if (!exists) {
306
312
  throw new Error(`The path ${filePath} does not exist. Please provide a valid path.`);
307
313
  }
308
- const isDir = await isDirectory(filePath);
309
314
  if (isDir) {
310
315
  throw new Error(`The path ${filePath} is a directory and only the \`view\` command can be used on directories`);
311
316
  }
312
- await checkFileSize(filePath);
313
- // Read file content
314
- let fileText = await fileReader.read(filePath);
315
- // Expand tabs
316
- fileText = fileText.replace(/\t/g, ' ');
317
- const expandedNewStr = newStr.replace(/\t/g, ' ');
318
- const fileTextLines = fileText.split('\n');
319
- const nLines = fileTextLines.length;
320
- // Validate insert_line
321
- if (insertLine < 0 || insertLine > nLines) {
322
- throw new Error(`Invalid \`insert_line\` parameter: ${insertLine}. It should be within the range of lines of the file: [0, ${nLines}]`);
323
- }
324
- // Perform insertion
325
- const newStrLines = expandedNewStr.split('\n');
326
- // Handle empty file case
327
- let newFileTextLines;
328
- if (fileText === '') {
329
- newFileTextLines = newStrLines;
330
- }
331
- else {
332
- newFileTextLines = [...fileTextLines.slice(0, insertLine), ...newStrLines, ...fileTextLines.slice(insertLine)];
333
- }
334
- const newFileText = newFileTextLines.join('\n');
335
- // Write back to file
336
- await fs.writeFile(filePath, newFileText, 'utf-8');
337
- // Create snippet - show lines around the insertion point
338
- // Show 4 lines before the insertion line and 4 lines after
339
- const snippetStartLine = Math.max(0, insertLine - SNIPPET_LINES);
340
- const snippetEndLine = Math.min(newFileTextLines.length, insertLine + newStrLines.length + SNIPPET_LINES);
341
- const snippetLines = newFileTextLines.slice(snippetStartLine, snippetEndLine);
342
- const snippet = snippetLines.join('\n');
343
- const startLine = snippetStartLine + 1;
344
- const successMsg = `The file ${filePath} has been edited. ${makeOutput(snippet, 'a snippet of the edited file', startLine)}Review the changes and make sure they are as expected (correct indentation, no duplicate lines, etc). Edit the file again if necessary.`;
345
- return successMsg;
346
- }
347
- /**
348
- * Escapes special regex characters in a string.
349
- */
350
- function escapeRegExp(string) {
351
- return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
317
+ const fileText = await sandbox.readText(filePath);
318
+ assertWithinSizeLimit(fileText);
319
+ const { newContent, snippet, startLine } = buildInsertResult(fileText, insertLine, newStr);
320
+ await sandbox.writeText(filePath, newContent);
321
+ return `The file ${filePath} has been edited. ${makeOutput(snippet, 'a snippet of the edited file', startLine + 1)}Review the changes and make sure they are as expected (correct indentation, no duplicate lines, etc). Edit the file again if necessary.`;
352
322
  }
353
323
  //# sourceMappingURL=file-editor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-editor.js","sourceRoot":"","sources":["../../../../src/vended-tools/file-editor/file-editor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-editor.js","sourceRoot":"","sources":["../../../../src/vended-tools/file-editor/file-editor.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * File editor tool for programmatic filesystem interaction.
3
3
  */
4
- export { fileEditor } from './file-editor.js';
4
+ export { fileEditor, makeFileEditor, DEFAULT_FILE_EDITOR_DESCRIPTION } from './file-editor.js';
5
+ export type { MakeFileEditorOptions } from './file-editor.js';
5
6
  export type { FileEditorInput, FileEditorOptions, IFileReader } from './types.js';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/vended-tools/file-editor/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/vended-tools/file-editor/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,+BAA+B,EAAE,MAAM,kBAAkB,CAAA;AAC9F,YAAY,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAC7D,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA"}
@@ -1,5 +1,5 @@
1
1
  /**
2
2
  * File editor tool for programmatic filesystem interaction.
3
3
  */
4
- export { fileEditor } from './file-editor.js';
4
+ export { fileEditor, makeFileEditor, DEFAULT_FILE_EDITOR_DESCRIPTION } from './file-editor.js';
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/vended-tools/file-editor/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/vended-tools/file-editor/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,+BAA+B,EAAE,MAAM,kBAAkB,CAAA"}