recker 1.0.20-next.b961eae → 1.0.20-next.e194d90

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 (425) hide show
  1. package/README.md +31 -0
  2. package/dist/ai/adaptive-timeout.d.ts +0 -1
  3. package/dist/ai/client.d.ts +0 -1
  4. package/dist/ai/client.js +6 -0
  5. package/dist/ai/index.d.ts +3 -1
  6. package/dist/ai/index.js +3 -0
  7. package/dist/ai/providers/anthropic.d.ts +0 -1
  8. package/dist/ai/providers/base.d.ts +0 -1
  9. package/dist/ai/providers/google.d.ts +59 -0
  10. package/dist/ai/providers/google.js +305 -0
  11. package/dist/ai/providers/index.d.ts +4 -1
  12. package/dist/ai/providers/index.js +2 -0
  13. package/dist/ai/providers/ollama.d.ts +44 -0
  14. package/dist/ai/providers/ollama.js +240 -0
  15. package/dist/ai/providers/openai.d.ts +0 -1
  16. package/dist/ai/rate-limiter.d.ts +0 -1
  17. package/dist/ai/vector/index.d.ts +2 -0
  18. package/dist/ai/vector/index.js +2 -0
  19. package/dist/ai/vector/similarity.d.ts +2 -0
  20. package/dist/ai/vector/similarity.js +27 -0
  21. package/dist/ai/vector/store.d.ts +27 -0
  22. package/dist/ai/vector/store.js +82 -0
  23. package/dist/bench/generator.d.ts +0 -1
  24. package/dist/bench/stats.d.ts +0 -1
  25. package/dist/cache/basic-file-storage.d.ts +12 -0
  26. package/dist/cache/basic-file-storage.js +50 -0
  27. package/dist/cache/file-storage.d.ts +25 -11
  28. package/dist/cache/file-storage.js +175 -30
  29. package/dist/cache/memory-limits.d.ts +0 -1
  30. package/dist/cache/memory-storage.d.ts +0 -1
  31. package/dist/cache/redis-storage.d.ts +0 -1
  32. package/dist/cli/handler.d.ts +2 -1
  33. package/dist/cli/handler.js +36 -5
  34. package/dist/cli/index.d.ts +0 -1
  35. package/dist/cli/index.js +559 -5
  36. package/dist/cli/presets.d.ts +0 -1
  37. package/dist/cli/tui/ai-chat.d.ts +0 -1
  38. package/dist/cli/tui/load-dashboard.d.ts +0 -1
  39. package/dist/cli/tui/scroll-buffer.d.ts +0 -1
  40. package/dist/cli/tui/search-panel.d.ts +0 -1
  41. package/dist/cli/tui/shell-search.d.ts +0 -1
  42. package/dist/cli/tui/shell.d.ts +0 -1
  43. package/dist/cli/tui/websocket.d.ts +0 -1
  44. package/dist/constants/http-status.d.ts +0 -1
  45. package/dist/constants.d.ts +0 -1
  46. package/dist/contract/index.d.ts +0 -1
  47. package/dist/cookies/memory-cookie-jar.d.ts +0 -1
  48. package/dist/core/client.d.ts +0 -1
  49. package/dist/core/client.js +1 -1
  50. package/dist/core/errors.d.ts +0 -1
  51. package/dist/core/index.d.ts +0 -1
  52. package/dist/core/request-promise.d.ts +0 -1
  53. package/dist/core/request.d.ts +0 -1
  54. package/dist/core/response.d.ts +0 -1
  55. package/dist/dns/index.d.ts +0 -1
  56. package/dist/dns/propagation.d.ts +0 -1
  57. package/dist/events/request-events.d.ts +0 -1
  58. package/dist/index.d.ts +1 -1
  59. package/dist/index.js +1 -0
  60. package/dist/mcp/client.d.ts +0 -1
  61. package/dist/mcp/contract.d.ts +0 -1
  62. package/dist/mcp/embeddings-loader.d.ts +0 -1
  63. package/dist/mcp/geoip-loader.d.ts +0 -1
  64. package/dist/mcp/index.d.ts +0 -1
  65. package/dist/mcp/ip-intel.d.ts +0 -1
  66. package/dist/mcp/search/hybrid-search.d.ts +0 -1
  67. package/dist/mcp/search/index.d.ts +0 -1
  68. package/dist/mcp/search/math.d.ts +0 -1
  69. package/dist/mcp/search/types.d.ts +0 -1
  70. package/dist/mcp/server.d.ts +6 -2
  71. package/dist/mcp/server.js +193 -151
  72. package/dist/mcp/tools/loader.d.ts +2 -0
  73. package/dist/mcp/tools/loader.js +41 -0
  74. package/dist/mcp/tools/network.d.ts +3 -0
  75. package/dist/mcp/tools/network.js +267 -0
  76. package/dist/mcp/tools/registry.d.ts +17 -0
  77. package/dist/mcp/tools/registry.js +37 -0
  78. package/dist/mcp/types.d.ts +0 -1
  79. package/dist/plugins/auth/api-key.d.ts +8 -0
  80. package/dist/plugins/auth/api-key.js +27 -0
  81. package/dist/plugins/auth/auth0.d.ts +33 -0
  82. package/dist/plugins/auth/auth0.js +94 -0
  83. package/dist/plugins/auth/aws-sigv4.d.ts +10 -0
  84. package/dist/plugins/auth/aws-sigv4.js +88 -0
  85. package/dist/plugins/auth/azure-ad.d.ts +48 -0
  86. package/dist/plugins/auth/azure-ad.js +152 -0
  87. package/dist/plugins/auth/basic.d.ts +7 -0
  88. package/dist/plugins/auth/basic.js +13 -0
  89. package/dist/plugins/auth/bearer.d.ts +8 -0
  90. package/dist/plugins/auth/bearer.js +17 -0
  91. package/dist/plugins/auth/cognito.d.ts +45 -0
  92. package/dist/plugins/auth/cognito.js +208 -0
  93. package/dist/plugins/auth/digest.d.ts +8 -0
  94. package/dist/plugins/auth/digest.js +100 -0
  95. package/dist/plugins/auth/firebase.d.ts +32 -0
  96. package/dist/plugins/auth/firebase.js +195 -0
  97. package/dist/plugins/auth/github-app.d.ts +36 -0
  98. package/dist/plugins/auth/github-app.js +170 -0
  99. package/dist/plugins/auth/google-service-account.d.ts +49 -0
  100. package/dist/plugins/auth/google-service-account.js +172 -0
  101. package/dist/plugins/auth/index.d.ts +15 -0
  102. package/dist/plugins/auth/index.js +15 -0
  103. package/dist/plugins/auth/mtls.d.ts +37 -0
  104. package/dist/plugins/auth/mtls.js +140 -0
  105. package/dist/plugins/auth/oauth2.d.ts +8 -0
  106. package/dist/plugins/auth/oauth2.js +26 -0
  107. package/dist/plugins/auth/oidc.d.ts +55 -0
  108. package/dist/plugins/auth/oidc.js +222 -0
  109. package/dist/plugins/auth/okta.d.ts +47 -0
  110. package/dist/plugins/auth/okta.js +157 -0
  111. package/dist/plugins/auth.d.ts +1 -45
  112. package/dist/plugins/auth.js +1 -268
  113. package/dist/plugins/cache.d.ts +0 -1
  114. package/dist/plugins/certificate-pinning.d.ts +59 -0
  115. package/dist/plugins/certificate-pinning.js +236 -0
  116. package/dist/plugins/circuit-breaker.d.ts +0 -1
  117. package/dist/plugins/compression.d.ts +0 -1
  118. package/dist/plugins/cookie-jar.d.ts +0 -1
  119. package/dist/plugins/dedup.d.ts +0 -1
  120. package/dist/plugins/graphql.d.ts +0 -1
  121. package/dist/plugins/grpc-web.d.ts +0 -1
  122. package/dist/plugins/har-player.d.ts +0 -1
  123. package/dist/plugins/har-recorder.d.ts +0 -1
  124. package/dist/plugins/hls.d.ts +0 -1
  125. package/dist/plugins/http2-push.d.ts +0 -1
  126. package/dist/plugins/http3.d.ts +0 -1
  127. package/dist/plugins/index.d.ts +27 -0
  128. package/dist/plugins/index.js +27 -0
  129. package/dist/plugins/interface-rotator.d.ts +0 -1
  130. package/dist/plugins/jsonrpc.d.ts +0 -1
  131. package/dist/plugins/logger.d.ts +0 -1
  132. package/dist/plugins/odata.d.ts +0 -1
  133. package/dist/plugins/pagination.d.ts +0 -1
  134. package/dist/plugins/proxy-rotator.d.ts +0 -1
  135. package/dist/plugins/rate-limit.d.ts +15 -0
  136. package/dist/plugins/rate-limit.js +162 -0
  137. package/dist/plugins/retry.d.ts +0 -1
  138. package/dist/plugins/scrape.d.ts +0 -1
  139. package/dist/plugins/server-timing.d.ts +0 -1
  140. package/dist/plugins/soap.d.ts +0 -1
  141. package/dist/plugins/user-agent.d.ts +0 -1
  142. package/dist/plugins/xml.d.ts +0 -1
  143. package/dist/plugins/xsrf.d.ts +0 -1
  144. package/dist/presets/anthropic.d.ts +0 -1
  145. package/dist/presets/aws.d.ts +0 -1
  146. package/dist/presets/azure-openai.d.ts +0 -1
  147. package/dist/presets/azure.d.ts +0 -1
  148. package/dist/presets/cloudflare.d.ts +0 -1
  149. package/dist/presets/cohere.d.ts +0 -1
  150. package/dist/presets/deepseek.d.ts +0 -1
  151. package/dist/presets/digitalocean.d.ts +0 -1
  152. package/dist/presets/discord.d.ts +0 -1
  153. package/dist/presets/fireworks.d.ts +0 -1
  154. package/dist/presets/gcp.d.ts +0 -1
  155. package/dist/presets/gemini.d.ts +0 -1
  156. package/dist/presets/github.d.ts +0 -1
  157. package/dist/presets/gitlab.d.ts +0 -1
  158. package/dist/presets/groq.d.ts +0 -1
  159. package/dist/presets/huggingface.d.ts +0 -1
  160. package/dist/presets/index.d.ts +0 -1
  161. package/dist/presets/linear.d.ts +0 -1
  162. package/dist/presets/mailgun.d.ts +0 -1
  163. package/dist/presets/meta.d.ts +0 -1
  164. package/dist/presets/mistral.d.ts +0 -1
  165. package/dist/presets/notion.d.ts +0 -1
  166. package/dist/presets/openai.d.ts +0 -1
  167. package/dist/presets/oracle.d.ts +0 -1
  168. package/dist/presets/perplexity.d.ts +0 -1
  169. package/dist/presets/registry.d.ts +0 -1
  170. package/dist/presets/replicate.d.ts +0 -1
  171. package/dist/presets/sinch.d.ts +0 -1
  172. package/dist/presets/slack.d.ts +0 -1
  173. package/dist/presets/stripe.d.ts +0 -1
  174. package/dist/presets/supabase.d.ts +0 -1
  175. package/dist/presets/tiktok.d.ts +0 -1
  176. package/dist/presets/together.d.ts +0 -1
  177. package/dist/presets/twilio.d.ts +0 -1
  178. package/dist/presets/vercel.d.ts +0 -1
  179. package/dist/presets/vultr.d.ts +0 -1
  180. package/dist/presets/xai.d.ts +0 -1
  181. package/dist/presets/youtube.d.ts +0 -1
  182. package/dist/protocols/ftp.d.ts +0 -1
  183. package/dist/protocols/index.d.ts +0 -1
  184. package/dist/protocols/sftp.d.ts +0 -1
  185. package/dist/protocols/telnet.d.ts +0 -1
  186. package/dist/recker.d.ts +0 -1
  187. package/dist/runner/request-runner.d.ts +0 -1
  188. package/dist/scrape/document.d.ts +0 -1
  189. package/dist/scrape/element.d.ts +0 -1
  190. package/dist/scrape/extractors.d.ts +0 -1
  191. package/dist/scrape/index.d.ts +0 -1
  192. package/dist/scrape/types.d.ts +0 -1
  193. package/dist/testing/index.d.ts +8 -1
  194. package/dist/testing/index.js +4 -0
  195. package/dist/testing/mock-dns-server.d.ts +69 -0
  196. package/dist/testing/mock-dns-server.js +269 -0
  197. package/dist/testing/mock-ftp-server.d.ts +89 -0
  198. package/dist/testing/mock-ftp-server.js +562 -0
  199. package/dist/testing/mock-hls-server.d.ts +0 -1
  200. package/dist/testing/mock-http-server.d.ts +0 -1
  201. package/dist/testing/mock-sse-server.d.ts +0 -1
  202. package/dist/testing/mock-telnet-server.d.ts +59 -0
  203. package/dist/testing/mock-telnet-server.js +273 -0
  204. package/dist/testing/mock-udp-server.d.ts +0 -1
  205. package/dist/testing/mock-websocket-server.d.ts +0 -1
  206. package/dist/testing/mock-whois-server.d.ts +56 -0
  207. package/dist/testing/mock-whois-server.js +234 -0
  208. package/dist/testing/mock.d.ts +0 -1
  209. package/dist/transport/base-udp.d.ts +0 -1
  210. package/dist/transport/fetch.d.ts +0 -1
  211. package/dist/transport/udp-response.d.ts +0 -1
  212. package/dist/transport/udp.d.ts +0 -1
  213. package/dist/transport/undici.d.ts +0 -1
  214. package/dist/types/ai.d.ts +0 -1
  215. package/dist/types/index.d.ts +0 -1
  216. package/dist/types/logger.d.ts +0 -1
  217. package/dist/types/udp.d.ts +0 -1
  218. package/dist/udp/index.d.ts +0 -1
  219. package/dist/utils/agent-manager.d.ts +0 -1
  220. package/dist/utils/body.d.ts +0 -1
  221. package/dist/utils/cert.d.ts +0 -1
  222. package/dist/utils/charset.d.ts +0 -1
  223. package/dist/utils/chart.d.ts +0 -1
  224. package/dist/utils/client-pool.d.ts +0 -1
  225. package/dist/utils/colors.d.ts +0 -1
  226. package/dist/utils/concurrency.d.ts +0 -1
  227. package/dist/utils/dns-toolkit.d.ts +0 -1
  228. package/dist/utils/dns.d.ts +0 -1
  229. package/dist/utils/doh.d.ts +0 -1
  230. package/dist/utils/download.d.ts +0 -1
  231. package/dist/utils/env-proxy.d.ts +0 -1
  232. package/dist/utils/header-parser.d.ts +0 -1
  233. package/dist/utils/html-cleaner.d.ts +0 -1
  234. package/dist/utils/link-header.d.ts +0 -1
  235. package/dist/utils/optional-require.d.ts +0 -1
  236. package/dist/utils/progress.d.ts +0 -1
  237. package/dist/utils/rdap.d.ts +0 -1
  238. package/dist/utils/request-pool.d.ts +0 -1
  239. package/dist/utils/security-grader.d.ts +0 -1
  240. package/dist/utils/sparkline.d.ts +0 -1
  241. package/dist/utils/sse.d.ts +0 -1
  242. package/dist/utils/streaming.d.ts +0 -1
  243. package/dist/utils/system-metrics.d.ts +0 -1
  244. package/dist/utils/tls-inspector.d.ts +0 -1
  245. package/dist/utils/try-fn.d.ts +0 -1
  246. package/dist/utils/upload.d.ts +0 -1
  247. package/dist/utils/user-agent.d.ts +0 -1
  248. package/dist/utils/whois.d.ts +0 -1
  249. package/dist/webrtc/index.d.ts +0 -1
  250. package/dist/websocket/client.d.ts +0 -1
  251. package/package.json +10 -3
  252. package/dist/ai/adaptive-timeout.d.ts.map +0 -1
  253. package/dist/ai/client.d.ts.map +0 -1
  254. package/dist/ai/index.d.ts.map +0 -1
  255. package/dist/ai/providers/anthropic.d.ts.map +0 -1
  256. package/dist/ai/providers/base.d.ts.map +0 -1
  257. package/dist/ai/providers/index.d.ts.map +0 -1
  258. package/dist/ai/providers/openai.d.ts.map +0 -1
  259. package/dist/ai/rate-limiter.d.ts.map +0 -1
  260. package/dist/bench/generator.d.ts.map +0 -1
  261. package/dist/bench/stats.d.ts.map +0 -1
  262. package/dist/cache/file-storage.d.ts.map +0 -1
  263. package/dist/cache/memory-limits.d.ts.map +0 -1
  264. package/dist/cache/memory-storage.d.ts.map +0 -1
  265. package/dist/cache/redis-storage.d.ts.map +0 -1
  266. package/dist/cli/handler.d.ts.map +0 -1
  267. package/dist/cli/index.d.ts.map +0 -1
  268. package/dist/cli/presets.d.ts.map +0 -1
  269. package/dist/cli/tui/ai-chat.d.ts.map +0 -1
  270. package/dist/cli/tui/load-dashboard.d.ts.map +0 -1
  271. package/dist/cli/tui/scroll-buffer.d.ts.map +0 -1
  272. package/dist/cli/tui/search-panel.d.ts.map +0 -1
  273. package/dist/cli/tui/shell-search.d.ts.map +0 -1
  274. package/dist/cli/tui/shell.d.ts.map +0 -1
  275. package/dist/cli/tui/websocket.d.ts.map +0 -1
  276. package/dist/constants/http-status.d.ts.map +0 -1
  277. package/dist/constants.d.ts.map +0 -1
  278. package/dist/contract/index.d.ts.map +0 -1
  279. package/dist/cookies/memory-cookie-jar.d.ts.map +0 -1
  280. package/dist/core/client.d.ts.map +0 -1
  281. package/dist/core/errors.d.ts.map +0 -1
  282. package/dist/core/index.d.ts.map +0 -1
  283. package/dist/core/request-promise.d.ts.map +0 -1
  284. package/dist/core/request.d.ts.map +0 -1
  285. package/dist/core/response.d.ts.map +0 -1
  286. package/dist/dns/index.d.ts.map +0 -1
  287. package/dist/dns/propagation.d.ts.map +0 -1
  288. package/dist/events/request-events.d.ts.map +0 -1
  289. package/dist/index.d.ts.map +0 -1
  290. package/dist/mcp/client.d.ts.map +0 -1
  291. package/dist/mcp/contract.d.ts.map +0 -1
  292. package/dist/mcp/embeddings-loader.d.ts.map +0 -1
  293. package/dist/mcp/geoip-loader.d.ts.map +0 -1
  294. package/dist/mcp/index.d.ts.map +0 -1
  295. package/dist/mcp/ip-intel.d.ts.map +0 -1
  296. package/dist/mcp/search/hybrid-search.d.ts.map +0 -1
  297. package/dist/mcp/search/index.d.ts.map +0 -1
  298. package/dist/mcp/search/math.d.ts.map +0 -1
  299. package/dist/mcp/search/types.d.ts.map +0 -1
  300. package/dist/mcp/server.d.ts.map +0 -1
  301. package/dist/mcp/types.d.ts.map +0 -1
  302. package/dist/plugins/auth.d.ts.map +0 -1
  303. package/dist/plugins/cache.d.ts.map +0 -1
  304. package/dist/plugins/circuit-breaker.d.ts.map +0 -1
  305. package/dist/plugins/compression.d.ts.map +0 -1
  306. package/dist/plugins/cookie-jar.d.ts.map +0 -1
  307. package/dist/plugins/dedup.d.ts.map +0 -1
  308. package/dist/plugins/graphql.d.ts.map +0 -1
  309. package/dist/plugins/grpc-web.d.ts.map +0 -1
  310. package/dist/plugins/har-player.d.ts.map +0 -1
  311. package/dist/plugins/har-recorder.d.ts.map +0 -1
  312. package/dist/plugins/hls.d.ts.map +0 -1
  313. package/dist/plugins/http2-push.d.ts.map +0 -1
  314. package/dist/plugins/http3.d.ts.map +0 -1
  315. package/dist/plugins/interface-rotator.d.ts.map +0 -1
  316. package/dist/plugins/jsonrpc.d.ts.map +0 -1
  317. package/dist/plugins/logger.d.ts.map +0 -1
  318. package/dist/plugins/odata.d.ts.map +0 -1
  319. package/dist/plugins/pagination.d.ts.map +0 -1
  320. package/dist/plugins/proxy-rotator.d.ts.map +0 -1
  321. package/dist/plugins/retry.d.ts.map +0 -1
  322. package/dist/plugins/scrape.d.ts.map +0 -1
  323. package/dist/plugins/server-timing.d.ts.map +0 -1
  324. package/dist/plugins/soap.d.ts.map +0 -1
  325. package/dist/plugins/user-agent.d.ts.map +0 -1
  326. package/dist/plugins/xml.d.ts.map +0 -1
  327. package/dist/plugins/xsrf.d.ts.map +0 -1
  328. package/dist/presets/anthropic.d.ts.map +0 -1
  329. package/dist/presets/aws.d.ts.map +0 -1
  330. package/dist/presets/azure-openai.d.ts.map +0 -1
  331. package/dist/presets/azure.d.ts.map +0 -1
  332. package/dist/presets/cloudflare.d.ts.map +0 -1
  333. package/dist/presets/cohere.d.ts.map +0 -1
  334. package/dist/presets/deepseek.d.ts.map +0 -1
  335. package/dist/presets/digitalocean.d.ts.map +0 -1
  336. package/dist/presets/discord.d.ts.map +0 -1
  337. package/dist/presets/fireworks.d.ts.map +0 -1
  338. package/dist/presets/gcp.d.ts.map +0 -1
  339. package/dist/presets/gemini.d.ts.map +0 -1
  340. package/dist/presets/github.d.ts.map +0 -1
  341. package/dist/presets/gitlab.d.ts.map +0 -1
  342. package/dist/presets/groq.d.ts.map +0 -1
  343. package/dist/presets/huggingface.d.ts.map +0 -1
  344. package/dist/presets/index.d.ts.map +0 -1
  345. package/dist/presets/linear.d.ts.map +0 -1
  346. package/dist/presets/mailgun.d.ts.map +0 -1
  347. package/dist/presets/meta.d.ts.map +0 -1
  348. package/dist/presets/mistral.d.ts.map +0 -1
  349. package/dist/presets/notion.d.ts.map +0 -1
  350. package/dist/presets/openai.d.ts.map +0 -1
  351. package/dist/presets/oracle.d.ts.map +0 -1
  352. package/dist/presets/perplexity.d.ts.map +0 -1
  353. package/dist/presets/registry.d.ts.map +0 -1
  354. package/dist/presets/replicate.d.ts.map +0 -1
  355. package/dist/presets/sinch.d.ts.map +0 -1
  356. package/dist/presets/slack.d.ts.map +0 -1
  357. package/dist/presets/stripe.d.ts.map +0 -1
  358. package/dist/presets/supabase.d.ts.map +0 -1
  359. package/dist/presets/tiktok.d.ts.map +0 -1
  360. package/dist/presets/together.d.ts.map +0 -1
  361. package/dist/presets/twilio.d.ts.map +0 -1
  362. package/dist/presets/vercel.d.ts.map +0 -1
  363. package/dist/presets/vultr.d.ts.map +0 -1
  364. package/dist/presets/xai.d.ts.map +0 -1
  365. package/dist/presets/youtube.d.ts.map +0 -1
  366. package/dist/protocols/ftp.d.ts.map +0 -1
  367. package/dist/protocols/index.d.ts.map +0 -1
  368. package/dist/protocols/sftp.d.ts.map +0 -1
  369. package/dist/protocols/telnet.d.ts.map +0 -1
  370. package/dist/recker.d.ts.map +0 -1
  371. package/dist/runner/request-runner.d.ts.map +0 -1
  372. package/dist/scrape/document.d.ts.map +0 -1
  373. package/dist/scrape/element.d.ts.map +0 -1
  374. package/dist/scrape/extractors.d.ts.map +0 -1
  375. package/dist/scrape/index.d.ts.map +0 -1
  376. package/dist/scrape/types.d.ts.map +0 -1
  377. package/dist/testing/index.d.ts.map +0 -1
  378. package/dist/testing/mock-hls-server.d.ts.map +0 -1
  379. package/dist/testing/mock-http-server.d.ts.map +0 -1
  380. package/dist/testing/mock-sse-server.d.ts.map +0 -1
  381. package/dist/testing/mock-udp-server.d.ts.map +0 -1
  382. package/dist/testing/mock-websocket-server.d.ts.map +0 -1
  383. package/dist/testing/mock.d.ts.map +0 -1
  384. package/dist/transport/base-udp.d.ts.map +0 -1
  385. package/dist/transport/fetch.d.ts.map +0 -1
  386. package/dist/transport/udp-response.d.ts.map +0 -1
  387. package/dist/transport/udp.d.ts.map +0 -1
  388. package/dist/transport/undici.d.ts.map +0 -1
  389. package/dist/types/ai.d.ts.map +0 -1
  390. package/dist/types/index.d.ts.map +0 -1
  391. package/dist/types/logger.d.ts.map +0 -1
  392. package/dist/types/udp.d.ts.map +0 -1
  393. package/dist/udp/index.d.ts.map +0 -1
  394. package/dist/utils/agent-manager.d.ts.map +0 -1
  395. package/dist/utils/body.d.ts.map +0 -1
  396. package/dist/utils/cert.d.ts.map +0 -1
  397. package/dist/utils/charset.d.ts.map +0 -1
  398. package/dist/utils/chart.d.ts.map +0 -1
  399. package/dist/utils/client-pool.d.ts.map +0 -1
  400. package/dist/utils/colors.d.ts.map +0 -1
  401. package/dist/utils/concurrency.d.ts.map +0 -1
  402. package/dist/utils/dns-toolkit.d.ts.map +0 -1
  403. package/dist/utils/dns.d.ts.map +0 -1
  404. package/dist/utils/doh.d.ts.map +0 -1
  405. package/dist/utils/download.d.ts.map +0 -1
  406. package/dist/utils/env-proxy.d.ts.map +0 -1
  407. package/dist/utils/header-parser.d.ts.map +0 -1
  408. package/dist/utils/html-cleaner.d.ts.map +0 -1
  409. package/dist/utils/link-header.d.ts.map +0 -1
  410. package/dist/utils/optional-require.d.ts.map +0 -1
  411. package/dist/utils/progress.d.ts.map +0 -1
  412. package/dist/utils/rdap.d.ts.map +0 -1
  413. package/dist/utils/request-pool.d.ts.map +0 -1
  414. package/dist/utils/security-grader.d.ts.map +0 -1
  415. package/dist/utils/sparkline.d.ts.map +0 -1
  416. package/dist/utils/sse.d.ts.map +0 -1
  417. package/dist/utils/streaming.d.ts.map +0 -1
  418. package/dist/utils/system-metrics.d.ts.map +0 -1
  419. package/dist/utils/tls-inspector.d.ts.map +0 -1
  420. package/dist/utils/try-fn.d.ts.map +0 -1
  421. package/dist/utils/upload.d.ts.map +0 -1
  422. package/dist/utils/user-agent.d.ts.map +0 -1
  423. package/dist/utils/whois.d.ts.map +0 -1
  424. package/dist/webrtc/index.d.ts.map +0 -1
  425. package/dist/websocket/client.d.ts.map +0 -1
