orbitx 0.0.8 → 0.0.9

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 +8 -0
  30. package/dist/core/mcp-fs-storage.d.ts.map +1 -0
  31. package/dist/core/mcp-fs-storage.js +27 -0
  32. package/dist/core/mcp-fs-storage.js.map +1 -0
  33. package/dist/core/mcp-rng.d.ts +7 -0
  34. package/dist/core/mcp-rng.d.ts.map +1 -0
  35. package/dist/core/mcp-rng.js +14 -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 +5 -0
  42. package/dist/core/mcp-storage.d.ts.map +1 -0
  43. package/dist/core/mcp-storage.js +3 -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 +34 -6
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +25 -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
@@ -0,0 +1,14 @@
1
+ /* MCP RNG Generate unique cross reference hex numbers shared with tools and guaranty tools never use duplicate id */
2
+ export default class MCPRNG {
3
+ #storage;
4
+ constructor(storage) {
5
+ this.#storage = storage;
6
+ }
7
+ async getRNG() {
8
+ const current = await this.#storage.get("__RNG__");
9
+ const rng = current ? Number(current) : 0;
10
+ await this.#storage.set("__RNG__", (rng + 1).toString());
11
+ return `0x${rng.toString(16)}`;
12
+ }
13
+ }
14
+ //# sourceMappingURL=mcp-rng.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-rng.js","sourceRoot":"","sources":["../../src/core/mcp-rng.ts"],"names":[],"mappings":"AAGA,qHAAqH;AACrH,MAAM,CAAC,OAAO,OAAO,MAAM;IACvB,QAAQ,CAAa;IAErB,YAAY,OAAmB;QAC3B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,MAAM;QACR,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzD,OAAO,KAAK,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;IACnC,CAAC;CACJ"}
@@ -1,9 +1,13 @@
1
- import type MCPTool from "./mcp.js";
1
+ import { MCP, type MCPTool } from "./mcp.js";
2
2
  import type MCPConnection from "./mcp-connection.js";
