toolpack-sdk 1.2.0-SNAPSHOT.4032026 → 1.2.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 (488) hide show
  1. package/README.md +857 -0
  2. package/dist/index.cjs +308 -0
  3. package/dist/index.d.cts +2276 -0
  4. package/dist/index.d.ts +2276 -11
  5. package/dist/index.js +308 -1
  6. package/package.json +17 -9
  7. package/dist/client/base-agent-context.d.ts +0 -15
  8. package/dist/client/base-agent-context.js +0 -8
  9. package/dist/client/index.d.ts +0 -142
  10. package/dist/client/index.js +0 -43
  11. package/dist/client/query-classifier.d.ts +0 -26
  12. package/dist/client/query-classifier.js +0 -1
  13. package/dist/client/tool-orchestrator.d.ts +0 -41
  14. package/dist/client/tool-orchestrator.js +0 -1
  15. package/dist/errors/index.d.ts +0 -30
  16. package/dist/errors/index.js +0 -1
  17. package/dist/mcp/client.d.ts +0 -55
  18. package/dist/mcp/client.js +0 -3
  19. package/dist/mcp/index.d.ts +0 -2
  20. package/dist/mcp/index.js +0 -1
  21. package/dist/mcp/types.d.ts +0 -30
  22. package/dist/mcp/types.js +0 -1
  23. package/dist/modes/built-in-modes.d.ts +0 -28
  24. package/dist/modes/built-in-modes.js +0 -1
  25. package/dist/modes/create-mode.d.ts +0 -58
  26. package/dist/modes/create-mode.js +0 -1
  27. package/dist/modes/index.d.ts +0 -4
  28. package/dist/modes/index.js +0 -1
  29. package/dist/modes/mode-registry.d.ts +0 -49
  30. package/dist/modes/mode-registry.js +0 -1
  31. package/dist/modes/mode-types.d.ts +0 -81
  32. package/dist/modes/mode-types.js +0 -1
  33. package/dist/providers/anthropic/index.d.ts +0 -37
  34. package/dist/providers/anthropic/index.js +0 -3
  35. package/dist/providers/base/index.d.ts +0 -53
  36. package/dist/providers/base/index.js +0 -1
  37. package/dist/providers/config.d.ts +0 -55
  38. package/dist/providers/config.js +0 -1
  39. package/dist/providers/gemini/index.d.ts +0 -31
  40. package/dist/providers/gemini/index.js +0 -13
  41. package/dist/providers/index.d.ts +0 -10
  42. package/dist/providers/index.js +0 -1
  43. package/dist/providers/media-utils.d.ts +0 -20
  44. package/dist/providers/media-utils.js +0 -1
  45. package/dist/providers/ollama/adapter.d.ts +0 -66
  46. package/dist/providers/ollama/adapter.js +0 -5
  47. package/dist/providers/ollama/http.d.ts +0 -8
  48. package/dist/providers/ollama/http.js +0 -2
  49. package/dist/providers/ollama/index.d.ts +0 -3
  50. package/dist/providers/ollama/index.js +0 -1
  51. package/dist/providers/ollama/provider.d.ts +0 -37
  52. package/dist/providers/ollama/provider.js +0 -1
  53. package/dist/providers/ollama/slm-healer.d.ts +0 -45
  54. package/dist/providers/ollama/slm-healer.js +0 -30
  55. package/dist/providers/ollama/slm-registry.d.ts +0 -46
  56. package/dist/providers/ollama/slm-registry.js +0 -1
  57. package/dist/providers/openai/index.d.ts +0 -21
  58. package/dist/providers/openai/index.js +0 -1
  59. package/dist/providers/provider-logger.d.ts +0 -36
  60. package/dist/providers/provider-logger.js +0 -2
  61. package/dist/toolpack.d.ts +0 -150
  62. package/dist/toolpack.js +0 -1
  63. package/dist/tools/cloud-tools/index.d.ts +0 -6
  64. package/dist/tools/cloud-tools/index.js +0 -1
  65. package/dist/tools/cloud-tools/providers/netlify.d.ts +0 -8
  66. package/dist/tools/cloud-tools/providers/netlify.js +0 -1
  67. package/dist/tools/cloud-tools/tools/deploy/index.d.ts +0 -2
  68. package/dist/tools/cloud-tools/tools/deploy/index.js +0 -1
  69. package/dist/tools/cloud-tools/tools/deploy/schema.d.ts +0 -2
  70. package/dist/tools/cloud-tools/tools/deploy/schema.js +0 -1
  71. package/dist/tools/cloud-tools/tools/list/index.d.ts +0 -2
  72. package/dist/tools/cloud-tools/tools/list/index.js +0 -1
  73. package/dist/tools/cloud-tools/tools/list/schema.d.ts +0 -2
  74. package/dist/tools/cloud-tools/tools/list/schema.js +0 -1
  75. package/dist/tools/cloud-tools/tools/status/index.d.ts +0 -2
  76. package/dist/tools/cloud-tools/tools/status/index.js +0 -1
  77. package/dist/tools/cloud-tools/tools/status/schema.d.ts +0 -2
  78. package/dist/tools/cloud-tools/tools/status/schema.js +0 -1
  79. package/dist/tools/coding-tools/index.d.ts +0 -14
  80. package/dist/tools/coding-tools/index.js +0 -1
  81. package/dist/tools/coding-tools/parsers/babel-parser.d.ts +0 -15
  82. package/dist/tools/coding-tools/parsers/babel-parser.js +0 -8
  83. package/dist/tools/coding-tools/parsers/file-index.d.ts +0 -15
  84. package/dist/tools/coding-tools/parsers/file-index.js +0 -1
  85. package/dist/tools/coding-tools/parsers/grammar-manager.d.ts +0 -8
  86. package/dist/tools/coding-tools/parsers/grammar-manager.js +0 -1
  87. package/dist/tools/coding-tools/parsers/language-detector.d.ts +0 -2
  88. package/dist/tools/coding-tools/parsers/language-detector.js +0 -1
  89. package/dist/tools/coding-tools/parsers/parser-factory.d.ts +0 -9
  90. package/dist/tools/coding-tools/parsers/parser-factory.js +0 -1
  91. package/dist/tools/coding-tools/parsers/parsing-context.d.ts +0 -14
  92. package/dist/tools/coding-tools/parsers/parsing-context.js +0 -1
  93. package/dist/tools/coding-tools/parsers/queries/cpp.d.ts +0 -2
  94. package/dist/tools/coding-tools/parsers/queries/cpp.js +0 -22
  95. package/dist/tools/coding-tools/parsers/queries/go.d.ts +0 -2
  96. package/dist/tools/coding-tools/parsers/queries/go.js +0 -29
  97. package/dist/tools/coding-tools/parsers/queries/index.d.ts +0 -9
  98. package/dist/tools/coding-tools/parsers/queries/index.js +0 -1
  99. package/dist/tools/coding-tools/parsers/queries/java.d.ts +0 -2
  100. package/dist/tools/coding-tools/parsers/queries/java.js +0 -22
  101. package/dist/tools/coding-tools/parsers/queries/python.d.ts +0 -2
  102. package/dist/tools/coding-tools/parsers/queries/python.js +0 -19
  103. package/dist/tools/coding-tools/parsers/queries/rust.d.ts +0 -2
  104. package/dist/tools/coding-tools/parsers/queries/rust.js +0 -23
  105. package/dist/tools/coding-tools/parsers/shared.d.ts +0 -6
  106. package/dist/tools/coding-tools/parsers/shared.js +0 -1
  107. package/dist/tools/coding-tools/parsers/tree-sitter-parser.d.ts +0 -23
  108. package/dist/tools/coding-tools/parsers/tree-sitter-parser.js +0 -25
  109. package/dist/tools/coding-tools/parsers/types.d.ts +0 -80
  110. package/dist/tools/coding-tools/parsers/types.js +0 -1
  111. package/dist/tools/coding-tools/tools/extract-function/index.d.ts +0 -2
  112. package/dist/tools/coding-tools/tools/extract-function/index.js +0 -1
  113. package/dist/tools/coding-tools/tools/extract-function/schema.d.ts +0 -14
  114. package/dist/tools/coding-tools/tools/extract-function/schema.js +0 -1
  115. package/dist/tools/coding-tools/tools/find-references/index.d.ts +0 -2
  116. package/dist/tools/coding-tools/tools/find-references/index.js +0 -1
  117. package/dist/tools/coding-tools/tools/find-references/schema.d.ts +0 -6
  118. package/dist/tools/coding-tools/tools/find-references/schema.js +0 -1
  119. package/dist/tools/coding-tools/tools/find-symbol/index.d.ts +0 -2
  120. package/dist/tools/coding-tools/tools/find-symbol/index.js +0 -1
  121. package/dist/tools/coding-tools/tools/find-symbol/schema.d.ts +0 -6
  122. package/dist/tools/coding-tools/tools/find-symbol/schema.js +0 -1
  123. package/dist/tools/coding-tools/tools/get-call-hierarchy/index.d.ts +0 -2
  124. package/dist/tools/coding-tools/tools/get-call-hierarchy/index.js +0 -1
  125. package/dist/tools/coding-tools/tools/get-call-hierarchy/schema.d.ts +0 -11
  126. package/dist/tools/coding-tools/tools/get-call-hierarchy/schema.js +0 -1
  127. package/dist/tools/coding-tools/tools/get-diagnostics/index.d.ts +0 -2
  128. package/dist/tools/coding-tools/tools/get-diagnostics/index.js +0 -1
  129. package/dist/tools/coding-tools/tools/get-diagnostics/schema.d.ts +0 -9
  130. package/dist/tools/coding-tools/tools/get-diagnostics/schema.js +0 -1
  131. package/dist/tools/coding-tools/tools/get-exports/index.d.ts +0 -2
  132. package/dist/tools/coding-tools/tools/get-exports/index.js +0 -1
  133. package/dist/tools/coding-tools/tools/get-exports/schema.d.ts +0 -9
  134. package/dist/tools/coding-tools/tools/get-exports/schema.js +0 -1
  135. package/dist/tools/coding-tools/tools/get-imports/index.d.ts +0 -2
  136. package/dist/tools/coding-tools/tools/get-imports/index.js +0 -1
  137. package/dist/tools/coding-tools/tools/get-imports/schema.d.ts +0 -6
  138. package/dist/tools/coding-tools/tools/get-imports/schema.js +0 -1
  139. package/dist/tools/coding-tools/tools/get-outline/index.d.ts +0 -2
  140. package/dist/tools/coding-tools/tools/get-outline/index.js +0 -1
  141. package/dist/tools/coding-tools/tools/get-outline/schema.d.ts +0 -9
  142. package/dist/tools/coding-tools/tools/get-outline/schema.js +0 -1
  143. package/dist/tools/coding-tools/tools/get-symbols/index.d.ts +0 -2
  144. package/dist/tools/coding-tools/tools/get-symbols/index.js +0 -1
  145. package/dist/tools/coding-tools/tools/get-symbols/schema.d.ts +0 -6
  146. package/dist/tools/coding-tools/tools/get-symbols/schema.js +0 -1
  147. package/dist/tools/coding-tools/tools/go-to-definition/index.d.ts +0 -2
  148. package/dist/tools/coding-tools/tools/go-to-definition/index.js +0 -1
  149. package/dist/tools/coding-tools/tools/go-to-definition/schema.d.ts +0 -6
  150. package/dist/tools/coding-tools/tools/go-to-definition/schema.js +0 -1
  151. package/dist/tools/coding-tools/tools/multi-file-edit/index.d.ts +0 -2
  152. package/dist/tools/coding-tools/tools/multi-file-edit/index.js +0 -1
  153. package/dist/tools/coding-tools/tools/multi-file-edit/schema.d.ts +0 -6
  154. package/dist/tools/coding-tools/tools/multi-file-edit/schema.js +0 -1
  155. package/dist/tools/coding-tools/tools/refactor-rename/index.d.ts +0 -2
  156. package/dist/tools/coding-tools/tools/refactor-rename/index.js +0 -3
  157. package/dist/tools/coding-tools/tools/refactor-rename/schema.d.ts +0 -6
  158. package/dist/tools/coding-tools/tools/refactor-rename/schema.js +0 -1
  159. package/dist/tools/config-loader.d.ts +0 -25
  160. package/dist/tools/config-loader.js +0 -1
  161. package/dist/tools/create-tool-project.d.ts +0 -13
  162. package/dist/tools/create-tool-project.js +0 -1
  163. package/dist/tools/db-tools/adapters/base.d.ts +0 -25
  164. package/dist/tools/db-tools/adapters/base.js +0 -1
  165. package/dist/tools/db-tools/adapters/factory.d.ts +0 -4
  166. package/dist/tools/db-tools/adapters/factory.js +0 -1
  167. package/dist/tools/db-tools/adapters/mysql.d.ts +0 -8
  168. package/dist/tools/db-tools/adapters/mysql.js +0 -1
  169. package/dist/tools/db-tools/adapters/postgres.d.ts +0 -13
  170. package/dist/tools/db-tools/adapters/postgres.js +0 -9
  171. package/dist/tools/db-tools/adapters/sqlite.d.ts +0 -12
  172. package/dist/tools/db-tools/adapters/sqlite.js +0 -1
  173. package/dist/tools/db-tools/index.d.ts +0 -10
  174. package/dist/tools/db-tools/index.js +0 -1
  175. package/dist/tools/db-tools/tools/count/index.d.ts +0 -2
  176. package/dist/tools/db-tools/tools/count/index.js +0 -1
  177. package/dist/tools/db-tools/tools/count/schema.d.ts +0 -2
  178. package/dist/tools/db-tools/tools/count/schema.js +0 -1
  179. package/dist/tools/db-tools/tools/delete/index.d.ts +0 -2
  180. package/dist/tools/db-tools/tools/delete/index.js +0 -1
  181. package/dist/tools/db-tools/tools/delete/schema.d.ts +0 -2
  182. package/dist/tools/db-tools/tools/delete/schema.js +0 -1
  183. package/dist/tools/db-tools/tools/insert/index.d.ts +0 -2
  184. package/dist/tools/db-tools/tools/insert/index.js +0 -1
  185. package/dist/tools/db-tools/tools/insert/schema.d.ts +0 -2
  186. package/dist/tools/db-tools/tools/insert/schema.js +0 -1
  187. package/dist/tools/db-tools/tools/query/index.d.ts +0 -2
  188. package/dist/tools/db-tools/tools/query/index.js +0 -1
  189. package/dist/tools/db-tools/tools/query/schema.d.ts +0 -2
  190. package/dist/tools/db-tools/tools/query/schema.js +0 -1
  191. package/dist/tools/db-tools/tools/schema/index.d.ts +0 -2
  192. package/dist/tools/db-tools/tools/schema/index.js +0 -1
  193. package/dist/tools/db-tools/tools/schema/schema.d.ts +0 -2
  194. package/dist/tools/db-tools/tools/schema/schema.js +0 -1
  195. package/dist/tools/db-tools/tools/tables/index.d.ts +0 -2
  196. package/dist/tools/db-tools/tools/tables/index.js +0 -1
  197. package/dist/tools/db-tools/tools/tables/schema.d.ts +0 -2
  198. package/dist/tools/db-tools/tools/tables/schema.js +0 -1
  199. package/dist/tools/db-tools/tools/update/index.d.ts +0 -2
  200. package/dist/tools/db-tools/tools/update/index.js +0 -1
  201. package/dist/tools/db-tools/tools/update/schema.d.ts +0 -2
  202. package/dist/tools/db-tools/tools/update/schema.js +0 -1
  203. package/dist/tools/diff-tools/index.d.ts +0 -6
  204. package/dist/tools/diff-tools/index.js +0 -1
  205. package/dist/tools/diff-tools/tools/apply/index.d.ts +0 -2
  206. package/dist/tools/diff-tools/tools/apply/index.js +0 -1
  207. package/dist/tools/diff-tools/tools/apply/schema.d.ts +0 -2
  208. package/dist/tools/diff-tools/tools/apply/schema.js +0 -1
  209. package/dist/tools/diff-tools/tools/create/index.d.ts +0 -2
  210. package/dist/tools/diff-tools/tools/create/index.js +0 -1
  211. package/dist/tools/diff-tools/tools/create/schema.d.ts +0 -2
  212. package/dist/tools/diff-tools/tools/create/schema.js +0 -1
  213. package/dist/tools/diff-tools/tools/preview/index.d.ts +0 -2
  214. package/dist/tools/diff-tools/tools/preview/index.js +0 -3
  215. package/dist/tools/diff-tools/tools/preview/schema.d.ts +0 -2
  216. package/dist/tools/diff-tools/tools/preview/schema.js +0 -1
  217. package/dist/tools/exec-tools/index.d.ts +0 -8
  218. package/dist/tools/exec-tools/index.js +0 -1
  219. package/dist/tools/exec-tools/process-registry.d.ts +0 -22
  220. package/dist/tools/exec-tools/process-registry.js +0 -1
  221. package/dist/tools/exec-tools/tools/kill/index.d.ts +0 -2
  222. package/dist/tools/exec-tools/tools/kill/index.js +0 -1
  223. package/dist/tools/exec-tools/tools/kill/schema.d.ts +0 -6
  224. package/dist/tools/exec-tools/tools/kill/schema.js +0 -1
  225. package/dist/tools/exec-tools/tools/list-processes/index.d.ts +0 -2
  226. package/dist/tools/exec-tools/tools/list-processes/index.js +0 -1
  227. package/dist/tools/exec-tools/tools/list-processes/schema.d.ts +0 -6
  228. package/dist/tools/exec-tools/tools/list-processes/schema.js +0 -1
  229. package/dist/tools/exec-tools/tools/read-output/index.d.ts +0 -2
  230. package/dist/tools/exec-tools/tools/read-output/index.js +0 -1
  231. package/dist/tools/exec-tools/tools/read-output/schema.d.ts +0 -6
  232. package/dist/tools/exec-tools/tools/read-output/schema.js +0 -1
  233. package/dist/tools/exec-tools/tools/run/index.d.ts +0 -2
  234. package/dist/tools/exec-tools/tools/run/index.js +0 -5
  235. package/dist/tools/exec-tools/tools/run/schema.d.ts +0 -6
  236. package/dist/tools/exec-tools/tools/run/schema.js +0 -1
  237. package/dist/tools/exec-tools/tools/run-background/index.d.ts +0 -2
  238. package/dist/tools/exec-tools/tools/run-background/index.js +0 -1
  239. package/dist/tools/exec-tools/tools/run-background/schema.d.ts +0 -6
  240. package/dist/tools/exec-tools/tools/run-background/schema.js +0 -1
  241. package/dist/tools/exec-tools/tools/run-shell/index.d.ts +0 -2
  242. package/dist/tools/exec-tools/tools/run-shell/index.js +0 -5
  243. package/dist/tools/exec-tools/tools/run-shell/schema.d.ts +0 -6
  244. package/dist/tools/exec-tools/tools/run-shell/schema.js +0 -1
  245. package/dist/tools/fs-tools/index.d.ts +0 -20
  246. package/dist/tools/fs-tools/index.js +0 -1
  247. package/dist/tools/fs-tools/tools/append-file/index.d.ts +0 -2
  248. package/dist/tools/fs-tools/tools/append-file/index.js +0 -1
  249. package/dist/tools/fs-tools/tools/append-file/schema.d.ts +0 -6
  250. package/dist/tools/fs-tools/tools/append-file/schema.js +0 -1
  251. package/dist/tools/fs-tools/tools/batch-read/index.d.ts +0 -2
  252. package/dist/tools/fs-tools/tools/batch-read/index.js +0 -1
  253. package/dist/tools/fs-tools/tools/batch-read/schema.d.ts +0 -6
  254. package/dist/tools/fs-tools/tools/batch-read/schema.js +0 -1
  255. package/dist/tools/fs-tools/tools/batch-write/index.d.ts +0 -2
  256. package/dist/tools/fs-tools/tools/batch-write/index.js +0 -1
  257. package/dist/tools/fs-tools/tools/batch-write/schema.d.ts +0 -6
  258. package/dist/tools/fs-tools/tools/batch-write/schema.js +0 -1
  259. package/dist/tools/fs-tools/tools/copy/index.d.ts +0 -2
  260. package/dist/tools/fs-tools/tools/copy/index.js +0 -1
  261. package/dist/tools/fs-tools/tools/copy/schema.d.ts +0 -6
  262. package/dist/tools/fs-tools/tools/copy/schema.js +0 -1
  263. package/dist/tools/fs-tools/tools/create-dir/index.d.ts +0 -2
  264. package/dist/tools/fs-tools/tools/create-dir/index.js +0 -1
  265. package/dist/tools/fs-tools/tools/create-dir/schema.d.ts +0 -6
  266. package/dist/tools/fs-tools/tools/create-dir/schema.js +0 -1
  267. package/dist/tools/fs-tools/tools/delete-dir/index.d.ts +0 -2
  268. package/dist/tools/fs-tools/tools/delete-dir/index.js +0 -1
  269. package/dist/tools/fs-tools/tools/delete-dir/schema.d.ts +0 -6
  270. package/dist/tools/fs-tools/tools/delete-dir/schema.js +0 -1
  271. package/dist/tools/fs-tools/tools/delete-file/index.d.ts +0 -2
  272. package/dist/tools/fs-tools/tools/delete-file/index.js +0 -1
  273. package/dist/tools/fs-tools/tools/delete-file/schema.d.ts +0 -6
  274. package/dist/tools/fs-tools/tools/delete-file/schema.js +0 -1
  275. package/dist/tools/fs-tools/tools/exists/index.d.ts +0 -2
  276. package/dist/tools/fs-tools/tools/exists/index.js +0 -1
  277. package/dist/tools/fs-tools/tools/exists/schema.d.ts +0 -6
  278. package/dist/tools/fs-tools/tools/exists/schema.js +0 -1
  279. package/dist/tools/fs-tools/tools/glob/index.d.ts +0 -2
  280. package/dist/tools/fs-tools/tools/glob/index.js +0 -1
  281. package/dist/tools/fs-tools/tools/glob/schema.d.ts +0 -6
  282. package/dist/tools/fs-tools/tools/glob/schema.js +0 -1
  283. package/dist/tools/fs-tools/tools/list-dir/index.d.ts +0 -2
  284. package/dist/tools/fs-tools/tools/list-dir/index.js +0 -1
  285. package/dist/tools/fs-tools/tools/list-dir/schema.d.ts +0 -6
  286. package/dist/tools/fs-tools/tools/list-dir/schema.js +0 -1
  287. package/dist/tools/fs-tools/tools/move/index.d.ts +0 -2
  288. package/dist/tools/fs-tools/tools/move/index.js +0 -1
  289. package/dist/tools/fs-tools/tools/move/schema.d.ts +0 -6
  290. package/dist/tools/fs-tools/tools/move/schema.js +0 -1
  291. package/dist/tools/fs-tools/tools/read-file/index.d.ts +0 -2
  292. package/dist/tools/fs-tools/tools/read-file/index.js +0 -1
  293. package/dist/tools/fs-tools/tools/read-file/schema.d.ts +0 -6
  294. package/dist/tools/fs-tools/tools/read-file/schema.js +0 -1
  295. package/dist/tools/fs-tools/tools/read-file-range/index.d.ts +0 -2
  296. package/dist/tools/fs-tools/tools/read-file-range/index.js +0 -4
  297. package/dist/tools/fs-tools/tools/read-file-range/schema.d.ts +0 -6
  298. package/dist/tools/fs-tools/tools/read-file-range/schema.js +0 -1
  299. package/dist/tools/fs-tools/tools/replace-in-file/index.d.ts +0 -2
  300. package/dist/tools/fs-tools/tools/replace-in-file/index.js +0 -1
  301. package/dist/tools/fs-tools/tools/replace-in-file/schema.d.ts +0 -6
  302. package/dist/tools/fs-tools/tools/replace-in-file/schema.js +0 -1
  303. package/dist/tools/fs-tools/tools/search/index.d.ts +0 -2
  304. package/dist/tools/fs-tools/tools/search/index.js +0 -3
  305. package/dist/tools/fs-tools/tools/search/schema.d.ts +0 -6
  306. package/dist/tools/fs-tools/tools/search/schema.js +0 -1
  307. package/dist/tools/fs-tools/tools/stat/index.d.ts +0 -2
  308. package/dist/tools/fs-tools/tools/stat/index.js +0 -1
  309. package/dist/tools/fs-tools/tools/stat/schema.d.ts +0 -6
  310. package/dist/tools/fs-tools/tools/stat/schema.js +0 -1
  311. package/dist/tools/fs-tools/tools/tree/index.d.ts +0 -2
  312. package/dist/tools/fs-tools/tools/tree/index.js +0 -2
  313. package/dist/tools/fs-tools/tools/tree/schema.d.ts +0 -6
  314. package/dist/tools/fs-tools/tools/tree/schema.js +0 -1
  315. package/dist/tools/fs-tools/tools/write-file/index.d.ts +0 -2
  316. package/dist/tools/fs-tools/tools/write-file/index.js +0 -1
  317. package/dist/tools/fs-tools/tools/write-file/schema.d.ts +0 -6
  318. package/dist/tools/fs-tools/tools/write-file/schema.js +0 -1
  319. package/dist/tools/git-tools/index.d.ts +0 -12
  320. package/dist/tools/git-tools/index.js +0 -1
  321. package/dist/tools/git-tools/tools/add/index.d.ts +0 -2
  322. package/dist/tools/git-tools/tools/add/index.js +0 -1
  323. package/dist/tools/git-tools/tools/add/schema.d.ts +0 -2
  324. package/dist/tools/git-tools/tools/add/schema.js +0 -1
  325. package/dist/tools/git-tools/tools/blame/index.d.ts +0 -2
  326. package/dist/tools/git-tools/tools/blame/index.js +0 -1
  327. package/dist/tools/git-tools/tools/blame/schema.d.ts +0 -2
  328. package/dist/tools/git-tools/tools/blame/schema.js +0 -1
  329. package/dist/tools/git-tools/tools/branch-create/index.d.ts +0 -2
  330. package/dist/tools/git-tools/tools/branch-create/index.js +0 -1
  331. package/dist/tools/git-tools/tools/branch-create/schema.d.ts +0 -2
  332. package/dist/tools/git-tools/tools/branch-create/schema.js +0 -1
  333. package/dist/tools/git-tools/tools/branch-list/index.d.ts +0 -2
  334. package/dist/tools/git-tools/tools/branch-list/index.js +0 -5
  335. package/dist/tools/git-tools/tools/branch-list/schema.d.ts +0 -2
  336. package/dist/tools/git-tools/tools/branch-list/schema.js +0 -1
  337. package/dist/tools/git-tools/tools/checkout/index.d.ts +0 -2
  338. package/dist/tools/git-tools/tools/checkout/index.js +0 -1
  339. package/dist/tools/git-tools/tools/checkout/schema.d.ts +0 -2
  340. package/dist/tools/git-tools/tools/checkout/schema.js +0 -1
  341. package/dist/tools/git-tools/tools/commit/index.d.ts +0 -2
  342. package/dist/tools/git-tools/tools/commit/index.js +0 -4
  343. package/dist/tools/git-tools/tools/commit/schema.d.ts +0 -2
  344. package/dist/tools/git-tools/tools/commit/schema.js +0 -1
  345. package/dist/tools/git-tools/tools/diff/index.d.ts +0 -2
  346. package/dist/tools/git-tools/tools/diff/index.js +0 -1
  347. package/dist/tools/git-tools/tools/diff/schema.d.ts +0 -2
  348. package/dist/tools/git-tools/tools/diff/schema.js +0 -1
  349. package/dist/tools/git-tools/tools/log/index.d.ts +0 -2
  350. package/dist/tools/git-tools/tools/log/index.js +0 -6
  351. package/dist/tools/git-tools/tools/log/schema.d.ts +0 -2
  352. package/dist/tools/git-tools/tools/log/schema.js +0 -1
  353. package/dist/tools/git-tools/tools/status/index.d.ts +0 -2
  354. package/dist/tools/git-tools/tools/status/index.js +0 -2
  355. package/dist/tools/git-tools/tools/status/schema.d.ts +0 -2
  356. package/dist/tools/git-tools/tools/status/schema.js +0 -1
  357. package/dist/tools/git-tools/utils.d.ts +0 -2
  358. package/dist/tools/git-tools/utils.js +0 -1
  359. package/dist/tools/http-tools/index.d.ts +0 -7
  360. package/dist/tools/http-tools/index.js +0 -1
  361. package/dist/tools/http-tools/tools/delete/index.d.ts +0 -2
  362. package/dist/tools/http-tools/tools/delete/index.js +0 -5
  363. package/dist/tools/http-tools/tools/delete/schema.d.ts +0 -6
  364. package/dist/tools/http-tools/tools/delete/schema.js +0 -1
  365. package/dist/tools/http-tools/tools/download/index.d.ts +0 -2
  366. package/dist/tools/http-tools/tools/download/index.js +0 -1
  367. package/dist/tools/http-tools/tools/download/schema.d.ts +0 -6
  368. package/dist/tools/http-tools/tools/download/schema.js +0 -1
  369. package/dist/tools/http-tools/tools/get/index.d.ts +0 -2
  370. package/dist/tools/http-tools/tools/get/index.js +0 -6
  371. package/dist/tools/http-tools/tools/get/schema.d.ts +0 -6
  372. package/dist/tools/http-tools/tools/get/schema.js +0 -1
  373. package/dist/tools/http-tools/tools/post/index.d.ts +0 -2
  374. package/dist/tools/http-tools/tools/post/index.js +0 -5
  375. package/dist/tools/http-tools/tools/post/schema.d.ts +0 -6
  376. package/dist/tools/http-tools/tools/post/schema.js +0 -1
  377. package/dist/tools/http-tools/tools/put/index.d.ts +0 -2
  378. package/dist/tools/http-tools/tools/put/index.js +0 -5
  379. package/dist/tools/http-tools/tools/put/schema.d.ts +0 -6
  380. package/dist/tools/http-tools/tools/put/schema.js +0 -1
  381. package/dist/tools/index.d.ts +0 -18
  382. package/dist/tools/index.js +0 -1
  383. package/dist/tools/mcp-tools/index.d.ts +0 -107
  384. package/dist/tools/mcp-tools/index.js +0 -1
  385. package/dist/tools/registry.d.ts +0 -107
  386. package/dist/tools/registry.js +0 -1
  387. package/dist/tools/router.d.ts +0 -39
  388. package/dist/tools/router.js +0 -1
  389. package/dist/tools/search/bm25-engine.d.ts +0 -64
  390. package/dist/tools/search/bm25-engine.js +0 -1
  391. package/dist/tools/search/index.d.ts +0 -10
  392. package/dist/tools/search/index.js +0 -1
  393. package/dist/tools/search/system-prompt.d.ts +0 -19
  394. package/dist/tools/search/system-prompt.js +0 -2
  395. package/dist/tools/search/tool-cache.d.ts +0 -55
  396. package/dist/tools/search/tool-cache.js +0 -1
  397. package/dist/tools/search/tool-search.d.ts +0 -20
  398. package/dist/tools/search/tool-search.js +0 -6
  399. package/dist/tools/system-tools/index.d.ts +0 -7
  400. package/dist/tools/system-tools/index.js +0 -1
  401. package/dist/tools/system-tools/tools/cwd/index.d.ts +0 -2
  402. package/dist/tools/system-tools/tools/cwd/index.js +0 -1
  403. package/dist/tools/system-tools/tools/cwd/schema.d.ts +0 -6
  404. package/dist/tools/system-tools/tools/cwd/schema.js +0 -1
  405. package/dist/tools/system-tools/tools/disk-usage/index.d.ts +0 -2
  406. package/dist/tools/system-tools/tools/disk-usage/index.js +0 -2
  407. package/dist/tools/system-tools/tools/disk-usage/schema.d.ts +0 -6
  408. package/dist/tools/system-tools/tools/disk-usage/schema.js +0 -1
  409. package/dist/tools/system-tools/tools/env/index.d.ts +0 -2
  410. package/dist/tools/system-tools/tools/env/index.js +0 -1
  411. package/dist/tools/system-tools/tools/env/schema.d.ts +0 -6
  412. package/dist/tools/system-tools/tools/env/schema.js +0 -1
  413. package/dist/tools/system-tools/tools/info/index.d.ts +0 -2
  414. package/dist/tools/system-tools/tools/info/index.js +0 -1
  415. package/dist/tools/system-tools/tools/info/schema.d.ts +0 -6
  416. package/dist/tools/system-tools/tools/info/schema.js +0 -1
  417. package/dist/tools/system-tools/tools/set-env/index.d.ts +0 -2
  418. package/dist/tools/system-tools/tools/set-env/index.js +0 -1
  419. package/dist/tools/system-tools/tools/set-env/schema.d.ts +0 -6
  420. package/dist/tools/system-tools/tools/set-env/schema.js +0 -1
  421. package/dist/tools/types.d.ts +0 -130
  422. package/dist/tools/types.js +0 -1
  423. package/dist/tools/web-tools/index.d.ts +0 -11
  424. package/dist/tools/web-tools/index.js +0 -1
  425. package/dist/tools/web-tools/tools/extract-links/index.d.ts +0 -2
  426. package/dist/tools/web-tools/tools/extract-links/index.js +0 -1
  427. package/dist/tools/web-tools/tools/extract-links/schema.d.ts +0 -6
  428. package/dist/tools/web-tools/tools/extract-links/schema.js +0 -1
  429. package/dist/tools/web-tools/tools/feed/index.d.ts +0 -2
  430. package/dist/tools/web-tools/tools/feed/index.js +0 -1
  431. package/dist/tools/web-tools/tools/feed/schema.d.ts +0 -6
  432. package/dist/tools/web-tools/tools/feed/schema.js +0 -1
  433. package/dist/tools/web-tools/tools/fetch/extractor.d.ts +0 -36
  434. package/dist/tools/web-tools/tools/fetch/extractor.js +0 -7
  435. package/dist/tools/web-tools/tools/fetch/index.d.ts +0 -2
  436. package/dist/tools/web-tools/tools/fetch/index.js +0 -4
  437. package/dist/tools/web-tools/tools/fetch/schema.d.ts +0 -6
  438. package/dist/tools/web-tools/tools/fetch/schema.js +0 -1
  439. package/dist/tools/web-tools/tools/map/index.d.ts +0 -2
  440. package/dist/tools/web-tools/tools/map/index.js +0 -4
  441. package/dist/tools/web-tools/tools/map/schema.d.ts +0 -6
  442. package/dist/tools/web-tools/tools/map/schema.js +0 -1
  443. package/dist/tools/web-tools/tools/metadata/index.d.ts +0 -2
  444. package/dist/tools/web-tools/tools/metadata/index.js +0 -1
  445. package/dist/tools/web-tools/tools/metadata/schema.d.ts +0 -6
  446. package/dist/tools/web-tools/tools/metadata/schema.js +0 -1
  447. package/dist/tools/web-tools/tools/scrape/index.d.ts +0 -2
  448. package/dist/tools/web-tools/tools/scrape/index.js +0 -23
  449. package/dist/tools/web-tools/tools/scrape/schema.d.ts +0 -6
  450. package/dist/tools/web-tools/tools/scrape/schema.js +0 -1
  451. package/dist/tools/web-tools/tools/screenshot/index.d.ts +0 -2
  452. package/dist/tools/web-tools/tools/screenshot/index.js +0 -1
  453. package/dist/tools/web-tools/tools/screenshot/schema.d.ts +0 -6
  454. package/dist/tools/web-tools/tools/screenshot/schema.js +0 -1
  455. package/dist/tools/web-tools/tools/search/index.d.ts +0 -2
  456. package/dist/tools/web-tools/tools/search/index.js +0 -2
  457. package/dist/tools/web-tools/tools/search/schema.d.ts +0 -6
  458. package/dist/tools/web-tools/tools/search/schema.js +0 -1
  459. package/dist/tools/web-tools/tools/sitemap/index.d.ts +0 -2
  460. package/dist/tools/web-tools/tools/sitemap/index.js +0 -2
  461. package/dist/tools/web-tools/tools/sitemap/schema.d.ts +0 -6
  462. package/dist/tools/web-tools/tools/sitemap/schema.js +0 -1
  463. package/dist/tools/web-tools/utils/puppeteer-loader.d.ts +0 -5
  464. package/dist/tools/web-tools/utils/puppeteer-loader.js +0 -1
  465. package/dist/tools/web-tools/utils/rss-loader.d.ts +0 -9
  466. package/dist/tools/web-tools/utils/rss-loader.js +0 -1
  467. package/dist/types/index.d.ts +0 -220
  468. package/dist/types/index.js +0 -1
  469. package/dist/utils/global-config-loader.d.ts +0 -12
  470. package/dist/utils/global-config-loader.js +0 -1
  471. package/dist/utils/home-config.d.ts +0 -39
  472. package/dist/utils/home-config.js +0 -1
  473. package/dist/utils/runtime-config-loader.d.ts +0 -21
  474. package/dist/utils/runtime-config-loader.js +0 -1
  475. package/dist/workflows/index.d.ts +0 -5
  476. package/dist/workflows/index.js +0 -1
  477. package/dist/workflows/planning/plan-types.d.ts +0 -49
  478. package/dist/workflows/planning/plan-types.js +0 -1
  479. package/dist/workflows/planning/planner.d.ts +0 -19
  480. package/dist/workflows/planning/planner.js +0 -27
  481. package/dist/workflows/steps/step-executor.d.ts +0 -31
  482. package/dist/workflows/steps/step-executor.js +0 -35
  483. package/dist/workflows/steps/step-tracker.d.ts +0 -13
  484. package/dist/workflows/steps/step-tracker.js +0 -6
  485. package/dist/workflows/workflow-executor.d.ts +0 -94
  486. package/dist/workflows/workflow-executor.js +0 -42
  487. package/dist/workflows/workflow-types.d.ts +0 -101
  488. package/dist/workflows/workflow-types.js +0 -1
