@tool-bridge/server 0.21.0 → 0.22.1

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 (178) hide show
  1. package/dist/admin.js +170 -0
  2. package/dist/airtable-ML2GIGCH.js +790 -0
  3. package/dist/{alt_text_generator_ai-RELFQ5FV.js → alt_text_generator_ai-FGYQAF2A.js} +12 -11
  4. package/dist/{amap-YSYEACKQ.js → amap-G7V65NGK.js} +221 -220
  5. package/dist/anthropic-6ZK24TBB.js +203 -0
  6. package/dist/apify-VDGYHP6W.js +248 -0
  7. package/dist/brave_search-TAATLZOS.js +302 -0
  8. package/dist/chunk-2IAI3XQM.js +302 -0
  9. package/dist/chunk-7ISGFRC6.js +161 -0
  10. package/dist/{chunk-Q74GLIDK.js → chunk-BNMLA2RC.js} +6 -5
  11. package/dist/chunk-HA4BGL6C.js +8429 -0
  12. package/dist/{chunk-MDY7K5CX.js → chunk-RMAWSG7E.js} +20135 -26920
  13. package/dist/{chunk-JEWFX6Z6.js → chunk-RTW5VRTK.js} +3 -3
  14. package/dist/chunk-U7PTOA3U.js +7320 -0
  15. package/dist/chunk-UY6ANCOY.js +378 -0
  16. package/dist/{chunk-QR4LK3HF.js → chunk-X7ZUTKHR.js} +4 -2
  17. package/dist/circleci-BQ2UWXL2.js +389 -0
  18. package/dist/clerk-2JYWQNOI.js +1019 -0
  19. package/dist/cohere-6MI7AQM4.js +185 -0
  20. package/dist/{confluence-52I37IUT.js → confluence-6Y6GDETF.js} +105 -104
  21. package/dist/{convertapi-3TRJ3WEO.js → convertapi-HBZCSWOX.js} +32 -31
  22. package/dist/{currencyapi-LWEANWVI.js → currencyapi-337U5TGI.js} +71 -71
  23. package/dist/deepseek-OSPASO7O.js +210 -0
  24. package/dist/docker_hub-3ATQOY5L.js +933 -0
  25. package/dist/dropbox-LSA4GM2Y.js +1305 -0
  26. package/dist/dub-VZPJSPI6.js +680 -0
  27. package/dist/e2b-6SDYQZL2.js +278 -0
  28. package/dist/exa-B6EUYDVP.js +332 -0
  29. package/dist/{fal_ai-VJPMCNRH.js → fal_ai-K4Q27IME.js} +81 -80
  30. package/dist/feishu-4TKXG4SU.js +11975 -0
  31. package/dist/{feishu_custom_bot-ADSE23KU.js → feishu_custom_bot-7CTEAKRB.js} +57 -53
  32. package/dist/figma-OUKSZLD5.js +777 -0
  33. package/dist/firehydrant-7MOYL7QH.js +563 -0
  34. package/dist/{fixer-OAMF4DKP.js → fixer-H2BV2NO4.js} +34 -33
  35. package/dist/fly-PXKY6PNH.js +469 -0
  36. package/dist/{front-6GTVYKUM.js → front-UZYIV5DW.js} +104 -104
  37. package/dist/geocodio-NSYO7TFP.js +213 -0
  38. package/dist/ghost-QBKKQQMF.js +338 -0
  39. package/dist/github-ENLSJ4CL.js +5421 -0
  40. package/dist/gmail-KQSDEB47.js +1887 -0
  41. package/dist/googlecalendar-5YCX4SZF.js +2524 -0
  42. package/dist/{googledocs-YNKKBM6Q.js → googledocs-SSWIVFKA.js} +343 -341
  43. package/dist/{grafana-353VSGXN.js → grafana-TF2LXDQA.js} +221 -220
  44. package/dist/graphhopper-CURBVHYK.js +325 -0
  45. package/dist/index.d.ts +1132 -332
  46. package/dist/index.js +31 -13
  47. package/dist/{ip2proxy-DBGRWH7S.js → ip2proxy-YNVMTZEM.js} +28 -27
  48. package/dist/ipgeolocation_io-NAU7VJ4J.js +315 -0
  49. package/dist/ipqualityscore-OT63L4TI.js +279 -0
  50. package/dist/{jina_ai-L5BH455V.js → jina_ai-6WBMBGWM.js} +23 -23
  51. package/dist/{jira-IGTILUZA.js → jira-DVDVTHNO.js} +118 -117
  52. package/dist/langsmith-IM5N4YAU.js +593 -0
  53. package/dist/lemlist-277SHUQF.js +289 -0
  54. package/dist/{linear-HLGOWISN.js → linear-AEPH7B5V.js} +329 -327
  55. package/dist/logsnag-VEWRAGBG.js +150 -0
  56. package/dist/main.js +57 -279
  57. package/dist/{mattermost-BONGXVC7.js → mattermost-Q3A2BIZA.js} +59 -58
  58. package/dist/mem0-AXS7GZGI.js +544 -0
  59. package/dist/memos-7TXG4ZTU.js +744 -0
  60. package/dist/{metabase-ZHXHRHZK.js → metabase-NSVACWQM.js} +90 -89
  61. package/dist/mistral_ai-YZ52RGD4.js +1196 -0
  62. package/dist/{mother_duck-TKVQM35M.js → mother_duck-XLLL6FVL.js} +94 -93
  63. package/dist/ngrok-4O4W3WZW.js +356 -0
  64. package/dist/{notes-KXRNNYDW.js → notes-YTB3TJOO.js} +11 -9
  65. package/dist/notion-4W4O7J7V.js +940 -0
  66. package/dist/open_exchange_rates-23QJXVO5.js +215 -0
  67. package/dist/openai-ZS7GLSLH.js +800 -0
  68. package/dist/opengraph_io-PMVH7OYI.js +362 -0
  69. package/dist/openrouter-ONRGFNB6.js +441 -0
  70. package/dist/outline-UCUYZZ7J.js +599 -0
  71. package/dist/paddle-35HTKTUL.js +454 -0
  72. package/dist/perplexity-NVOBYN24.js +220 -0
  73. package/dist/pinecone-55CJY73C.js +571 -0
  74. package/dist/{pipedrive-CW7HONYW.js → pipedrive-WMCAKS72.js} +99 -98
  75. package/dist/polar-SM4ZM53B.js +395 -0
  76. package/dist/posthog-NWCXVXNJ.js +3464 -0
  77. package/dist/postmark-QJV5PHUQ.js +427 -0
  78. package/dist/{prerender-5EAY7GDM.js → prerender-2W7UT4SC.js} +31 -30
  79. package/dist/{pubmed-GRQUBGVA.js → pubmed-VVV7XYLU.js} +241 -239
  80. package/dist/{railway-FTM75TMX.js → railway-KGI57S3O.js} +118 -117
  81. package/dist/readwise-AGHTQB42.js +470 -0
  82. package/dist/render-O4HBROCK.js +461 -0
  83. package/dist/{replicate-RJCMDB7H.js → replicate-KWBOMX7D.js} +81 -80
  84. package/dist/{resend-YYN22NIL.js → resend-DRH6Y6I4.js} +20 -16
  85. package/dist/rootly-XGCUDW6X.js +336 -0
  86. package/dist/{scrapfly-ZJJ6XM4Q.js → scrapfly-OIQ3OY6L.js} +62 -61
  87. package/dist/{scrapingbee-QNGEOD6D.js → scrapingbee-OCZO4FHX.js} +56 -56
  88. package/dist/{screenshot_fyi-SPZAABVD.js → screenshot_fyi-CUNGFZOC.js} +16 -16
  89. package/dist/semantic_scholar-3UJRLKES.js +611 -0
  90. package/dist/{sentry-SJ5NN4C4.js → sentry-5BWVZFJV.js} +208 -207
  91. package/dist/{shodan-YMGOY7KW.js → shodan-HI37CTEW.js} +62 -61
  92. package/dist/shopify-LJ2EV2HH.js +610 -0
  93. package/dist/stripe-3LHMV55K.js +585 -0
  94. package/dist/{supabase-GQ2OFVIL.js → supabase-H2KPX3Q2.js} +245 -244
  95. package/dist/tavily-FBEWGH3Z.js +326 -0
  96. package/dist/telegram-MYYO3JND.js +1767 -0
  97. package/dist/{telnyx-4JGMC3K7.js → telnyx-H4ALEGAX.js} +57 -56
  98. package/dist/todoist-OBWICA5Q.js +664 -0
  99. package/dist/trello-GUFUJRWO.js +1080 -0
  100. package/dist/turso-NIAK4UMS.js +416 -0
  101. package/dist/{twilio-VYF3HUU6.js → twilio-K6SLK2CX.js} +72 -70
  102. package/dist/umami-42RS2EPS.js +389 -0
  103. package/dist/unsplash-V7TOTETT.js +351 -0
  104. package/dist/{upstash_redis-IUM2HDLU.js → upstash_redis-AWQMB6Y3.js} +51 -50
  105. package/dist/uptimerobot-AZC2DHOT.js +483 -0
  106. package/dist/v2ex-4TVRNMLS.js +667 -0
  107. package/dist/vercel-DPHTJ3XR.js +1076 -0
  108. package/dist/{wolfram_alpha_api-6CRVUZOJ.js → wolfram_alpha_api-XAG7IXBW.js} +36 -35
  109. package/dist/wordpress-KMPKVGUX.js +812 -0
  110. package/dist/workos-PKB2YR7S.js +664 -0
  111. package/dist/zhihu-Y4H4XYPB.js +254 -0
  112. package/package.json +18 -9
  113. package/dist/airtable-DMJEEGJP.js +0 -789
  114. package/dist/anthropic-D5X5GSYE.js +0 -202
  115. package/dist/apify-5NVFU3IZ.js +0 -247
  116. package/dist/brave_search-X557FMGO.js +0 -301
  117. package/dist/chunk-MZCIPUNQ.js +0 -23424
  118. package/dist/chunk-ZTTN6AJG.js +0 -977
  119. package/dist/circleci-3P3QTUX2.js +0 -388
  120. package/dist/clerk-GNMZQ2MY.js +0 -1019
  121. package/dist/cloudflare_dns-VWZH3ZTR.js +0 -588
  122. package/dist/cohere-C7QVIIMG.js +0 -185
  123. package/dist/deepseek-5U24YG4P.js +0 -209
  124. package/dist/docker_hub-CMISLRSE.js +0 -932
  125. package/dist/dropbox-TW4QN6FT.js +0 -1304
  126. package/dist/dub-EFXGI5UH.js +0 -679
  127. package/dist/e2b-PHM63OVF.js +0 -277
  128. package/dist/exa-DYOQWURR.js +0 -331
  129. package/dist/feishu-TFIZXPIN.js +0 -231
  130. package/dist/figma-4AK47AYY.js +0 -773
  131. package/dist/firehydrant-RGPTW4EA.js +0 -562
  132. package/dist/fly-YB4AQD4O.js +0 -468
  133. package/dist/geocodio-YRT4K25M.js +0 -212
  134. package/dist/ghost-JCW6UIP2.js +0 -337
  135. package/dist/github-CEGVRMNX.js +0 -5420
  136. package/dist/gmail-JCMJD55P.js +0 -1886
  137. package/dist/googlecalendar-2EAW4MNM.js +0 -2522
  138. package/dist/graphhopper-H3IVJNDS.js +0 -324
  139. package/dist/ipgeolocation_io-5I2BDVMG.js +0 -315
  140. package/dist/ipqualityscore-ILV7TQCV.js +0 -277
  141. package/dist/langsmith-BYRX4AOF.js +0 -592
  142. package/dist/lemlist-ZGNYTIQO.js +0 -288
  143. package/dist/logsnag-5RGTMTU2.js +0 -150
  144. package/dist/mem0-RUVNUPTE.js +0 -543
  145. package/dist/memos-TED4HI54.js +0 -739
  146. package/dist/mistral_ai-NGP5SHU7.js +0 -1195
  147. package/dist/ngrok-BYCUJ7QV.js +0 -356
  148. package/dist/notion-2ILYKJOO.js +0 -936
  149. package/dist/open_exchange_rates-JU4DC6HZ.js +0 -214
  150. package/dist/openai-6SOT26ZK.js +0 -799
  151. package/dist/opengraph_io-ZEFHV2OL.js +0 -361
  152. package/dist/openrouter-R4P7JL5L.js +0 -437
  153. package/dist/outline-VCTQ5V2X.js +0 -595
  154. package/dist/paddle-AZOAKBJS.js +0 -453
  155. package/dist/perplexity-OMRLGVAT.js +0 -219
  156. package/dist/pinecone-DI62W3ZX.js +0 -570
  157. package/dist/polar-5DRGTXNR.js +0 -394
  158. package/dist/posthog-3DTHFCKE.js +0 -3463
  159. package/dist/postmark-ME2V2XXI.js +0 -426
  160. package/dist/readwise-IJQGV6IQ.js +0 -469
  161. package/dist/render-TMSPHRTY.js +0 -460
  162. package/dist/rootly-7RXE4K7L.js +0 -336
  163. package/dist/semantic_scholar-SDPVGDDI.js +0 -610
  164. package/dist/shopify-SU5ABP54.js +0 -609
  165. package/dist/stripe-JAC425KE.js +0 -584
  166. package/dist/tavily-Y7MDA5CI.js +0 -326
  167. package/dist/telegram-OIDT3ZLH.js +0 -1766
  168. package/dist/todoist-O7S2OUGX.js +0 -663
  169. package/dist/trello-3LDE4TAQ.js +0 -1079
  170. package/dist/turso-MUQ44KCA.js +0 -415
  171. package/dist/umami-SVQIK26J.js +0 -388
  172. package/dist/unsplash-333XYDCJ.js +0 -350
  173. package/dist/uptimerobot-7ZRU2NJV.js +0 -482
  174. package/dist/v2ex-AVSJCQPS.js +0 -666
  175. package/dist/vercel-J7RGXNSA.js +0 -1075
  176. package/dist/wordpress-THOJLPKA.js +0 -811
  177. package/dist/workos-ENTGRWF2.js +0 -663
  178. package/dist/zhihu-W2BXICTX.js +0 -253