package/README.md CHANGED
@@ -131,14 +131,45 @@ const client = createClient({
131
131
  });
132
132
  ```
133
133
 
134
+ ## CLI (`rek`)
135
+
136
+ A powerful terminal client that replaces curl:
137
+
138
+ ```bash
139
+ # Install globally
140
+ npm install -g recker
141
+
142
+ # Simple requests
143
+ rek httpbin.org/json
144
+ rek POST api.com/users name="John" age:=30
145
+
146
+ # Pipe to bash (like curl)
147
+ rek -q https://get.docker.com | bash
148
+
149
+ # Save to file
150
+ rek -o data.json api.com/export
151
+
152
+ # Interactive shell
153
+ rek shell
154
+
155
+ # Mock servers for testing
156
+ rek serve http # HTTP on :3000
157
+ rek serve ws # WebSocket on :8080
158
+ rek serve hls # HLS streaming on :8082
159
+ ```
160
+
161
+ See [CLI Documentation](./docs/cli/01-overview.md) for more.
162
+
134
163
  ## Documentation
135
164
 
136
165
  - **[Quick Start](./docs/http/01-quickstart.md)** - Get running in 2 minutes
166
+ - **[CLI Guide](./docs/cli/01-overview.md)** - Terminal client documentation
137
167
  - **[API Reference](./docs/reference/01-api.md)** - Complete API documentation
138
168
  - **[Configuration](./docs/http/05-configuration.md)** - Client options
139
169
  - **[Plugins](./docs/http/10-plugins.md)** - Extend functionality
140
170
  - **[AI Integration](./docs/ai/01-overview.md)** - OpenAI, Anthropic, and more
141
171
  - **[Protocols](./docs/protocols/01-websocket.md)** - WebSocket, DNS, WHOIS
172
+ - **[Mock Servers](./docs/cli/08-mock-servers.md)** - Built-in test servers
142
173
 
143
174
  ## License
144
175
 
@@ -48,4 +48,3 @@ export declare class StreamTimeoutController {
48
48
  }
49
49
  export declare const adaptiveTimeouts: AdaptiveTimeoutManager;
50
50
  export {};
51
- //# sourceMappingURL=adaptive-timeout.d.ts.map
@@ -20,4 +20,3 @@ export declare class UnifiedAIClient implements AIClient {
20
20
  private sleep;
21
21
  }
22
22
  export declare function createAI(config?: AIClientConfig): AIClient;
23
- //# sourceMappingURL=client.d.ts.map
package/dist/ai/client.js CHANGED
@@ -1,6 +1,8 @@
1
1
  import { AIError, RateLimitError, ContextLengthError, OverloadedError } from './providers/base.js';
2
2
  import { OpenAIProvider } from './providers/openai.js';
3
3
  import { AnthropicProvider } from './providers/anthropic.js';
4
+ import { GoogleProvider } from './providers/google.js';
5
+ import { OllamaProvider } from './providers/ollama.js';
4
6
  class AIMetricsTracker {
5
7
  data = {
6
8
  totalRequests: 0,
@@ -155,6 +157,10 @@ export class UnifiedAIClient {
155
157
  this.providers.set('openai', new OpenAIProvider(openaiConfig));
156
158
  const anthropicConfig = this.config.providers?.anthropic || {};
157
159
  this.providers.set('anthropic', new AnthropicProvider(anthropicConfig));
160
+ const googleConfig = this.config.providers?.google || {};
161
+ this.providers.set('google', new GoogleProvider(googleConfig));
162
+ const ollamaConfig = this.config.providers?.ollama || {};
163
+ this.providers.set('ollama', new OllamaProvider(ollamaConfig));
158
164
  }
159
165
  getProvider(name) {
160
166
  const providerName = name || this.config.defaultProvider || 'openai';
@@ -2,9 +2,11 @@ export { UnifiedAIClient, createAI } from './client.js';
2
2
  export { BaseAIProvider, AIError, RateLimitError, ContextLengthError, OverloadedError, AuthenticationError } from './providers/base.js';
3
3
  export { OpenAIProvider } from './providers/openai.js';
4
4
  export { AnthropicProvider } from './providers/anthropic.js';
5
+ export { GoogleProvider } from './providers/google.js';
6
+ export { OllamaProvider } from './providers/ollama.js';
7
+ export * from './vector/index.js';
5
8
  export { AdaptiveTimeoutManager, StreamTimeoutController, adaptiveTimeouts } from './adaptive-timeout.js';
6
9
  export { TokenRateLimiter, RateLimitExceededError, createRateLimiter, tokenEstimators, PROVIDER_RATE_LIMITS, } from './rate-limiter.js';
7
10
  export type { AIProvider, MessageRole, ChatMessage, ContentPart, ToolDefinition, ToolCall, TokenUsage, CostInfo, AILatency, AITimeoutOptions, AIRetryOptions, ResponseFormat, ChatOptions, EmbedOptions, AIResponse, EmbedResponse, StreamEventType, StreamEvent, TextStreamEvent, ToolCallStreamEvent, ToolCallDeltaStreamEvent, UsageStreamEvent, DoneStreamEvent, ErrorStreamEvent, AIStream, ProviderConfig, AIClientConfig, TokenRateLimitConfig, SemanticCacheConfig, CacheStorage, AIClient, AIMetrics, AIMetricsSummary, AgentTool, AgentConfig, AgentEventType, AgentStreamEvent, Agent, } from '../types/ai.js';
8
11
  export type { OpenAIConfig } from './providers/openai.js';
9
12
  export type { AnthropicConfig } from './providers/anthropic.js';
10
- //# sourceMappingURL=index.d.ts.map
package/dist/ai/index.js CHANGED
@@ -2,5 +2,8 @@ export { UnifiedAIClient, createAI } from './client.js';
2
2
  export { BaseAIProvider, AIError, RateLimitError, ContextLengthError, OverloadedError, AuthenticationError } from './providers/base.js';
3
3
  export { OpenAIProvider } from './providers/openai.js';
4
4
  export { AnthropicProvider } from './providers/anthropic.js';
5
+ export { GoogleProvider } from './providers/google.js';
6
+ export { OllamaProvider } from './providers/ollama.js';
7
+ export * from './vector/index.js';
5
8
  export { AdaptiveTimeoutManager, StreamTimeoutController, adaptiveTimeouts } from './adaptive-timeout.js';
6
9
  export { TokenRateLimiter, RateLimitExceededError, createRateLimiter, tokenEstimators, PROVIDER_RATE_LIMITS, } from './rate-limiter.js';
@@ -61,4 +61,3 @@ export declare class AnthropicProvider extends BaseAIProvider {
61
61
  private parseAnthropicStream;
62
62
  }
63
63
  export {};
64
- //# sourceMappingURL=anthropic.d.ts.map
@@ -46,4 +46,3 @@ export declare class OverloadedError extends AIError {
46
46
  export declare class AuthenticationError extends AIError {
47
47
  constructor(provider: AIProvider);
48
48
  }
49
- //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1,59 @@
1
+ import type { ChatOptions, ChatMessage, AIResponse, AIStream, StreamEvent, EmbedOptions, EmbedResponse, ProviderConfig } from '../../types/ai.js';
2
+ import { BaseAIProvider, ProviderRequestContext } from './base.js';
3
+ export interface GoogleConfig extends ProviderConfig {
4
+ apiVersion?: string;
5
+ }
6
+ interface GeminiContent {
7
+ role: 'user' | 'model';
8
+ parts: GeminiPart[];
9
+ }
10
+ interface GeminiPart {
11
+ text?: string;
12
+ inlineData?: {
13
+ mimeType: string;
14
+ data: string;
15
+ };
16
+ functionCall?: {
17
+ name: string;
18
+ args: Record<string, unknown>;
19
+ };
20
+ functionResponse?: {
21
+ name: string;
22
+ response: Record<string, unknown>;
23
+ };
24
+ }
25
+ interface GeminiResponse {
26
+ candidates?: Array<{
27
+ content: GeminiContent;
28
+ finishReason?: string;
29
+ citationMetadata?: unknown;
30
+ tokenCount?: number;
31
+ }>;
32
+ promptFeedback?: {
33
+ blockReason?: string;
34
+ };
35
+ usageMetadata?: {
36
+ promptTokenCount: number;
37
+ candidatesTokenCount: number;
38
+ totalTokenCount: number;
39
+ };
40
+ }
41
+ export declare class GoogleProvider extends BaseAIProvider {
42
+ private googleConfig;
43
+ constructor(config?: GoogleConfig);
44
+ protected getEnvApiKey(): string | undefined;
45
+ protected getBaseUrl(): string;
46
+ protected buildHeaders(): Record<string, string>;
47
+ protected transformMessages(messages: ChatMessage[]): GeminiContent[];
48
+ private transformContent;
49
+ private transformTools;
50
+ chat(options: ChatOptions): Promise<AIResponse>;
51
+ stream(options: ChatOptions): Promise<AIStream>;
52
+ embed(options: EmbedOptions): Promise<EmbedResponse>;
53
+ private buildChatBody;
54
+ private makeRequest;
55
+ private handleError;
56
+ protected parseResponse(data: GeminiResponse, context: ProviderRequestContext): AIResponse;
57
+ protected parseStreamEvent(chunk: string, context: ProviderRequestContext): StreamEvent | null;
58
+ }
59
+ export {};
@@ -0,0 +1,305 @@
1
+ import { BaseAIProvider, AIError, RateLimitError, OverloadedError, AuthenticationError, } from './base.js';
2
+ export class GoogleProvider extends BaseAIProvider {
3
+ googleConfig;
4
+ constructor(config = {}) {
5
+ super({ ...config, name: 'google' });
6
+ this.googleConfig = config;
7
+ }
8
+ getEnvApiKey() {
9
+ return process.env.GOOGLE_API_KEY;
10
+ }
11
+ getBaseUrl() {
12
+ const version = this.googleConfig.apiVersion || 'v1beta';
13
+ return this.config.baseUrl || `https://generativelanguage.googleapis.com/${version}`;
14
+ }
15
+ buildHeaders() {
16
+ return {
17
+ 'Content-Type': 'application/json',
18
+ ...this.config.headers,
19
+ };
20
+ }
21
+ transformMessages(messages) {
22
+ return messages
23
+ .filter((m) => m.role !== 'system')
24
+ .map((msg) => {
25
+ return {
26
+ role: msg.role === 'user' ? 'user' : 'model',
27
+ parts: this.transformContent(msg),
28
+ };
29
+ });
30
+ }
31
+ transformContent(msg) {
32
+ if (msg.role === 'tool') {
33
+ return [{
34
+ functionResponse: {
35
+ name: msg.name || 'unknown_tool',
36
+ response: typeof msg.content === 'string' ? { content: msg.content } : { content: msg.content },
37
+ },
38
+ }];
39
+ }
40
+ if (msg.tool_calls && msg.tool_calls.length > 0) {
41
+ const parts = [];
42
+ if (msg.content && typeof msg.content === 'string') {
43
+ parts.push({ text: msg.content });
44
+ }
45
+ msg.tool_calls.forEach((tc) => {
46
+ parts.push({
47
+ functionCall: {
48
+ name: tc.function.name,
49
+ args: JSON.parse(tc.function.arguments || '{}'),
50
+ },
51
+ });
52
+ });
53
+ return parts;
54
+ }
55
+ const content = msg.content;
56
+ if (typeof content === 'string') {
57
+ return [{ text: content }];
58
+ }
59
+ if (!content)
60
+ return [{ text: '' }];
61
+ return content.map((part) => {
62
+ if (part.type === 'text') {
63
+ return { text: part.text };
64
+ }
65
+ if (part.type === 'image_url') {
66
+ return { text: '[Image URL not supported directly in Gemini provider yet without base64]' };
67
+ }
68
+ if (part.type === 'image') {
69
+ const base64 = Buffer.from(part.data).toString('base64');
70
+ return {
71
+ inlineData: {
72
+ mimeType: part.mediaType,
73
+ data: base64,
74
+ },
75
+ };
76
+ }
77
+ return { text: '' };
78
+ });
79
+ }
80
+ transformTools(tools) {
81
+ if (!tools || tools.length === 0)
82
+ return undefined;
83
+ return [{
84
+ functionDeclarations: tools.map((t) => ({
85
+ name: t.function.name,
86
+ description: t.function.description,
87
+ parameters: t.function.parameters,
88
+ })),
89
+ }];
90
+ }
91
+ async chat(options) {
92
+ const context = {
93
+ startTime: performance.now(),
94
+ tokenCount: 0,
95
+ };
96
+ const model = options.model || this.config.defaultModel || 'gemini-2.5-flash';
97
+ const body = this.buildChatBody(options);
98
+ const response = await this.makeRequest(`/models/${model}:generateContent`, body, options.signal);
99
+ const data = await response.json();
100
+ return this.parseResponse(data, context);
101
+ }
102
+ async stream(options) {
103
+ const context = {
104
+ startTime: performance.now(),
105
+ tokenCount: 0,
106
+ };
107
+ const model = options.model || this.config.defaultModel || 'gemini-2.5-flash';
108
+ const body = this.buildChatBody(options);
109
+ const response = await this.makeRequest(`/models/${model}:streamGenerateContent?alt=sse`, body, options.signal);
110
+ return this.parseSSEStream(response, context);
111
+ }
112
+ async embed(options) {
113
+ const startTime = performance.now();
114
+ const model = options.model || 'text-embedding-004';
115
+ const isBatch = Array.isArray(options.input);
116
+ const method = isBatch ? 'batchEmbedContents' : 'embedContent';
117
+ const inputs = isBatch ? options.input : [options.input];
118
+ const requests = inputs.map(text => ({
119
+ model: `models/${model}`,
120
+ content: { parts: [{ text }] }
121
+ }));
122
+ const body = isBatch ? { requests } : { ...requests[0] };
123
+ const response = await this.makeRequest(`/models/${model}:${method}`, body, options.signal);
124
+ const data = await response.json();
125
+ let embeddings = [];
126
+ if (isBatch) {
127
+ embeddings = data.embeddings.map((e) => e.values);
128
+ }
129
+ else {
130
+ embeddings = [data.embedding.values];
131
+ }
132
+ const totalTokens = 0;
133
+ const latency = {
134
+ ttft: performance.now() - startTime,
135
+ tps: 0,
136
+ total: performance.now() - startTime,
137
+ };
138
+ return {
139
+ embeddings,
140
+ usage: {
141
+ inputTokens: totalTokens,
142
+ outputTokens: 0,
143
+ totalTokens,
144
+ },
145
+ model,
146
+ provider: 'google',
147
+ latency,
148
+ };
149
+ }
150
+ buildChatBody(options) {
151
+ const messages = this.transformMessages(options.messages);
152
+ const systemMessage = options.messages.find(m => m.role === 'system');
153
+ let systemInstruction;
154
+ if (systemMessage) {
155
+ systemInstruction = {
156
+ parts: [{ text: typeof systemMessage.content === 'string' ? systemMessage.content : '' }]
157
+ };
158
+ }
159
+ else if (options.systemPrompt) {
160
+ systemInstruction = {
161
+ parts: [{ text: options.systemPrompt }]
162
+ };
163
+ }
164
+ const generationConfig = {};
165
+ if (options.temperature !== undefined)
166
+ generationConfig.temperature = options.temperature;
167
+ if (options.topP !== undefined)
168
+ generationConfig.topP = options.topP;
169
+ if (options.maxTokens !== undefined)
170
+ generationConfig.maxOutputTokens = options.maxTokens;
171
+ if (options.stop)
172
+ generationConfig.stopSequences = options.stop;
173
+ if (options.responseFormat?.type === 'json_object') {
174
+ generationConfig.responseMimeType = 'application/json';
175
+ }
176
+ const body = {
177
+ contents: messages,
178
+ generationConfig,
179
+ tools: this.transformTools(options.tools),
180
+ };
181
+ if (systemInstruction) {
182
+ body.systemInstruction = systemInstruction;
183
+ }
184
+ return body;
185
+ }
186
+ async makeRequest(endpoint, body, signal) {
187
+ const key = this.getApiKey();
188
+ const separator = endpoint.includes('?') ? '&' : '?';
189
+ const url = `${this.getBaseUrl()}${endpoint}${separator}key=${key}`;
190
+ const headers = this.buildHeaders();
191
+ const response = await fetch(url, {
192
+ method: 'POST',
193
+ headers,
194
+ body: JSON.stringify(body),
195
+ signal,
196
+ });
197
+ if (!response.ok) {
198
+ await this.handleError(response);
199
+ }
200
+ return response;
201
+ }
202
+ async handleError(response) {
203
+ let errorData = {};
204
+ try {
205
+ errorData = await response.json();
206
+ }
207
+ catch {
208
+ }
209
+ const message = errorData.error?.message || response.statusText;
210
+ const status = errorData.error?.code || response.status;
211
+ switch (response.status) {
212
+ case 400:
213
+ case 401:
214
+ throw new AuthenticationError('google');
215
+ case 429:
216
+ throw new RateLimitError('google');
217
+ case 503:
218
+ throw new OverloadedError('google');
219
+ }
220
+ throw new AIError(message, 'google', String(status), response.status, response.status >= 500);
221
+ }
222
+ parseResponse(data, context) {
223
+ const candidate = data.candidates?.[0];
224
+ const parts = candidate?.content?.parts || [];
225
+ const content = parts
226
+ .filter(p => p.text)
227
+ .map(p => p.text)
228
+ .join('');
229
+ const toolCalls = parts
230
+ .filter(p => p.functionCall)
231
+ .map(p => ({
232
+ id: 'call_' + Math.random().toString(36).slice(2),
233
+ type: 'function',
234
+ function: {
235
+ name: p.functionCall.name,
236
+ arguments: JSON.stringify(p.functionCall.args),
237
+ }
238
+ }));
239
+ const usage = data.usageMetadata
240
+ ? {
241
+ inputTokens: data.usageMetadata.promptTokenCount,
242
+ outputTokens: data.usageMetadata.candidatesTokenCount,
243
+ totalTokens: data.usageMetadata.totalTokenCount,
244
+ }
245
+ : this.emptyUsage();
246
+ context.tokenCount = usage.outputTokens;
247
+ return {
248
+ content,
249
+ usage,
250
+ latency: this.calculateLatency(context),
251
+ model: 'gemini',
252
+ provider: 'google',
253
+ cached: false,
254
+ finishReason: candidate?.finishReason === 'STOP' ? 'stop' : 'length',
255
+ toolCalls: toolCalls.length > 0 ? toolCalls : undefined,
256
+ raw: data,
257
+ };
258
+ }
259
+ parseStreamEvent(chunk, context) {
260
+ const data = JSON.parse(chunk);
261
+ const candidate = data.candidates?.[0];
262
+ if (!candidate)
263
+ return null;
264
+ if (data.usageMetadata) {
265
+ return {
266
+ type: 'usage',
267
+ usage: {
268
+ inputTokens: data.usageMetadata.promptTokenCount,
269
+ outputTokens: data.usageMetadata.candidatesTokenCount,
270
+ totalTokens: data.usageMetadata.totalTokenCount,
271
+ }
272
+ };
273
+ }
274
+ const parts = candidate.content?.parts || [];
275
+ const textPart = parts.find(p => p.text);
276
+ if (textPart?.text) {
277
+ context.tokenCount++;
278
+ return {
279
+ type: 'text',
280
+ content: textPart.text,
281
+ };
282
+ }
283
+ const toolPart = parts.find(p => p.functionCall);
284
+ if (toolPart?.functionCall) {
285
+ return {
286
+ type: 'tool_call',
287
+ toolCall: {
288
+ id: 'call_' + Math.random().toString(36).slice(2),
289
+ type: 'function',
290
+ function: {
291
+ name: toolPart.functionCall.name,
292
+ arguments: JSON.stringify(toolPart.functionCall.args),
293
+ }
294
+ }
295
+ };
296
+ }
297
+ if (candidate.finishReason && candidate.finishReason !== 'STOP') {
298
+ return {
299
+ type: 'done',
300
+ finishReason: 'stop',
301
+ };
302
+ }
303
+ return null;
304
+ }
305
+ }
@@ -4,4 +4,7 @@ export { OpenAIProvider } from './openai.js';
4
4
  export type { OpenAIConfig } from './openai.js';
