orbitx 0.0.8 → 0.1.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 (398) hide show
  1. package/Readme.md +227 -67
  2. package/dist/core/agent-providers.d.ts +16 -0
  3. package/dist/core/agent-providers.d.ts.map +1 -0
  4. package/dist/core/agent-providers.js +21 -0
  5. package/dist/core/agent-providers.js.map +1 -0
  6. package/dist/core/ai-provider.d.ts +69 -1
  7. package/dist/core/ai-provider.d.ts.map +1 -1
  8. package/dist/core/ai-provider.js.map +1 -1
  9. package/dist/core/base-agent.d.ts +8 -4
  10. package/dist/core/base-agent.d.ts.map +1 -1
  11. package/dist/core/base-agent.js +220 -88
  12. package/dist/core/base-agent.js.map +1 -1
  13. package/dist/core/deepseek-provider.d.ts +10 -3
  14. package/dist/core/deepseek-provider.d.ts.map +1 -1
  15. package/dist/core/deepseek-provider.js +144 -39
  16. package/dist/core/deepseek-provider.js.map +1 -1
  17. package/dist/core/image-describer.d.ts +13 -0
  18. package/dist/core/image-describer.d.ts.map +1 -0
  19. package/dist/core/image-describer.js +33 -0
  20. package/dist/core/image-describer.js.map +1 -0
  21. package/dist/core/mcp-client.d.ts +17 -4
  22. package/dist/core/mcp-client.d.ts.map +1 -1
  23. package/dist/core/mcp-client.js +32 -16
  24. package/dist/core/mcp-client.js.map +1 -1
  25. package/dist/core/mcp-computer.d.ts +10 -2
  26. package/dist/core/mcp-computer.d.ts.map +1 -1
  27. package/dist/core/mcp-computer.js +108 -2
  28. package/dist/core/mcp-computer.js.map +1 -1
  29. package/dist/core/mcp-fs-storage.d.ts +9 -0
  30. package/dist/core/mcp-fs-storage.d.ts.map +1 -0
  31. package/dist/core/mcp-fs-storage.js +28 -0
  32. package/dist/core/mcp-fs-storage.js.map +1 -0
  33. package/dist/core/mcp-rng.d.ts +8 -0
  34. package/dist/core/mcp-rng.d.ts.map +1 -0
  35. package/dist/core/mcp-rng.js +15 -0
  36. package/dist/core/mcp-rng.js.map +1 -0
  37. package/dist/core/mcp-server.d.ts +8 -4
  38. package/dist/core/mcp-server.d.ts.map +1 -1
  39. package/dist/core/mcp-server.js +20 -3
  40. package/dist/core/mcp-server.js.map +1 -1
  41. package/dist/core/mcp-storage.d.ts +6 -0
  42. package/dist/core/mcp-storage.d.ts.map +1 -0
  43. package/dist/core/mcp-storage.js +4 -0
  44. package/dist/core/mcp-storage.js.map +1 -0
  45. package/dist/core/mcp.d.ts +37 -3
  46. package/dist/core/mcp.d.ts.map +1 -1
  47. package/dist/core/mcp.js +42 -1
  48. package/dist/core/mcp.js.map +1 -1
  49. package/dist/core/ollama-provider.d.ts +10 -3
  50. package/dist/core/ollama-provider.d.ts.map +1 -1
  51. package/dist/core/ollama-provider.js +122 -41
  52. package/dist/core/ollama-provider.js.map +1 -1
  53. package/dist/core/retry.d.ts +10 -0
  54. package/dist/core/retry.d.ts.map +1 -0
  55. package/dist/core/retry.js +39 -0
  56. package/dist/core/retry.js.map +1 -0
  57. package/dist/core/skill.d.ts +3 -0
  58. package/dist/core/skill.d.ts.map +1 -1
  59. package/dist/core/skill.js.map +1 -1
  60. package/dist/core/tool-schema-translator.d.ts +10 -0
  61. package/dist/core/tool-schema-translator.d.ts.map +1 -0
  62. package/dist/core/tool-schema-translator.js +29 -0
  63. package/dist/core/tool-schema-translator.js.map +1 -0
  64. package/dist/index.d.ts +37 -6
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +28 -5
  67. package/dist/index.js.map +1 -1
  68. package/dist/sandbox.d.ts +2 -0
  69. package/dist/sandbox.d.ts.map +1 -0
  70. package/dist/sandbox.js +27 -0
  71. package/dist/sandbox.js.map +1 -0
  72. package/dist/skills/backend-security.d.ts +4 -0
  73. package/dist/skills/backend-security.d.ts.map +1 -0
  74. package/dist/skills/backend-security.js +74 -0
  75. package/dist/skills/backend-security.js.map +1 -0
  76. package/dist/skills/big-task.d.ts +4 -0
  77. package/dist/skills/big-task.d.ts.map +1 -0
  78. package/dist/skills/big-task.js +66 -0
  79. package/dist/skills/big-task.js.map +1 -0
  80. package/dist/skills/code-verification.d.ts +4 -0
  81. package/dist/skills/code-verification.d.ts.map +1 -0
  82. package/dist/skills/code-verification.js +59 -0
  83. package/dist/skills/code-verification.js.map +1 -0
  84. package/dist/skills/long-task-efficiency.d.ts +4 -0
  85. package/dist/skills/long-task-efficiency.d.ts.map +1 -0
  86. package/dist/skills/long-task-efficiency.js +50 -0
  87. package/dist/skills/long-task-efficiency.js.map +1 -0
  88. package/dist/skills/node-backend.d.ts +4 -0
  89. package/dist/skills/node-backend.d.ts.map +1 -0
  90. package/dist/skills/node-backend.js +110 -0
  91. package/dist/skills/node-backend.js.map +1 -0
  92. package/dist/skills/planner.d.ts +4 -0
  93. package/dist/skills/planner.d.ts.map +1 -0
  94. package/dist/skills/planner.js +49 -0
  95. package/dist/skills/planner.js.map +1 -0
  96. package/dist/skills/present.d.ts +4 -0
  97. package/dist/skills/present.d.ts.map +1 -0
  98. package/dist/skills/present.js +56 -0
  99. package/dist/skills/present.js.map +1 -0
  100. package/dist/skills/question-answer.d.ts +4 -0
  101. package/dist/skills/question-answer.d.ts.map +1 -0
  102. package/dist/skills/question-answer.js +55 -0
  103. package/dist/skills/question-answer.js.map +1 -0
  104. package/dist/skills/react-frontend.d.ts +4 -0
  105. package/dist/skills/react-frontend.d.ts.map +1 -0
  106. package/dist/skills/react-frontend.js +111 -0
  107. package/dist/skills/react-frontend.js.map +1 -0
  108. package/dist/skills/research.d.ts +4 -0
  109. package/dist/skills/research.d.ts.map +1 -0
  110. package/dist/skills/research.js +81 -0
  111. package/dist/skills/research.js.map +1 -0
  112. package/dist/skills/shopping.d.ts +4 -0
  113. package/dist/skills/shopping.d.ts.map +1 -0
  114. package/dist/skills/shopping.js +71 -0
  115. package/dist/skills/shopping.js.map +1 -0
  116. package/dist/skills/ui-ux-design.d.ts +4 -0
  117. package/dist/skills/ui-ux-design.d.ts.map +1 -0
  118. package/dist/skills/ui-ux-design.js +70 -0
  119. package/dist/skills/ui-ux-design.js.map +1 -0
  120. package/dist/skills/web-end-to-end-test.d.ts +4 -0
  121. package/dist/skills/web-end-to-end-test.d.ts.map +1 -0
  122. package/dist/skills/web-end-to-end-test.js +76 -0
  123. package/dist/skills/web-end-to-end-test.js.map +1 -0
  124. package/dist/templates/simple.d.ts +1 -1
  125. package/dist/templates/simple.d.ts.map +1 -1
  126. package/dist/templates/simple.js +4 -0
  127. package/dist/templates/simple.js.map +1 -1
  128. package/dist/tests/mcp.test.js +2 -54
  129. package/dist/tests/mcp.test.js.map +1 -1
  130. package/dist/tools/bash/index.d.ts +10 -0
  131. package/dist/tools/bash/index.d.ts.map +1 -0
  132. package/dist/tools/bash/index.js +22 -0
  133. package/dist/tools/bash/index.js.map +1 -0
  134. package/dist/tools/bash/interaction.d.ts +29 -0
  135. package/dist/tools/bash/interaction.d.ts.map +1 -0
  136. package/dist/tools/bash/interaction.js +13 -0
  137. package/dist/tools/bash/interaction.js.map +1 -0
  138. package/dist/tools/bash/list.d.ts +4 -0
  139. package/dist/tools/bash/list.d.ts.map +1 -0
  140. package/dist/tools/bash/list.js +23 -0
  141. package/dist/tools/bash/list.js.map +1 -0
  142. package/dist/tools/bash/logs.d.ts +4 -0
  143. package/dist/tools/bash/logs.d.ts.map +1 -0
  144. package/dist/tools/bash/logs.js +47 -0
  145. package/dist/tools/bash/logs.js.map +1 -0
  146. package/dist/tools/bash/process-manager.d.ts +35 -0
  147. package/dist/tools/bash/process-manager.d.ts.map +1 -0
  148. package/dist/tools/bash/process-manager.js +137 -0
  149. package/dist/tools/bash/process-manager.js.map +1 -0
  150. package/dist/tools/bash/run.d.ts +5 -0
  151. package/dist/tools/bash/run.d.ts.map +1 -0
  152. package/dist/tools/bash/run.js +57 -0
  153. package/dist/tools/bash/run.js.map +1 -0
  154. package/dist/tools/bash/terminate.d.ts +5 -0
  155. package/dist/tools/bash/terminate.d.ts.map +1 -0
  156. package/dist/tools/bash/terminate.js +39 -0
  157. package/dist/tools/bash/terminate.js.map +1 -0
  158. package/dist/tools/bash/wait.d.ts +5 -0
  159. package/dist/tools/bash/wait.d.ts.map +1 -0
  160. package/dist/tools/bash/wait.js +50 -0
  161. package/dist/tools/bash/wait.js.map +1 -0
  162. package/dist/tools/bash/write-input.d.ts +5 -0
  163. package/dist/tools/bash/write-input.d.ts.map +1 -0
  164. package/dist/tools/bash/write-input.js +47 -0
  165. package/dist/tools/bash/write-input.js.map +1 -0
  166. package/dist/tools/browser/click.d.ts +5 -0
  167. package/dist/tools/browser/click.d.ts.map +1 -0
  168. package/dist/tools/browser/click.js +44 -0
  169. package/dist/tools/browser/click.js.map +1 -0
  170. package/dist/tools/browser/console.d.ts +4 -0
  171. package/dist/tools/browser/console.d.ts.map +1 -0
  172. package/dist/tools/browser/console.js +41 -0
  173. package/dist/tools/browser/console.js.map +1 -0
  174. package/dist/tools/browser/create-session.d.ts +5 -0
  175. package/dist/tools/browser/create-session.d.ts.map +1 -0
  176. package/dist/tools/browser/create-session.js +30 -0
  177. package/dist/tools/browser/create-session.js.map +1 -0
  178. package/dist/tools/browser/evaluate-safe.d.ts +10 -0
  179. package/dist/tools/browser/evaluate-safe.d.ts.map +1 -0
  180. package/dist/tools/browser/evaluate-safe.js +65 -0
  181. package/dist/tools/browser/evaluate-safe.js.map +1 -0
  182. package/dist/tools/browser/fill.d.ts +5 -0
  183. package/dist/tools/browser/fill.d.ts.map +1 -0
  184. package/dist/tools/browser/fill.js +78 -0
  185. package/dist/tools/browser/fill.js.map +1 -0
  186. package/dist/tools/browser/get-sessions.d.ts +4 -0
  187. package/dist/tools/browser/get-sessions.d.ts.map +1 -0
  188. package/dist/tools/browser/get-sessions.js +14 -0
  189. package/dist/tools/browser/get-sessions.js.map +1 -0
  190. package/dist/tools/browser/index.d.ts +19 -0
  191. package/dist/tools/browser/index.d.ts.map +1 -0
  192. package/dist/tools/browser/index.js +49 -0
  193. package/dist/tools/browser/index.js.map +1 -0
  194. package/dist/tools/browser/inject.d.ts +5 -0
  195. package/dist/tools/browser/inject.d.ts.map +1 -0
  196. package/dist/tools/browser/inject.js +51 -0
  197. package/dist/tools/browser/inject.js.map +1 -0
  198. package/dist/tools/browser/interaction.d.ts +49 -0
  199. package/dist/tools/browser/interaction.d.ts.map +1 -0
  200. package/dist/tools/browser/interaction.js +14 -0
  201. package/dist/tools/browser/interaction.js.map +1 -0
  202. package/dist/tools/browser/navigate.d.ts +5 -0
  203. package/dist/tools/browser/navigate.d.ts.map +1 -0
  204. package/dist/tools/browser/navigate.js +39 -0
  205. package/dist/tools/browser/navigate.js.map +1 -0
  206. package/dist/tools/browser/network-status.d.ts +4 -0
  207. package/dist/tools/browser/network-status.d.ts.map +1 -0
  208. package/dist/tools/browser/network-status.js +35 -0
  209. package/dist/tools/browser/network-status.js.map +1 -0
  210. package/dist/tools/browser/network.d.ts +4 -0
  211. package/dist/tools/browser/network.d.ts.map +1 -0
  212. package/dist/tools/browser/network.js +51 -0
  213. package/dist/tools/browser/network.js.map +1 -0
  214. package/dist/tools/browser/read-page.d.ts +45 -0
  215. package/dist/tools/browser/read-page.d.ts.map +1 -0
  216. package/dist/tools/browser/read-page.js +264 -0
  217. package/dist/tools/browser/read-page.js.map +1 -0
  218. package/dist/tools/browser/read.d.ts +5 -0
  219. package/dist/tools/browser/read.d.ts.map +1 -0
  220. package/dist/tools/browser/read.js +56 -0
  221. package/dist/tools/browser/read.js.map +1 -0
  222. package/dist/tools/browser/remove-session.d.ts +5 -0
  223. package/dist/tools/browser/remove-session.d.ts.map +1 -0
  224. package/dist/tools/browser/remove-session.js +29 -0
  225. package/dist/tools/browser/remove-session.js.map +1 -0
  226. package/dist/tools/browser/screenshot.d.ts +5 -0
  227. package/dist/tools/browser/screenshot.d.ts.map +1 -0
  228. package/dist/tools/browser/screenshot.js +50 -0
  229. package/dist/tools/browser/screenshot.js.map +1 -0
  230. package/dist/tools/browser/scroll-info.d.ts +4 -0
  231. package/dist/tools/browser/scroll-info.d.ts.map +1 -0
  232. package/dist/tools/browser/scroll-info.js +28 -0
  233. package/dist/tools/browser/scroll-info.js.map +1 -0
  234. package/dist/tools/browser/scroll.d.ts +5 -0
  235. package/dist/tools/browser/scroll.d.ts.map +1 -0
  236. package/dist/tools/browser/scroll.js +43 -0
  237. package/dist/tools/browser/scroll.js.map +1 -0
  238. package/dist/tools/browser/session-manager.d.ts +35 -0
  239. package/dist/tools/browser/session-manager.d.ts.map +1 -0
  240. package/dist/tools/browser/session-manager.js +101 -0
  241. package/dist/tools/browser/session-manager.js.map +1 -0
  242. package/dist/tools/browser/submit-form.d.ts +5 -0
  243. package/dist/tools/browser/submit-form.d.ts.map +1 -0
  244. package/dist/tools/browser/submit-form.js +45 -0
  245. package/dist/tools/browser/submit-form.js.map +1 -0
  246. package/dist/tools/fs/create-dir.d.ts +5 -0
  247. package/dist/tools/fs/create-dir.d.ts.map +1 -0
  248. package/dist/tools/fs/create-dir.js +28 -0
  249. package/dist/tools/fs/create-dir.js.map +1 -0
  250. package/dist/tools/fs/delete.d.ts +5 -0
  251. package/dist/tools/fs/delete.d.ts.map +1 -0
  252. package/dist/tools/fs/delete.js +45 -0
  253. package/dist/tools/fs/delete.js.map +1 -0
  254. package/dist/tools/fs/edit-file.d.ts +5 -0
  255. package/dist/tools/fs/edit-file.d.ts.map +1 -0
  256. package/dist/tools/fs/edit-file.js +74 -0
  257. package/dist/tools/fs/edit-file.js.map +1 -0
  258. package/dist/tools/fs/index.d.ts +11 -2
  259. package/dist/tools/fs/index.d.ts.map +1 -1
  260. package/dist/tools/fs/index.js +27 -2
  261. package/dist/tools/fs/index.js.map +1 -1
  262. package/dist/tools/fs/interaction.d.ts +37 -0
  263. package/dist/tools/fs/interaction.d.ts.map +1 -0
  264. package/dist/tools/fs/interaction.js +13 -0
  265. package/dist/tools/fs/interaction.js.map +1 -0
  266. package/dist/tools/fs/list-dir.d.ts +5 -0
  267. package/dist/tools/fs/list-dir.d.ts.map +1 -0
  268. package/dist/tools/fs/list-dir.js +87 -0
  269. package/dist/tools/fs/list-dir.js.map +1 -0
  270. package/dist/tools/fs/move.d.ts +5 -0
  271. package/dist/tools/fs/move.d.ts.map +1 -0
  272. package/dist/tools/fs/move.js +44 -0
  273. package/dist/tools/fs/move.js.map +1 -0
  274. package/dist/tools/fs/read-file.d.ts +4 -3
  275. package/dist/tools/fs/read-file.d.ts.map +1 -1
  276. package/dist/tools/fs/read-file.js +50 -42
  277. package/dist/tools/fs/read-file.js.map +1 -1
  278. package/dist/tools/fs/stat.d.ts +5 -0
  279. package/dist/tools/fs/stat.d.ts.map +1 -0
  280. package/dist/tools/fs/stat.js +40 -0
  281. package/dist/tools/fs/stat.js.map +1 -0
  282. package/dist/tools/fs/utils.d.ts +20 -0
  283. package/dist/tools/fs/utils.d.ts.map +1 -0
  284. package/dist/tools/fs/utils.js +33 -0
  285. package/dist/tools/fs/utils.js.map +1 -0
  286. package/dist/tools/fs/write-file.d.ts +4 -3
  287. package/dist/tools/fs/write-file.d.ts.map +1 -1
  288. package/dist/tools/fs/write-file.js +39 -58
  289. package/dist/tools/fs/write-file.js.map +1 -1
  290. package/dist/tools/present/add.d.ts +5 -0
  291. package/dist/tools/present/add.d.ts.map +1 -0
  292. package/dist/tools/present/add.js +54 -0
  293. package/dist/tools/present/add.js.map +1 -0
  294. package/dist/tools/present/clear.d.ts +5 -0
  295. package/dist/tools/present/clear.d.ts.map +1 -0
  296. package/dist/tools/present/clear.js +23 -0
  297. package/dist/tools/present/clear.js.map +1 -0
  298. package/dist/tools/present/get-list.d.ts +5 -0
  299. package/dist/tools/present/get-list.d.ts.map +1 -0
  300. package/dist/tools/present/get-list.js +24 -0
  301. package/dist/tools/present/get-list.js.map +1 -0
  302. package/dist/tools/present/index.d.ts +8 -0
  303. package/dist/tools/present/index.d.ts.map +1 -0
  304. package/dist/tools/present/index.js +14 -0
  305. package/dist/tools/present/index.js.map +1 -0
  306. package/dist/tools/present/interaction.d.ts +17 -0
  307. package/dist/tools/present/interaction.d.ts.map +1 -0
  308. package/dist/tools/present/interaction.js +15 -0
  309. package/dist/tools/present/interaction.js.map +1 -0
  310. package/dist/tools/present/utils.d.ts +12 -0
  311. package/dist/tools/present/utils.d.ts.map +1 -0
  312. package/dist/tools/present/utils.js +40 -0
  313. package/dist/tools/present/utils.js.map +1 -0
  314. package/dist/tools/question-answer/index.d.ts +5 -0
  315. package/dist/tools/question-answer/index.d.ts.map +1 -0
  316. package/dist/tools/question-answer/index.js +7 -0
  317. package/dist/tools/question-answer/index.js.map +1 -0
  318. package/dist/tools/question-answer/interaction.d.ts +14 -0
  319. package/dist/tools/question-answer/interaction.d.ts.map +1 -0
  320. package/dist/tools/question-answer/interaction.js +13 -0
  321. package/dist/tools/question-answer/interaction.js.map +1 -0
  322. package/dist/tools/question-answer/question-answer.d.ts +5 -0
  323. package/dist/tools/question-answer/question-answer.d.ts.map +1 -0
  324. package/dist/tools/question-answer/question-answer.js +24 -0
  325. package/dist/tools/question-answer/question-answer.js.map +1 -0
  326. package/dist/tools/todo/check-task.d.ts +5 -0
  327. package/dist/tools/todo/check-task.d.ts.map +1 -0
  328. package/dist/tools/todo/check-task.js +49 -0
  329. package/dist/tools/todo/check-task.js.map +1 -0
  330. package/dist/tools/todo/create-list.d.ts +5 -0
  331. package/dist/tools/todo/create-list.d.ts.map +1 -0
  332. package/dist/tools/todo/create-list.js +36 -0
  333. package/dist/tools/todo/create-list.js.map +1 -0
  334. package/dist/tools/todo/create-task.d.ts +5 -0
  335. package/dist/tools/todo/create-task.d.ts.map +1 -0
  336. package/dist/tools/todo/create-task.js +63 -0
  337. package/dist/tools/todo/create-task.js.map +1 -0
  338. package/dist/tools/todo/get-list.d.ts +4 -0
  339. package/dist/tools/todo/get-list.d.ts.map +1 -0
  340. package/dist/tools/todo/get-list.js +38 -0
  341. package/dist/tools/todo/get-list.js.map +1 -0
  342. package/dist/tools/todo/get-lists.d.ts +4 -0
  343. package/dist/tools/todo/get-lists.d.ts.map +1 -0
  344. package/dist/tools/todo/get-lists.js +18 -0
  345. package/dist/tools/todo/get-lists.js.map +1 -0
  346. package/dist/tools/todo/index.d.ts +12 -0
  347. package/dist/tools/todo/index.d.ts.map +1 -0
  348. package/dist/tools/todo/index.js +25 -0
  349. package/dist/tools/todo/index.js.map +1 -0
  350. package/dist/tools/todo/interaction.d.ts +30 -0
  351. package/dist/tools/todo/interaction.d.ts.map +1 -0
  352. package/dist/tools/todo/interaction.js +13 -0
  353. package/dist/tools/todo/interaction.js.map +1 -0
  354. package/dist/tools/todo/remove-list.d.ts +5 -0
  355. package/dist/tools/todo/remove-list.d.ts.map +1 -0
  356. package/dist/tools/todo/remove-list.js +42 -0
  357. package/dist/tools/todo/remove-list.js.map +1 -0
  358. package/dist/tools/todo/remove-task.d.ts +5 -0
  359. package/dist/tools/todo/remove-task.d.ts.map +1 -0
  360. package/dist/tools/todo/remove-task.js +45 -0
  361. package/dist/tools/todo/remove-task.js.map +1 -0
  362. package/dist/tools/todo/storage.d.ts +22 -0
  363. package/dist/tools/todo/storage.d.ts.map +1 -0
  364. package/dist/tools/todo/storage.js +44 -0
  365. package/dist/tools/todo/storage.js.map +1 -0
  366. package/dist/tools/utils/delay.d.ts +10 -0
  367. package/dist/tools/utils/delay.d.ts.map +1 -0
  368. package/dist/tools/utils/delay.js +33 -0
  369. package/dist/tools/utils/delay.js.map +1 -0
  370. package/dist/tools/utils/get-current-time.d.ts +7 -2
  371. package/dist/tools/utils/get-current-time.d.ts.map +1 -1
  372. package/dist/tools/utils/get-current-time.js +12 -31
  373. package/dist/tools/utils/get-current-time.js.map +1 -1
  374. package/dist/tools/utils/index.d.ts +2 -0
  375. package/dist/tools/utils/index.d.ts.map +1 -1
  376. package/dist/tools/utils/index.js +7 -0
  377. package/dist/tools/utils/index.js.map +1 -1
  378. package/package.json +54 -56
  379. package/dist/templates/researcher.d.ts +0 -27
  380. package/dist/templates/researcher.d.ts.map +0 -1
  381. package/dist/templates/researcher.js +0 -70
  382. package/dist/templates/researcher.js.map +0 -1
  383. package/dist/tools/www/fetch.d.ts +0 -4
  384. package/dist/tools/www/fetch.d.ts.map +0 -1
  385. package/dist/tools/www/fetch.js +0 -147
  386. package/dist/tools/www/fetch.js.map +0 -1
  387. package/dist/tools/www/index.d.ts +0 -4
  388. package/dist/tools/www/index.d.ts.map +0 -1
  389. package/dist/tools/www/index.js +0 -4
  390. package/dist/tools/www/index.js.map +0 -1
  391. package/dist/tools/www/read-web-page.d.ts +0 -4
  392. package/dist/tools/www/read-web-page.d.ts.map +0 -1
  393. package/dist/tools/www/read-web-page.js +0 -330
  394. package/dist/tools/www/read-web-page.js.map +0 -1
  395. package/dist/tools/www/web-search.d.ts +0 -4
  396. package/dist/tools/www/web-search.d.ts.map +0 -1
  397. package/dist/tools/www/web-search.js +0 -82
  398. package/dist/tools/www/web-search.js.map +0 -1