@@ -0,0 +1,161 @@
1
+ import {
2
+ TBError
3
+ } from "./chunk-HA4BGL6C.js";
4
+
5
+ // ../plugins/src/_runtime/ipPolicy.ts
6
+ import ipaddr from "ipaddr.js";
7
+ function isStrictIpv4(value) {
8
+ return ipaddr.IPv4.isValidFourPartDecimal(value) && value.split(".").every((part) => part === "0" || !part.startsWith("0"));
9
+ }
10
+ function parseAddress(value) {
11
+ let text = value;
12
+ if (text.startsWith("[") && text.endsWith("]")) text = text.slice(1, -1);
13
+ const embeddedIpv4 = text.includes(".") ? text.slice(text.lastIndexOf(":") + 1) : void 0;
14
+ if (embeddedIpv4 !== void 0 && !isStrictIpv4(embeddedIpv4)) return void 0;
15
+ try {
16
+ if (isStrictIpv4(text)) return ipaddr.IPv4.parse(text);
17
+ if (ipaddr.IPv6.isValid(text)) return ipaddr.IPv6.parse(text);
18
+ } catch {
19
+ }
20
+ return void 0;
21
+ }
22
+ function classifyIpv4(octets) {
23
+ const a = octets[0];
24
+ const b = octets[1];
25
+ const c = octets[2];
26
+ if (a === 0) return "blocked";
27
+ if (a === 10) return "blocked";
28
+ if (a === 127) return "blocked";
29
+ if (a === 169 && b === 254) return "blocked";
30
+ if (a === 172 && b >= 16 && b <= 31) return "blocked";
31
+ if (a === 192 && b === 0 && c === 0) return "blocked";
32
+ if (a === 192 && b === 0 && c === 2) return "blocked";
33
+ if (a === 192 && b === 168) return "blocked";
34
+ if (a === 198 && (b === 18 || b === 19)) return "blocked";
35
+ if (a === 198 && b === 51 && c === 100) return "blocked";
36
+ if (a === 203 && b === 0 && c === 113) return "blocked";
37
+ if (a === 100 && b >= 64 && b <= 127) return "blocked";
38
+ if (a >= 224) return "blocked";
39
+ return "public";
40
+ }
41
+ function classifyIpv6(bytes) {
42
+ const isZero = bytes.every((byte) => byte === 0);
43
+ if (isZero) return "blocked";
44
+ if (bytes.slice(0, 15).every((byte) => byte === 0) && bytes[15] === 1) return "blocked";
45
+ const v4Mapped = bytes.slice(0, 10).every((byte) => byte === 0) && (bytes[10] === 255 && bytes[11] === 255 || bytes[10] === 0 && bytes[11] === 0);
46
+ if (v4Mapped) {
47
+ return classifyIpv4([bytes[12], bytes[13], bytes[14], bytes[15]]);
48
+ }
49
+ const first = bytes[0];
50
+ if ((first & 254) === 252) return "blocked";
51
+ if (first === 254 && (bytes[1] & 192) === 128) return "blocked";
52
+ if (first === 255) return "blocked";
53
+ if (first === 32 && bytes[1] === 1 && bytes[2] === 13 && bytes[3] === 184) return "blocked";
54
+ return "public";
55
+ }
56
+ function isIpAddress(value) {
57
+ return parseAddress(value) !== void 0;
58
+ }
59
+ function classifyIpAddress(address) {
60
+ const parsed = parseAddress(address);
61
+ if (parsed === void 0) return "blocked";
62
+ if (parsed instanceof ipaddr.IPv4) return classifyIpv4(parsed.octets);
63
+ const bytes = new Uint8Array(parsed.toByteArray());
64
+ if (parsed.isIPv4MappedAddress()) return classifyIpv4(parsed.toIPv4Address().octets);
65
+ return classifyIpv6(bytes);
66
+ }
67
+
68
+ // ../plugins/src/_runtime/guardedFetch.ts
69
+ var MAX_REDIRECTS = 5;
70
+ var CROSS_ORIGIN_STRIPPED_HEADERS = [
71
+ "authorization",
72
+ "cookie",
73
+ "proxy-authorization"
74
+ // 各家自定义的密钥头没有统一命名,凡是名字里带 key/token/secret 的一律剥掉:
75
+ // 宁可让跨源跳转少带一个无关头,也不能漏带走一个凭证。
76
+ ];
77
+ var REQUEST_BODY_HEADERS = [
78
+ "content-encoding",
79
+ "content-language",
80
+ "content-location",
81
+ "content-type"
82
+ ];
83
+ function looksLikeCredentialHeader(name) {
84
+ return /(?:^|-)(?:api[-_]?key|key|token|secret|auth)(?:$|-)/i.test(name);
85
+ }
86
+ function stripCredentials(headers, sensitiveHeaders) {
87
+ const next = new Headers(headers);
88
+ for (const [name] of headers) {
89
+ if (CROSS_ORIGIN_STRIPPED_HEADERS.includes(name.toLowerCase()) || looksLikeCredentialHeader(name) || sensitiveHeaders.has(name.toLowerCase())) {
90
+ next.delete(name);
91
+ }
92
+ }
93
+ return next;
94
+ }
95
+ var EgressBlockedError = class extends TBError {
96
+ constructor(message) {
97
+ super("invalid_argument", message);
98
+ this.name = "EgressBlockedError";
99
+ }
100
+ };
101
+ function assertPublicHttpUrl(value) {
102
+ let url;
103
+ try {
104
+ url = value instanceof URL ? value : new URL(value);
105
+ } catch {
106
+ throw new EgressBlockedError(`\u51FA\u7AD9\u76EE\u6807\u4E0D\u662F\u5408\u6CD5 URL: ${String(value)}`);
107
+ }
108
+ if (url.protocol !== "https:" && url.protocol !== "http:") {
109
+ throw new EgressBlockedError(`\u51FA\u7AD9\u76EE\u6807\u534F\u8BAE\u4E0D\u88AB\u5141\u8BB8: ${url.protocol}`);
110
+ }
111
+ const hostname = url.hostname.startsWith("[") && url.hostname.endsWith("]") ? url.hostname.slice(1, -1) : url.hostname;
112
+ if (hostname === "") throw new EgressBlockedError("\u51FA\u7AD9\u76EE\u6807\u7F3A\u5C11\u4E3B\u673A\u540D");
113
+ if (isIpAddress(hostname) && classifyIpAddress(hostname) === "blocked") {
114
+ throw new EgressBlockedError("\u51FA\u7AD9\u76EE\u6807\u6307\u5411\u79C1\u6709\u6216\u4FDD\u7559\u5730\u5740");
115
+ }
116
+ return url;
117
+ }
118
+ function createGuardedFetch(options = {}) {
119
+ const crossOriginRedirect = options.crossOriginRedirect ?? "error";
120
+ const maxRedirects = options.maxRedirects ?? MAX_REDIRECTS;
121
+ const sensitiveHeaders = new Set(
122
+ (options.sensitiveHeaders ?? []).map((name) => name.toLowerCase())
123
+ );
124
+ return async function guardedFetch2(input, init) {
125
+ const transport = options.fetch ?? globalThis.fetch;
126
+ const initial = input instanceof Request ? input.url : String(input);
127
+ let url = assertPublicHttpUrl(initial);
128
+ let request = input instanceof Request ? new Request(url, new Request(input, init)) : new Request(url, { ...init, redirect: "manual" });
129
+ for (let hop = 0; ; hop += 1) {
130
+ const response = await transport(new Request(request.clone(), { redirect: "manual" }));
131
+ const location = response.headers.get("location");
132
+ if (response.status < 300 || response.status > 399 || location === null) return response;
133
+ if (hop >= maxRedirects) {
134
+ throw new EgressBlockedError(`\u51FA\u7AD9\u91CD\u5B9A\u5411\u8D85\u8FC7 ${maxRedirects} \u8DF3`);
135
+ }
136
+ const previousOrigin = new URL(request.url).origin;
137
+ url = assertPublicHttpUrl(new URL(location, url));
138
+ const crossesOrigin = url.origin !== previousOrigin;
139
+ if (crossesOrigin && crossOriginRedirect === "error") {
140
+ throw new EgressBlockedError("\u643A\u5E26\u654F\u611F\u4FE1\u606F\u7684\u51FA\u7AD9\u8BF7\u6C42\u4E0D\u5141\u8BB8\u8DE8\u6E90\u91CD\u5B9A\u5411");
141
+ }
142
+ const headers = !crossesOrigin ? request.headers : stripCredentials(request.headers, sensitiveHeaders);
143
+ const downgrade = (response.status === 301 || response.status === 302) && request.method === "POST" || response.status === 303 && request.method !== "GET" && request.method !== "HEAD";
144
+ if (downgrade) {
145
+ const redirectedHeaders = new Headers(headers);
146
+ for (const name of REQUEST_BODY_HEADERS) redirectedHeaders.delete(name);
147
+ request = new Request(url, { method: "GET", headers: redirectedHeaders, redirect: "manual" });
148
+ } else {
149
+ const redirected = new Request(url, request);
150
+ request = crossesOrigin ? new Request(redirected, { headers, redirect: "manual" }) : redirected;
151
+ }
152
+ }
153
+ };
154
+ }
155
+ var guardedFetch = createGuardedFetch();
156
+
157
+ export {
158
+ assertPublicHttpUrl,
159
+ createGuardedFetch,
160
+ guardedFetch
161
+ };
@@ -1,12 +1,13 @@
1
1
  import {
2
2
  upstreamError
3
- } from "./chunk-QR4LK3HF.js";
3
+ } from "./chunk-X7ZUTKHR.js";
4
4
  import {
5
5
  createGuardedFetch
6
- } from "./chunk-ZTTN6AJG.js";
6
+ } from "./chunk-7ISGFRC6.js";
7
7
  import {
8
- TBError
9
- } from "./chunk-MZCIPUNQ.js";
8
+ TBError,
9
+ isTBError
10
+ } from "./chunk-HA4BGL6C.js";
10
11
 
11
12
  // ../plugins/src/_runtime/providerHttp.ts
12
13
  function credentialLike(name) {
@@ -241,7 +242,7 @@ function createProviderHttpClient(options) {
241
242
  return { parsed: parsed2, response: response2 };
242
243
  })());
243
244
  } catch (error) {
244
- if (error instanceof TBError && signal?.aborted !== true) throw error;
245
+ if (isTBError(error) && signal?.aborted !== true) throw error;
245
246
  const kind = signal?.aborted === true ? "timeout" : "network";
246
247
  const rawMessage = error instanceof Error ? error.message : void 0;
247
248
  const context = {