5
5
  export { AnthropicProvider } from './anthropic.js';
6
6
  export type { AnthropicConfig } from './anthropic.js';
7
- //# sourceMappingURL=index.d.ts.map
7
+ export { GoogleProvider } from './google.js';
8
+ export type { GoogleConfig } from './google.js';
9
+ export { OllamaProvider } from './ollama.js';
10
+ export type { OllamaConfig } from './ollama.js';
@@ -1,3 +1,5 @@
1
1
  export { BaseAIProvider, AIError, RateLimitError, ContextLengthError, OverloadedError, AuthenticationError } from './base.js';
2
2
  export { OpenAIProvider } from './openai.js';
3
3
  export { AnthropicProvider } from './anthropic.js';
4
+ export { GoogleProvider } from './google.js';
5
+ export { OllamaProvider } from './ollama.js';
@@ -0,0 +1,44 @@
1
+ import type { ChatOptions, ChatMessage, AIResponse, AIStream, StreamEvent, EmbedOptions, EmbedResponse, ProviderConfig } from '../../types/ai.js';
2
+ import { BaseAIProvider, ProviderRequestContext } from './base.js';
3
+ export interface OllamaConfig extends ProviderConfig {
4
+ keepAlive?: string;
5
+ }
6
+ interface OllamaMessage {
7
+ role: string;
8
+ content: string;
9
+ images?: string[];
10
+ }
11
+ interface OllamaResponse {
12
+ model: string;
13
+ created_at: string;
14
+ message: {
15
+ role: string;
16
+ content: string;
17
+ images?: string[] | null;
18
+ };
19
+ done: boolean;
20
+ total_duration?: number;
21
+ load_duration?: number;
22
+ prompt_eval_count?: number;
23
+ prompt_eval_duration?: number;
24
+ eval_count?: number;
25
+ eval_duration?: number;
26
+ }
27
+ export declare class OllamaProvider extends BaseAIProvider {
28
+ private ollamaConfig;
29
+ constructor(config?: OllamaConfig);
30
+ protected getEnvApiKey(): string | undefined;
31
+ protected getBaseUrl(): string;
32
+ protected buildHeaders(): Record<string, string>;
33
+ protected transformMessages(messages: ChatMessage[]): OllamaMessage[];
34
+ private extractContentAndImages;
35
+ chat(options: ChatOptions): Promise<AIResponse>;
36
+ stream(options: ChatOptions): Promise<AIStream>;
37
+ embed(options: EmbedOptions): Promise<EmbedResponse>;
38
+ private buildChatBody;
39
+ private makeRequest;
40
+ protected parseResponse(data: OllamaResponse, context: ProviderRequestContext): AIResponse;
41
+ protected parseStreamEvent(_chunk: string, _context: ProviderRequestContext): StreamEvent | null;
42
+ protected parseNDJSONStream(response: Response, context: ProviderRequestContext): AIStream;
43
+ }
44
+ export {};