orbitx 0.2.5 → 0.2.7

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 (398) hide show
  1. package/dist/core/agent-providers.d.ts +15 -10
  2. package/dist/core/agent-providers.d.ts.map +1 -1
  3. package/dist/core/agent-providers.js +65 -15
  4. package/dist/core/agent-providers.js.map +1 -1
  5. package/dist/core/ai-provider.d.ts +61 -3
  6. package/dist/core/ai-provider.d.ts.map +1 -1
  7. package/dist/core/ai-provider.js.map +1 -1
  8. package/dist/core/anthropic-provider.d.ts +6 -1
  9. package/dist/core/anthropic-provider.d.ts.map +1 -1
  10. package/dist/core/anthropic-provider.js +165 -73
  11. package/dist/core/anthropic-provider.js.map +1 -1
  12. package/dist/core/base-agent.d.ts +21 -41
  13. package/dist/core/base-agent.d.ts.map +1 -1
  14. package/dist/core/base-agent.js +139 -140
  15. package/dist/core/base-agent.js.map +1 -1
  16. package/dist/core/deepseek-provider.d.ts +4 -1
  17. package/dist/core/deepseek-provider.d.ts.map +1 -1
  18. package/dist/core/deepseek-provider.js +103 -57
  19. package/dist/core/deepseek-provider.js.map +1 -1
  20. package/dist/core/mcp-client.d.ts +10 -2
  21. package/dist/core/mcp-client.d.ts.map +1 -1
  22. package/dist/core/mcp-client.js +28 -4
  23. package/dist/core/mcp-client.js.map +1 -1
  24. package/dist/core/mcp-fs-storage.d.ts.map +1 -1
  25. package/dist/core/mcp-fs-storage.js +2 -1
  26. package/dist/core/mcp-fs-storage.js.map +1 -1
  27. package/dist/core/mcp-server.d.ts +5 -1
  28. package/dist/core/mcp-server.d.ts.map +1 -1
  29. package/dist/core/mcp-server.js +31 -1
  30. package/dist/core/mcp-server.js.map +1 -1
  31. package/dist/core/mcp.d.ts +9 -23
  32. package/dist/core/mcp.d.ts.map +1 -1
  33. package/dist/core/mcp.js +1 -24
  34. package/dist/core/mcp.js.map +1 -1
  35. package/dist/core/ollama-provider.d.ts +4 -1
  36. package/dist/core/ollama-provider.d.ts.map +1 -1
  37. package/dist/core/ollama-provider.js +75 -38
  38. package/dist/core/ollama-provider.js.map +1 -1
  39. package/dist/core/openai-provider.d.ts +4 -1
  40. package/dist/core/openai-provider.d.ts.map +1 -1
  41. package/dist/core/openai-provider.js +90 -48
  42. package/dist/core/openai-provider.js.map +1 -1
  43. package/dist/core/retry.d.ts +1 -1
  44. package/dist/core/retry.d.ts.map +1 -1
  45. package/dist/core/retry.js +5 -1
  46. package/dist/core/retry.js.map +1 -1
  47. package/dist/core/skill.d.ts +2 -2
  48. package/dist/core/skill.d.ts.map +1 -1
  49. package/dist/index.d.ts +13 -20
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +9 -10
  52. package/dist/index.js.map +1 -1
  53. package/dist/templates/simple.d.ts +8 -12
  54. package/dist/templates/simple.d.ts.map +1 -1
  55. package/dist/templates/simple.js +6 -10
  56. package/dist/templates/simple.js.map +1 -1
  57. package/dist/tests/core/mcp-computer.test.js +26 -23
  58. package/dist/tests/core/mcp-computer.test.js.map +1 -1
  59. package/dist/tests/core/mcp-connection.test.js +23 -21
  60. package/dist/tests/core/mcp-connection.test.js.map +1 -1
  61. package/dist/tests/core/mcp-ipc-connection.test.js +30 -28
  62. package/dist/tests/core/mcp-ipc-connection.test.js.map +1 -1
  63. package/dist/tests/core/mcp-ws-connection.test.js +31 -30
  64. package/dist/tests/core/mcp-ws-connection.test.js.map +1 -1
  65. package/dist/tests/index.d.ts +27 -0
  66. package/dist/tests/index.d.ts.map +1 -1
  67. package/dist/tests/index.js +27 -0
  68. package/dist/tests/index.js.map +1 -1
  69. package/dist/tests/tools/agent/agent-tools.test.js +152 -147
  70. package/dist/tests/tools/agent/agent-tools.test.js.map +1 -1
  71. package/dist/tests/tools/bash/fixtures.d.ts +16 -0
  72. package/dist/tests/tools/bash/fixtures.d.ts.map +1 -0
  73. package/dist/tests/tools/bash/fixtures.js +22 -0
  74. package/dist/tests/tools/bash/fixtures.js.map +1 -0
  75. package/dist/tests/tools/bash/kill-tree.d.ts +21 -0
  76. package/dist/tests/tools/bash/kill-tree.d.ts.map +1 -0
  77. package/dist/tests/tools/bash/kill-tree.js +47 -0
  78. package/dist/tests/tools/bash/kill-tree.js.map +1 -0
  79. package/dist/tests/tools/bash/list.test.d.ts +2 -0
  80. package/dist/tests/tools/bash/list.test.d.ts.map +1 -0
  81. package/dist/tests/tools/bash/list.test.js +43 -0
  82. package/dist/tests/tools/bash/list.test.js.map +1 -0
  83. package/dist/tests/tools/bash/logs.test.d.ts +2 -0
  84. package/dist/tests/tools/bash/logs.test.d.ts.map +1 -0
  85. package/dist/tests/tools/bash/logs.test.js +48 -0
  86. package/dist/tests/tools/bash/logs.test.js.map +1 -0
  87. package/dist/tests/tools/bash/run.test.d.ts +2 -0
  88. package/dist/tests/tools/bash/run.test.d.ts.map +1 -0
  89. package/dist/tests/tools/bash/run.test.js +53 -0
  90. package/dist/tests/tools/bash/run.test.js.map +1 -0
  91. package/dist/tests/tools/bash/terminate.test.d.ts +2 -0
  92. package/dist/tests/tools/bash/terminate.test.d.ts.map +1 -0
  93. package/dist/tests/tools/bash/terminate.test.js +60 -0
  94. package/dist/tests/tools/bash/terminate.test.js.map +1 -0
  95. package/dist/tests/tools/bash/wait.test.d.ts +2 -0
  96. package/dist/tests/tools/bash/wait.test.d.ts.map +1 -0
  97. package/dist/tests/tools/bash/wait.test.js +45 -0
  98. package/dist/tests/tools/bash/wait.test.js.map +1 -0
  99. package/dist/tests/tools/bash/write-input.test.d.ts +2 -0
  100. package/dist/tests/tools/bash/write-input.test.d.ts.map +1 -0
  101. package/dist/tests/tools/bash/write-input.test.js +65 -0
  102. package/dist/tests/tools/bash/write-input.test.js.map +1 -0
  103. package/dist/tests/tools/browser/browser-tools.test.d.ts +2 -0
  104. package/dist/tests/tools/browser/browser-tools.test.d.ts.map +1 -0
  105. package/dist/tests/tools/browser/browser-tools.test.js +36 -0
  106. package/dist/tests/tools/browser/browser-tools.test.js.map +1 -0
  107. package/dist/tests/tools/fs/create-dir.test.d.ts +2 -0
  108. package/dist/tests/tools/fs/create-dir.test.d.ts.map +1 -0
  109. package/dist/tests/tools/fs/create-dir.test.js +37 -0
  110. package/dist/tests/tools/fs/create-dir.test.js.map +1 -0
  111. package/dist/tests/tools/fs/delete.test.d.ts +2 -0
  112. package/dist/tests/tools/fs/delete.test.d.ts.map +1 -0
  113. package/dist/tests/tools/fs/delete.test.js +69 -0
  114. package/dist/tests/tools/fs/delete.test.js.map +1 -0
  115. package/dist/tests/tools/fs/edit-file.test.d.ts +2 -0
  116. package/dist/tests/tools/fs/edit-file.test.d.ts.map +1 -0
  117. package/dist/tests/tools/fs/edit-file.test.js +103 -0
  118. package/dist/tests/tools/fs/edit-file.test.js.map +1 -0
  119. package/dist/tests/tools/fs/list-dir.test.d.ts +2 -0
  120. package/dist/tests/tools/fs/list-dir.test.d.ts.map +1 -0
  121. package/dist/tests/tools/fs/list-dir.test.js +65 -0
  122. package/dist/tests/tools/fs/list-dir.test.js.map +1 -0
  123. package/dist/tests/tools/fs/move.test.d.ts +2 -0
  124. package/dist/tests/tools/fs/move.test.d.ts.map +1 -0
  125. package/dist/tests/tools/fs/move.test.js +47 -0
  126. package/dist/tests/tools/fs/move.test.js.map +1 -0
  127. package/dist/tests/tools/fs/read-file.test.d.ts +2 -0
  128. package/dist/tests/tools/fs/read-file.test.d.ts.map +1 -0
  129. package/dist/tests/tools/fs/read-file.test.js +52 -0
  130. package/dist/tests/tools/fs/read-file.test.js.map +1 -0
  131. package/dist/tests/tools/fs/stat.test.d.ts +2 -0
  132. package/dist/tests/tools/fs/stat.test.d.ts.map +1 -0
  133. package/dist/tests/tools/fs/stat.test.js +43 -0
  134. package/dist/tests/tools/fs/stat.test.js.map +1 -0
  135. package/dist/tests/tools/fs/write-file.test.d.ts +2 -0
  136. package/dist/tests/tools/fs/write-file.test.d.ts.map +1 -0
  137. package/dist/tests/tools/fs/write-file.test.js +53 -0
  138. package/dist/tests/tools/fs/write-file.test.js.map +1 -0
  139. package/dist/tests/tools/present/add.test.d.ts +2 -0
  140. package/dist/tests/tools/present/add.test.d.ts.map +1 -0
  141. package/dist/tests/tools/present/add.test.js +51 -0
  142. package/dist/tests/tools/present/add.test.js.map +1 -0
  143. package/dist/tests/tools/present/clear.test.d.ts +2 -0
  144. package/dist/tests/tools/present/clear.test.d.ts.map +1 -0
  145. package/dist/tests/tools/present/clear.test.js +44 -0
  146. package/dist/tests/tools/present/clear.test.js.map +1 -0
  147. package/dist/tests/tools/present/get-list.test.d.ts +2 -0
  148. package/dist/tests/tools/present/get-list.test.d.ts.map +1 -0
  149. package/dist/tests/tools/present/get-list.test.js +50 -0
  150. package/dist/tests/tools/present/get-list.test.js.map +1 -0
  151. package/dist/tests/tools/question-answer/question-answer.test.d.ts +2 -0
  152. package/dist/tests/tools/question-answer/question-answer.test.d.ts.map +1 -0
  153. package/dist/tests/tools/question-answer/question-answer.test.js +24 -0
  154. package/dist/tests/tools/question-answer/question-answer.test.js.map +1 -0
  155. package/dist/tests/tools/todo/check-task.test.d.ts +2 -0
  156. package/dist/tests/tools/todo/check-task.test.d.ts.map +1 -0
  157. package/dist/tests/tools/todo/check-task.test.js +42 -0
  158. package/dist/tests/tools/todo/check-task.test.js.map +1 -0
  159. package/dist/tests/tools/todo/create-list.test.d.ts +2 -0
  160. package/dist/tests/tools/todo/create-list.test.d.ts.map +1 -0
  161. package/dist/tests/tools/todo/create-list.test.js +32 -0
  162. package/dist/tests/tools/todo/create-list.test.js.map +1 -0
  163. package/dist/tests/tools/todo/create-task.test.d.ts +2 -0
  164. package/dist/tests/tools/todo/create-task.test.d.ts.map +1 -0
  165. package/dist/tests/tools/todo/create-task.test.js +53 -0
  166. package/dist/tests/tools/todo/create-task.test.js.map +1 -0
  167. package/dist/tests/tools/todo/get-list.test.d.ts +2 -0
  168. package/dist/tests/tools/todo/get-list.test.d.ts.map +1 -0
  169. package/dist/tests/tools/todo/get-list.test.js +38 -0
  170. package/dist/tests/tools/todo/get-list.test.js.map +1 -0
  171. package/dist/tests/tools/todo/get-lists.test.d.ts +2 -0
  172. package/dist/tests/tools/todo/get-lists.test.d.ts.map +1 -0
  173. package/dist/tests/tools/todo/get-lists.test.js +29 -0
  174. package/dist/tests/tools/todo/get-lists.test.js.map +1 -0
  175. package/dist/tests/tools/todo/remove-list.test.d.ts +2 -0
  176. package/dist/tests/tools/todo/remove-list.test.d.ts.map +1 -0
  177. package/dist/tests/tools/todo/remove-list.test.js +41 -0
  178. package/dist/tests/tools/todo/remove-list.test.js.map +1 -0
  179. package/dist/tests/tools/todo/remove-task.test.d.ts +2 -0
  180. package/dist/tests/tools/todo/remove-task.test.d.ts.map +1 -0
  181. package/dist/tests/tools/todo/remove-task.test.js +45 -0
  182. package/dist/tests/tools/todo/remove-task.test.js.map +1 -0
  183. package/dist/tests/tools/utils/delay.test.js +26 -24
  184. package/dist/tests/tools/utils/delay.test.js.map +1 -1
  185. package/dist/tests/tools/utils/get-current-time.test.js +43 -41
  186. package/dist/tests/tools/utils/get-current-time.test.js.map +1 -1
  187. package/dist/tests/tools/utils/read-image.test.d.ts +2 -0
  188. package/dist/tests/tools/utils/read-image.test.d.ts.map +1 -0
  189. package/dist/tests/tools/utils/read-image.test.js +66 -0
  190. package/dist/tests/tools/utils/read-image.test.js.map +1 -0
  191. package/dist/tools/agent/hire.d.ts +1 -2
  192. package/dist/tools/agent/hire.d.ts.map +1 -1
  193. package/dist/tools/agent/hire.js +1 -4
  194. package/dist/tools/agent/hire.js.map +1 -1
  195. package/dist/tools/agent/index.d.ts +1 -3
  196. package/dist/tools/agent/index.d.ts.map +1 -1
  197. package/dist/tools/agent/index.js +0 -1
  198. package/dist/tools/agent/index.js.map +1 -1
  199. package/dist/tools/agent/list.d.ts +1 -1
  200. package/dist/tools/agent/list.d.ts.map +1 -1
  201. package/dist/tools/agent/prompt.d.ts +1 -2
  202. package/dist/tools/agent/prompt.d.ts.map +1 -1
  203. package/dist/tools/agent/prompt.js +11 -7
  204. package/dist/tools/agent/prompt.js.map +1 -1
  205. package/dist/tools/agent/report.d.ts +1 -1
  206. package/dist/tools/agent/report.d.ts.map +1 -1
  207. package/dist/tools/bash/index.d.ts +1 -3
  208. package/dist/tools/bash/index.d.ts.map +1 -1
  209. package/dist/tools/bash/index.js +0 -1
  210. package/dist/tools/bash/index.js.map +1 -1
  211. package/dist/tools/bash/list.d.ts +1 -1
  212. package/dist/tools/bash/list.d.ts.map +1 -1
  213. package/dist/tools/bash/list.js +1 -1
  214. package/dist/tools/bash/list.js.map +1 -1
  215. package/dist/tools/bash/logs.d.ts +1 -1
  216. package/dist/tools/bash/logs.d.ts.map +1 -1
  217. package/dist/tools/bash/logs.js +1 -1
  218. package/dist/tools/bash/logs.js.map +1 -1
  219. package/dist/tools/bash/run.d.ts +1 -2
  220. package/dist/tools/bash/run.d.ts.map +1 -1
  221. package/dist/tools/bash/run.js +1 -7
  222. package/dist/tools/bash/run.js.map +1 -1
  223. package/dist/tools/bash/terminate.d.ts +1 -2
  224. package/dist/tools/bash/terminate.d.ts.map +1 -1
  225. package/dist/tools/bash/terminate.js +1 -4
  226. package/dist/tools/bash/terminate.js.map +1 -1
  227. package/dist/tools/bash/wait.d.ts +1 -2
  228. package/dist/tools/bash/wait.d.ts.map +1 -1
  229. package/dist/tools/bash/wait.js +1 -7
  230. package/dist/tools/bash/wait.js.map +1 -1
  231. package/dist/tools/bash/write-input.d.ts +1 -2
  232. package/dist/tools/bash/write-input.d.ts.map +1 -1
  233. package/dist/tools/bash/write-input.js +1 -4
  234. package/dist/tools/bash/write-input.js.map +1 -1
  235. package/dist/tools/browser/click.d.ts +1 -2
  236. package/dist/tools/browser/click.d.ts.map +1 -1
  237. package/dist/tools/browser/click.js +1 -4
  238. package/dist/tools/browser/click.js.map +1 -1
  239. package/dist/tools/browser/console.d.ts +1 -1
  240. package/dist/tools/browser/console.d.ts.map +1 -1
  241. package/dist/tools/browser/create-session.d.ts +1 -2
  242. package/dist/tools/browser/create-session.d.ts.map +1 -1
  243. package/dist/tools/browser/create-session.js +1 -4
  244. package/dist/tools/browser/create-session.js.map +1 -1
  245. package/dist/tools/browser/fill.d.ts +1 -2
  246. package/dist/tools/browser/fill.d.ts.map +1 -1
  247. package/dist/tools/browser/fill.js +1 -4
  248. package/dist/tools/browser/fill.js.map +1 -1
  249. package/dist/tools/browser/get-sessions.d.ts +1 -1
  250. package/dist/tools/browser/get-sessions.d.ts.map +1 -1
  251. package/dist/tools/browser/index.d.ts +1 -3
  252. package/dist/tools/browser/index.d.ts.map +1 -1
  253. package/dist/tools/browser/index.js +0 -1
  254. package/dist/tools/browser/index.js.map +1 -1
  255. package/dist/tools/browser/inject.d.ts +1 -2
  256. package/dist/tools/browser/inject.d.ts.map +1 -1
  257. package/dist/tools/browser/inject.js +1 -4
  258. package/dist/tools/browser/inject.js.map +1 -1
  259. package/dist/tools/browser/navigate.d.ts +1 -2
  260. package/dist/tools/browser/navigate.d.ts.map +1 -1
  261. package/dist/tools/browser/navigate.js +1 -4
  262. package/dist/tools/browser/navigate.js.map +1 -1
  263. package/dist/tools/browser/network-status.d.ts +1 -1
  264. package/dist/tools/browser/network-status.d.ts.map +1 -1
  265. package/dist/tools/browser/network.d.ts +1 -1
  266. package/dist/tools/browser/network.d.ts.map +1 -1
  267. package/dist/tools/browser/read.d.ts +1 -2
  268. package/dist/tools/browser/read.d.ts.map +1 -1
  269. package/dist/tools/browser/read.js +1 -4
  270. package/dist/tools/browser/read.js.map +1 -1
  271. package/dist/tools/browser/remove-session.d.ts +1 -2
  272. package/dist/tools/browser/remove-session.d.ts.map +1 -1
  273. package/dist/tools/browser/remove-session.js +1 -4
  274. package/dist/tools/browser/remove-session.js.map +1 -1
  275. package/dist/tools/browser/screenshot.d.ts +1 -2
  276. package/dist/tools/browser/screenshot.d.ts.map +1 -1
  277. package/dist/tools/browser/screenshot.js +16 -15
  278. package/dist/tools/browser/screenshot.js.map +1 -1
  279. package/dist/tools/browser/scroll-info.d.ts +1 -1
  280. package/dist/tools/browser/scroll-info.d.ts.map +1 -1
  281. package/dist/tools/browser/scroll.d.ts +1 -2
  282. package/dist/tools/browser/scroll.d.ts.map +1 -1
  283. package/dist/tools/browser/scroll.js +1 -4
  284. package/dist/tools/browser/scroll.js.map +1 -1
  285. package/dist/tools/browser/submit-form.d.ts +1 -2
  286. package/dist/tools/browser/submit-form.d.ts.map +1 -1
  287. package/dist/tools/browser/submit-form.js +1 -4
  288. package/dist/tools/browser/submit-form.js.map +1 -1
  289. package/dist/tools/fs/create-dir.d.ts +1 -2
  290. package/dist/tools/fs/create-dir.d.ts.map +1 -1
  291. package/dist/tools/fs/create-dir.js +1 -4
  292. package/dist/tools/fs/create-dir.js.map +1 -1
  293. package/dist/tools/fs/delete.d.ts +1 -2
  294. package/dist/tools/fs/delete.d.ts.map +1 -1
  295. package/dist/tools/fs/delete.js +1 -4
  296. package/dist/tools/fs/delete.js.map +1 -1
  297. package/dist/tools/fs/edit-file.d.ts +1 -2
  298. package/dist/tools/fs/edit-file.d.ts.map +1 -1
  299. package/dist/tools/fs/edit-file.js +1 -4
  300. package/dist/tools/fs/edit-file.js.map +1 -1
  301. package/dist/tools/fs/index.d.ts +1 -3
  302. package/dist/tools/fs/index.d.ts.map +1 -1
  303. package/dist/tools/fs/index.js +0 -1
  304. package/dist/tools/fs/index.js.map +1 -1
  305. package/dist/tools/fs/list-dir.d.ts +1 -2
  306. package/dist/tools/fs/list-dir.d.ts.map +1 -1
  307. package/dist/tools/fs/list-dir.js +1 -4
  308. package/dist/tools/fs/list-dir.js.map +1 -1
  309. package/dist/tools/fs/move.d.ts +1 -2
  310. package/dist/tools/fs/move.d.ts.map +1 -1
  311. package/dist/tools/fs/move.js +1 -4
  312. package/dist/tools/fs/move.js.map +1 -1
  313. package/dist/tools/fs/read-file.d.ts +1 -2
  314. package/dist/tools/fs/read-file.d.ts.map +1 -1
  315. package/dist/tools/fs/read-file.js +1 -4
  316. package/dist/tools/fs/read-file.js.map +1 -1
  317. package/dist/tools/fs/stat.d.ts +1 -2
  318. package/dist/tools/fs/stat.d.ts.map +1 -1
  319. package/dist/tools/fs/stat.js +1 -4
  320. package/dist/tools/fs/stat.js.map +1 -1
  321. package/dist/tools/fs/write-file.d.ts +1 -2
  322. package/dist/tools/fs/write-file.d.ts.map +1 -1
  323. package/dist/tools/fs/write-file.js +1 -4
  324. package/dist/tools/fs/write-file.js.map +1 -1
  325. package/dist/tools/present/add.d.ts +1 -2
  326. package/dist/tools/present/add.d.ts.map +1 -1
  327. package/dist/tools/present/add.js +1 -4
  328. package/dist/tools/present/add.js.map +1 -1
  329. package/dist/tools/present/clear.d.ts +1 -2
  330. package/dist/tools/present/clear.d.ts.map +1 -1
  331. package/dist/tools/present/clear.js +1 -4
  332. package/dist/tools/present/clear.js.map +1 -1
  333. package/dist/tools/present/get-list.d.ts +1 -2
  334. package/dist/tools/present/get-list.d.ts.map +1 -1
  335. package/dist/tools/present/get-list.js +0 -2
  336. package/dist/tools/present/get-list.js.map +1 -1
  337. package/dist/tools/present/index.d.ts +1 -3
  338. package/dist/tools/present/index.d.ts.map +1 -1
  339. package/dist/tools/present/index.js +0 -1
  340. package/dist/tools/present/index.js.map +1 -1
  341. package/dist/tools/question-answer/index.d.ts +1 -3
  342. package/dist/tools/question-answer/index.d.ts.map +1 -1
  343. package/dist/tools/question-answer/index.js +0 -1
  344. package/dist/tools/question-answer/index.js.map +1 -1
  345. package/dist/tools/question-answer/question-answer.d.ts +1 -2
  346. package/dist/tools/question-answer/question-answer.d.ts.map +1 -1
  347. package/dist/tools/question-answer/question-answer.js +1 -4
  348. package/dist/tools/question-answer/question-answer.js.map +1 -1
  349. package/dist/tools/todo/check-task.d.ts +1 -2
  350. package/dist/tools/todo/check-task.d.ts.map +1 -1
  351. package/dist/tools/todo/check-task.js +1 -4
  352. package/dist/tools/todo/check-task.js.map +1 -1
  353. package/dist/tools/todo/create-list.d.ts +1 -2
  354. package/dist/tools/todo/create-list.d.ts.map +1 -1
  355. package/dist/tools/todo/create-list.js +1 -4
  356. package/dist/tools/todo/create-list.js.map +1 -1
  357. package/dist/tools/todo/create-task.d.ts +1 -2
  358. package/dist/tools/todo/create-task.d.ts.map +1 -1
  359. package/dist/tools/todo/create-task.js +1 -4
  360. package/dist/tools/todo/create-task.js.map +1 -1
  361. package/dist/tools/todo/get-list.d.ts +1 -1
  362. package/dist/tools/todo/get-list.d.ts.map +1 -1
  363. package/dist/tools/todo/get-list.js +1 -1
  364. package/dist/tools/todo/get-list.js.map +1 -1
  365. package/dist/tools/todo/get-lists.d.ts +1 -1
  366. package/dist/tools/todo/get-lists.d.ts.map +1 -1
  367. package/dist/tools/todo/get-lists.js +1 -1
  368. package/dist/tools/todo/get-lists.js.map +1 -1
  369. package/dist/tools/todo/index.d.ts +1 -3
  370. package/dist/tools/todo/index.d.ts.map +1 -1
  371. package/dist/tools/todo/index.js +0 -1
  372. package/dist/tools/todo/index.js.map +1 -1
  373. package/dist/tools/todo/remove-list.d.ts +1 -2
  374. package/dist/tools/todo/remove-list.d.ts.map +1 -1
  375. package/dist/tools/todo/remove-list.js +1 -4
  376. package/dist/tools/todo/remove-list.js.map +1 -1
  377. package/dist/tools/todo/remove-task.d.ts +1 -2
  378. package/dist/tools/todo/remove-task.d.ts.map +1 -1
  379. package/dist/tools/todo/remove-task.js +1 -4
  380. package/dist/tools/todo/remove-task.js.map +1 -1
  381. package/dist/tools/utils/delay.d.ts +1 -1
  382. package/dist/tools/utils/delay.d.ts.map +1 -1
  383. package/dist/tools/utils/get-current-time.d.ts +1 -1
  384. package/dist/tools/utils/get-current-time.d.ts.map +1 -1
  385. package/dist/tools/utils/index.d.ts +1 -1
  386. package/dist/tools/utils/index.d.ts.map +1 -1
  387. package/dist/tools/utils/read-image.d.ts +12 -7
  388. package/dist/tools/utils/read-image.d.ts.map +1 -1
  389. package/dist/tools/utils/read-image.js +27 -17
  390. package/dist/tools/utils/read-image.js.map +1 -1
  391. package/docs/agents.md +57 -26
  392. package/docs/api-reference.md +12 -13
  393. package/docs/getting-started.md +2 -2
  394. package/docs/mcp-architecture.md +15 -3
  395. package/docs/providers.md +119 -16
  396. package/docs/streaming.md +19 -2
  397. package/docs/tools.md +41 -8
  398. package/package.json +1 -1