package/README.md ADDED
@@ -0,0 +1,857 @@
1
+ # Toolpack SDK
2
+
3
+ A unified TypeScript/Node.js SDK for building AI-powered applications with multiple providers, 77 built-in tools, a workflow engine, and a flexible mode system — all through a single API.
4
+
5
+ [![npm version](https://img.shields.io/npm/v/toolpack-sdk.svg)](https://www.npmjs.com/package/toolpack-sdk)
6
+ [![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
7
+
8
+ **Website:** [https://toolpacksdk.com](https://toolpacksdk.com)
9
+
10
+ ## Features
11
+
12
+ - **Unified API** — Single interface for OpenAI, Anthropic, Google Gemini, Ollama, and custom providers
13
+ - **Streaming** — Real-time response streaming across all providers
14
+ - **Type-Safe** — Comprehensive TypeScript types throughout
15
+ - **Multimodal** — Text and image inputs (vision) across all providers
16
+ - **Embeddings** — Vector generation for RAG applications (OpenAI, Gemini, Ollama)
17
+ - **Workflow Engine** — AI-driven planning and step-by-step task execution with progress events
18
+ - **Mode System** — Built-in Agent and Chat modes, plus `createMode()` for custom modes with tool filtering
19
+ - **Custom Providers** — Bring your own provider by implementing the `ProviderAdapter` interface
20
+ - **77 Built-in Tools** across 10 categories:
21
+ - **MCP Tool Server Integration** — dynamically bridge external Model Context Protocol servers into Toolpack as first-class tools via `createMcpToolProject()` and `disconnectMcpToolProject()`.
22
+
23
+ | Category | Tools | Description |
24
+ |----------|-------|-------------|
25
+ | **`fs-tools`** | 18 | File system operations — read, write, search, tree, glob, batch read/write, etc. |
26
+ | **`coding-tools`** | 12 | Code analysis — AST parsing, go to definition, find references, rename symbols, extract function |
27
+ | **`git-tools`** | 9 | Version control — status, diff, log, blame, branch, commit, checkout |
28
+ | **`db-tools`** | 7 | Database operations — query, schema, tables, count, insert, update, delete (SQLite, PostgreSQL, MySQL) |
29
+ | **`exec-tools`** | 6 | Command execution — run, run shell, background processes, kill, read output |
30
+ | **`http-tools`** | 5 | HTTP requests — GET, POST, PUT, DELETE, download |
31
+ | **`web-tools`** | 9 | Web interaction — fetch, search (Tavily/Brave/DuckDuckGo), scrape, extract links, map, metadata, sitemap, feed, screenshot |
32
+ | **`system-tools`** | 5 | System info — env vars, cwd, disk usage, system info, set env |
33
+ | **`diff-tools`** | 3 | Patch operations — create, apply, and preview diffs |
34
+ | **`cloud-tools`** | 3 | Deployments — deploy, status, list (via Netlify) |
35
+
36
+ ## Quick Start
37
+
38
+ ### Prerequisites
39
+
40
+ - **Node.js >= 20** is required
41
+
42
+ ### Installation
43
+
44
+ ```bash
45
+ npm install toolpack-sdk
46
+ ```
47
+
48
+ ### Basic Usage
49
+
50
+ ```typescript
51
+ import { Toolpack } from 'toolpack-sdk';
52
+
53
+ // Initialize with one or more providers
54
+ const sdk = await Toolpack.init({
55
+ providers: {
56
+ openai: {}, // Reads OPENAI_API_KEY from env
57
+ anthropic: {}, // Reads ANTHROPIC_API_KEY from env
58
+ },
59
+ defaultProvider: 'openai',
60
+ tools: true, // Load all 77 built-in tools
61
+ defaultMode: 'agent', // Agent mode with workflow engine
62
+ });
63
+
64
+ // Generate a completion
65
+ const response = await sdk.generate('What is the capital of France?');
66
+ console.log(response.content);
67
+
68
+ // Stream a response
69
+ for await (const chunk of sdk.stream({
70
+ model: 'gpt-4.1',
71
+ messages: [{ role: 'user', content: 'Tell me a story' }],
72
+ })) {
73
+ process.stdout.write(chunk.delta);
74
+ }
75
+
76
+ // Switch providers on the fly
77
+ const anthropicResponse = await sdk.generate({
78
+ model: 'claude-sonnet-4-20250514',
79
+ messages: [{ role: 'user', content: 'Hello from Anthropic!' }],
80
+ }, 'anthropic');
81
+ ```
82
+
83
+ ### Single Provider Shorthand
84
+
85
+ ```typescript
86
+ const sdk = await Toolpack.init({
87
+ provider: 'openai',
88
+ tools: true,
89
+ });
90
+ ```
91
+
92
+ ## Providers
93
+
94
+ ### Built-in Providers
95
+
96
+ | Provider | Models | Notes |
97
+ |----------|--------|-------|
98
+ | **OpenAI** | GPT-4.1 Mini, GPT-4.1, GPT-5.1, GPT-5.2, GPT-5.4, GPT-5.4 Pro | Full support including reasoning models |
99
+ | **Anthropic** | Claude Sonnet 4, Claude 3.5 Haiku, Claude 3 Opus | No embeddings support |
100
+ | **Google Gemini** | Gemini 2.0 Flash, Gemini 1.5 Pro, Gemini 1.5 Flash | Synthetic tool call IDs |
101
+ | **Ollama** | Auto-discovered from locally pulled models | Capability detection via probing |
102
+
103
+ ### Provider Comparison
104
+
105
+ | Capability | OpenAI | Anthropic | Gemini | Ollama |
106
+ |------------|--------|-----------|--------|--------|
107
+ | Chat completions | ✅ | ✅ | ✅ | ✅ |
108
+ | Streaming | ✅ | ✅ | ✅ | ✅ |
109
+ | Tool/function calling | ✅ | ✅ | ✅ | ✅ |
110
+ | Multi-round tool loop | ✅ | ✅ | ✅ | ✅ |
111
+ | Embeddings | ✅ | ❌ | ✅ | ✅ |
112
+ | Vision/images | ✅ | ✅ | ✅ | ✅ (model-dependent) |
113
+ | Tool name sanitization | ✅ (auto) | ✅ (auto) | ✅ (auto) | ✅ (auto) |
114
+ | Model discovery | Static list | Static list | Static list | Dynamic (`/api/tags` + `/api/show`) |
115
+
116
+ #### Provider-Specific Notes
117
+
118
+ - **OpenAI**: Supports `reasoningTier` and `costTier` on model info for GPT-5.x reasoning models. API key read from `OPENAI_API_KEY` or `TOOLPACK_OPENAI_KEY`.
119
+ - **Anthropic**: Does not support embeddings. Tool results are converted to `tool_result` content blocks automatically. `tool_choice: none` is handled by omitting tools from the request. `max_tokens` defaults to `4096` if not specified. API key read from `ANTHROPIC_API_KEY` or `TOOLPACK_ANTHROPIC_KEY`.
120
+
121
+ ## MCP Tool Server Support
122
+
123
+ Toolpack now includes first-class support for Model Context Protocol (MCP) adapters and server tool discovery.
124
+
125
+ ### Quick MCP Setup
126
+
127
+ ```typescript
128
+ import { Toolpack } from 'toolpack-sdk';
129
+ import { createMcpToolProject } from './tools/mcp-tools';
130
+
131
+ const mcpToolProject = await createMcpToolProject({
132
+ servers: [
133
+ {
134
+ name: 'filesystem',
135
+ displayName: 'MCP Filesystem',
136
+ command: 'npx',
137
+ args: ['-y', '@modelcontextprotocol/server-filesystem', '/workspace'],
138
+ autoConnect: true,
139
+ },
140
+ {
141
+ name: 'custom',
142
+ displayName: 'Custom MCP',
143
+ command: 'npx',
144
+ args: ['-y', '@modelcontextprotocol/server-tools'],
145
+ autoConnect: true,
146
+ },
147
+ ],
148
+ });
149
+
150
+ const sdk = await Toolpack.init({
151
+ provider: 'openai',
152
+ tools: true,
153
+ customTools: [mcpToolProject],
154
+ });
155
+
156
+ // On shutdown/cold path:
157
+ // await disconnectMcpToolProject(mcpToolProject);
158
+ ```
159
+
160
+ See `docs/MCP_INTEGRATION.md` and `docs/examples/mcp-integration-example.ts` for full instructions and best practices.
161
+ - **Gemini**: Uses synthetic tool call IDs (`gemini_<timestamp>_<random>`) since the Gemini API doesn't return tool call IDs natively. Tool results are converted to `functionResponse` parts in chat history automatically. API key read from `GOOGLE_GENERATIVE_AI_KEY` or `TOOLPACK_GEMINI_KEY`.
162
+ - **Ollama**: Auto-discovers all locally pulled models when registered as `{ ollama: {} }`. Uses `/api/show` and tool probing to detect capabilities (tool calling, vision, embeddings) per model. Models without tool support are automatically stripped of tools and given a system instruction to prevent hallucinated tool usage. Uses synthetic tool call IDs (`ollama_<timestamp>_<random>`). Embeddings use the modern `/api/embed` batch endpoint. Legacy per-model registration (`{ 'ollama-llama3': {} }`) is also supported.
163
+
164
+ ### Custom Providers
165
+
166
+ Bring your own provider (e.g., xAI/Grok, Cohere, Mistral) by extending `ProviderAdapter`:
167
+
168
+ ```typescript
169
+ import { Toolpack, ProviderAdapter, CompletionRequest, CompletionResponse, CompletionChunk, EmbeddingRequest, EmbeddingResponse, ProviderModelInfo } from 'toolpack-sdk';
170
+
171
+ class XAIAdapter extends ProviderAdapter {
172
+ name = 'xai';
173
+
174
+ getDisplayName(): string { return 'xAI'; }
175
+ async getModels(): Promise<ProviderModelInfo[]> { return [/* ... */]; }
176
+ async generate(req: CompletionRequest): Promise<CompletionResponse> { /* ... */ }
177
+ async *stream(req: CompletionRequest): AsyncGenerator<CompletionChunk> { /* ... */ }
178
+ async embed(req: EmbeddingRequest): Promise<EmbeddingResponse> { /* ... */ }
179
+ }
180
+
181
+ // Pass as array or record
182
+ const sdk = await Toolpack.init({
183
+ providers: { openai: {} },
184
+ customProviders: [new XAIAdapter()],
185
+ // or: customProviders: { xai: new XAIAdapter() }
186
+ });
187
+
188
+ // Use it
189
+ const response = await sdk.generate('Hello!', 'xai');
190
+ ```
191
+
192
+ ### Discovering Providers & Models
193
+
194
+ ```typescript
195
+ // Nested list of all providers and their models
196
+ const providers = await sdk.listProviders();
197
+ // [
198
+ // {
199
+ // name: 'openai',
200
+ // displayName: 'OpenAI',
201
+ // type: 'built-in',
202
+ // models: [
203
+ // {
204
+ // id: 'gpt-4.1',
205
+ // displayName: 'GPT-4.1',
206
+ // capabilities: { chat: true, streaming: true, toolCalling: true, embeddings: false, vision: true },
207
+ // contextWindow: 1047576,
208
+ // maxOutputTokens: 32768,
209
+ // inputModalities: ['text', 'image'],
210
+ // outputModalities: ['text'],
211
+ // reasoningTier: null,
212
+ // costTier: 'medium',
213
+ // },
214
+ // ...
215
+ // ]
216
+ // },
217
+ // { name: 'ollama', displayName: 'Ollama', type: 'built-in', models: [...] },
218
+ // { name: 'xai', displayName: 'xAI', type: 'custom', models: [...] },
219
+ // ]
220
+
221
+ // Flat list across all providers
222
+ const allModels = await sdk.listModels();
223
+
224
+ // Filter by capability
225
+ const toolModels = allModels.filter(m => m.capabilities.toolCalling);
226
+ const visionModels = allModels.filter(m => m.capabilities.vision);
227
+ const reasoningModels = allModels.filter(m => m.reasoningTier);
228
+ ```
229
+
230
+ ## Modes
231
+
232
+ Modes control AI behavior by setting a system prompt, filtering available tools, and configuring the workflow engine. The SDK ships with two built-in modes and supports unlimited custom modes.
233
+
234
+ ### Built-in Modes
235
+
236
+ | Mode | Tools | Workflow | Description |
237
+ |------|-------|----------|-------------|
238
+ | **Agent** | All tools | Planning + step execution + dynamic steps | Full autonomous access — read, write, execute, browse |
239
+ | **Chat** | Web/HTTP only | Direct execution (no planning) | Conversational assistant with web access |
240
+
241
+ ### Custom Modes
242
+
243
+ ```typescript
244
+ import { createMode, Toolpack } from 'toolpack-sdk';
245
+
246
+ // Read-only code reviewer
247
+ const reviewMode = createMode({
248
+ name: 'review',
249
+ displayName: 'Code Review',
250
+ systemPrompt: 'You are a senior code reviewer. Read files but NEVER modify them.',
251
+ allowedToolCategories: ['filesystem', 'coding', 'version-control'],
252
+ blockedTools: ['fs.write_file', 'fs.delete_file', 'fs.append_file'],
253
+ baseContext: {
254
+ includeWorkingDirectory: true,
255
+ includeToolCategories: true,
256
+ },
257
+ workflow: {
258
+ planning: { enabled: true },
259
+ steps: { enabled: true, retryOnFailure: true },
260
+ progress: { enabled: true },
261
+ },
262
+ });
263
+
264
+ // Pure conversation — no tools at all
265
+ const simpleChat = createMode({
266
+ name: 'simple-chat',
267
+ displayName: 'Simple Chat',
268
+ systemPrompt: 'You are a helpful assistant. Provide clear and concise responses.',
269
+ blockAllTools: true, // Disables all tool calls
270
+ });
271
+
272
+ const sdk = await Toolpack.init({
273
+ providers: { openai: {} },
274
+ tools: true,
275
+ customModes: [reviewMode, simpleChat],
276
+ defaultMode: 'agent',
277
+ });
278
+
279
+ // Switch modes at runtime
280
+ sdk.setMode('review');
281
+ sdk.setMode('simple-chat');
282
+ sdk.cycleMode(); // Cycles through all registered modes
283
+ ```
284
+
285
+ ### Mode Options Reference
286
+
287
+ | Option | Type | Default | Description |
288
+ |--------|------|---------|-------------|
289
+ | `name` | string | **required** | Unique identifier |
290
+ | `displayName` | string | **required** | Human-readable label for UI |
291
+ | `systemPrompt` | string | **required** | System prompt injected into every request |
292
+ | `description` | string | `displayName` | Short tooltip description |
293
+ | `allowedToolCategories` | string[] | `[]` (all) | Tool categories to allow. Empty = all allowed |
294
+ | `blockedToolCategories` | string[] | `[]` | Tool categories to block. Overrides allowed |
295
+ | `allowedTools` | string[] | `[]` (all) | Specific tools to allow. Empty = all allowed |
296
+ | `blockedTools` | string[] | `[]` | Specific tools to block. Overrides allowed |
297
+ | `blockAllTools` | boolean | `false` | If `true`, disables all tools (pure conversation) |
298
+ | `baseContext` | object/false | `undefined` | Controls working directory and tool category injection |
299
+ | `workflow` | WorkflowConfig | `undefined` | Planning, step execution, and progress configuration |
300
+
301
+ ## Workflow Engine
302
+
303
+ The workflow engine enables AI agents to plan and execute complex tasks step-by-step, with progress tracking, retries, and dynamic step additions.
304
+
305
+ ### How It Works
306
+
307
+ 1. **Planning** — The AI generates a structured step-by-step plan from the user's request
308
+ 2. **Execution** — Each step is executed sequentially with tool access
309
+ 3. **Dynamic Steps** — New steps can be added during execution based on results
310
+ 4. **Retries** — Failed steps are retried automatically (configurable)
311
+ 5. **Progress** — Events are emitted at each stage for UI integration
312
+
313
+ ### Using the Workflow
314
+
315
+ ```typescript
316
+ const sdk = await Toolpack.init({
317
+ providers: { openai: {} },
318
+ tools: true,
319
+ defaultMode: 'agent', // Agent mode has workflow enabled
320
+ });
321
+
322
+ // Complex tasks are automatically planned and executed step-by-step
323
+ const result = await sdk.generate('Build me a REST API with user authentication');
324
+
325
+ // Or stream the response
326
+ for await (const chunk of sdk.stream({
327
+ model: 'gpt-4.1',
328
+ messages: [{ role: 'user', content: 'Refactor this codebase' }],
329
+ })) {
330
+ process.stdout.write(chunk.delta);
331
+ }
332
+ ```
333
+
334
+ ### Workflow Events
335
+
336
+ Workflow status is communicated via events (not in stream content), making it easy to build progress UIs:
337
+
338
+ ```typescript
339
+ const executor = sdk.getWorkflowExecutor();
340
+
341
+ // Progress updates (ideal for status bars / shimmer text)
342
+ executor.on('workflow:progress', (progress) => {
343
+ // progress.status: 'planning' | 'awaiting_approval' | 'executing' | 'completed' | 'failed'
344
+ // progress.currentStep, progress.totalSteps, progress.percentage
345
+ // progress.currentStepDescription — includes retry info if retrying
346
+ console.log(`[${progress.percentage}%] Step ${progress.currentStep}/${progress.totalSteps}: ${progress.currentStepDescription}`);
347
+ });
348
+
349
+ // Step lifecycle
350
+ executor.on('workflow:step_start', (step, plan) => {
351
+ console.log(`Starting: ${step.description}`);
352
+ });
353
+
354
+ executor.on('workflow:step_complete', (step, plan) => {
355
+ console.log(`Completed: ${step.description}`);
356
+ });
357
+
358
+ executor.on('workflow:step_failed', (step, error, plan) => {
359
+ console.log(`Failed: ${step.description} — ${error.message}`);
360
+ });
361
+
362
+ executor.on('workflow:step_retry', (step, attempt, plan) => {
363
+ console.log(`Retrying: ${step.description} (attempt ${attempt})`);
364
+ });
365
+
366
+ executor.on('workflow:step_added', (step, plan) => {
367
+ console.log(`Dynamic step added: ${step.description}`);
368
+ });
369
+
370
+ // Workflow completion
371
+ executor.on('workflow:completed', (plan, result) => {
372
+ console.log(`Done! ${result.metrics.stepsCompleted} steps in ${result.metrics.totalDuration}ms`);
373
+ });
374
+
375
+ executor.on('workflow:failed', (plan, error) => {
376
+ console.log(`Workflow failed: ${error.message}`);
377
+ });
378
+ ```
379
+
380
+ ### WorkflowConfig
381
+
382
+ ```typescript
383
+ interface WorkflowConfig {
384
+ planning?: {
385
+ enabled: boolean; // Enable planning phase
386
+ requireApproval?: boolean; // Pause for user approval before executing
387
+ planningPrompt?: string; // Custom system prompt for plan generation
388
+ maxSteps?: number; // Max steps in a plan (default: 20)
389
+ };
390
+
391
+ steps?: {
392
+ enabled: boolean; // Enable step-by-step execution
393
+ retryOnFailure?: boolean; // Retry failed steps (default: true)
394
+ maxRetries?: number; // Max retries per step (default: 3)
395
+ allowDynamicSteps?: boolean; // Allow adding steps during execution
396
+ maxTotalSteps?: number; // Max total steps including dynamic (default: 50)
397
+ };
398
+
399
+ progress?: {
400
+ enabled: boolean; // Emit progress events (default: true)
401
+ reportPercentage?: boolean; // Include completion percentage
402
+ };
403
+
404
+ onFailure?: {
405
+ strategy: 'abort' | 'skip' | 'ask_user' | 'try_alternative';
406
+ };
407
+ }
408
+ ```
409
+
410
+ ## Tool Call Events
411
+
412
+ The SDK emits events for tool execution, useful for building tool activity logs:
413
+
414
+ ```typescript
415
+ const client = sdk.getClient();
416
+
417
+ // Detailed log of every tool execution
418
+ client.on('tool:log', (event) => {
419
+ console.log(`Tool: ${event.name} (${event.status}) — ${event.duration}ms`);
420
+ console.log(` Args: ${JSON.stringify(event.arguments)}`);
421
+ console.log(` Result: ${event.result.substring(0, 200)}...`);
422
+ });
423
+
424
+ // Progress events (started, completed, failed)
425
+ client.on('tool:started', (event) => { /* ... */ });
426
+ client.on('tool:completed', (event) => { /* ... */ });
427
+ client.on('tool:failed', (event) => { /* ... */ });
428
+ ```
429
+
430
+ ## Custom Tools
431
+
432
+ In addition to the 77 built-in tools, you can create and register your own custom tool projects using `createToolProject()`:
433
+
434
+ ```typescript
435
+ import { Toolpack, createToolProject } from 'toolpack-sdk';
436
+
437
+ // Define a custom tool project
438
+ const myToolProject = createToolProject({
439
+ key: 'my-tools',
440
+ name: 'my-tools',
441
+ displayName: 'My Custom Tools',
442
+ version: '1.0.0',
443
+ description: 'Custom tools for my application',
444
+ category: 'custom',
445
+ author: 'Your Name',
446
+ tools: [
447
+ {
448
+ name: 'my.hello',
449
+ displayName: 'Hello World',
450
+ description: 'A simple hello world tool',
451
+ category: 'custom',
452
+ parameters: {
453
+ type: 'object',
454
+ properties: {
455
+ name: { type: 'string', description: 'Name to greet' },
456
+ },
457
+ required: ['name'],
458
+ },
459
+ execute: async (args) => {
460
+ return `Hello, ${args.name}!`;
461
+ },
462
+ },
463
+ ],
464
+ });
465
+
466
+ // Register custom tools at init
467
+ const sdk = await Toolpack.init({
468
+ provider: 'openai',
469
+ tools: true, // Load built-in tools
470
+ customTools: [myToolProject], // Add your custom tools
471
+ });
472
+ ```
473
+
474
+ ### Tool Project Structure
475
+
476
+ | Field | Type | Required | Description |
477
+ |-------|------|----------|-------------|
478
+ | `key` | string | ✓ | Unique identifier (lowercase, hyphens only) |
479
+ | `name` | string | ✓ | Package name |
480
+ | `displayName` | string | ✓ | Human-readable name |
481
+ | `version` | string | ✓ | Semver version |
482
+ | `description` | string | ✓ | Short description |
483
+ | `category` | string | ✓ | Tool category for filtering |
484
+ | `author` | string | | Author name |
485
+ | `tools` | ToolDefinition[] | ✓ | Array of tool definitions |
486
+ | `dependencies` | Record<string, string> | | npm dependencies (validated at load) |
487
+
488
+ ## Multimodal Support
489
+
490
+ The SDK supports multimodal inputs (text + images) across all vision-capable providers. Images can be provided in three formats:
491
+
492
+ ```typescript
493
+ import { Toolpack, ImageFilePart, ImageDataPart, ImageUrlPart } from 'toolpack-sdk';
494
+
495
+ const sdk = await Toolpack.init({ provider: 'openai' });
496
+
497
+ // 1. Local file path (auto-converted to base64)
498
+ const filePart: ImageFilePart = {
499
+ type: 'image_file',
500
+ image_file: { path: '/path/to/image.png', detail: 'high' }
501
+ };
502
+
503
+ // 2. Base64 data (inline)
504
+ const dataPart: ImageDataPart = {
505
+ type: 'image_data',
506
+ image_data: { data: 'base64...', mimeType: 'image/png', detail: 'auto' }
507
+ };
508
+
509
+ // 3. HTTP URL (passed through or downloaded depending on provider)
510
+ const urlPart: ImageUrlPart = {
511
+ type: 'image_url',
512
+ image_url: { url: 'https://example.com/image.png', detail: 'low' }
513
+ };
514
+
515
+ // Use in messages
516
+ const response = await sdk.generate({
517
+ model: 'gpt-4.1',
518
+ messages: [{
519
+ role: 'user',
520
+ content: [
521
+ { type: 'text', text: 'What is in this image?' },
522
+ filePart
523
+ ]
524
+ }]
525
+ });
526
+ ```
527
+
528
+ ### Provider Behavior
529
+
530
+ | Provider | File Path | Base64 | URL |
531
+ |----------|-----------|--------|-----|
532
+ | OpenAI | Converted to base64 | ✓ Native | ✓ Native |
533
+ | Anthropic | Converted to base64 | ✓ Native | Downloaded → base64 |
534
+ | Gemini | Converted to base64 | ✓ Native | Downloaded → base64 |
535
+ | Ollama | Converted to base64 | ✓ Native | Downloaded → base64 |
536
+
537
+ ## Configuration
538
+
539
+ ### Environment Variables
540
+
541
+ ```bash
542
+ # Provider API keys (at least one required)
543
+ export OPENAI_API_KEY="sk-..."
544
+ export ANTHROPIC_API_KEY="sk-ant-..."
545
+ export GOOGLE_GENERATIVE_AI_KEY="AIza..."
546
+
547
+ # SDK logging (override — prefer toolpack.config.json instead)
548
+ export TOOLPACK_SDK_LOG_FILE="./toolpack.log" # Log file path (also enables logging)
549
+ export TOOLPACK_SDK_LOG_LEVEL="debug" # Log level override (error, warn, info, debug, trace)
550
+ ```
551
+
552
+ ## Configuration Architecture
553
+
554
+ Toolpack uses a hierarchical configuration system that separates build-time (SDK) and runtime (CLI) configurations.
555
+
556
+ ### Configuration Layers
557
+
558
+ 1. **Workspace Local (Highest Priority)**
559
+ - Location: `<workspace>/.toolpack/config/toolpack.config.json`
560
+ - Purpose: Project-specific overrides for the CLI tool.
561
+
562
+ 2. **Global Default (CLI First Run)**
563
+ - Location: `~/.toolpack/config/toolpack.config.json`
564
+ - Purpose: Global default settings for the CLI tool across all projects. Created automatically on first run.
565
+
566
+ 3. **Build Time / SDK Base**
567
+ - Location: `toolpack.config.json` in project root.
568
+ - Purpose: Static configuration used when bundling the SDK or running it directly in an app.
569
+
570
+ ### Settings UI
571
+
572
+ The CLI includes a settings screen to view the active configuration source and its location. Press `Ctrl+S` from the Home screen to access it.
573
+
574
+ ### Configuration Sections
575
+
576
+ The `toolpack.config.json` file supports several sections:
577
+
578
+ #### Global Options
579
+
580
+ | Option | Default | Description |
581
+ |--------|---------|-------------|
582
+ | `systemPrompt` | - | Override the base system prompt |
583
+ | `baseContext` | `true` | Agent context configuration (`{ includeWorkingDirectory, includeToolCategories, custom }` or `false`) |
584
+ | `modeOverrides` | `{}` | Mode-specific system prompt and toolSearch overrides |
585
+
586
+ #### Logging Configuration
587
+
588
+ Create a `toolpack.config.json` in your project root:
589
+
590
+ ```json
591
+ {
592
+ "logging": {
593
+ "enabled": true,
594
+ "filePath": "./toolpack.log",
595
+ "level": "info"
596
+ }
597
+ }
598
+ ```
599
+
600
+ | Option | Default | Description |
601
+ |--------|---------|-------------|
602
+ | `enabled` | `false` | Enable file logging |
603
+ | `filePath` | `toolpack-sdk.log` | Log file path (relative to CWD) |
604
+ | `level` | `info` | Log level (`error`, `warn`, `info`, `debug`, `trace`) |
605
+
606
+ ### Tools Configuration
607
+
608
+ Create a `toolpack.config.json` in your project root:
609
+
610
+ ```json
611
+ {
612
+ "tools": {
613
+ "enabled": true,
614
+ "autoExecute": true,
615
+ "maxToolRounds": 5,
616
+ "toolChoicePolicy": "auto",
617
+ "resultMaxChars": 20000,
618
+ "enabledTools": [],
619
+ "enabledToolCategories": [],
620
+ "additionalConfigurations": {
621
+ "webSearch": {
622
+ "tavilyApiKey": "tvly-...",
623
+ "braveApiKey": "BSA..."
624
+ }
625
+ },
626
+ "toolSearch": {
627
+ "enabled": false,
628
+ "alwaysLoadedTools": ["fs.read_file", "fs.write_file", "fs.list_dir"],
629
+ "alwaysLoadedCategories": [],
630
+ "searchResultLimit": 5,
631
+ "cacheDiscoveredTools": true
632
+ }
633
+ }
634
+ }
635
+ ```
636
+
637
+ #### Configuration Options
638
+
639
+ | Option | Type | Default | Description |
640
+ |--------|------|---------|-------------|
641
+ | `enabled` | boolean | `true` | Enable/disable tool system |
642
+ | `autoExecute` | boolean | `true` | Auto-execute tool calls from AI |
643
+ | `maxToolRounds` | number | `5` | Max tool execution rounds per request |
644
+ | `toolChoicePolicy` | string | `"auto"` | `"auto"`, `"required"`, or `"required_for_actions"` |
645
+ | `enabledTools` | string[] | `[]` | Whitelist specific tools (empty = all) |
646
+ | `enabledToolCategories` | string[] | `[]` | Whitelist categories (empty = all) |
647
+
648
+ #### Web Search Providers
649
+
650
+ The `web.search` tool supports multiple search backends with automatic fallback:
651
+
652
+ 1. **Tavily** (recommended) — set `tavilyApiKey` in config. Free tier: 1000 searches/month.
653
+ 2. **Brave Search** — set `braveApiKey` in config. Free tier: 2000 queries/month.
654
+ 3. **DuckDuckGo Lite** — built-in fallback, no API key needed (may be rate-limited).
655
+
656
+ #### Tool Search (for large tool sets)
657
+
658
+ When you have many tools (50+), enable tool search to reduce token usage. The AI discovers tools on-demand via a built-in `tool.search` meta-tool using BM25 ranking:
659
+
660
+ ```json
661
+ {
662
+ "tools": {
663
+ "toolSearch": {
664
+ "enabled": true,
665
+ "alwaysLoadedTools": ["fs.read_file", "fs.write_file", "web.search"],
666
+ "searchResultLimit": 5,
667
+ "cacheDiscoveredTools": true
668
+ }
669
+ }
670
+ }
671
+ ```
672
+
673
+ ## API Reference
674
+
675
+ ### Toolpack (High-Level)
676
+
677
+ ```typescript
678
+ import { Toolpack } from 'toolpack-sdk';
679
+
680
+ const sdk = await Toolpack.init(config: ToolpackInitConfig): Promise<Toolpack>
681
+
682
+ // Completions (routes through workflow engine if mode has workflow enabled)
683
+ await sdk.generate(request: CompletionRequest | string, provider?: string): Promise<CompletionResponse>
684
+ sdk.stream(request: CompletionRequest, provider?: string): AsyncGenerator<CompletionChunk>
685
+ await sdk.embed(request: EmbeddingRequest, provider?: string): Promise<EmbeddingResponse>
686
+
687
+ // Provider management
688
+ sdk.setProvider(name: string): void
689
+ await sdk.listProviders(): Promise<ProviderInfo[]>
690
+ await sdk.listModels(): Promise<(ProviderModelInfo & { provider: string })[]>
691
+
692
+ // Mode management
693
+ sdk.setMode(name: string): ModeConfig
694
+ sdk.getMode(): ModeConfig | null
695
+ sdk.getModes(): ModeConfig[]
696
+ sdk.cycleMode(): ModeConfig
697
+ sdk.registerMode(mode: ModeConfig): void
698
+
699
+ // Internal access
700
+ sdk.getClient(): AIClient
701
+ sdk.getWorkflowExecutor(): WorkflowExecutor
702
+ await sdk.disconnect(): Promise<void>
703
+ ```
704
+
705
+ ### AIClient (Low-Level)
706
+
707
+ ```typescript
708
+ import { AIClient } from 'toolpack-sdk';
709
+
710
+ // Direct client usage (without workflow engine)
711
+ await client.generate(request: CompletionRequest, provider?: string): Promise<CompletionResponse>
712
+ client.stream(request: CompletionRequest, provider?: string): AsyncGenerator<CompletionChunk>
713
+ await client.embed(request: EmbeddingRequest, provider?: string): Promise<EmbeddingResponse>
714
+ ```
715
+
716
+ ### Core Types
717
+
718
+ ```typescript
719
+ interface CompletionRequest {
720
+ messages: Message[];
721
+ model: string;
722
+ temperature?: number;
723
+ max_tokens?: number;
724
+ tools?: ToolCallRequest[];
725
+ tool_choice?: 'auto' | 'none' | 'required';
726
+ }
727
+
728
+ interface CompletionResponse {
729
+ content: string | null;
730
+ usage?: Usage;
731
+ finish_reason?: 'stop' | 'length' | 'tool_calls' | 'content_filter' | 'error';
732
+ tool_calls?: ToolCallResult[];
733
+ }
734
+
735
+ interface CompletionChunk {
736
+ delta: string;
737
+ usage?: Usage;
738
+ finish_reason?: 'stop' | 'length' | 'tool_calls' | 'content_filter' | 'error';
739
+ tool_calls?: ToolCallResult[];
740
+ }
741
+
742
+ interface ProviderModelInfo {
743
+ id: string;
744
+ displayName: string;
745
+ capabilities: { chat, streaming, toolCalling, embeddings, vision, reasoning? };
746
+ contextWindow?: number;
747
+ maxOutputTokens?: number;
748
+ inputModalities?: string[]; // e.g., ['text', 'image']
749
+ outputModalities?: string[]; // e.g., ['text']
750
+ reasoningTier?: string | null; // e.g., 'standard', 'extended'
751
+ costTier?: string; // e.g., 'low', 'medium', 'high', 'premium'
752
+ }
753
+ ```
754
+
755
+ ## Error Handling
756
+
757
+ The SDK provides typed error classes for common failure scenarios:
758
+
759
+ ```typescript
760
+ import { AuthenticationError, RateLimitError, InvalidRequestError, ProviderError, ConnectionError, TimeoutError } from 'toolpack-sdk';
761
+
762
+ try {
763
+ await sdk.generate('Hello');
764
+ } catch (err) {
765
+ if (err instanceof AuthenticationError) { /* Invalid API key (401) */ }
766
+ if (err instanceof RateLimitError) { /* Rate limited (429), check err.retryAfter */ }
767
+ if (err instanceof InvalidRequestError) { /* Bad request (400) */ }
768
+ if (err instanceof ConnectionError) { /* Provider unreachable (503) */ }
769
+ if (err instanceof TimeoutError) { /* Request timed out (504) */ }
770
+ if (err instanceof ProviderError) { /* Generic provider error (500) */ }
771
+ }
772
+ ```
773
+
774
+ ## Development
775
+
776
+ ### Build
777
+
778
+ ```bash
779
+ npm run build
780
+ ```
781
+
782
+ ### Test
783
+
784
+ ```bash
785
+ npm test # Run all tests
786
+ npm run test:watch # Watch mode
787
+ ```
788
+
789
+ ### Watch Mode
790
+
791
+ ```bash
792
+ npm run watch
793
+ ```
794
+
795
+ ## Architecture
796
+
797
+ ```
798
+ toolpack-sdk/
799
+ ├── src/
800
+ │ ├── toolpack.ts # Toolpack class — high-level facade
801
+ │ ├── client/ # AIClient — provider routing, tool execution, mode injection
802
+ │ ├── providers/ # Provider adapter implementations
803
+ │ │ ├── base/ # ProviderAdapter abstract class
804
+ │ │ ├── openai/ # OpenAI adapter
805
+ │ │ ├── anthropic/ # Anthropic adapter
806
+ │ │ ├── gemini/ # Google Gemini adapter
807
+ │ │ └── ollama/ # Ollama adapter + provider (auto-discovery)
808
+ │ ├── modes/ # Mode system (Agent, Chat, createMode)
809
+ │ ├── workflows/ # Workflow engine (planner, step executor, progress)
810
+ │ ├── tools/ # 72 built-in tools + registry + router + BM25 search
811
+ │ │ ├── fs-tools/ # File system (18 tools)
812
+ │ │ ├── coding-tools/ # Code analysis (12 tools)
813
+ │ │ ├── git-tools/ # Git operations (9 tools)
814
+ │ │ ├── db-tools/ # Database operations (6 tools)
815
+ │ │ ├── exec-tools/ # Command execution (6 tools)
816
+ │ │ ├── http-tools/ # HTTP requests (5 tools)
817
+ │ │ ├── web-tools/ # Web interaction (5 tools)
818
+ │ │ ├── system-tools/ # System info (5 tools)
819
+ │ │ ├── diff-tools/ # Patch operations (3 tools)
820
+ │ │ ├── cloud-tools/ # Deployments (3 tools)
821
+ │ │ ├── registry.ts # Tool registry and loading
822
+ │ │ ├── router.ts # Tool routing and filtering
823
+ │ │ └── search/ # BM25 tool discovery engine (internal)
824
+ │ ├── types/ # Core TypeScript interfaces
825
+ │ ├── errors/ # Typed error hierarchy
826
+ │ ├── mcp/ # MCP (Model Context Protocol) utilities
827
+ │ └── utils/ # Shared utilities
828
+ └── tests/ # 545 tests across 81 test files
829
+ ```
830
+
831
+ ## Status
832
+
833
+ **Current Version:** 0.1.0
834
+
835
+ - ✓ **4 Built-in Providers** — OpenAI, Anthropic, Gemini, Ollama (+ custom provider API)
836
+ - ✓ **77 Built-in Tools** — fs, exec, git, diff, web, coding, db, cloud, http, system
837
+ - ✓ **Workflow Engine** — AI-driven planning, step execution, retries, dynamic steps, progress events
838
+ - ✓ **Mode System** — Agent, Chat, and custom modes via `createMode()` with `blockAllTools` support
839
+ - ✓ **Tool Search** — BM25-based on-demand tool discovery for large tool libraries
840
+ - ✓ **545 Tests** passing across 81 test files
841
+
842
+ ## Contributing
843
+
844
+ Contributions welcome! Please read the [contributing guide](./CONTRIBUTING.md) first.
845
+
846
+ ## License
847
+
848
+ Apache 2.0 © [Sajeer](https://sajeerzeji.com)
849
+
850
+ ## Support
851
+
852
+ - 🐛 [Issue Tracker](https://github.com/toolpack-ai/toolpack-sdk/issues) (Please use our [Bug Report](.github/ISSUE_TEMPLATE/bug_report.md) or [Feature Request](.github/ISSUE_TEMPLATE/feature_request.md) templates)
853
+ - 💬 [Discussions](https://github.com/toolpack-ai/toolpack-sdk/discussions)
854
+
855
+ ---
856
+
857
+ **Author:** [Sajeer](https://sajeerzeji.com)