3
- export declare class MCPServer {
3
+ import type MCPStorage from "./mcp-storage.js";
4
+ import MCPRNG from "./mcp-rng.js";
5
+ export declare class MCPServer extends MCP {
4
6
  #private;
5
- constructor(connection: MCPConnection);
6
- registerTool(tool: MCPTool): void;
7
+ constructor(connection: MCPConnection, storage?: MCPStorage, rng?: MCPRNG);
8
+ getStorage(): MCPStorage;
9
+ getRNG(): MCPRNG;
10
+ registerTool(tool: MCPTool<any>): void;
7
11
  }
8
12
  export default MCPServer;
9
13
  //# sourceMappingURL=mcp-server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/core/mcp-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,UAAU,CAAC;AACpC,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AAErD,qBAAa,SAAS;;gBAGN,UAAU,EAAE,aAAa;IAqCrC,YAAY,CAAC,IAAI,EAAE,OAAO;CAG7B;AAED,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/core/mcp-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,KAAK,OAAO,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAE/C,OAAO,MAAM,MAAM,cAAc,CAAC;AAElC,qBAAa,SAAU,SAAQ,GAAG;;gBAKlB,UAAU,EAAE,aAAa,EAAE,OAAO,GAAE,UAA+B,EAAE,GAAG,CAAC,EAAE,MAAM;IA0C7F,UAAU;IAIV,MAAM;IAIN,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;CAIlC;AAED,eAAe,SAAS,CAAC"}
@@ -1,8 +1,18 @@
1
- export class MCPServer {
1
+ import { MCP } from "./mcp.js";
2
+ import MCPFSStorage from "./mcp-fs-storage.js";
3
+ import MCPRNG from "./mcp-rng.js";
4
+ export class MCPServer extends MCP {
2
5
  #connection;
6
+ #storage;
7
+ #rng;
3
8
  #tools = [];
4
- constructor(connection) {
9
+ constructor(connection, storage = new MCPFSStorage(), rng) {
10
+ super();
5
11
  this.#connection = connection;
12
+ this.#storage = storage;
13
+ if (!rng)
14
+ rng = new MCPRNG(storage);
15
+ this.#rng = rng;
6
16
  this.#connection.on("read", (data) => {
7
17
  const topic = data.topic;
8
18
  const pid = data.pid;
@@ -20,7 +30,7 @@ export class MCPServer {
20
30
  if (topic == "toolCall") {
21
31
  const tool = this.#tools.find(t => t.getOptions().name == data.tool);
22
32
  if (tool) {
23
- tool.getOptions().execute(data.envID, data.inputs).then((response) => {
33
+ tool.getOptions().execute(data.envID, data.inputs, tool.getMCP(), tool.getOptions().customClass).then((response) => {
24
34
  this.#connection.emit("write", {
25
35
  pid,
26
36
  topic: "toolCallCallback",
@@ -37,7 +47,14 @@ export class MCPServer {
37
47
  }
38
48
  });
39
49
  }
50
+ getStorage() {
51
+ return this.#storage;
52
+ }
53
+ getRNG() {
54
+ return this.#rng;
55
+ }
40
56
  registerTool(tool) {
57
+ tool.setMCP(this);
41
58
  this.#tools.push(tool);
42
59
  }
43
60
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/core/mcp-server.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,SAAS;IAClB,WAAW,CAAC;IACZ,MAAM,GAAc,EAAE,CAAC;IACvB,YAAY,UAAyB;QACjC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAS,EAAE,EAAE;YACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YACrB,IAAI,KAAK,IAAI,UAAU,EAAE,CAAC;gBACtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE;oBAC3B,GAAG;oBACH,KAAK,EAAE,kBAAkB;oBACzB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBAC5B,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI;wBAC5B,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,WAAW;wBAC1C,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM;qBACnC,CAAC,CAAC;iBACN,CAAC,CAAC;YACP,CAAC;YACD,IAAI,KAAK,IAAI,UAAU,EAAE,CAAC;gBACtB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrE,IAAI,IAAI,EAAE,CAAC;oBACP,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;wBACjE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE;4BAC3B,GAAG;4BACH,KAAK,EAAE,kBAAkB;4BACzB,MAAM,EAAE,QAAQ;yBACnB,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;wBACb,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE;4BAC3B,GAAG;4BACH,KAAK,EAAE,kBAAkB;4BACzB,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE;yBACnC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,YAAY,CAAC,IAAa;QACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;CACJ;AAED,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/core/mcp-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAgB,MAAM,UAAU,CAAC;AAG7C,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAC/C,OAAO,MAAM,MAAM,cAAc,CAAC;AAElC,MAAM,OAAO,SAAU,SAAQ,GAAG;IAC9B,WAAW,CAAC;IACZ,QAAQ,CAAC;IACT,IAAI,CAAC;IACL,MAAM,GAAmB,EAAE,CAAC;IAC5B,YAAY,UAAyB,EAAE,UAAsB,IAAI,YAAY,EAAE,EAAE,GAAY;QACzF,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,GAAG;YACJ,GAAG,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAS,EAAE,EAAE;YACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YACrB,IAAI,KAAK,IAAI,UAAU,EAAE,CAAC;gBACtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE;oBAC3B,GAAG;oBACH,KAAK,EAAE,kBAAkB;oBACzB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBAC5B,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI;wBAC5B,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,WAAW;wBAC1C,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM;qBACnC,CAAC,CAAC;iBACN,CAAC,CAAC;YACP,CAAC;YACD,IAAI,KAAK,IAAI,UAAU,EAAE,CAAC;gBACtB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrE,IAAI,IAAI,EAAE,CAAC;oBACP,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;wBAC/G,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE;4BAC3B,GAAG;4BACH,KAAK,EAAE,kBAAkB;4BACzB,MAAM,EAAE,QAAQ;yBACnB,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;wBACb,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE;4BAC3B,GAAG;4BACH,KAAK,EAAE,kBAAkB;4BACzB,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE;yBACnC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,UAAU;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,MAAM;QACF,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,YAAY,CAAC,IAAkB;QAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;CACJ;AAED,eAAe,SAAS,CAAC"}
@@ -0,0 +1,5 @@
1
+ export default abstract class MCPStorage {
2
+ abstract get(key: string): Promise<string>;
3
+ abstract set(key: string, value: string): Promise<void>;
4
+ }
5
+ //# sourceMappingURL=mcp-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-storage.d.ts","sourceRoot":"","sources":["../../src/core/mcp-storage.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,UAAU;IACpC,QAAQ,CAAC,GAAG,CACR,GAAG,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC;IAElB,QAAQ,CAAC,GAAG,CACR,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC;CACnB"}
@@ -0,0 +1,3 @@
1
+ export default class MCPStorage {
2
+ }
3
+ //# sourceMappingURL=mcp-storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-storage.js","sourceRoot":"","sources":["../../src/core/mcp-storage.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAgB,UAAU;CASvC"}
@@ -1,4 +1,32 @@
1
- export declare class MCPTool {
1
+ import EventEmitter from "events";
2
+ import type MCPRNG from "./mcp-rng.js";
3
+ import type MCPStorage from "./mcp-storage.js";
4
+ export type MCPToolOutput = {
5
+ type: "text";
6
+ output: Record<string, any>;
7
+ } | {
8
+ type: "image";
9
+ output: {
10
+ image: string;
11
+ mimeType?: string;
12
+ [key: string]: any;
13
+ };
14
+ };
15
+ export declare function normalizeToolOutput(raw: any): MCPToolOutput;
16
+ export declare abstract class MCPCustomClass {
17
+ #private;
18
+ setMCP(mcp: MCP): void;
19
+ getMCP(): MCP | undefined;
20
+ /** Subscribe to / emit interaction events from this tool (e.g. "status", "progress"). */
21
+ getEvents(): EventEmitter;
22
+ }
23
+ export declare abstract class MCP {
24
+ abstract getStorage(): MCPStorage;
25
+ abstract getRNG(): MCPRNG;
26
+ }
27
+ /** Convenience helper: get a fresh, guaranteed-unique hex id from an MCP instance's RNG. */
28
+ export declare function generateRefId(mcp?: MCP): Promise<string>;
29
+ export declare class MCPTool<T extends MCPCustomClass | undefined = undefined> {
2
30
  #private;
3
31
  constructor(options: {
4
32
  name: string;
@@ -10,8 +38,12 @@ export declare class MCPTool {
10
38
  required?: boolean;
11
39
  default?: any;
12
40
  }[];
13
- execute: (envID: string, inputs: Record<string, any>) => Promise<any>;
41
+ stopIterationAfterUsingThisTool?: boolean;
42
+ customClass?: T;
43
+ execute: (envID: string, inputs: Record<string, any>, mcp?: MCP, customClass?: T) => Promise<any>;
14
44
  });
45
+ setMCP(mcp: MCP): void;
46
+ getMCP(): MCP | undefined;
15
47
  getOptions(): {
16
48
  name: string;
17
49
  description: string;
@@ -22,7 +54,9 @@ export declare class MCPTool {
22
54
  required?: boolean;
23
55
  default?: any;
24
56
  }[];
25
- execute: (envID: string, inputs: Record<string, any>) => Promise<any>;
57
+ stopIterationAfterUsingThisTool: boolean;
58
+ customClass?: T;
59
+ execute: (envID: string, inputs: Record<string, any>, mcp?: MCP, customClass?: T) => Promise<any>;
26
60
  };
27
61
  }
28
62
  export default MCPTool;
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/core/mcp.ts"],"names":[],"mappings":"AAAA,qBAAa,OAAO;;gBAEJ,OAAO,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE;YACJ,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;YAC3D,WAAW,EAAE,MAAM,CAAC;YACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;YACnB,OAAO,CAAC,EAAE,GAAG,CAAC;SACjB,EAAE,CAAC;QACJ,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;KACzE;IAID,UAAU;cAdA,MAAM;qBACC,MAAM;gBACX;YACJ,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;YAC3D,WAAW,EAAE,MAAM,CAAC;YACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;YACnB,OAAO,CAAC,EAAE,GAAG,CAAC;SACjB,EAAE;iBACM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC;;CAQ5E;AAED,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/core/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,QAAQ,CAAC;AAClC,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AACvC,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAG/C,MAAM,MAAM,aAAa,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAA,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAA;CAAE,CAAC;AAEzF,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,GAAG,GAAG,aAAa,CAW3D;AAGD,8BAAsB,cAAc;;IAIhC,MAAM,CAAC,GAAG,EAAE,GAAG;IAIf,MAAM;IAIN,yFAAyF;IACzF,SAAS,IAAI,YAAY;CAG5B;AAED,8BAAsB,GAAG;IACrB,QAAQ,CAAC,UAAU,IAAI,UAAU;IACjC,QAAQ,CAAC,MAAM,IAAI,MAAM;CAC5B;AAED,4FAA4F;AAC5F,wBAAsB,aAAa,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAG9D;AAED,qBAAa,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,SAAS,GAAG,SAAS;;gBAIrD,OAAO,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE;YACJ,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;YAC3D,WAAW,EAAE,MAAM,CAAC;YACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;YACnB,OAAO,CAAC,EAAE,GAAG,CAAC;SACjB,EAAE,CAAC;QACJ,+BAA+B,CAAC,EAAE,OAAO,CAAA;QACzC,WAAW,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,EAAE,CACL,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,GAAG,CAAC,EAAE,GAAG,EACT,WAAW,CAAC,EAAE,CAAC,KACd,OAAO,CAAC,GAAG,CAAC,CAAC;KACrB;IAID,MAAM,CAAC,GAAG,EAAE,GAAG;IAKf,MAAM;IAIN,UAAU;cA9BA,MAAM;qBACC,MAAM;gBACX;YACJ,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;YAC3D,WAAW,EAAE,MAAM,CAAC;YACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;YACnB,OAAO,CAAC,EAAE,GAAG,CAAC;SACjB,EAAE;yCAC+B,OAAO;sBAC3B,CAAC;iBACN,CACL,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,GAAG,CAAC,EAAE,GAAG,EACT,WAAW,CAAC,EAAE,CAAC,KACd,OAAO,CAAC,GAAG,CAAC;;CAiBxB;AAED,eAAe,OAAO,CAAC"}
package/dist/core/mcp.js CHANGED
@@ -1,7 +1,48 @@
1
+ import EventEmitter from "events";
2
+ export function normalizeToolOutput(raw) {
3
+ if (raw &&
4
+ typeof raw === "object" &&
5
+ (raw.type === "text" || raw.type === "image") &&
6
+ raw.output &&
7
+ typeof raw.output === "object") {
8
+ return raw;
9
+ }
10
+ return { type: "text", output: raw ?? {} };
11
+ }
12
+ export class MCPCustomClass {
13
+ #mcp;
14
+ #events = new EventEmitter();
15
+ setMCP(mcp) {
16
+ this.#mcp = mcp;
17
+ }
18
+ getMCP() {
19
+ return this.#mcp;
20
+ }
21
+ /** Subscribe to / emit interaction events from this tool (e.g. "status", "progress"). */
22
+ getEvents() {
23
+ return this.#events;
24
+ }
25
+ }
26
+ export class MCP {
27
+ }
28
+ /** Convenience helper: get a fresh, guaranteed-unique hex id from an MCP instance's RNG. */
29
+ export async function generateRefId(mcp) {
30
+ if (!mcp)
31
+ return `0x${Math.random().toString(16).slice(2, 10)}`;
32
+ return mcp.getRNG().getRNG();
33
+ }
1
34
  export class MCPTool {
2
35
  #options;
36
+ #mcp;
3
37
  constructor(options) {
4
- this.#options = options;
38
+ this.#options = { stopIterationAfterUsingThisTool: false, ...options };
39
+ }
40
+ setMCP(mcp) {
41
+ this.#mcp = mcp;
42
+ this.#options.customClass?.setMCP(mcp);
43
+ }
44
+ getMCP() {
45
+ return this.#mcp;
5
46
  }
6
47
  getOptions() {
7
48
  return this.#options;
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/core/mcp.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,OAAO;IAChB,QAAQ,CAAC;IACT,YAAY,OAWX;QACG,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC5B,CAAC;IAED,UAAU;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;CACJ;AAED,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/core/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,QAAQ,CAAC;AASlC,MAAM,UAAU,mBAAmB,CAAC,GAAQ;IACxC,IACI,GAAG;QACH,OAAO,GAAG,KAAK,QAAQ;QACvB,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC;QAC7C,GAAG,CAAC,MAAM;QACV,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,EAChC,CAAC;QACC,OAAO,GAAoB,CAAC;IAChC,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC;AAC/C,CAAC;AAGD,MAAM,OAAgB,cAAc;IAChC,IAAI,CAAkB;IACtB,OAAO,GAAiB,IAAI,YAAY,EAAE,CAAC;IAE3C,MAAM,CAAC,GAAQ;QACX,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IACpB,CAAC;IAED,MAAM;QACF,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,yFAAyF;IACzF,SAAS;QACL,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;CACJ;AAED,MAAM,OAAgB,GAAG;CAGxB;AAED,4FAA4F;AAC5F,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAS;IACzC,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;IAChE,OAAO,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,OAAO,OAAO;IAChB,QAAQ,CAAC;IACT,IAAI,CAAkB;IAEtB,YAAY,OAkBX;QACG,IAAI,CAAC,QAAQ,GAAG,EAAE,+BAA+B,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC;IAC3E,CAAC;IAED,MAAM,CAAC,GAAQ;QACX,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM;QACF,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,UAAU;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;CACJ;AAED,eAAe,OAAO,CAAC"}
@@ -1,9 +1,16 @@
1
- import AIProvider, { type Message, type ChatResponse, type StreamCallback } from "./ai-provider.js";
1
+ import type { Message, ChatResponse, StreamCallback, ToolSchema, ProviderCapabilities } from "./ai-provider.js";
2
+ import AIProvider from "./ai-provider.js";
2
3
  export declare class OllamaProvider extends AIProvider {
3
4
  private client;
4
5
  private model;
5
- constructor(model: string, host?: string);
6
- chat(messages: Message[], streamCallback?: StreamCallback): Promise<ChatResponse>;
6
+ private supportsTools;
7
+ private contextWindow;
8
+ constructor(model: string, host?: string, options?: {
9
+ supportsTools?: boolean;
10
+ contextWindow?: number;
11
+ });
12
+ getCapabilities(): ProviderCapabilities;
13
+ chat(messages: Message[], streamCallback?: StreamCallback, tools?: ToolSchema[]): Promise<ChatResponse>;
7
14
  }
8
15
  export default OllamaProvider;
9
16
  //# sourceMappingURL=ollama-provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ollama-provider.d.ts","sourceRoot":"","sources":["../../src/core/ollama-provider.ts"],"names":[],"mappings":"AACA,OAAO,UAAU,EAAE,EAAE,KAAK,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEpG,qBAAa,cAAe,SAAQ,UAAU;IAC1C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;gBAEV,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,MAAiC;IAM5D,IAAI,CACN,QAAQ,EAAE,OAAO,EAAE,EACnB,cAAc,CAAC,EAAE,cAAc,GAChC,OAAO,CAAC,YAAY,CAAC;CAmD3B;AAED,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"ollama-provider.d.ts","sourceRoot":"","sources":["../../src/core/ollama-provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAmB,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACjI,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAuD1C,qBAAa,cAAe,SAAQ,UAAU;IAC1C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IAMtB,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,aAAa,CAAS;gBAElB,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,MAAiC,EAAE,OAAO,GAAE;QAAE,aAAa,CAAC,EAAE,OAAO,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAO;IAQrI,eAAe,IAAI,oBAAoB;IASjC,IAAI,CACN,QAAQ,EAAE,OAAO,EAAE,EACnB,cAAc,CAAC,EAAE,cAAc,EAC/B,KAAK,CAAC,EAAE,UAAU,EAAE,GACrB,OAAO,CAAC,YAAY,CAAC;CAqE3B;AAED,eAAe,cAAc,CAAC"}
@@ -1,57 +1,138 @@
1
1
  import { Ollama } from "ollama";
2
- import AIProvider, {} from "./ai-provider.js";
2
+ import AIProvider from "./ai-provider.js";
3
+ import { toOpenAIFunctionTools } from "./tool-schema-translator.js";
4
+ import { withRetry } from "./retry.js";
5
+ const DEFAULT_CONTEXT_WINDOW = 32_000;
6
+ function toOllamaMessages(messages, supportsTools) {
7
+ return messages.map(msg => {
8
+ // Ollama rejects `tool`-role messages for models that don't support
9
+ // tool-calling at all (it throws). BaseAgent only builds tool-role
10
+ // messages when it already knows supportsTools is true, so this is
11
+ // just a defensive downgrade in case a `tool` message ever reaches
12
+ // here on a non-tool-capable model — fold it into `system` instead
13
+ // of letting the API error out.
14
+ if (msg.role === "tool" && !supportsTools) {
15
+ return { role: "system", content: msg.content || "" };
16
+ }
17
+ if (msg.role === "tool") {
18
+ return {
19
+ role: "tool",
20
+ content: msg.content || "",
21
+ tool_name: msg.toolName,
22
+ };
23
+ }
24
+ if (msg.role === "assistant" && msg.toolCalls?.length && supportsTools) {
25
+ return {
26
+ role: "assistant",
27
+ content: msg.content || "",
28
+ tool_calls: msg.toolCalls.map(tc => ({
29
+ function: { name: tc.name, arguments: tc.inputs },
30
+ })),
31
+ };
32
+ }
33
+ if (msg.parts?.length) {
34
+ const text = msg.parts.filter(p => p.type === "text").map(p => p.text).join("\n");
35
+ const images = msg.parts.filter(p => p.type === "image").map(p => p.image);
36
+ return { role: msg.role, content: text, ...(images.length ? { images } : {}) };
37
+ }
38
+ return { role: msg.role, content: msg.content || "" };
39
+ });
40
+ }
41
+ function fromOllamaToolCalls(toolCalls) {
42
+ if (!toolCalls || toolCalls.length === 0)
43
+ return undefined;
44
+ return toolCalls.map((tc, idx) => ({
45
+ id: `${idx}`,
46
+ name: tc.function?.name || "",
47
+ inputs: tc.function?.arguments || {},
48
+ }));
49
+ }
3
50
  export class OllamaProvider extends AIProvider {
4
51
  client;
5
52
  model;
6
- constructor(model, host = "http://localhost:11434") {
53
+ // Whether the currently-configured model supports Ollama's native
54
+ // function-calling API. Ollama throws if `tools` is sent to a model
55
+ // that doesn't support it, so this must be known ahead of time rather
56
+ // than discovered by trial and error — callers should set this based on
57
+ // the model card (most recent tool-capable families default to true).
58
+ supportsTools;
59
+ contextWindow;
60
+ constructor(model, host = "http://localhost:11434", options = {}) {
7
61
  super();
8
62
  this.client = new Ollama({ host });
9
63
  this.model = model;
64
+ this.supportsTools = options.supportsTools ?? false;
65
+ this.contextWindow = options.contextWindow ?? DEFAULT_CONTEXT_WINDOW;
10
66
  }
11
- async chat(messages, streamCallback) {
12
- const formattedMessages = messages.map(msg => ({
13
- role: msg.role,
14
- content: msg.content || ""
15
- }));
67
+ getCapabilities() {
68
+ return {
69
+ supportsTools: this.supportsTools,
70
+ supportsImages: true,
71
+ contextWindow: this.contextWindow,
72
+ safeUsageRatio: 0.5,
73
+ };
74
+ }
75
+ async chat(messages, streamCallback, tools) {
76
+ const formattedMessages = toOllamaMessages(messages, this.supportsTools);
77
+ // Never send `tools` to a model we don't know supports it — Ollama
78
+ // throws rather than silently ignoring an unsupported `tools` field.
79
+ const formattedTools = tools && tools.length > 0 && this.supportsTools
80
+ ? toOpenAIFunctionTools(tools)
81
+ : undefined;
16
82
  if (streamCallback) {
17
- const stream = await this.client.chat({
18
- model: this.model,
19
- messages: formattedMessages,
20
- stream: true
21
- });
22
- let fullContent = "";
23
- let promptEvalCount = 0;
24
- let evalCount = 0;
25
- for await (const chunk of stream) {
26
- const content = chunk.message?.content || "";
27
- if (content) {
28
- fullContent += content;
29
- streamCallback({ role: "assistant", content, done: false });
30
- }
31
- if (chunk.prompt_eval_count !== undefined) {
32
- promptEvalCount = chunk.prompt_eval_count;
83
+ return withRetry(async () => {
84
+ // Per-attempt accumulators live inside this closure so a
85
+ // failed/partial stream from a previous attempt never leaks
86
+ // into a retry's output — each attempt starts clean.
87
+ const stream = await this.client.chat({
88
+ model: this.model,
89
+ messages: formattedMessages,
90
+ ...(formattedTools ? { tools: formattedTools } : {}),
91
+ stream: true
92
+ });
93
+ let fullContent = "";
94
+ let promptEvalCount = 0;
95
+ let evalCount = 0;
96
+ let toolCalls;
97
+ for await (const chunk of stream) {
98
+ const content = chunk.message?.content || "";
99
+ if (content) {
100
+ fullContent += content;
101
+ streamCallback({ role: "assistant", content, done: false });
102
+ }
103
+ if (chunk.message?.tool_calls?.length) {
104
+ toolCalls = fromOllamaToolCalls(chunk.message.tool_calls);
105
+ }
106
+ if (chunk.prompt_eval_count !== undefined) {
107
+ promptEvalCount = chunk.prompt_eval_count;
108
+ }
109
+ if (chunk.eval_count !== undefined) {
110
+ evalCount = chunk.eval_count;
111
+ }
33
112
  }
34
- if (chunk.eval_count !== undefined) {
35
- evalCount = chunk.eval_count;
36
- }
37
- }
38
- streamCallback({ role: "assistant", content: "", done: true });
39
- return {
40
- content: fullContent,
41
- inputTokens: promptEvalCount,
42
- outputTokens: evalCount
43
- };
113
+ streamCallback({ role: "assistant", content: "", done: true, ...(toolCalls ? { toolCalls } : {}) });
114
+ return {
115
+ content: fullContent,
116
+ inputTokens: promptEvalCount,
117
+ outputTokens: evalCount,
118
+ ...(toolCalls ? { toolCalls } : {}),
119
+ };
120
+ });
44
121
  }
45
122
  else {
46
- const response = await this.client.chat({
47
- model: this.model,
48
- messages: formattedMessages
123
+ return withRetry(async () => {
124
+ const response = await this.client.chat({
125
+ model: this.model,
126
+ messages: formattedMessages,
127
+ ...(formattedTools ? { tools: formattedTools } : {}),
128
+ });
129
+ return {
130
+ content: response.message?.content || "",
131
+ inputTokens: response.prompt_eval_count || 0,
132
+ outputTokens: response.eval_count || 0,
133
+ ...(fromOllamaToolCalls(response.message?.tool_calls) ? { toolCalls: fromOllamaToolCalls(response.message?.tool_calls) } : {}),
134
+ };
49
135
  });
50
- return {
51
- content: response.message?.content || "",
52
- inputTokens: response.prompt_eval_count || 0,
53
- outputTokens: response.eval_count || 0
54
- };
55
136
  }
56
137
  }
57
138
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ollama-provider.js","sourceRoot":"","sources":["../../src/core/ollama-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,UAAU,EAAE,EAAwD,MAAM,kBAAkB,CAAC;AAEpG,MAAM,OAAO,cAAe,SAAQ,UAAU;IAClC,MAAM,CAAS;IACf,KAAK,CAAS;IAEtB,YAAY,KAAa,EAAE,OAAe,wBAAwB;QAC9D,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,IAAI,CACN,QAAmB,EACnB,cAA+B;QAE/B,MAAM,iBAAiB,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC3C,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE;SAC7B,CAAC,CAAC,CAAC;QAEJ,IAAI,cAAc,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBAClC,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,iBAAwB;gBAClC,MAAM,EAAE,IAAI;aACf,CAAC,CAAC;YAEH,IAAI,WAAW,GAAG,EAAE,CAAC;YACrB,IAAI,eAAe,GAAG,CAAC,CAAC;YACxB,IAAI,SAAS,GAAG,CAAC,CAAC;YAElB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;gBAC7C,IAAI,OAAO,EAAE,CAAC;oBACV,WAAW,IAAI,OAAO,CAAC;oBACvB,cAAc,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBAChE,CAAC;gBAED,IAAI,KAAK,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;oBACxC,eAAe,GAAG,KAAK,CAAC,iBAAiB,CAAC;gBAC9C,CAAC;gBACD,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;oBACjC,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC;gBACjC,CAAC;YACL,CAAC;YAED,cAAc,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/D,OAAO;gBACH,OAAO,EAAE,WAAW;gBACpB,WAAW,EAAE,eAAe;gBAC5B,YAAY,EAAE,SAAS;aAC1B,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBACpC,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,iBAAwB;aACrC,CAAC,CAAC;YAEH,OAAO;gBACH,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE;gBACxC,WAAW,EAAE,QAAQ,CAAC,iBAAiB,IAAI,CAAC;gBAC5C,YAAY,EAAE,QAAQ,CAAC,UAAU,IAAI,CAAC;aACzC,CAAC;QACN,CAAC;IACL,CAAC;CACJ;AAED,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"ollama-provider.js","sourceRoot":"","sources":["../../src/core/ollama-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAEtC,SAAS,gBAAgB,CAAC,QAAmB,EAAE,aAAsB;IACjE,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QACtB,oEAAoE;QACpE,mEAAmE;QACnE,mEAAmE;QACnE,mEAAmE;QACnE,mEAAmE;QACnE,gCAAgC;QAChC,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YACxC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;QAC1D,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACtB,OAAO;gBACH,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE;gBAC1B,SAAS,EAAE,GAAG,CAAC,QAAQ;aAC1B,CAAC;QACN,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,GAAG,CAAC,SAAS,EAAE,MAAM,IAAI,aAAa,EAAE,CAAC;YACrE,OAAO;gBACH,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE;gBAC1B,UAAU,EAAE,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;oBACjC,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,MAAM,EAAE;iBACpD,CAAC,CAAC;aACN,CAAC;QACN,CAAC;QAED,IAAI,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;YACpB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAE,CAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3F,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAE,CAAS,CAAC,KAAK,CAAC,CAAC;YACpF,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACnF,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;IAC1D,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,mBAAmB,CAAC,SAA4B;IACrD,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3D,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,EAAO,EAAE,GAAW,EAAE,EAAE,CAAC,CAAC;QAC5C,EAAE,EAAE,GAAG,GAAG,EAAE;QACZ,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE;QAC7B,MAAM,EAAE,EAAE,CAAC,QAAQ,EAAE,SAAS,IAAI,EAAE;KACvC,CAAC,CAAC,CAAC;AACR,CAAC;AAED,MAAM,OAAO,cAAe,SAAQ,UAAU;IAClC,MAAM,CAAS;IACf,KAAK,CAAS;IACtB,kEAAkE;IAClE,oEAAoE;IACpE,sEAAsE;IACtE,wEAAwE;IACxE,sEAAsE;IAC9D,aAAa,CAAU;IACvB,aAAa,CAAS;IAE9B,YAAY,KAAa,EAAE,OAAe,wBAAwB,EAAE,UAA+D,EAAE;QACjI,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,KAAK,CAAC;QACpD,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,sBAAsB,CAAC;IACzE,CAAC;IAED,eAAe;QACX,OAAO;YACH,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,cAAc,EAAE,GAAG;SACtB,CAAC;IACN,CAAC;IAED,KAAK,CAAC,IAAI,CACN,QAAmB,EACnB,cAA+B,EAC/B,KAAoB;QAEpB,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACzE,mEAAmE;QACnE,qEAAqE;QACrE,MAAM,cAAc,GAAG,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa;YAClE,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC;YAC9B,CAAC,CAAC,SAAS,CAAC;QAEhB,IAAI,cAAc,EAAE,CAAC;YACjB,OAAO,SAAS,CAAC,KAAK,IAAI,EAAE;gBACxB,yDAAyD;gBACzD,4DAA4D;gBAC5D,qDAAqD;gBACrD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;oBAClC,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,QAAQ,EAAE,iBAAwB;oBAClC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpD,MAAM,EAAE,IAAI;iBACf,CAAC,CAAC;gBAEH,IAAI,WAAW,GAAG,EAAE,CAAC;gBACrB,IAAI,eAAe,GAAG,CAAC,CAAC;gBACxB,IAAI,SAAS,GAAG,CAAC,CAAC;gBAClB,IAAI,SAAwC,CAAC;gBAE7C,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;oBAC7C,IAAI,OAAO,EAAE,CAAC;wBACV,WAAW,IAAI,OAAO,CAAC;wBACvB,cAAc,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;oBAChE,CAAC;oBAED,IAAI,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;wBACpC,SAAS,GAAG,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,UAAiB,CAAC,CAAC;oBACrE,CAAC;oBAED,IAAI,KAAK,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;wBACxC,eAAe,GAAG,KAAK,CAAC,iBAAiB,CAAC;oBAC9C,CAAC;oBACD,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;wBACjC,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC;oBACjC,CAAC;gBACL,CAAC;gBAED,cAAc,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBACpG,OAAO;oBACH,OAAO,EAAE,WAAW;oBACpB,WAAW,EAAE,eAAe;oBAC5B,YAAY,EAAE,SAAS;oBACvB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACtC,CAAC;YACN,CAAC,CAAC,CAAC;QACP,CAAC;aAAM,CAAC;YACJ,OAAO,SAAS,CAAC,KAAK,IAAI,EAAE;gBACxB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;oBACpC,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,QAAQ,EAAE,iBAAwB;oBAClC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACvD,CAAC,CAAC;gBAEH,OAAO;oBACH,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE;oBACxC,WAAW,EAAE,QAAQ,CAAC,iBAAiB,IAAI,CAAC;oBAC5C,YAAY,EAAE,QAAQ,CAAC,UAAU,IAAI,CAAC;oBACtC,GAAG,CAAC,mBAAmB,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,mBAAmB,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC/I,CAAC;YACN,CAAC,CAAC,CAAC;QACP,CAAC;IACL,CAAC;CACJ;AAED,eAAe,cAAc,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Runs `fn`, retrying on any thrown error using the fixed backoff schedule
3
+ * above. Every error is treated as transient/retryable — callers that only
4
+ * want to retry specific error shapes should filter inside `fn` and rethrow
5
+ * a non-retryable marker instead (not needed currently, since all providers
6
+ * here want to retry on any error: network errors, timeouts, 5xx, etc).
7
+ */
8
+ export declare function withRetry<T>(fn: () => Promise<T>): Promise<T>;
9
+ export default withRetry;
10
+ //# sourceMappingURL=retry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/core/retry.ts"],"names":[],"mappings":"AAgBA;;;;;;GAMG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAenE;AAED,eAAe,SAAS,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Retry-with-backoff helper. Each provider calls this around its own SDK
3
+ * call (not a central wrapper in BaseAgent) so provider-specific errors
4
+ * (rate limits, transient 5xx, network blips) are retried right at the
5
+ * source before ever reaching the agent loop.
6
+ *
7
+ * Schedule: 1s, 2s, 4s, 8s between attempts (4 waits => 5 total attempts).
8
+ * After the last attempt still fails, the error is rethrown as-is so the
9
+ * caller sees the real underlying error rather than a generic wrapper.
10
+ */
11
+ const BACKOFF_SCHEDULE_MS = [1_000, 2_000, 4_000, 8_000];
12
+ function sleep(ms) {
13
+ return new Promise(resolve => setTimeout(resolve, ms));
14
+ }
15
+ /**
16
+ * Runs `fn`, retrying on any thrown error using the fixed backoff schedule
17
+ * above. Every error is treated as transient/retryable — callers that only
18
+ * want to retry specific error shapes should filter inside `fn` and rethrow
19
+ * a non-retryable marker instead (not needed currently, since all providers
20
+ * here want to retry on any error: network errors, timeouts, 5xx, etc).
21
+ */
22
+ export async function withRetry(fn) {
23
+ let lastError;
24
+ for (let attempt = 0; attempt <= BACKOFF_SCHEDULE_MS.length; attempt++) {
25
+ try {
26
+ return await fn();
27
+ }
28
+ catch (err) {
29
+ lastError = err;
30
+ const waitMs = BACKOFF_SCHEDULE_MS[attempt];
31
+ if (waitMs === undefined)
32
+ break; // no more retries left
33
+ await sleep(waitMs);
34
+ }
35
+ }
36
+ throw lastError;
37
+ }
38
+ export default withRetry;
39
+ //# sourceMappingURL=retry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/core/retry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAEzD,SAAS,KAAK,CAAC,EAAU;IACrB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAI,EAAoB;IACnD,IAAI,SAAkB,CAAC;IAEvB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;QACrE,IAAI,CAAC;YACD,OAAO,MAAM,EAAE,EAAE,CAAC;QACtB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,SAAS,GAAG,GAAG,CAAC;YAChB,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,MAAM,KAAK,SAAS;gBAAE,MAAM,CAAC,uBAAuB;YACxD,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC;IACL,CAAC;IAED,MAAM,SAAS,CAAC;AACpB,CAAC;AAED,eAAe,SAAS,CAAC"}
@@ -1,14 +1,17 @@
1
+ import type MCPTool from "./mcp.js";
1
2
  export declare class Skill {
2
3
  #private;
3
4
  constructor(skill: {
4
5
  name: string;
5
6
  description: string;
6
7
  instructions: string;
8
+ tools: MCPTool<any>[];
7
9
  });
8
10
  getSkill(): {
9
11
  name: string;
10
12
  description: string;
11
13
  instructions: string;
14
+ tools: MCPTool<any>[];
12
15
  };
13
16
  }
14
17
  export default Skill;
@@ -1 +1 @@
1
- {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/core/skill.ts"],"names":[],"mappings":"AAAA,qBAAa,KAAK;;gBAEF,KAAK,EAAE;QACf,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;KACxB;IAID,QAAQ;cAPE,MAAM;qBACC,MAAM;sBACL,MAAM;;CAQ3B;AAED,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/core/skill.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,UAAU,CAAC;AAEpC,qBAAa,KAAK;;gBAEF,KAAK,EAAE;QACf,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAA;KACxB;IAID,QAAQ;cARE,MAAM;qBACC,MAAM;sBACL,MAAM;eACb,OAAO,CAAC,GAAG,CAAC,EAAE;;CAQ5B;AAED,eAAe,KAAK,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/core/skill.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,KAAK;IACd,MAAM,CAAC;IACP,YAAY,KAIX;QACG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;CACJ;AAED,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/core/skill.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,KAAK;IACd,MAAM,CAAC;IACP,YAAY,KAKX;QACG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;CACJ;AAED,eAAe,KAAK,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { ToolSchema } from "./ai-provider.js";
2
+ /**
3
+ * Translates our standard, provider-agnostic ToolSchema[] into the
4
+ * OpenAI-compatible `tools: [{type:"function", function:{...}}]` shape.
5
+ * Both the OpenAI SDK (DeepSeekProvider) and Ollama's function-calling API
6
+ * use this same shape, so it's shared rather than duplicated per provider.
7
+ */
8
+ export declare function toOpenAIFunctionTools(tools: ToolSchema[]): any[];
9
+ export default toOpenAIFunctionTools;
10
+ //# sourceMappingURL=tool-schema-translator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-schema-translator.d.ts","sourceRoot":"","sources":["../../src/core/tool-schema-translator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,GAAG,EAAE,CAoBhE;AAED,eAAe,qBAAqB,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Translates our standard, provider-agnostic ToolSchema[] into the
3
+ * OpenAI-compatible `tools: [{type:"function", function:{...}}]` shape.
4
+ * Both the OpenAI SDK (DeepSeekProvider) and Ollama's function-calling API
5
+ * use this same shape, so it's shared rather than duplicated per provider.
6
+ */
7
+ export function toOpenAIFunctionTools(tools) {
8
+ return tools.map(t => ({
9
+ type: "function",
10
+ function: {
11
+ name: t.name,
12
+ description: t.description,
13
+ parameters: {
14
+ type: "object",
15
+ properties: Object.fromEntries(t.inputs.map(i => [
16
+ i.name,
17
+ {
18
+ type: i.type === "array" ? "array" : i.type === "object" ? "object" : i.type,
19
+ description: i.description,
20
+ ...(i.default !== undefined ? { default: i.default } : {}),
21
+ }
22
+ ])),
23
+ required: t.inputs.filter(i => i.required).map(i => i.name),
24
+ },
25
+ },
26
+ }));
27
+ }
28
+ export default toOpenAIFunctionTools;
29
+ //# sourceMappingURL=tool-schema-translator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-schema-translator.js","sourceRoot":"","sources":["../../src/core/tool-schema-translator.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAmB;IACrD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACnB,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACN,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,UAAU,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC7C,CAAC,CAAC,IAAI;oBACN;wBACI,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;wBAC5E,WAAW,EAAE,CAAC,CAAC,WAAW;wBAC1B,GAAG,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC7D;iBACJ,CAAC,CAAC;gBACH,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aAC9D;SACJ;KACJ,CAAC,CAAC,CAAC;AACR,CAAC;AAED,eAAe,qBAAqB,CAAC"}