@@ -1,156 +1,161 @@
1
- import { test } from "node:test";
1
+ import { describe, test } from "node:test";
2
2
  import assert from "node:assert/strict";
3
3
  import { AIProvider, AgentReportTool, AgentTools, MCPClient, MCPConnection, MCPServer, WorkerAgent, } from "../../../index.js";
4
- /**
5
- * Returns a fixed, scripted response (or repeats the last one once
6
- * exhausted) instead of calling a real model — lets the agent-management
7
- * tools be tested end to end (hire -> prompt -> worker's own tool loop ->
8
- * report) with no network access.
9
- */
10
- class ScriptedProvider extends AIProvider {
11
- #responses;
12
- #calls = 0;
13
- constructor(responses) {
14
- super();
15
- this.#responses = responses;
16
- }
17
- async chat(_messages, streamCallback, _tools) {
18
- const response = this.#responses[Math.min(this.#calls, this.#responses.length - 1)];
19
- this.#calls++;
20
- if (streamCallback) {
21
- if (response.content) {
22
- await streamCallback({ role: "assistant", content: response.content, done: false });
4
+ describe("agent/agent", () => {
5
+ /**
6
+ * Returns a fixed, scripted response (or repeats the last one once
7
+ * exhausted) instead of calling a real model — lets the agent-management
8
+ * tools be tested end to end (hire -> prompt -> worker's own tool loop ->
9
+ * report) with no network access.
10
+ */
11
+ class ScriptedProvider extends AIProvider {
12
+ #responses;
13
+ #calls = 0;
14
+ constructor(responses) {
15
+ super();
16
+ this.#responses = responses;
17
+ }
18
+ async chat(_messages, streamCallback, _tools) {
19
+ const response = this.#responses[Math.min(this.#calls, this.#responses.length - 1)];
20
+ this.#calls++;
21
+ if (streamCallback) {
22
+ if (response.content) {
23
+ await streamCallback({ role: "assistant", content: response.content, done: false });
24
+ }
25
+ await streamCallback({
26
+ role: "assistant",
27
+ content: "",
28
+ done: true,
29
+ ...(response.toolCalls?.length ? { toolCalls: response.toolCalls } : {}),
30
+ });
23
31
  }
24
- await streamCallback({
25
- role: "assistant",
26
- content: "",
27
- done: true,
28
- ...(response.toolCalls?.length ? { toolCalls: response.toolCalls } : {}),
29
- });
32
+ return response;
33
+ }
34
+ getCapabilities() {
35
+ return { supportsTools: true, supportsImages: false, contextWindow: 200_000, safeUsageRatio: 0.9 };
36
+ }
37
+ setOption(key) {
38
+ throw new Error(`ScriptedProvider does not support setting option "${key}"`);
30
39
  }
31
- return response;
32
40
  }
33
- getCapabilities() {
34
- return { supportsTools: true, supportsImages: false, contextWindow: 200_000, safeUsageRatio: 0.9 };
41
+ function buildWorker(name, description, responses) {
42
+ const connection = new MCPConnection();
43
+ const server = new MCPServer(connection);
44
+ const reportTool = AgentReportTool();
45
+ server.registerTool(reportTool);
46
+ const mcpClient = new MCPClient(`worker-${name}`, connection);
47
+ return new WorkerAgent({
48
+ name,
49
+ description,
50
+ rating: { backend: 8, frontend: 3 },
51
+ instruction: "You are a worker agent.",
52
+ aiProvider: new ScriptedProvider(responses),
53
+ mcpClient,
54
+ allowedTools: [reportTool],
55
+ });
35
56
  }
36
- }
37
- function buildWorker(name, description, responses) {
38
- const connection = new MCPConnection();
39
- const server = new MCPServer(connection);
40
- const reportTool = AgentReportTool();
41
- server.registerTool(reportTool);
42
- const mcpClient = new MCPClient(`worker-${name}`, connection);
43
- return new WorkerAgent({
44
- name,
45
- description,
46
- rating: { backend: 8, frontend: 3 },
47
- instruction: "You are a worker agent.",
48
- aiProvider: new ScriptedProvider(responses),
49
- mcpClient,
50
- allowedTools: [reportTool],
57
+ test("AgentTools: agent-list shows every worker, unhired by default", async () => {
58
+ const worker = buildWorker("backend-worker", "Handles backend tasks.", [{ content: "unused", inputMissTokens: 0, inputCacheTokens: 0, outputTokens: 0 }]);
59
+ const [listTool] = AgentTools([worker]);
60
+ const result = await listTool.getOptions().execute("env", {});
61
+ assert.strictEqual(result.agents.length, 1);
62
+ assert.strictEqual(result.agents[0].name, "backend-worker");
63
+ assert.strictEqual(result.agents[0].description, "Handles backend tasks.");
64
+ assert.deepStrictEqual(result.agents[0].rating, { backend: 8, frontend: 3 });
65
+ assert.strictEqual(result.agents[0].hired, false);
66
+ });
67
+ test("AgentTools: agent-hire marks a worker hired, reflected in agent-list", async () => {
68
+ const worker = buildWorker("backend-worker", "Handles backend tasks.", [{ content: "unused", inputMissTokens: 0, inputCacheTokens: 0, outputTokens: 0 }]);
69
+ const [listTool, hireTool] = AgentTools([worker]);
70
+ const hireResult = await hireTool.getOptions().execute("env", { name: "backend-worker" });
71
+ assert.deepStrictEqual(hireResult, { hired: true, name: "backend-worker" });
72
+ const listResult = await listTool.getOptions().execute("env", {});
73
+ assert.strictEqual(listResult.agents[0].hired, true);
74
+ });
75
+ test("AgentTools: agent-hire on an unknown name throws", async () => {
76
+ const worker = buildWorker("backend-worker", "Handles backend tasks.", [{ content: "unused", inputMissTokens: 0, inputCacheTokens: 0, outputTokens: 0 }]);
77
+ const [, hireTool] = AgentTools([worker]);
78
+ await assert.rejects(() => hireTool.getOptions().execute("env", { name: "nonexistent" }), /no worker agent named "nonexistent"/);
79
+ });
80
+ test("AgentTools: agent-prompt on a worker that isn't hired yet throws", async () => {
81
+ const worker = buildWorker("backend-worker", "Handles backend tasks.", [{ content: "unused", inputMissTokens: 0, inputCacheTokens: 0, outputTokens: 0 }]);
82
+ const [, , promptTool] = AgentTools([worker]);
83
+ await assert.rejects(() => promptTool.getOptions().execute("env", { name: "backend-worker", prompt: "do it" }), /is not hired yet/);
84
+ });
85
+ test("AgentTools: agent-prompt runs the worker and returns its agent-report text", async () => {
86
+ const reportCall = { id: "call-1", name: "agent-report", inputs: { report: "answer is 42" } };
87
+ const worker = buildWorker("backend-worker", "Handles backend tasks.", [
88
+ { content: "", inputMissTokens: 10, inputCacheTokens: 0, outputTokens: 5, toolCalls: [reportCall] },
89
+ ]);
90
+ const [, hireTool, promptTool] = AgentTools([worker]);
91
+ await hireTool.getOptions().execute("env", { name: "backend-worker" });
92
+ const result = await promptTool.getOptions().execute("env", { name: "backend-worker", prompt: "what is the answer?" });
93
+ assert.strictEqual(result.reported, true);
94
+ assert.strictEqual(result.report, "answer is 42");
95
+ });
96
+ test("AgentTools: agent-prompt falls back to the worker's last assistant text when it never calls agent-report", async () => {
97
+ const worker = buildWorker("backend-worker", "Handles backend tasks.", [
98
+ { content: "I looked into it, no tool needed.", inputMissTokens: 10, inputCacheTokens: 0, outputTokens: 5 },
99
+ ]);
100
+ const [, hireTool, promptTool] = AgentTools([worker]);
101
+ await hireTool.getOptions().execute("env", { name: "backend-worker" });
102
+ const result = await promptTool.getOptions().execute("env", { name: "backend-worker", prompt: "check something" });
103
+ assert.strictEqual(result.reported, false);
104
+ assert.strictEqual(result.report, "I looked into it, no tool needed.");
105
+ });
106
+ test("AgentTools: a second agent-prompt call doesn't resurface a stale report from the first call", async () => {
107
+ const reportCall = { id: "call-1", name: "agent-report", inputs: { report: "first answer" } };
108
+ const worker = buildWorker("backend-worker", "Handles backend tasks.", [
109
+ { content: "", inputMissTokens: 10, inputCacheTokens: 0, outputTokens: 5, toolCalls: [reportCall] },
110
+ { content: "just acknowledging, no report this time", inputMissTokens: 10, inputCacheTokens: 0, outputTokens: 5 },
111
+ ]);
112
+ const [, hireTool, promptTool] = AgentTools([worker]);
113
+ await hireTool.getOptions().execute("env", { name: "backend-worker" });
114
+ await promptTool.getOptions().execute("env", { name: "backend-worker", prompt: "first task" });
115
+ const second = await promptTool.getOptions().execute("env", { name: "backend-worker", prompt: "second task" });
116
+ assert.strictEqual(second.reported, false);
117
+ assert.strictEqual(second.report, "just acknowledging, no report this time");
118
+ });
119
+ test("AgentTools: duplicate worker names are rejected at construction", async () => {
120
+ const workerA = buildWorker("dup", "A", [{ content: "x", inputMissTokens: 0, inputCacheTokens: 0, outputTokens: 0 }]);
121
+ const workerB = buildWorker("dup", "B", [{ content: "x", inputMissTokens: 0, inputCacheTokens: 0, outputTokens: 0 }]);
122
+ assert.throws(() => AgentTools([workerA, workerB]), /duplicate worker agent name "dup"/);
123
+ });
124
+ test("AgentTools: maxHired is mentioned dynamically in agent-hire's description", async () => {
125
+ const worker = buildWorker("backend-worker", "Handles backend tasks.", [{ content: "x", inputMissTokens: 0, inputCacheTokens: 0, outputTokens: 0 }]);
126
+ const [, hireTool] = AgentTools([worker], { maxHired: 2 });
127
+ assert.match(hireTool.getOptions().description, /At most 2 worker agents may be hired at once/);
128
+ });
129
+ test("AgentTools: agent-hire has no limit note when maxHired is omitted", async () => {
130
+ const worker = buildWorker("backend-worker", "Handles backend tasks.", [{ content: "x", inputMissTokens: 0, inputCacheTokens: 0, outputTokens: 0 }]);
131
+ const [, hireTool] = AgentTools([worker]);
132
+ assert.doesNotMatch(hireTool.getOptions().description, /At most/);
133
+ });
134
+ test("AgentTools: hiring beyond maxHired throws, but re-hiring an already-hired worker doesn't count against it", async () => {
135
+ const workerA = buildWorker("worker-a", "A", [{ content: "x", inputMissTokens: 0, inputCacheTokens: 0, outputTokens: 0 }]);
136
+ const workerB = buildWorker("worker-b", "B", [{ content: "x", inputMissTokens: 0, inputCacheTokens: 0, outputTokens: 0 }]);
137
+ const workerC = buildWorker("worker-c", "C", [{ content: "x", inputMissTokens: 0, inputCacheTokens: 0, outputTokens: 0 }]);
138
+ const [listTool, hireTool] = AgentTools([workerA, workerB, workerC], { maxHired: 1 });
139
+ await hireTool.getOptions().execute("env", { name: "worker-a" });
140
+ // re-hiring the same worker is a no-op, must not count twice against the limit
141
+ await hireTool.getOptions().execute("env", { name: "worker-a" });
142
+ await assert.rejects(() => hireTool.getOptions().execute("env", { name: "worker-b" }), /maximum of 1 hired agent\(s\) already reached/);
143
+ const listResult = await listTool.getOptions().execute("env", {});
144
+ assert.strictEqual(listResult.hiredCount, 1);
145
+ assert.strictEqual(listResult.maxHired, 1);
146
+ });
147
+ test("AgentTools: agent-list omits maxHired when no limit was configured", async () => {
148
+ const worker = buildWorker("backend-worker", "Handles backend tasks.", [{ content: "x", inputMissTokens: 0, inputCacheTokens: 0, outputTokens: 0 }]);
149
+ const [listTool] = AgentTools([worker]);
150
+ const result = await listTool.getOptions().execute("env", {});
151
+ assert.strictEqual(result.hiredCount, 0);
152
+ assert.strictEqual("maxHired" in result, false);
153
+ });
154
+ test("AgentTools: maxHired must be a positive integer when given", async () => {
155
+ const worker = buildWorker("backend-worker", "Handles backend tasks.", [{ content: "x", inputMissTokens: 0, inputCacheTokens: 0, outputTokens: 0 }]);
156
+ assert.throws(() => AgentTools([worker], { maxHired: 0 }), /maxHired must be a positive integer/);
157
+ assert.throws(() => AgentTools([worker], { maxHired: -1 }), /maxHired must be a positive integer/);
158
+ assert.throws(() => AgentTools([worker], { maxHired: 1.5 }), /maxHired must be a positive integer/);
51
159
  });
52
- }
53
- test("AgentTools: agent-list shows every worker, unhired by default", async () => {
54
- const worker = buildWorker("backend-worker", "Handles backend tasks.", [{ content: "unused", inputTokens: 0, outputTokens: 0 }]);
55
- const [listTool] = AgentTools([worker]);
56
- const result = await listTool.getOptions().execute("env", {});
57
- assert.strictEqual(result.agents.length, 1);
58
- assert.strictEqual(result.agents[0].name, "backend-worker");
59
- assert.strictEqual(result.agents[0].description, "Handles backend tasks.");
60
- assert.deepStrictEqual(result.agents[0].rating, { backend: 8, frontend: 3 });
61
- assert.strictEqual(result.agents[0].hired, false);
62
- });
63
- test("AgentTools: agent-hire marks a worker hired, reflected in agent-list", async () => {
64
- const worker = buildWorker("backend-worker", "Handles backend tasks.", [{ content: "unused", inputTokens: 0, outputTokens: 0 }]);
65
- const [listTool, hireTool] = AgentTools([worker]);
66
- const hireResult = await hireTool.getOptions().execute("env", { name: "backend-worker" });
67
- assert.deepStrictEqual(hireResult, { hired: true, name: "backend-worker" });
68
- const listResult = await listTool.getOptions().execute("env", {});
69
- assert.strictEqual(listResult.agents[0].hired, true);
70
- });
71
- test("AgentTools: agent-hire on an unknown name throws", async () => {
72
- const worker = buildWorker("backend-worker", "Handles backend tasks.", [{ content: "unused", inputTokens: 0, outputTokens: 0 }]);
73
- const [, hireTool] = AgentTools([worker]);
74
- await assert.rejects(() => hireTool.getOptions().execute("env", { name: "nonexistent" }), /no worker agent named "nonexistent"/);
75
- });
76
- test("AgentTools: agent-prompt on a worker that isn't hired yet throws", async () => {
77
- const worker = buildWorker("backend-worker", "Handles backend tasks.", [{ content: "unused", inputTokens: 0, outputTokens: 0 }]);
78
- const [, , promptTool] = AgentTools([worker]);
79
- await assert.rejects(() => promptTool.getOptions().execute("env", { name: "backend-worker", prompt: "do it" }), /is not hired yet/);
80
- });
81
- test("AgentTools: agent-prompt runs the worker and returns its agent-report text", async () => {
82
- const reportCall = { id: "call-1", name: "agent-report", inputs: { report: "answer is 42" } };
83
- const worker = buildWorker("backend-worker", "Handles backend tasks.", [
84
- { content: "", inputTokens: 10, outputTokens: 5, toolCalls: [reportCall] },
85
- ]);
86
- const [, hireTool, promptTool] = AgentTools([worker]);
87
- await hireTool.getOptions().execute("env", { name: "backend-worker" });
88
- const result = await promptTool.getOptions().execute("env", { name: "backend-worker", prompt: "what is the answer?" });
89
- assert.strictEqual(result.reported, true);
90
- assert.strictEqual(result.report, "answer is 42");
91
- });
92
- test("AgentTools: agent-prompt falls back to the worker's last assistant text when it never calls agent-report", async () => {
93
- const worker = buildWorker("backend-worker", "Handles backend tasks.", [
94
- { content: "I looked into it, no tool needed.", inputTokens: 10, outputTokens: 5 },
95
- ]);
96
- const [, hireTool, promptTool] = AgentTools([worker]);
97
- await hireTool.getOptions().execute("env", { name: "backend-worker" });
98
- const result = await promptTool.getOptions().execute("env", { name: "backend-worker", prompt: "check something" });
99
- assert.strictEqual(result.reported, false);
100
- assert.strictEqual(result.report, "I looked into it, no tool needed.");
101
- });
102
- test("AgentTools: a second agent-prompt call doesn't resurface a stale report from the first call", async () => {
103
- const reportCall = { id: "call-1", name: "agent-report", inputs: { report: "first answer" } };
104
- const worker = buildWorker("backend-worker", "Handles backend tasks.", [
105
- { content: "", inputTokens: 10, outputTokens: 5, toolCalls: [reportCall] },
106
- { content: "just acknowledging, no report this time", inputTokens: 10, outputTokens: 5 },
107
- ]);
108
- const [, hireTool, promptTool] = AgentTools([worker]);
109
- await hireTool.getOptions().execute("env", { name: "backend-worker" });
110
- await promptTool.getOptions().execute("env", { name: "backend-worker", prompt: "first task" });
111
- const second = await promptTool.getOptions().execute("env", { name: "backend-worker", prompt: "second task" });
112
- assert.strictEqual(second.reported, false);
113
- assert.strictEqual(second.report, "just acknowledging, no report this time");
114
- });
115
- test("AgentTools: duplicate worker names are rejected at construction", async () => {
116
- const workerA = buildWorker("dup", "A", [{ content: "x", inputTokens: 0, outputTokens: 0 }]);
117
- const workerB = buildWorker("dup", "B", [{ content: "x", inputTokens: 0, outputTokens: 0 }]);
118
- assert.throws(() => AgentTools([workerA, workerB]), /duplicate worker agent name "dup"/);
119
- });
120
- test("AgentTools: maxHired is mentioned dynamically in agent-hire's description", async () => {
121
- const worker = buildWorker("backend-worker", "Handles backend tasks.", [{ content: "x", inputTokens: 0, outputTokens: 0 }]);
122
- const [, hireTool] = AgentTools([worker], { maxHired: 2 });
123
- assert.match(hireTool.getOptions().description, /At most 2 worker agents may be hired at once/);
124
- });
125
- test("AgentTools: agent-hire has no limit note when maxHired is omitted", async () => {
126
- const worker = buildWorker("backend-worker", "Handles backend tasks.", [{ content: "x", inputTokens: 0, outputTokens: 0 }]);
127
- const [, hireTool] = AgentTools([worker]);
128
- assert.doesNotMatch(hireTool.getOptions().description, /At most/);
129
- });
130
- test("AgentTools: hiring beyond maxHired throws, but re-hiring an already-hired worker doesn't count against it", async () => {
131
- const workerA = buildWorker("worker-a", "A", [{ content: "x", inputTokens: 0, outputTokens: 0 }]);
132
- const workerB = buildWorker("worker-b", "B", [{ content: "x", inputTokens: 0, outputTokens: 0 }]);
133
- const workerC = buildWorker("worker-c", "C", [{ content: "x", inputTokens: 0, outputTokens: 0 }]);
134
- const [listTool, hireTool] = AgentTools([workerA, workerB, workerC], { maxHired: 1 });
135
- await hireTool.getOptions().execute("env", { name: "worker-a" });
136
- // re-hiring the same worker is a no-op, must not count twice against the limit
137
- await hireTool.getOptions().execute("env", { name: "worker-a" });
138
- await assert.rejects(() => hireTool.getOptions().execute("env", { name: "worker-b" }), /maximum of 1 hired agent\(s\) already reached/);
139
- const listResult = await listTool.getOptions().execute("env", {});
140
- assert.strictEqual(listResult.hiredCount, 1);
141
- assert.strictEqual(listResult.maxHired, 1);
142
- });
143
- test("AgentTools: agent-list omits maxHired when no limit was configured", async () => {
144
- const worker = buildWorker("backend-worker", "Handles backend tasks.", [{ content: "x", inputTokens: 0, outputTokens: 0 }]);
145
- const [listTool] = AgentTools([worker]);
146
- const result = await listTool.getOptions().execute("env", {});
147
- assert.strictEqual(result.hiredCount, 0);
148
- assert.strictEqual("maxHired" in result, false);
149
- });
150
- test("AgentTools: maxHired must be a positive integer when given", async () => {
151
- const worker = buildWorker("backend-worker", "Handles backend tasks.", [{ content: "x", inputTokens: 0, outputTokens: 0 }]);
152
- assert.throws(() => AgentTools([worker], { maxHired: 0 }), /maxHired must be a positive integer/);
153
- assert.throws(() => AgentTools([worker], { maxHired: -1 }), /maxHired must be a positive integer/);
154
- assert.throws(() => AgentTools([worker], { maxHired: 1.5 }), /maxHired must be a positive integer/);
155
160
  });
156
161
  //# sourceMappingURL=agent-tools.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-tools.test.js","sourceRoot":"","sources":["../../../../src/tests/tools/agent/agent-tools.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-tools.test.js","sourceRoot":"","sources":["../../../../src/tests/tools/agent/agent-tools.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Small node scripts used as bash-run/bash-wait/etc test subjects, run via
3
+ * `node "<script>"` so tests never depend on shell-quoting differences
4
+ * between cmd.exe (Windows) and /bin/bash (posix).
5
+ */
6
+ export interface BashFixtures {
7
+ dir: string;
8
+ echo: string;
9
+ fail: string;
10
+ sleep: string;
11
+ delayedEcho: string;
12
+ stdinEcho: string;
13
+ }
14
+ export declare function createBashFixtures(): BashFixtures;
15
+ export declare function nodeCmd(scriptPath: string): string;
16
+ //# sourceMappingURL=fixtures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../../../src/tests/tools/bash/fixtures.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,MAAM,WAAW,YAAY;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,kBAAkB,IAAI,YAAY,CAuBjD;AAED,wBAAgB,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAElD"}
@@ -0,0 +1,22 @@
1
+ import { mkdtempSync, writeFileSync } from "fs";
2
+ import { tmpdir } from "os";
3
+ import { join } from "path";
4
+ export function createBashFixtures() {
5
+ const dir = mkdtempSync(join(tmpdir(), "orbitx-bash-fixtures-"));
6
+ const echo = join(dir, "echo.js");
7
+ writeFileSync(echo, "console.log('hello from stdout');");
8
+ const fail = join(dir, "fail.js");
9
+ writeFileSync(fail, "process.exit(3);");
10
+ const sleep = join(dir, "sleep.js");
11
+ writeFileSync(sleep, "setTimeout(() => {}, 4000);");
12
+ const delayedEcho = join(dir, "delayed-echo.js");
13
+ writeFileSync(delayedEcho, "setTimeout(() => console.log('done'), 300);");
14
+ const stdinEcho = join(dir, "stdin-echo.js");
15
+ writeFileSync(stdinEcho, "process.stdin.once('data', (d) => { console.log('got:' + d.toString().trim()); process.exit(0); });" +
16
+ "setTimeout(() => process.exit(0), 4000);");
17
+ return { dir, echo, fail, sleep, delayedEcho, stdinEcho };
18
+ }
19
+ export function nodeCmd(scriptPath) {
20
+ return `node "${scriptPath}"`;
21
+ }
22
+ //# sourceMappingURL=fixtures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../../../../src/tests/tools/bash/fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAgB5B,MAAM,UAAU,kBAAkB;IAC9B,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,uBAAuB,CAAC,CAAC,CAAC;IAEjE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAClC,aAAa,CAAC,IAAI,EAAE,mCAAmC,CAAC,CAAC;IAEzD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAClC,aAAa,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;IAExC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACpC,aAAa,CAAC,KAAK,EAAE,6BAA6B,CAAC,CAAC;IAEpD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IACjD,aAAa,CAAC,WAAW,EAAE,6CAA6C,CAAC,CAAC;IAE1E,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IAC7C,aAAa,CACT,SAAS,EACT,qGAAqG;QACrG,0CAA0C,CAC7C,CAAC;IAEF,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,UAAkB;IACtC,OAAO,SAAS,UAAU,GAAG,CAAC;AAClC,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Test-only hard cleanup for a bash-run process, called from each test
3
+ * file's after() once every test has finished (not a timer inside the
4
+ * spawned script itself).
5
+ *
6
+ * bash-run spawns via a shell wrapper (cmd.exe /c "..." on win32, /bin/bash
7
+ * -c "..." elsewhere). The bash-terminate tool only kills that immediate
8
+ * wrapper process; on win32 that can leave the wrapper's own child (e.g. the
9
+ * `node "script.js"` it launched) running as an orphan holding onto its
10
+ * inherited stdio pipes, which is enough to keep the whole test run from
11
+ * exiting. taskkill's /T flag walks the OS-tracked process tree instead of
12
+ * just the one PID, so it reaps that grandchild too.
13
+ *
14
+ * Reaches into the tool's internal process-manager module directly (not
15
+ * through the public index.ts surface) since this is test-cleanup plumbing,
16
+ * not something the tool itself needs to expose. Safe to call on a
17
+ * processId that's already finished, been removed, or never existed.
18
+ */
19
+ export declare function killProcessTree(processId: string): void;
20
+ export declare function killProcessTrees(processIds: string[]): void;
21
+ //# sourceMappingURL=kill-tree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kill-tree.d.ts","sourceRoot":"","sources":["../../../../src/tests/tools/bash/kill-tree.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAkBvD;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,CAE3D"}
@@ -0,0 +1,47 @@
1
+ import { execFileSync } from "child_process";
2
+ import { getProcess } from "../../../tools/bash/process-manager.js";
3
+ /**
4
+ * Test-only hard cleanup for a bash-run process, called from each test
5
+ * file's after() once every test has finished (not a timer inside the
6
+ * spawned script itself).
7
+ *
8
+ * bash-run spawns via a shell wrapper (cmd.exe /c "..." on win32, /bin/bash
9
+ * -c "..." elsewhere). The bash-terminate tool only kills that immediate
10
+ * wrapper process; on win32 that can leave the wrapper's own child (e.g. the
11
+ * `node "script.js"` it launched) running as an orphan holding onto its
12
+ * inherited stdio pipes, which is enough to keep the whole test run from
13
+ * exiting. taskkill's /T flag walks the OS-tracked process tree instead of
14
+ * just the one PID, so it reaps that grandchild too.
15
+ *
16
+ * Reaches into the tool's internal process-manager module directly (not
17
+ * through the public index.ts surface) since this is test-cleanup plumbing,
18
+ * not something the tool itself needs to expose. Safe to call on a
19
+ * processId that's already finished, been removed, or never existed.
20
+ */
21
+ export function killProcessTree(processId) {
22
+ let pid;
23
+ try {
24
+ pid = getProcess(processId).child.pid;
25
+ }
26
+ catch {
27
+ return;
28
+ }
29
+ if (!pid)
30
+ return;
31
+ try {
32
+ if (process.platform === "win32") {
33
+ execFileSync("taskkill", ["/PID", String(pid), "/T", "/F"], { stdio: "ignore" });
34
+ }
35
+ else {
36
+ process.kill(pid, "SIGKILL");
37
+ }
38
+ }
39
+ catch {
40
+ // already exited between the lookup and the kill attempt
41
+ }
42
+ }
43
+ export function killProcessTrees(processIds) {
44
+ for (const id of processIds)
45
+ killProcessTree(id);
46
+ }
47
+ //# sourceMappingURL=kill-tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kill-tree.js","sourceRoot":"","sources":["../../../../src/tests/tools/bash/kill-tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AAEpE;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC7C,IAAI,GAAuB,CAAC;IAC5B,IAAI,CAAC;QACD,GAAG,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACL,OAAO;IACX,CAAC;IACD,IAAI,CAAC,GAAG;QAAE,OAAO;IAEjB,IAAI,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YAC/B,YAAY,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrF,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACjC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACL,yDAAyD;IAC7D,CAAC;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,UAAoB;IACjD,KAAK,MAAM,EAAE,IAAI,UAAU;QAAE,eAAe,CAAC,EAAE,CAAC,CAAC;AACrD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=list.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/tools/bash/list.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,43 @@
1
+ import { test, before, after, describe } from "node:test";
2
+ import assert from "node:assert/strict";
3
+ import { rmSync } from "fs";
4
+ import { BashRunTool, BashListTool, MCPClient, MCPConnection, MCPServer } from "../../../index.js";
5
+ import { createBashFixtures, nodeCmd } from "./fixtures.js";
6
+ import { killProcessTrees } from "./kill-tree.js";
7
+ describe("bash/list", () => {
8
+ let mcpConnection;
9
+ let mcpClient;
10
+ let mcpServer;
11
+ let fixtures;
12
+ let spawnedProcessIds;
13
+ before(async () => {
14
+ fixtures = createBashFixtures();
15
+ spawnedProcessIds = [];
16
+ mcpConnection = new MCPConnection();
17
+ mcpClient = new MCPClient("1234", mcpConnection);
18
+ mcpServer = new MCPServer(mcpConnection);
19
+ mcpServer.registerTool(BashRunTool());
20
+ mcpServer.registerTool(BashListTool());
21
+ });
22
+ after(async () => {
23
+ killProcessTrees(spawnedProcessIds);
24
+ mcpConnection?.close();
25
+ rmSync(fixtures.dir, { recursive: true, force: true });
26
+ });
27
+ test("BashListTool: lists a launched process with its status and command", async () => {
28
+ const command = nodeCmd(fixtures.echo);
29
+ const started = await mcpClient.callTool("bash-run", { command });
30
+ spawnedProcessIds.push(started.output.processId);
31
+ const result = await mcpClient.callTool("bash-list", {});
32
+ // The process table is a module-wide singleton shared across every bash
33
+ // test file in this run, so look up the specific entry rather than
34
+ // asserting on the list's total length.
35
+ const entry = result.output.processes.find((p) => p.processId === started.output.processId);
36
+ assert.ok(entry, "the just-started process should appear in bash-list");
37
+ assert.strictEqual(entry.command, command);
38
+ assert.strictEqual(entry.status, "exited");
39
+ assert.strictEqual(entry.exitCode, 0);
40
+ assert.strictEqual(typeof entry.startedAt, "number");
41
+ });
42
+ });
43
+ //# sourceMappingURL=list.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.test.js","sourceRoot":"","sources":["../../../../src/tests/tools/bash/list.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnG,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAqB,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACvB,IAAI,aAAwC,CAAC;IAC7C,IAAI,SAAoB,CAAC;IACzB,IAAI,SAAoB,CAAC;IACzB,IAAI,QAAsB,CAAC;IAC3B,IAAI,iBAA2B,CAAC;IAEhC,MAAM,CAAC,KAAK,IAAI,EAAE;QACd,QAAQ,GAAG,kBAAkB,EAAE,CAAC;QAChC,iBAAiB,GAAG,EAAE,CAAC;QAEvB,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;QACpC,SAAS,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACjD,SAAS,GAAG,IAAI,SAAS,CAAC,aAAa,CAAC,CAAC;QACzC,SAAS,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;QACtC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,KAAK,IAAI,EAAE;QACb,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;QACpC,aAAa,EAAE,KAAK,EAAE,CAAC;QACvB,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;QAClF,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAClE,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAEjD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAEzD,wEAAwE;QACxE,mEAAmE;QACnE,wCAAwC;QACxC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACjG,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,qDAAqD,CAAC,CAAC;QACxE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3C,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC3C,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACtC,MAAM,CAAC,WAAW,CAAC,OAAO,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=logs.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/tools/bash/logs.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,48 @@
1
+ import { test, before, after, describe } from "node:test";
2
+ import assert from "node:assert/strict";
3
+ import { rmSync, writeFileSync } from "fs";
4
+ import { join } from "path";
5
+ import { BashRunTool, BashLogsTool, MCPClient, MCPConnection, MCPServer } from "../../../index.js";
6
+ import { createBashFixtures, nodeCmd } from "./fixtures.js";
7
+ import { killProcessTrees } from "./kill-tree.js";
8
+ describe("bash/logs", () => {
9
+ let mcpConnection;
10
+ let mcpClient;
11
+ let mcpServer;
12
+ let fixtures;
13
+ let processId;
14
+ before(async () => {
15
+ fixtures = createBashFixtures();
16
+ const multiline = join(fixtures.dir, "multiline.js");
17
+ // a single console.log call -> a single stdout write -> deterministic chunking
18
+ writeFileSync(multiline, "console.log('line1\\nline2\\nline3');");
19
+ mcpConnection = new MCPConnection();
20
+ mcpClient = new MCPClient("1234", mcpConnection);
21
+ mcpServer = new MCPServer(mcpConnection);
22
+ mcpServer.registerTool(BashRunTool());
23
+ mcpServer.registerTool(BashLogsTool());
24
+ const result = await mcpClient.callTool("bash-run", { command: nodeCmd(multiline) });
25
+ processId = result.output.processId;
26
+ });
27
+ after(async () => {
28
+ killProcessTrees([processId]);
29
+ mcpConnection?.close();
30
+ rmSync(fixtures.dir, { recursive: true, force: true });
31
+ });
32
+ test("BashLogsTool: returns the full combined log by default", async () => {
33
+ const result = await mcpClient.callTool("bash-logs", { processId });
34
+ assert.strictEqual(result.output.status, "exited");
35
+ assert.match(result.output.content, /line1[\s\S]*line2[\s\S]*line3/);
36
+ // 3 printed lines plus the trailing empty line from console.log's newline
37
+ assert.strictEqual(result.output.totalLines, 4);
38
+ });
39
+ test("BashLogsTool: pages through the log using offsetLine/limitLine", async () => {
40
+ const result = await mcpClient.callTool("bash-logs", { processId, offsetLine: 1, limitLine: 2 });
41
+ assert.strictEqual(result.output.content, "line2\nline3");
42
+ });
43
+ test("BashLogsTool: an unknown processId surfaces a descriptive error", async () => {
44
+ const result = await mcpClient.callTool("bash-logs", { processId: "does-not-exist" });
45
+ assert.match(result.output.error, /no bash process found with id/);
46
+ });
47
+ });
48
+ //# sourceMappingURL=logs.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.test.js","sourceRoot":"","sources":["../../../../src/tests/tools/bash/logs.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=run.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/tools/bash/run.test.ts"],"names":[],"mappings":""}