package/Readme.md CHANGED
@@ -6,12 +6,9 @@
6
6
  npm install orbitx
7
7
  ```
8
8
 
9
+ ## Quick Start
9
10
 
10
- ## Quick Start (Templates)
11
-
12
- ### Simple Agent
13
-
14
- The `SimpleAgent` is the fastest way to get an agent running with tools and a chosen AI provider.
11
+ The fastest way to get an agent running is `SimpleAgent` — give it a provider, an instruction, and a list of tools/skills.
15
12
 
16
13
  ```ts
17
14
  import { OllamaProvider, SimpleAgent, GetCurrentTimeTool } from "orbitx";
@@ -21,7 +18,7 @@ const ollamaProvider = new OllamaProvider("gemma3:latest");
21
18
  const agent = new SimpleAgent({
22
19
  aiProvider: ollamaProvider,
23
20
  instruction: "You are a helpful assistant.",
24
- tools: [GetCurrentTimeTool],
21
+ tools: [GetCurrentTimeTool()],
25
22
  });
26
23
 
27
24
  let oldRole: "assistant" | "tool" | undefined;
@@ -32,6 +29,14 @@ agent.run("what is current time?", (chunk) => {
32
29
  oldRole = chunk.role;
33
30
  }
34
31
  process.stdout.write(chunk.content);
32
+
33
+ if (chunk.done && chunk.role === "assistant" && chunk.toolCalls?.length) {
34
+ console.log(chunk.toolCalls);
35
+ }
36
+ if (chunk.role === "tool") {
37
+ console.log({ toolCallId: chunk.toolCallId, toolName: chunk.toolName });
38
+ }
39
+
35
40
  if (chunk.done) {
36
41
  process.stdout.write("\n\n");
37
42
  oldRole = undefined;
@@ -39,32 +44,31 @@ agent.run("what is current time?", (chunk) => {
39
44
  });
40
45
  ```
41
46
 
42
- ### Researcher Agent
47
+ All tools and skills passed in are baked into the system prompt once, up front — there's no separate routing/selection step deciding what the model can see turn to turn.
43
48
 
44
- The `ResearcherAgent` is optimized for open-ended research and synthesis tasks.
49
+ ### Recovering an agent's state
45
50
 
46
- ```ts
47
- import { OllamaProvider, ResearcherAgent } from "orbitx";
51
+ `getCurrentAgentStates()` returns a plain JSON-serializable snapshot (messages, memory, token counters). Save it wherever you like, and pass it back in as `initData` to resume the exact same agent later — a process restart, a saved session, etc.
48
52
 
49
- const ollamaProvider = new OllamaProvider("gemma3:latest");
50
-
51
- const agent = new ResearcherAgent({ aiProvider: ollamaProvider });
53
+ ```ts
54
+ import { writeFileSync, existsSync, readFileSync } from "fs";
52
55
 
53
- let oldRole: "assistant" | "tool" | undefined;
56
+ const initData = existsSync("./state.json")
57
+ ? JSON.parse(readFileSync("./state.json", "utf-8"))
58
+ : undefined;
54
59
 
55
- agent.run("How artificial intelligence is changing the job market", (chunk) => {
56
- if (oldRole !== chunk.role) {
57
- process.stdout.write(`\n${chunk.role}: `);
58
- oldRole = chunk.role;
59
- }
60
- process.stdout.write(chunk.content);
61
- if (chunk.done) {
62
- process.stdout.write("\n\n");
63
- oldRole = undefined;
64
- }
60
+ const agent = new SimpleAgent({
61
+ aiProvider: ollamaProvider,
62
+ instruction: "You are a helpful assistant.",
63
+ tools: [GetCurrentTimeTool()],
64
+ ...(initData ? { initData } : {}),
65
65
  });
66
+
67
+ // after any run() call:
68
+ writeFileSync("./state.json", JSON.stringify(agent.getCurrentAgentStates()));
66
69
  ```
67
70
 
71
+ Old messages are never rewritten once written — the agent only ever appends. When the conversation grows past its memory limit, OrbitX keeps the full history intact on disk (`messagesFull`) and instead resets the model's working context window from a running summary of what it already did, so it can keep going indefinitely without losing the ability to act on what happened earlier.
68
72
 
69
73
  ## Providers
70
74
 
@@ -86,54 +90,121 @@ import { DeepSeekProvider } from "orbitx";
86
90
  const deepseekProvider = new DeepSeekProvider("api-key", "deepseek-v4-flash");
87
91
  ```
88
92
 
89
- ### Creating a Custom Tool
90
-
91
- Define your own tools with `MCPTool` to extend an agent's capabilities and integrate with your own ecosystem. also currently we have `ReadFileTool`, `WriteFileTool`, `GetCurrentTimeTool`, `FetchTool`, `WebSearchTool`, `ReadWebPageTool`
92
-
93
- ⚠️ EXTREMELY IMPORTANT WARNING ABOUT `WriteFileTool` ⚠️
93
+ ### Two providers: main + image
94
94
 
95
- 🔴 CRITICAL: USE `WriteFileTool` WITH EXTREME CAUTION – THIS TOOL CAN PERMANENTLY OVERWRITE, DELETE, OR CORRUPT EXISTING FILES ON YOUR SYSTEM WITHOUT UNDO CAPABILITY.
95
+ An agent uses exactly two provider roles — `main` (drives the agent loop itself) and `image` (describes image tool output, e.g. screenshots, so the main conversation doesn't have to carry raw image bytes). Pass a single provider to use it for both roles, or an array to split them:
96
96
 
97
97
  ```ts
98
- import { MCPTool } from "orbitx";
98
+ import { BaseAgent, DeepSeekProvider, OllamaProvider } from "orbitx";
99
99
 
100
- export const SumTool = new MCPTool({
101
- name: "math-sum",
102
- description: "get two numbers and sum them",
103
- inputs: [
104
- {
105
- name: "first",
106
- type: "number",
107
- description: "first number",
108
- required: true,
109
- },
110
- {
111
- name: "second",
112
- type: "number",
113
- description: "second number",
114
- required: true,
115
- },
100
+ const agent = new BaseAgent({
101
+ aiProvider: [
102
+ { type: "main", aiProvider: new DeepSeekProvider("api-key", "deepseek-v4-flash") },
103
+ { type: "image", aiProvider: new OllamaProvider("llava:latest") },
116
104
  ],
117
- execute: async (_: string, inputs: Record<string, any>): Promise<any> => {
118
- const { first, second } = inputs;
119
-
120
- if (!first || typeof first !== "number") {
121
- throw new Error("first must be a number");
122
- }
123
-
124
- if (!second || typeof second !== "number") {
125
- throw new Error("second must be a number");
126
- }
127
-
128
- return {
129
- output: first + second,
130
- };
131
- },
105
+ instruction: "You are a helpful assistant.",
106
+ mcpClient,
107
+ allowedTools: [/* ... */],
132
108
  });
133
109
  ```
134
110
 
135
-
136
- ### Building from the Base Agent
111
+ ## Available Tools
112
+
113
+ Tools are grouped by domain. Import each group's array (e.g. `FsTools()`) to get every tool in that group at once, or import individual tools by name.
114
+
115
+ ### Filesystem (`FsTools`)
116
+
117
+ | Tool | Purpose |
118
+ |---|---|
119
+ | `FsReadFileTool` | Read a text file, paging through large files by line. |
120
+ | `FsWriteFileTool` | Write/overwrite a file's full content (creates parent dirs as needed). ⚠️ No undo. |
121
+ | `FsEditFileTool` | Replace a specific line range in an existing file without rewriting the whole thing. |
122
+ | `FsListDirTool` | List a directory's entries, paged by index for large directories. |
123
+ | `FsCreateDirTool` | Create a directory, including missing parents. |
124
+ | `FsDeleteTool` | Permanently delete a file or directory (recursive optional). ⚠️ No undo. |
125
+ | `FsMoveTool` | Move or rename a file or directory. |
126
+ | `FsStatTool` | Check whether a path exists and get its metadata (type, size, modified time). |
127
+
128
+ ### Bash / processes (`BashTools`)
129
+
130
+ | Tool | Purpose |
131
+ |---|---|
132
+ | `BashRunTool` | Launch a shell command as a background process; returns immediately if it's still running after `waitMs` (e.g. a dev server). |
133
+ | `BashWaitTool` | Wait again on a previously started process and get its latest status/output. |
134
+ | `BashLogsTool` | Read a process's combined stdout/stderr, paged by line. |
135
+ | `BashListTool` | List every process launched so far with its status. |
136
+ | `BashWriteInputTool` | Send text to a running process's stdin (answer an interactive prompt like `(y/n)`). |
137
+ | `BashTerminateTool` | Terminate a running process. |
138
+
139
+ ### Browser (`BrowserTools`)
140
+
141
+ Drives a real headless browser session.
142
+
143
+ | Tool | Purpose |
144
+ |---|---|
145
+ | `BrowserCreateSessionTool` | Open a new headless browser session at a URL, returns its `sessionId`. |
146
+ | `BrowserRemoveSessionTool` | Close and remove a browser session. |
147
+ | `BrowserGetSessionsTool` | List all currently open session ids. |
148
+ | `BrowserNavigateTool` | Navigate an existing session to a new URL. |
149
+ | `BrowserReadTool` | Read the page as a text outline (headings, tables, links, forms), assigning ref ids to clickable/fillable elements. |
150
+ | `BrowserClickTool` | Click a `[CLICKABLE]` element by ref id. |
151
+ | `BrowserFillTool` | Type into a `[FILLABLE]` element by ref id; can submit via Enter if the field's form has no visible submit button. |
152
+ | `BrowserSubmitFormTool` | Submit a `[FORM]` ref directly — for forms with no visible submit button. |
153
+ | `BrowserScrollInfoTool` | Get total scrollable length and current scroll position. |
154
+ | `BrowserScrollTool` | Scroll to a given vertical pixel position. |
155
+ | `BrowserConsoleTool` | Read captured browser console log messages. |
156
+ | `BrowserNetworkTool` | Read captured network request/response activity. |
157
+ | `BrowserNetworkStatusTool` | Check whether the page currently has in-flight network activity (use before assuming a "no response yet" state means something broke). |
158
+ | `BrowserInjectTool` | Evaluate arbitrary JS in the page and return the result. |
159
+ | `BrowserScreenshotTool` | Capture a screenshot; can be described by the `image` provider instead of passed raw to the main model. |
160
+
161
+ ### Todo lists (`TodoTools`)
162
+
163
+ | Tool | Purpose |
164
+ |---|---|
165
+ | `TodoCreateListTool` | Create a new todo list, returns its `todoListId`. |
166
+ | `TodoRemoveListTool` | Remove one or more todo lists (and their tasks). |
167
+ | `TodoGetListsTool` | Get all existing todo list ids. |
168
+ | `TodoGetListTool` | Get all tasks belonging to a list. |
169
+ | `TodoCreateTaskTool` | Create one or more tasks inside a list. |
170
+ | `TodoRemoveTaskTool` | Remove one or more tasks by id. |
171
+ | `TodoCheckTaskTool` | Set the checked/unchecked state of one or more tasks. |
172
+
173
+ ### Present / deliverables (`PresentTools`)
174
+
175
+ | Tool | Purpose |
176
+ |---|---|
177
+ | `PresentAddTool` | Present a file to the user by copying it into the present folder (zip folders first — this only accepts single files). |
178
+ | `PresentClearTool` | Clear out every file currently presented. |
179
+ | `PresentGetListTool` | Get the list of files currently presented. |
180
+
181
+ ### Utility (`UtilTools`)
182
+
183
+ | Tool | Purpose |
184
+ |---|---|
185
+ | `GetCurrentTimeTool` | Get the current date/time (ISO string, unix timestamp, timezone). |
186
+ | `DelayTool` | Wait a given number of milliseconds (max 60000ms) before continuing. |
187
+
188
+ ## Available Skills
189
+
190
+ A `Skill` bundles instructions with the tools that go with them. Passing a skill into an agent adds its tools automatically and folds its instructions into the system prompt.
191
+
192
+ | Skill | Purpose |
193
+ |---|---|
194
+ | `PlannerSkill` | Stands up a persistent, checkable todo list for any large/multi-step/vague job so progress survives long conversations and context resets. |
195
+ | `BigTaskSkill` | Keeps the agent from stopping short on large or ambitious jobs — no declaring victory on a partial slice, no handing a big job back half-finished. |
196
+ | `LongTaskEfficiencySkill` | Keeps a long job efficient — batching, avoiding redundant reads, checkpointing, not gold-plating — without giving up on getting through the full scope. |
197
+ | `NodeBackendSkill` | Building, running, and debugging Node.js backends: APIs, servers, CLIs, workers, schedulers, DB access layers — new or existing. |
198
+ | `ReactFrontendSkill` | Building, running, and debugging modern React (`.tsx`/`.jsx`) projects, typically Vite-scaffolded — new or existing. |
199
+ | `UiUxDesignSkill` | Visual and interaction design quality for any user-facing UI — layout, hierarchy, feedback states, accessibility, responsiveness. |
200
+ | `BackendSecuritySkill` | Hardening server-side code that touches auth, sessions, tokens, uploads, DB queries, payments, or any trust boundary. |
201
+ | `CodeVerificationSkill` | Running the right type checker/build/lint/test suite before handing code back, and telling real bugs apart from sandbox artifacts. |
202
+ | `WebEndToEndTestSkill` | Testing a live web app like a real user would (fill, click, navigate) and verifying via the rendered page, console, and network — not by reading source and assuming. |
203
+ | `ResearchSkill` | Answering questions that need real, current information from the live web — opens pages, cross-checks multiple sources, never trusts one page. |
204
+ | `ShoppingSkill` | Purchase-decision help — real current listings, prices, links, and review sentiment instead of recommending from memory. |
205
+ | `PresentSkill` | Deciding how to hand back a job's output as files (individually or zipped) and cleaning build artifacts out first. |
206
+
207
+ ## Building from the Base Agent
137
208
 
138
209
  For full control over the MCP server, connection, and client, compose an agent from the base primitives:
139
210
 
@@ -152,7 +223,7 @@ const ollamaProvider = new OllamaProvider("gemma3:latest");
152
223
  const connection = new MCPConnection();
153
224
 
154
225
  const mcpServer = new MCPServer(connection);
155
- mcpServer.registerTool(GetCurrentTimeTool);
226
+ mcpServer.registerTool(GetCurrentTimeTool());
156
227
 
157
228
  const mcpClient = new MCPClient("DEFAULT_ENV", connection);
158
229
 
@@ -160,7 +231,7 @@ const agent = new BaseAgent({
160
231
  aiProvider: ollamaProvider,
161
232
  instruction: "",
162
233
  mcpClient,
163
- allowedTools: [GetCurrentTimeTool],
234
+ allowedTools: [GetCurrentTimeTool()],
164
235
  });
165
236
 
166
237
  let oldRole: "assistant" | "tool" | undefined;
@@ -190,4 +261,93 @@ const path =
190
261
  os.platform() === "win32" ? `\\\\.\\pipe\\mcp_test` : `/tmp/mcp_test.sock`;
191
262
 
192
263
  const ipcConnection = new MCPIPCConnection(path);
193
- ```
264
+ ```
265
+
266
+ ## Creating a Custom Tool
267
+
268
+ Define your own tools with `MCPTool` to extend an agent's capabilities and integrate with your own ecosystem.
269
+
270
+ ⚠️ EXTREMELY IMPORTANT WARNING ABOUT `FsWriteFileTool` / `FsDeleteTool` ⚠️
271
+
272
+ 🔴 CRITICAL: USE FILE-WRITING/DELETING TOOLS WITH EXTREME CAUTION – THEY CAN PERMANENTLY OVERWRITE, DELETE, OR CORRUPT EXISTING FILES ON YOUR SYSTEM WITHOUT UNDO CAPABILITY.
273
+
274
+ ```ts
275
+ import { MCPTool } from "orbitx";
276
+
277
+ export const SumTool = () => new MCPTool({
278
+ name: "math-sum",
279
+ description: "get two numbers and sum them",
280
+ inputs: [
281
+ {
282
+ name: "first",
283
+ type: "number",
284
+ description: "first number",
285
+ required: true,
286
+ },
287
+ {
288
+ name: "second",
289
+ type: "number",
290
+ description: "second number",
291
+ required: true,
292
+ },
293
+ ],
294
+ execute: async (_envID: string, inputs: Record<string, any>) => {
295
+ const { first, second } = inputs;
296
+
297
+ if (typeof first !== "number") {
298
+ throw new Error("first must be a number");
299
+ }
300
+ if (typeof second !== "number") {
301
+ throw new Error("second must be a number");
302
+ }
303
+
304
+ return { output: first + second };
305
+ },
306
+ });
307
+ ```
308
+
309
+ Use it like any built-in tool:
310
+
311
+ ```ts
312
+ const agent = new SimpleAgent({
313
+ aiProvider: ollamaProvider,
314
+ instruction: "You are a helpful assistant.",
315
+ tools: [SumTool()],
316
+ });
317
+ ```
318
+
319
+ ## Creating a Custom Skill
320
+
321
+ A `Skill` bundles instructions with the tools it needs, so an agent that includes it automatically gets both.
322
+
323
+ ```ts
324
+ import { Skill, FsReadFileTool, FsWriteFileTool } from "orbitx";
325
+ import { SumTool } from "./sum-tool.js";
326
+
327
+ export const MathHelperSkill = () => new Skill({
328
+ name: "math-helper",
329
+ description:
330
+ "Use this skill whenever the user asks for arithmetic that should be computed exactly " +
331
+ "rather than estimated from the model's own reasoning — sums, running totals, or " +
332
+ "anything written to a file afterward.",
333
+ instructions: `
334
+ - Always use the math-sum tool for addition instead of computing it yourself.
335
+ - If asked to save a result, write it to disk with fs-write-file and confirm the path back to the user.
336
+ `,
337
+ tools: [
338
+ SumTool(),
339
+ FsReadFileTool(),
340
+ FsWriteFileTool(),
341
+ ],
342
+ });
343
+ ```
344
+
345
+ ```ts
346
+ const agent = new SimpleAgent({
347
+ aiProvider: ollamaProvider,
348
+ instruction: "You are a helpful assistant.",
349
+ skills: [MathHelperSkill()],
350
+ });
351
+ ```
352
+
353
+
@@ -0,0 +1,16 @@
1
+ import type { AIProvider } from "./ai-provider.js";
2
+ export type AgentProviderRole = "main" | "image";
3
+ export interface AgentProviderEntry {
4
+ aiProvider: AIProvider;
5
+ type: AgentProviderRole;
6
+ }
7
+ export type AgentProvidersInput = AIProvider | AgentProviderEntry[];
8
+ export interface ResolvedAgentProviders {
9
+ main: AIProvider;
10
+ /** Present only if a provider was assigned the "image" role, or (single-provider case) the one provider supports images. */
11
+ image?: AIProvider;
12
+ }
13
+ /** Only two provider roles exist: "main" (the agent loop itself) and "image" (describing/handling image tool output). There is no separate "utils" provider — all skills and tools are always included in the system prompt from the start, so there's nothing left for a utils pass to decide. */
14
+ export declare function resolveAgentProviders(input: AgentProvidersInput): ResolvedAgentProviders;
15
+ export default resolveAgentProviders;
16
+ //# sourceMappingURL=agent-providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-providers.d.ts","sourceRoot":"","sources":["../../src/core/agent-providers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,OAAO,CAAC;AAEjD,MAAM,WAAW,kBAAkB;IAC/B,UAAU,EAAE,UAAU,CAAC;IACvB,IAAI,EAAE,iBAAiB,CAAC;CAC3B;AAED,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,kBAAkB,EAAE,CAAC;AAEpE,MAAM,WAAW,sBAAsB;IACnC,IAAI,EAAE,UAAU,CAAC;IACjB,4HAA4H;IAC5H,KAAK,CAAC,EAAE,UAAU,CAAC;CACtB;AAED,mSAAmS;AACnS,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,mBAAmB,GAAG,sBAAsB,CAoBxF;AAED,eAAe,qBAAqB,CAAC"}
@@ -0,0 +1,21 @@
1
+ /** Only two provider roles exist: "main" (the agent loop itself) and "image" (describing/handling image tool output). There is no separate "utils" provider — all skills and tools are always included in the system prompt from the start, so there's nothing left for a utils pass to decide. */
2
+ export function resolveAgentProviders(input) {
3
+ if (!Array.isArray(input)) {
4
+ const caps = input.getCapabilities();
5
+ return {
6
+ main: input,
7
+ image: caps.supportsImages ? input : undefined,
8
+ };
9
+ }
10
+ const mainEntry = input.find(e => e.type === "main");
11
+ if (!mainEntry) {
12
+ throw new Error("resolveAgentProviders: a provider with type \"main\" is required when passing an array of providers.");
13
+ }
14
+ const imageEntry = input.find(e => e.type === "image");
15
+ return {
16
+ main: mainEntry.aiProvider,
17
+ image: imageEntry?.aiProvider,
18
+ };
19
+ }
20
+ export default resolveAgentProviders;
21
+ //# sourceMappingURL=agent-providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-providers.js","sourceRoot":"","sources":["../../src/core/agent-providers.ts"],"names":[],"mappings":"AAiBA,mSAAmS;AACnS,MAAM,UAAU,qBAAqB,CAAC,KAA0B;IAC5D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,eAAe,EAAE,CAAC;QACrC,OAAO;YACH,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;SACjD,CAAC;IACN,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IACrD,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,sGAAsG,CAAC,CAAC;IAC5H,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IAEvD,OAAO;QACH,IAAI,EAAE,SAAS,CAAC,UAAU;QAC1B,KAAK,EAAE,UAAU,EAAE,UAAU;KAChC,CAAC;AACN,CAAC;AAED,eAAe,qBAAqB,CAAC"}
@@ -1,19 +1,87 @@
1
+ /**
2
+ * Standard, provider-agnostic tool schema. Every AIProvider is responsible
3
+ * for translating this into whatever shape its own API expects (OpenAI-style
4
+ * `tools: [{type:"function", function:{...}}]`, Ollama's function-calling
5
+ * format, etc.) — the rest of the codebase (BaseAgent, MCPClient) never needs
6
+ * to know about a specific provider's wire format.
7
+ */
8
+ export interface ToolSchema {
9
+ name: string;
10
+ description: string;
11
+ inputs: {
12
+ name: string;
13
+ type: "number" | "string" | "boolean" | "object" | "array";
14
+ description: string;
15
+ required?: boolean;
16
+ default?: any;
17
+ }[];
18
+ }
19
+ /** A tool call the model asked to make, normalized across providers. */
20
+ export interface ToolCallRequest {
21
+ id: string;
22
+ name: string;
23
+ inputs: Record<string, any>;
24
+ }
25
+ /** A single piece of message content: plain text, or an image for multimodal providers. */
26
+ export type MessageContentPart = {
27
+ type: "text";
28
+ text: string;
29
+ } | {
30
+ type: "image";
31
+ image: string;
32
+ mimeType?: string;
33
+ };
1
34
  export interface Message {
2
35
  role: "user" | "system" | "assistant" | "tool";
3
36
  content?: string;
37
+ /** Optional richer content (e.g. images) for providers that support multimodal input. If present, takes precedence over `content` for those providers; providers without image support should fall back to `content`/a text-only projection. */
38
+ parts?: MessageContentPart[];
39
+ /** Present on assistant messages that requested native tool calls. */
40
+ toolCalls?: ToolCallRequest[];
41
+ /** Present on tool-role messages responding to a native tool call. */
42
+ toolCallId?: string;
43
+ /** Present on tool-role messages responding to a native tool call — the tool name being answered. */
44
+ toolName?: string;
4
45
  }
5
46
  export interface ChatResponse {
6
47
  content: string;
7
48
  inputTokens: number;
8
49
  outputTokens: number;
50
+ /** Native tool calls requested by the model, when the provider supports native tool-calling and tools were supplied. */
51
+ toolCalls?: ToolCallRequest[];
9
52
  }
10
53
  export type StreamCallback = (chunk: {
11
54
  role: "assistant" | "tool";
12
55
  content: string;
13
56
  done: boolean;
57
+ /** Present on the final ("done") assistant chunk when the model requested native tool calls this turn. */
58
+ toolCalls?: ToolCallRequest[];
59
+ /** Present on "tool"-role chunks — the id of the native tool call this result answers. */
60
+ toolCallId?: string;
61
+ /** Present on "tool"-role chunks — the name of the tool that was called. */
62
+ toolName?: string;
14
63
  }) => void;
64
+ /**
65
+ * Static capability + limits description for a provider/model pair. This
66
+ * lets callers (BaseAgent in particular) make decisions — like whether to
67
+ * rely on native tool-calling vs. the legacy JSON-in-text convention, or
68
+ * where to trigger a memory-compaction pass — based on what the provider
69
+ * actually supports, instead of a single hardcoded constant.
70
+ */
71
+ export interface ProviderCapabilities {
72
+ /** Whether this provider/model can receive a `tools` schema and return native tool_calls. When false, BaseAgent falls back to legacy JSON-in-text tool calls carried over `system`-role messages. */
73
+ supportsTools: boolean;
74
+ /** Whether this provider/model accepts image content in messages. */
75
+ supportsImages: boolean;
76
+ /** The model's total context window, in tokens. Used to derive a safe default for when to trigger a memory-compaction event, without needing a hardcoded per-agent constant. */
77
+ contextWindow: number;
78
+ /** Fraction of the context window (0-1) that's safe to fill before compacting; leaves headroom for the system prompt, tool schema, and the model's own output. Defaults applied by callers if not specified. */
79
+ safeUsageRatio?: number;
80
+ }
15
81
  export declare abstract class AIProvider {
16
- abstract chat(messages: Message[], streamCallback?: StreamCallback): Promise<ChatResponse>;
82
+ abstract chat(messages: Message[], streamCallback?: StreamCallback, tools?: ToolSchema[]): Promise<ChatResponse>;
83
+ /** Describe what this provider/model can do — used by BaseAgent to pick the native-tools vs. legacy-JSON path and to size the memory-compaction threshold. */
84
+ abstract getCapabilities(): ProviderCapabilities;
17
85
  }
18
86
  export default AIProvider;
19
87
  //# sourceMappingURL=ai-provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ai-provider.d.ts","sourceRoot":"","sources":["../../src/core/ai-provider.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACpB,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE;IACjC,IAAI,EAAE,WAAW,GAAG,MAAM,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;CACjB,KAAK,IAAI,CAAC;AAEX,8BAAsB,UAAU;IAC5B,QAAQ,CAAC,IAAI,CACT,QAAQ,EAAE,OAAO,EAAE,EACnB,cAAc,CAAC,EAAE,cAAc,GAChC,OAAO,CAAC,YAAY,CAAC;CAC3B;AAED,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"ai-provider.d.ts","sourceRoot":"","sources":["../../src/core/ai-provider.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;QAC3D,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,OAAO,CAAC,EAAE,GAAG,CAAC;KACjB,EAAE,CAAC;CACP;AAED,wEAAwE;AACxE,MAAM,WAAW,eAAe;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED,2FAA2F;AAC3F,MAAM,MAAM,kBAAkB,GACxB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAwC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjG,MAAM,WAAW,OAAO;IACpB,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gPAAgP;IAChP,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC7B,sEAAsE;IACtE,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAC9B,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qGAAqG;IACrG,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,wHAAwH;IACxH,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;CACjC;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE;IACjC,IAAI,EAAE,WAAW,GAAG,MAAM,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,0GAA0G;IAC1G,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAC9B,0FAA0F;IAC1F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,KAAK,IAAI,CAAC;AAEX;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACjC,qMAAqM;IACrM,aAAa,EAAE,OAAO,CAAC;IACvB,qEAAqE;IACrE,cAAc,EAAE,OAAO,CAAC;IACxB,gLAAgL;IAChL,aAAa,EAAE,MAAM,CAAC;IACtB,gNAAgN;IAChN,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,8BAAsB,UAAU;IAC5B,QAAQ,CAAC,IAAI,CACT,QAAQ,EAAE,OAAO,EAAE,EACnB,cAAc,CAAC,EAAE,cAAc,EAC/B,KAAK,CAAC,EAAE,UAAU,EAAE,GACrB,OAAO,CAAC,YAAY,CAAC;IAExB,8JAA8J;IAC9J,QAAQ,CAAC,eAAe,IAAI,oBAAoB;CACnD;AAED,eAAe,UAAU,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ai-provider.js","sourceRoot":"","sources":["../../src/core/ai-provider.ts"],"names":[],"mappings":"AAiBA,MAAM,OAAgB,UAAU;CAK/B;AAED,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"ai-provider.js","sourceRoot":"","sources":["../../src/core/ai-provider.ts"],"names":[],"mappings":"AAkFA,MAAM,OAAgB,UAAU;CAS/B;AAED,eAAe,UAAU,CAAC"}
@@ -1,7 +1,8 @@
1
- import type { AIProvider, Message, StreamCallback } from "./ai-provider.js";
1
+ import type { Message, StreamCallback } from "./ai-provider.js";
2
2
  import type MCPClient from "./mcp-client.js";
3
3
  import type MCPTool from "./mcp.js";
4
4
  import type Skill from "./skill.js";
5
+ import { type AgentProvidersInput } from "./agent-providers.js";
5
6
  export interface ParsedToolCall {
6
7
  id: string;
7
8
  tool: string;
@@ -16,12 +17,13 @@ export type ExtractedSegment = {
16
17
  };
17
18
  export declare class BaseAgent {
18
19
  #private;
19
- constructor({ instruction, allowedTools, aiProvider, mcpClient, initData, skills, maxMemorizeToken }: {
20
+ constructor({ instruction, allowedTools, aiProvider, mcpClient, initData, skills, maxMemorizeToken, }: {
20
21
  instruction: string;
21
- allowedTools: MCPTool[];
22
- aiProvider: AIProvider;
22
+ allowedTools: MCPTool<any>[];
23
+ aiProvider: AgentProvidersInput;
23
24
  mcpClient: MCPClient;
24
25
  skills?: Skill[];
26
+ /** If omitted, derived from the main provider's reported context window (via getCapabilities()) instead of a hardcoded constant, so the memory-compaction trigger point scales with whatever model is actually in use. */
25
27
  maxMemorizeToken?: number;
26
28
  initData?: {
27
29
  memory: string;
@@ -35,7 +37,9 @@ export declare class BaseAgent {
35
37
  currentOutputTokens: number;
36
38
  };
37
39
  });
40
+ stop(): Promise<void>;
38
41
  run(prompt: string, streamCallback?: StreamCallback): Promise<void>;
42
+ /** Full recoverable snapshot of agent state — pass this back in as `initData` on a fresh BaseAgent instance (e.g. after a process restart) to resume exactly where this one left off. Persist the return value to disk (or wherever) whenever you want a recovery point. */
39
43
  getCurrentAgentStates(): {
40
44
  memory: string;
41
45
  messagesFull: Message[];
@@ -1 +1 @@
1
- {"version":3,"file":"base-agent.d.ts","sourceRoot":"","sources":["../../src/core/base-agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,OAAO,MAAM,UAAU,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AAEpC,MAAM,WAAW,cAAc;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED,MAAM,MAAM,gBAAgB,GACtB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,CAAC;AAEhD,qBAAa,SAAS;;gBAwBN,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,QAU/D,EAAE,MAAW,EAAE,gBAAwB,EAAE,EAAE;QACxC,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,OAAO,EAAE,CAAC;QACxB,UAAU,EAAE,UAAU,CAAC;QACvB,SAAS,EAAE,SAAS,CAAC;QACrB,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;QACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,EAAE;YACP,MAAM,EAAE,MAAM,CAAC;YACf,YAAY,EAAE,OAAO,EAAE,CAAC;YACxB,mBAAmB,EAAE,MAAM,CAAC;YAC5B,kBAAkB,EAAE,MAAM,CAAC;YAC3B,gBAAgB,EAAE,MAAM,CAAC;YACzB,eAAe,EAAE,OAAO,EAAE,CAAC;YAC3B,sBAAsB,EAAE,MAAM,CAAC;YAC/B,qBAAqB,EAAE,MAAM,CAAC;YAC9B,mBAAmB,EAAE,MAAM,CAAC;SAC/B,CAAA;KACJ;IAoJK,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA8DzE,qBAAqB;;;;;;;;;;;IAarB,cAAc;;;;;;IASd,qBAAqB;;;;;;IASrB,kBAAkB;;;;;;CAQrB;AAED,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"base-agent.d.ts","sourceRoot":"","sources":["../../src/core/base-agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,OAAO,EAAE,cAAc,EAA+B,MAAM,kBAAkB,CAAC;AACzG,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,OAAO,MAAM,UAAU,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AAGpC,OAAO,EAAyB,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEvF,MAAM,WAAW,cAAc;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED,MAAM,MAAM,gBAAgB,GACtB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,CAAC;AAWhD,qBAAa,SAAS;;gBAkCN,EACR,WAAW,EACX,YAAY,EACZ,UAAU,EACV,SAAS,EACT,QAUC,EACD,MAAW,EACX,gBAAgB,GACnB,EAAE;QACC,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,UAAU,EAAE,mBAAmB,CAAC;QAChC,SAAS,EAAE,SAAS,CAAC;QACrB,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;QACjB,0NAA0N;QAC1N,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,EAAE;YACP,MAAM,EAAE,MAAM,CAAC;YACf,YAAY,EAAE,OAAO,EAAE,CAAC;YACxB,mBAAmB,EAAE,MAAM,CAAC;YAC5B,kBAAkB,EAAE,MAAM,CAAC;YAC3B,gBAAgB,EAAE,MAAM,CAAC;YACzB,eAAe,EAAE,OAAO,EAAE,CAAC;YAC3B,sBAAsB,EAAE,MAAM,CAAC;YAC/B,qBAAqB,EAAE,MAAM,CAAC;YAC9B,mBAAmB,EAAE,MAAM,CAAC;SAC/B,CAAA;KACJ;IA6LK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBrB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA+IzE,4QAA4Q;IAC5Q,qBAAqB;;;;;;;;;;;IAarB,cAAc;;;;;;IASd,qBAAqB;;;;;;IASrB,kBAAkB;;;;;;CAQrB;AAED,eAAe,SAAS,CAAC"}