@agentforge/tools 0.16.76 → 0.16.77

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.
package/dist/index.js CHANGED
@@ -1,5 +1,7 @@
1
1
  import { toolBuilder, ToolCategory, LogLevel, createLogger } from '@agentforge/core';
2
- import axios16 from 'axios';
2
+ import { lookup } from 'dns/promises';
3
+ import net from 'net';
4
+ import axios13 from 'axios';
3
5
  import { z } from 'zod';
4
6
  import * as cheerio from 'cheerio';
5
7
  import { WebClient } from '@slack/web-api';
@@ -21,6 +23,204 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
21
23
  if (typeof require !== "undefined") return require.apply(this, arguments);
22
24
  throw Error('Dynamic require of "' + x + '" is not supported');
23
25
  });
26
+ var DEFAULT_MAX_REDIRECTS = 5;
27
+ var REDIRECT_STATUSES = /* @__PURE__ */ new Set([301, 302, 303, 307, 308]);
28
+ var IPV4_MAPPED_NETWORK = "::ffff:0:0";
29
+ var SENSITIVE_REDIRECT_HEADERS = /* @__PURE__ */ new Set(["authorization", "cookie", "proxy-authorization"]);
30
+ var DEFAULT_DESTINATION_POLICY = Object.freeze({
31
+ allowLocalhost: false,
32
+ allowPrivateNetwork: false,
33
+ allowLinkLocal: false,
34
+ allowMetadata: false,
35
+ allowRedirects: true,
36
+ maxRedirects: DEFAULT_MAX_REDIRECTS
37
+ });
38
+ var DestinationPolicyError = class extends Error {
39
+ constructor(url, reason, message) {
40
+ super(message);
41
+ this.url = url;
42
+ this.reason = reason;
43
+ this.name = "DestinationPolicyError";
44
+ }
45
+ code = "WEB_DESTINATION_BLOCKED";
46
+ };
47
+ function ipv4ToNumber(address) {
48
+ const octets = address.split(".").map(Number);
49
+ if (octets.length !== 4 || octets.some((octet) => !Number.isInteger(octet) || octet < 0 || octet > 255)) return void 0;
50
+ return ((octets[0] * 256 + octets[1]) * 256 + octets[2]) * 256 + octets[3] >>> 0;
51
+ }
52
+ function ipv4InCidr(address, network, prefix) {
53
+ const value = ipv4ToNumber(address);
54
+ const networkValue = ipv4ToNumber(network);
55
+ if (value === void 0 || networkValue === void 0) return false;
56
+ const mask = prefix === 0 ? 0 : 4294967295 << 32 - prefix >>> 0;
57
+ return (value & mask) === (networkValue & mask);
58
+ }
59
+ function expandIpv6(address) {
60
+ const normalized = address.toLowerCase().split("%")[0];
61
+ let input = normalized;
62
+ const ipv4Start = normalized.lastIndexOf(":") + 1;
63
+ const ipv4 = normalized.slice(ipv4Start);
64
+ if (net.isIP(ipv4) === 4) {
65
+ const value = ipv4ToNumber(ipv4);
66
+ if (value === void 0) return void 0;
67
+ input = `${normalized.slice(0, ipv4Start)}${(value >>> 16).toString(16)}:${(value & 65535).toString(16)}`;
68
+ }
69
+ const halves = input.split("::");
70
+ if (halves.length > 2) return void 0;
71
+ const left = halves[0] ? halves[0].split(":").filter(Boolean) : [];
72
+ const right = halves.length === 2 && halves[1] ? halves[1].split(":").filter(Boolean) : [];
73
+ const missing = 8 - left.length - right.length;
74
+ if (missing < 0 || halves.length === 1 && missing !== 0) return void 0;
75
+ const groups = [...left, ...Array.from({ length: missing }, () => "0"), ...right];
76
+ if (groups.length !== 8 || groups.some((group) => !/^[0-9a-f]{1,4}$/.test(group))) return void 0;
77
+ return groups.reduce((value, group) => value << 16n | BigInt(parseInt(group, 16)), 0n);
78
+ }
79
+ function ipv6InCidr(address, network, prefix) {
80
+ return prefix === 0 || address >> BigInt(128 - prefix) === network >> BigInt(128 - prefix);
81
+ }
82
+ function ipv6ToIpv4(address) {
83
+ const mappedNetwork = expandIpv6(IPV4_MAPPED_NETWORK);
84
+ if (mappedNetwork === void 0 || !ipv6InCidr(address, mappedNetwork, 96)) return void 0;
85
+ const value = Number(address & 0xffffffffn) >>> 0;
86
+ return [value >>> 24, value >>> 16 & 255, value >>> 8 & 255, value & 255].join(".");
87
+ }
88
+ function classifyIp(address) {
89
+ const normalized = address.replace(/^\[|\]$/g, "").toLowerCase();
90
+ const version = net.isIP(normalized);
91
+ if (version === 4) {
92
+ if (normalized === "169.254.169.254") return "metadata";
93
+ if (ipv4InCidr(normalized, "127.0.0.0", 8)) return "localhost";
94
+ if (ipv4InCidr(normalized, "169.254.0.0", 16)) return "link-local";
95
+ if (ipv4InCidr(normalized, "10.0.0.0", 8) || ipv4InCidr(normalized, "172.16.0.0", 12) || ipv4InCidr(normalized, "192.168.0.0", 16) || ipv4InCidr(normalized, "100.64.0.0", 10)) return "private-network";
96
+ return void 0;
97
+ }
98
+ if (version !== 6) return void 0;
99
+ const value = expandIpv6(normalized);
100
+ if (value === void 0) return void 0;
101
+ const mappedIpv4 = ipv6ToIpv4(value);
102
+ if (mappedIpv4) return classifyIp(mappedIpv4);
103
+ if (value === expandIpv6("fd00:ec2::254")) return "metadata";
104
+ if (value === expandIpv6("::1")) return "localhost";
105
+ if (ipv6InCidr(value, expandIpv6("fe80::"), 10)) return "link-local";
106
+ if (ipv6InCidr(value, expandIpv6("fc00::"), 7)) return "private-network";
107
+ return void 0;
108
+ }
109
+ function classifyHostname(hostname) {
110
+ const normalized = hostname.toLowerCase().replace(/\.$/, "");
111
+ if (normalized === "localhost" || normalized.endsWith(".localhost") || normalized === "localhost.localdomain") return "localhost";
112
+ if (normalized === "metadata" || normalized === "metadata.google.internal" || normalized === "instance-data") return "metadata";
113
+ return classifyIp(normalized);
114
+ }
115
+ function policyAllows(reason, policy) {
116
+ if (reason === "localhost") return policy.allowLocalhost === true;
117
+ if (reason === "metadata") return policy.allowMetadata === true;
118
+ if (reason === "private-network") return policy.allowPrivateNetwork === true;
119
+ if (reason === "link-local") return policy.allowLinkLocal === true;
120
+ return false;
121
+ }
122
+ async function resolveDestinationAddresses(hostname) {
123
+ try {
124
+ const addresses = await lookup(hostname, { all: true, verbatim: true });
125
+ return addresses.map(({ address, family }) => ({ address, family }));
126
+ } catch (error) {
127
+ throw new DestinationPolicyError(hostname, "dns-resolution-failed", `Destination policy could not resolve hostname "${hostname}" before making a request: ${error instanceof Error ? error.message : String(error)}`);
128
+ }
129
+ }
130
+ function blockDestination(url, reason) {
131
+ throw new DestinationPolicyError(url, reason, `Destination blocked by web egress policy (${reason}): ${url}`);
132
+ }
133
+ async function validateDestinationAllowed(url, policy) {
134
+ const effectivePolicy = { ...DEFAULT_DESTINATION_POLICY, ...policy };
135
+ let parsed;
136
+ try {
137
+ parsed = new URL(url);
138
+ } catch {
139
+ blockDestination(url, "unsupported-protocol");
140
+ }
141
+ if (parsed.protocol !== "http:" && parsed.protocol !== "https:") blockDestination(url, "unsupported-protocol");
142
+ const hostname = parsed.hostname.replace(/^\[|\]$/g, "").toLowerCase();
143
+ const directReason = classifyHostname(hostname);
144
+ if (directReason && !policyAllows(directReason, effectivePolicy)) blockDestination(url, directReason);
145
+ const version = net.isIP(hostname);
146
+ if (version !== 0) return [{ address: hostname, family: version }];
147
+ const addresses = await resolveDestinationAddresses(hostname);
148
+ for (const { address } of addresses) {
149
+ const reason = classifyIp(address);
150
+ if (reason && !policyAllows(reason, effectivePolicy)) blockDestination(url, reason);
151
+ }
152
+ return addresses;
153
+ }
154
+ async function assertDestinationAllowed(url, policy = {}) {
155
+ await validateDestinationAllowed(url, policy);
156
+ }
157
+ function isRedirectStatus(status) {
158
+ return REDIRECT_STATUSES.has(status);
159
+ }
160
+ function responseLocation(response) {
161
+ const headers = response.headers;
162
+ return headers.location ?? headers.Location;
163
+ }
164
+ function stripSensitiveRedirectHeaders(headers) {
165
+ if (!headers) return headers;
166
+ const sanitizedHeaders = { ...headers };
167
+ for (const headerName of Object.keys(sanitizedHeaders)) {
168
+ if (SENSITIVE_REDIRECT_HEADERS.has(headerName.toLowerCase())) delete sanitizedHeaders[headerName];
169
+ }
170
+ return sanitizedHeaders;
171
+ }
172
+ function createPinnedLookup(addresses) {
173
+ return (_hostname, options, callback) => {
174
+ const requestedFamily = "family" in options && (options.family === 4 || options.family === 6) ? options.family : void 0;
175
+ const candidates = requestedFamily ? addresses.filter(({ family: family2 }) => family2 === requestedFamily) : addresses;
176
+ if (candidates.length === 0) {
177
+ callback(new Error(`No validated destination address matches the requested address family: ${requestedFamily}`), "", void 0);
178
+ return;
179
+ }
180
+ if ("all" in options && options.all === true) {
181
+ callback(null, candidates, void 0);
182
+ return;
183
+ }
184
+ const [{ address, family }] = candidates;
185
+ callback(null, address, family);
186
+ };
187
+ }
188
+ async function requestWithDestinationPolicy(config, policy = {}) {
189
+ if (!config.url) throw new Error("A request URL is required for destination policy enforcement");
190
+ const effectivePolicy = { ...DEFAULT_DESTINATION_POLICY, ...policy };
191
+ const maxRedirects = effectivePolicy.maxRedirects;
192
+ if (!Number.isInteger(maxRedirects) || maxRedirects < 0) throw new Error("maxRedirects must be a non-negative integer");
193
+ let currentUrl = config.url;
194
+ let currentConfig = {
195
+ ...config,
196
+ url: currentUrl,
197
+ maxRedirects: 0,
198
+ validateStatus: (status) => isRedirectStatus(status) || (config.validateStatus ? config.validateStatus(status) : status >= 200 && status < 300)
199
+ };
200
+ for (let redirectCount = 0; ; redirectCount += 1) {
201
+ const validatedAddresses = await validateDestinationAllowed(currentUrl, effectivePolicy);
202
+ currentConfig.lookup = createPinnedLookup(validatedAddresses);
203
+ const response = await axios13(currentConfig);
204
+ if (!isRedirectStatus(response.status)) return response;
205
+ if (effectivePolicy.allowRedirects === false) blockDestination(currentUrl, "redirect");
206
+ if (redirectCount >= maxRedirects) throw new DestinationPolicyError(currentUrl, "redirect", `Maximum redirect count (${maxRedirects}) exceeded for ${currentUrl}`);
207
+ const location = responseLocation(response);
208
+ if (!location) throw new DestinationPolicyError(currentUrl, "redirect", `Redirect response did not include a Location header: ${currentUrl}`);
209
+ const previousUrl = currentUrl;
210
+ try {
211
+ currentUrl = new URL(location, currentUrl).toString();
212
+ } catch {
213
+ throw new DestinationPolicyError(currentUrl, "redirect", `Redirect response included an invalid Location header: ${location}`);
214
+ }
215
+ const method = String(currentConfig.method ?? "GET").toUpperCase();
216
+ const nextMethod = response.status === 303 || (response.status === 301 || response.status === 302) && method === "POST" ? "GET" : method;
217
+ currentConfig = { ...currentConfig, url: currentUrl, method: nextMethod };
218
+ if (new URL(previousUrl).origin !== new URL(currentUrl).origin) {
219
+ currentConfig.headers = stripSensitiveRedirectHeaders(currentConfig.headers);
220
+ }
221
+ if (nextMethod === "GET" || nextMethod === "HEAD") delete currentConfig.data;
222
+ }
223
+ }
24
224
  var HttpMethod = z.enum(["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD", "OPTIONS"]);
25
225
  var httpRequestSchema = z.object({
26
226
  url: z.string().url().describe("The URL to make the request to"),
@@ -42,8 +242,8 @@ var httpPostSchema = z.object({
42
242
  });
43
243
 
44
244
  // src/web/http/tools/http-client.ts
45
- function createHttpClientTool(defaultTimeout = 3e4, defaultHeaders = {}) {
46
- return toolBuilder().name("http-client").description("Make HTTP requests to web APIs and services. Supports GET, POST, PUT, DELETE, PATCH methods with custom headers and body.").category(ToolCategory.WEB).tags(["http", "api", "request", "web"]).schema(httpRequestSchema).implement(async (input) => {
245
+ function createHttpClientTool(defaultTimeout = 3e4, defaultHeaders = {}, destinationPolicy = {}) {
246
+ return toolBuilder().name("http-client").description("Make policy-checked HTTP requests to web APIs and services. Supports GET, POST, PUT, DELETE, PATCH methods with custom headers and body. Local, metadata, link-local, and private-network destinations are blocked by default.").category(ToolCategory.WEB).tags(["http", "api", "request", "web"]).schema(httpRequestSchema).implement(async (input) => {
47
247
  const config = {
48
248
  method: input.method,
49
249
  url: input.url,
@@ -54,37 +254,42 @@ function createHttpClientTool(defaultTimeout = 3e4, defaultHeaders = {}) {
54
254
  validateStatus: () => true
55
255
  // Don't throw on any status code
56
256
  };
57
- const response = await axios16(config);
257
+ const response = await requestWithDestinationPolicy(config, destinationPolicy);
58
258
  return {
59
259
  status: response.status,
60
260
  statusText: response.statusText,
61
261
  headers: response.headers,
62
262
  data: response.data,
63
- url: input.url,
263
+ url: response.config.url ?? input.url,
64
264
  method: input.method ?? "GET"
65
265
  };
66
266
  }).build();
67
267
  }
68
- function createHttpGetTool(defaultTimeout = 3e4, defaultHeaders = {}) {
69
- return toolBuilder().name("http-get").description("Make a simple HTTP GET request to a URL and return the response data.").category(ToolCategory.WEB).tags(["http", "get", "fetch", "web"]).schema(httpGetSchema).implement(async (input) => {
70
- const response = await axios16.get(input.url, {
268
+ function createHttpGetTool(defaultTimeout = 3e4, defaultHeaders = {}, destinationPolicy = {}) {
269
+ return toolBuilder().name("http-get").description("Make a policy-checked HTTP GET request to a URL and return the response data. Local, metadata, link-local, and private-network destinations are blocked by default.").category(ToolCategory.WEB).tags(["http", "get", "fetch", "web"]).schema(httpGetSchema).implement(async (input) => {
270
+ const response = await requestWithDestinationPolicy({
271
+ method: "GET",
272
+ url: input.url,
71
273
  headers: { ...defaultHeaders, ...input.headers },
72
274
  params: input.params,
73
275
  timeout: defaultTimeout
74
- });
276
+ }, destinationPolicy);
75
277
  return response.data;
76
278
  }).build();
77
279
  }
78
- function createHttpPostTool(defaultTimeout = 3e4, defaultHeaders = {}) {
79
- return toolBuilder().name("http-post").description("Make a simple HTTP POST request with JSON body and return the response data.").category(ToolCategory.WEB).tags(["http", "post", "api", "web"]).schema(httpPostSchema).implement(async (input) => {
80
- const response = await axios16.post(input.url, input.body, {
280
+ function createHttpPostTool(defaultTimeout = 3e4, defaultHeaders = {}, destinationPolicy = {}) {
281
+ return toolBuilder().name("http-post").description("Make a policy-checked HTTP POST request with JSON body and return the response data. Local, metadata, link-local, and private-network destinations are blocked by default.").category(ToolCategory.WEB).tags(["http", "post", "api", "web"]).schema(httpPostSchema).implement(async (input) => {
282
+ const response = await requestWithDestinationPolicy({
283
+ method: "POST",
284
+ url: input.url,
285
+ data: input.body,
81
286
  headers: {
82
287
  "Content-Type": "application/json",
83
288
  ...defaultHeaders,
84
289
  ...input.headers
85
290
  },
86
291
  timeout: defaultTimeout
87
- });
292
+ }, destinationPolicy);
88
293
  return response.data;
89
294
  }).build();
90
295
  }
@@ -95,11 +300,11 @@ var httpGet = createHttpGetTool();
95
300
  var httpPost = createHttpPostTool();
96
301
  var httpTools = [httpClient, httpGet, httpPost];
97
302
  function createHttpTools(config = {}) {
98
- const { defaultTimeout = 3e4, defaultHeaders = {} } = config;
303
+ const { defaultTimeout = 3e4, defaultHeaders = {}, destinationPolicy = {} } = config;
99
304
  return [
100
- createHttpClientTool(defaultTimeout, defaultHeaders),
101
- createHttpGetTool(defaultTimeout, defaultHeaders),
102
- createHttpPostTool(defaultTimeout, defaultHeaders)
305
+ createHttpClientTool(defaultTimeout, defaultHeaders, destinationPolicy),
306
+ createHttpGetTool(defaultTimeout, defaultHeaders, destinationPolicy),
307
+ createHttpPostTool(defaultTimeout, defaultHeaders, destinationPolicy)
103
308
  ];
104
309
  }
105
310
  var webScraperSchema = z.object({
@@ -112,18 +317,20 @@ var webScraperSchema = z.object({
112
317
  extractMetadata: z.boolean().default(false).describe("Extract meta tags (title, description, etc.)"),
113
318
  timeout: z.number().default(3e4).describe("Request timeout in milliseconds")
114
319
  });
115
- function createWebScraperTool(defaultTimeout = 3e4, userAgent = "Mozilla/5.0 (compatible; AgentForge/1.0; +https://agentforge.dev)") {
116
- return toolBuilder().name("web-scraper").description("Scrape and extract data from web pages. Can extract text, HTML, links, images, and use CSS selectors to target specific elements.").category(ToolCategory.WEB).tags(["scraper", "web", "html", "extract", "parse"]).schema(webScraperSchema).implement(async (input) => {
117
- const response = await axios16.get(input.url, {
320
+ function createWebScraperTool(defaultTimeout = 3e4, userAgent = "Mozilla/5.0 (compatible; AgentForge/1.0; +https://agentforge.dev)", destinationPolicy = {}) {
321
+ return toolBuilder().name("web-scraper").description("Scrape and extract data from policy-checked web pages. Local, metadata, link-local, and private-network destinations are blocked by default. Supports text, HTML, links, images, and CSS selectors.").category(ToolCategory.WEB).tags(["scraper", "web", "html", "extract", "parse"]).schema(webScraperSchema).implement(async (input) => {
322
+ const response = await requestWithDestinationPolicy({
323
+ method: "GET",
324
+ url: input.url,
118
325
  timeout: input.timeout || defaultTimeout,
119
326
  headers: {
120
327
  "User-Agent": userAgent
121
328
  }
122
- });
329
+ }, destinationPolicy);
123
330
  const html = response.data;
124
331
  const $ = cheerio.load(html);
125
332
  const result = {
126
- url: input.url
333
+ url: response.config.url ?? input.url
127
334
  };
128
335
  const $selected = input.selector ? $(input.selector) : $("body");
129
336
  if (input.extractText) {
@@ -188,8 +395,8 @@ function createWebScraperTool(defaultTimeout = 3e4, userAgent = "Mozilla/5.0 (co
188
395
  var webScraper = createWebScraperTool();
189
396
  var scraperTools = [webScraper];
190
397
  function createScraperTools(config = {}) {
191
- const { defaultTimeout = 3e4, userAgent = "Mozilla/5.0 (compatible; AgentForge/1.0; +https://agentforge.dev)" } = config;
192
- return [createWebScraperTool(defaultTimeout, userAgent)];
398
+ const { defaultTimeout = 3e4, userAgent = "Mozilla/5.0 (compatible; AgentForge/1.0; +https://agentforge.dev)", destinationPolicy = {} } = config;
399
+ return [createWebScraperTool(defaultTimeout, userAgent, destinationPolicy)];
193
400
  }
194
401
  var htmlParserSchema = z.object({
195
402
  html: z.string().describe("The HTML content to parse"),
@@ -504,7 +711,7 @@ var DuckDuckGoProvider = class {
504
711
  async search(query, maxResults, timeout = DEFAULT_TIMEOUT) {
505
712
  return retryWithBackoff(async () => {
506
713
  try {
507
- const response = await axios16.get(
714
+ const response = await axios13.get(
508
715
  "https://api.duckduckgo.com/",
509
716
  {
510
717
  params: {
@@ -608,7 +815,7 @@ var SerperProvider = class {
608
815
  }
609
816
  return retryWithBackoff(async () => {
610
817
  try {
611
- const response = await axios16.post(
818
+ const response = await axios13.post(
612
819
  "https://google.serper.dev/search",
613
820
  {
614
821
  q: query,
@@ -1042,7 +1249,7 @@ function createSearchConfluenceTool(getAuth, getAuthHeader2, logger19) {
1042
1249
  logger19.info("search-confluence called", { query, limit });
1043
1250
  try {
1044
1251
  const { ATLASSIAN_SITE_URL } = getAuth();
1045
- const response = await axios16.get(`${ATLASSIAN_SITE_URL}/wiki/rest/api/content/search`, {
1252
+ const response = await axios13.get(`${ATLASSIAN_SITE_URL}/wiki/rest/api/content/search`, {
1046
1253
  headers: {
1047
1254
  Authorization: getAuthHeader2(),
1048
1255
  Accept: "application/json"
@@ -1104,7 +1311,7 @@ function createGetConfluencePageTool(getAuth, getAuthHeader2, logger19) {
1104
1311
  logger19.info("get-confluence-page called", { page_id });
1105
1312
  try {
1106
1313
  const { ATLASSIAN_SITE_URL } = getAuth();
1107
- const response = await axios16.get(`${ATLASSIAN_SITE_URL}/wiki/rest/api/content/${page_id}`, {
1314
+ const response = await axios13.get(`${ATLASSIAN_SITE_URL}/wiki/rest/api/content/${page_id}`, {
1108
1315
  headers: {
1109
1316
  Authorization: getAuthHeader2(),
1110
1317
  Accept: "application/json"
@@ -1155,7 +1362,7 @@ function createListConfluenceSpacesTool(getAuth, getAuthHeader2, logger19) {
1155
1362
  logger19.info("list-confluence-spaces called", { limit });
1156
1363
  try {
1157
1364
  const { ATLASSIAN_SITE_URL } = getAuth();
1158
- const response = await axios16.get(`${ATLASSIAN_SITE_URL}/wiki/rest/api/space`, {
1365
+ const response = await axios13.get(`${ATLASSIAN_SITE_URL}/wiki/rest/api/space`, {
1159
1366
  headers: {
1160
1367
  Authorization: getAuthHeader2(),
1161
1368
  Accept: "application/json"
@@ -1201,7 +1408,7 @@ function createGetSpacePagesTool(getAuth, getAuthHeader2, logger19) {
1201
1408
  logger19.info("get-space-pages called", { space_key, limit });
1202
1409
  try {
1203
1410
  const { ATLASSIAN_SITE_URL } = getAuth();
1204
- const response = await axios16.get(`${ATLASSIAN_SITE_URL}/wiki/rest/api/content`, {
1411
+ const response = await axios13.get(`${ATLASSIAN_SITE_URL}/wiki/rest/api/content`, {
1205
1412
  headers: {
1206
1413
  Authorization: getAuthHeader2(),
1207
1414
  Accept: "application/json"
@@ -1275,7 +1482,7 @@ function createCreateConfluencePageTool(getAuth, getAuthHeader2, logger19) {
1275
1482
  if (parent_page_id) {
1276
1483
  pageData.ancestors = [{ id: parent_page_id }];
1277
1484
  }
1278
- const response = await axios16.post(
1485
+ const response = await axios13.post(
1279
1486
  `${ATLASSIAN_SITE_URL}/wiki/rest/api/content`,
1280
1487
  pageData,
1281
1488
  {
@@ -1323,7 +1530,7 @@ function createUpdateConfluencePageTool(getAuth, getAuthHeader2, logger19) {
1323
1530
  logger19.info("update-confluence-page called", { page_id, title });
1324
1531
  try {
1325
1532
  const { ATLASSIAN_SITE_URL } = getAuth();
1326
- const getResponse = await axios16.get(
1533
+ const getResponse = await axios13.get(
1327
1534
  `${ATLASSIAN_SITE_URL}/wiki/rest/api/content/${page_id}`,
1328
1535
  {
1329
1536
  headers: {
@@ -1333,7 +1540,7 @@ function createUpdateConfluencePageTool(getAuth, getAuthHeader2, logger19) {
1333
1540
  }
1334
1541
  );
1335
1542
  const currentVersion = getResponse.data.version.number;
1336
- const updateResponse = await axios16.put(
1543
+ const updateResponse = await axios13.put(
1337
1544
  `${ATLASSIAN_SITE_URL}/wiki/rest/api/content/${page_id}`,
1338
1545
  {
1339
1546
  type: "page",
@@ -1394,7 +1601,7 @@ function createArchiveConfluencePageTool(getAuth, getAuthHeader2, logger19) {
1394
1601
  });
1395
1602
  try {
1396
1603
  const { ATLASSIAN_SITE_URL } = getAuth();
1397
- const getResponse = await axios16.get(
1604
+ const getResponse = await axios13.get(
1398
1605
  `${ATLASSIAN_SITE_URL}/wiki/rest/api/content/${page_id}`,
1399
1606
  {
1400
1607
  headers: {
@@ -1405,7 +1612,7 @@ function createArchiveConfluencePageTool(getAuth, getAuthHeader2, logger19) {
1405
1612
  );
1406
1613
  const currentVersion = getResponse.data.version.number;
1407
1614
  const pageData = getResponse.data;
1408
- await axios16.put(
1615
+ await axios13.put(
1409
1616
  `${ATLASSIAN_SITE_URL}/wiki/rest/api/content/${page_id}`,
1410
1617
  {
1411
1618
  version: { number: currentVersion + 1 },
@@ -2470,7 +2677,7 @@ var OpenAIEmbeddingProvider = class {
2470
2677
  const modelToUse = model || this.defaultModel;
2471
2678
  return retryWithBackoff2(async () => {
2472
2679
  try {
2473
- const response = await axios16.post(
2680
+ const response = await axios13.post(
2474
2681
  `${this.baseURL}/embeddings`,
2475
2682
  {
2476
2683
  input: text,
@@ -2534,7 +2741,7 @@ var OpenAIEmbeddingProvider = class {
2534
2741
  const modelToUse = model || this.defaultModel;
2535
2742
  return retryWithBackoff2(async () => {
2536
2743
  try {
2537
- const response = await axios16.post(
2744
+ const response = await axios13.post(
2538
2745
  `${this.baseURL}/embeddings`,
2539
2746
  {
2540
2747
  input: texts,
@@ -2614,7 +2821,7 @@ var CohereEmbeddingProvider = class {
2614
2821
  const modelToUse = model || this.defaultModel;
2615
2822
  return retryWithBackoff2(async () => {
2616
2823
  try {
2617
- const response = await axios16.post(
2824
+ const response = await axios13.post(
2618
2825
  `${this.baseUrl}/embed`,
2619
2826
  {
2620
2827
  texts,
@@ -2642,7 +2849,7 @@ var CohereEmbeddingProvider = class {
2642
2849
  } : void 0
2643
2850
  };
2644
2851
  } catch (error) {
2645
- if (axios16.isAxiosError(error)) {
2852
+ if (axios13.isAxiosError(error)) {
2646
2853
  const status = error.response?.status;
2647
2854
  const message = error.response?.data?.message || error.message;
2648
2855
  let wrappedError;
@@ -2682,7 +2889,7 @@ var HuggingFaceEmbeddingProvider = class {
2682
2889
  const modelToUse = model || this.defaultModel;
2683
2890
  return retryWithBackoff2(async () => {
2684
2891
  try {
2685
- const response = await axios16.post(
2892
+ const response = await axios13.post(
2686
2893
  `${this.baseUrl}/${modelToUse}`,
2687
2894
  {
2688
2895
  inputs: text,
@@ -2704,7 +2911,7 @@ var HuggingFaceEmbeddingProvider = class {
2704
2911
  dimensions: embedding.length
2705
2912
  };
2706
2913
  } catch (error) {
2707
- if (axios16.isAxiosError(error)) {
2914
+ if (axios13.isAxiosError(error)) {
2708
2915
  const status = error.response?.status;
2709
2916
  const message = error.response?.data?.error || error.message;
2710
2917
  let wrappedError;
@@ -2731,7 +2938,7 @@ var HuggingFaceEmbeddingProvider = class {
2731
2938
  const modelToUse = model || this.defaultModel;
2732
2939
  return retryWithBackoff2(async () => {
2733
2940
  try {
2734
- const response = await axios16.post(
2941
+ const response = await axios13.post(
2735
2942
  `${this.baseUrl}/${modelToUse}`,
2736
2943
  {
2737
2944
  inputs: texts,
@@ -2754,7 +2961,7 @@ var HuggingFaceEmbeddingProvider = class {
2754
2961
  dimensions
2755
2962
  };
2756
2963
  } catch (error) {
2757
- if (axios16.isAxiosError(error)) {
2964
+ if (axios13.isAxiosError(error)) {
2758
2965
  const status = error.response?.status;
2759
2966
  const message = error.response?.data?.error || error.message;
2760
2967
  let wrappedError;
@@ -2805,7 +3012,7 @@ var VoyageEmbeddingProvider = class {
2805
3012
  const modelToUse = model || this.defaultModel;
2806
3013
  return retryWithBackoff2(async () => {
2807
3014
  try {
2808
- const response = await axios16.post(
3015
+ const response = await axios13.post(
2809
3016
  `${this.baseUrl}/embeddings`,
2810
3017
  {
2811
3018
  input: texts,
@@ -2832,7 +3039,7 @@ var VoyageEmbeddingProvider = class {
2832
3039
  } : void 0
2833
3040
  };
2834
3041
  } catch (error) {
2835
- if (axios16.isAxiosError(error)) {
3042
+ if (axios13.isAxiosError(error)) {
2836
3043
  const status = error.response?.status;
2837
3044
  const message = error.response?.data?.message || error.message;
2838
3045
  let wrappedError;
@@ -2871,7 +3078,7 @@ var OllamaEmbeddingProvider = class {
2871
3078
  const modelToUse = model || this.defaultModel;
2872
3079
  return retryWithBackoff2(async () => {
2873
3080
  try {
2874
- const response = await axios16.post(
3081
+ const response = await axios13.post(
2875
3082
  `${this.baseUrl}/api/embeddings`,
2876
3083
  {
2877
3084
  model: modelToUse,
@@ -2890,7 +3097,7 @@ var OllamaEmbeddingProvider = class {
2890
3097
  dimensions: embedding.length
2891
3098
  };
2892
3099
  } catch (error) {
2893
- if (axios16.isAxiosError(error)) {
3100
+ if (axios13.isAxiosError(error)) {
2894
3101
  const status = error.response?.status;
2895
3102
  const message = error.response?.data?.error || error.message;
2896
3103
  let wrappedError;
@@ -10360,6 +10567,6 @@ function createAskHumanTool() {
10360
10567
  }
10361
10568
  var askHumanTool = createAskHumanTool();
10362
10569
 
10363
- export { AskHumanInputSchema, CalculatorSchema, ConnectionManager, ConnectionState, CreditCardValidatorSchema, CurrentDateTimeSchema, DEFAULT_BATCH_SIZE, DEFAULT_CHUNK_SIZE, DEFAULT_RETRY_CONFIG2 as DEFAULT_RETRY_CONFIG, DateArithmeticSchema, DateComparisonSchema, DateDifferenceSchema, DateFormatterSchema, DuckDuckGoProvider, EmailValidatorSchema, EmbeddingManager, HttpMethod, IpValidatorSchema, MAX_BATCH_SIZE, MathFunctionsSchema, MissingPeerDependencyError, OpenAIEmbeddingProvider, PhoneValidatorSchema, RandomNumberSchema, SchemaInspector, SerperProvider, StatisticsSchema, StringCaseConverterSchema, StringJoinSchema, StringLengthSchema, StringReplaceSchema, StringSplitSchema, StringSubstringSchema, StringTrimSchema, UrlValidatorSimpleSchema, UuidValidatorSchema, archiveConfluencePage, arrayFilter, arrayFilterSchema, arrayGroupBy, arrayGroupBySchema, arrayMap, arrayMapSchema, arraySort, arraySortSchema, askHumanTool, benchmarkBatchExecution, benchmarkStreamingSelectMemory, buildDeleteQuery, buildInsertQuery, buildSelectQuery, buildUpdateQuery, calculator, checkPeerDependency, confluenceTools, createArrayFilterTool, createArrayGroupByTool, createArrayMapTool, createArraySortTool, createAskHumanTool, createCalculatorTool, createConfluencePage, createConfluenceTools, createCreditCardValidatorTool, createCsvGeneratorTool, createCsvParserTool, createCsvToJsonTool, createCsvTools, createCurrentDateTimeTool, createDateArithmeticTool, createDateComparisonTool, createDateDifferenceTool, createDateFormatterTool, createDateTimeTools, createDirectoryCreateTool, createDirectoryDeleteTool, createDirectoryListTool, createDirectoryOperationTools, createDuckDuckGoProvider, createEmailValidatorTool, createExtractImagesTool, createExtractLinksTool, createFileAppendTool, createFileDeleteTool, createFileExistsTool, createFileOperationTools, createFileReaderTool, createFileSearchTool, createFileWriterTool, createHtmlParserTool, createHtmlParserTools, createHttpTools, createIpValidatorTool, createJsonMergeTool, createJsonParserTool, createJsonQueryTool, createJsonStringifyTool, createJsonToCsvTool, createJsonToXmlTool, createJsonTools, createJsonValidatorTool, createMathFunctionsTool, createMathOperationTools, createNeo4jCreateNodeWithEmbeddingTool, createNeo4jFindNodesTool, createNeo4jGetSchemaTool, createNeo4jQueryTool, createNeo4jTools, createNeo4jTraverseTool, createNeo4jVectorSearchTool, createNeo4jVectorSearchWithEmbeddingTool, createObjectOmitTool, createObjectPickTool, createPathBasenameTool, createPathDirnameTool, createPathExtensionTool, createPathJoinTool, createPathNormalizeTool, createPathParseTool, createPathRelativeTool, createPathResolveTool, createPathUtilityTools, createPhoneValidatorTool, createRandomNumberTool, createScraperTools, createSelectReadableStream, createSerperProvider, createSlackTools, createStatisticsTool, createStringCaseConverterTool, createStringJoinTool, createStringLengthTool, createStringReplaceTool, createStringSplitTool, createStringSubstringTool, createStringTrimTool, createStringUtilityTools, createTransformerTools, createUrlBuilderTool, createUrlQueryParserTool, createUrlValidatorSimpleTool, createUrlValidatorTool, createUrlValidatorTools, createUuidValidatorTool, createValidationTools, createWebScraperTool, createXmlGeneratorTool, createXmlParserTool, createXmlToJsonTool, createXmlTools, creditCardValidator, csvGenerator, csvGeneratorSchema, csvParser, csvParserSchema, csvToJson, csvToJsonSchema, csvTools, currentDateTime, dateArithmetic, dateComparison, dateDifference, dateFormatter, dateTimeTools, diffSchemas, directoryCreate, directoryCreateSchema, directoryDelete, directoryDeleteSchema, directoryList, directoryListSchema, directoryOperationTools, emailValidator, embeddingManager, executeBatchedTask, executeQuery2 as executeQuery, executeStreamingSelect, exportSchemaToJson, extractImages, extractImagesSchema, extractLinks, extractLinksSchema, fileAppend, fileAppendSchema, fileDelete, fileDeleteSchema, fileExists, fileExistsSchema, fileOperationTools, fileReader, fileReaderSchema, fileSearch, fileSearchSchema, fileWriter, fileWriterSchema, generateBatchEmbeddings, generateEmbedding, getCohereApiKey, getConfluencePage, getEmbeddingModel, getEmbeddingProvider, getHuggingFaceApiKey, getInstallationInstructions, getOllamaBaseUrl, getOpenAIApiKey, getPeerDependencyName, getSlackChannels, getSlackMessages, getSpacePages, getVendorTypeMap, getVoyageApiKey, htmlParser, htmlParserSchema, htmlParserTools, httpClient, httpGet, httpGetSchema, httpPost, httpPostSchema, httpRequestSchema, httpTools, importSchemaFromJson, initializeEmbeddings, initializeEmbeddingsWithConfig, initializeFromEnv, initializeNeo4jTools, ipValidator, isRetryableError2 as isRetryableError, jsonMerge, jsonMergeSchema, jsonParser, jsonParserSchema, jsonQuery, jsonQuerySchema, jsonStringify, jsonStringifySchema, jsonToCsv, jsonToCsvSchema, jsonToXml, jsonToXmlSchema, jsonTools, jsonValidator, jsonValidatorSchema, listConfluenceSpaces, mapColumnType, mapSchemaTypes, mathFunctions, mathOperationTools, neo4jCoreTools, neo4jCreateNodeWithEmbedding, neo4jCreateNodeWithEmbeddingSchema, neo4jFindNodes, neo4jFindNodesSchema, neo4jGetSchema, neo4jGetSchemaSchema, neo4jPool, neo4jQuery, neo4jQuerySchema, neo4jTools, neo4jTraverse, neo4jTraverseSchema, neo4jVectorSearch, neo4jVectorSearchSchema, neo4jVectorSearchWithEmbedding, neo4jVectorSearchWithEmbeddingSchema, notifySlack, objectOmit, objectOmitSchema, objectPick, objectPickSchema, pathBasename, pathBasenameSchema, pathDirname, pathDirnameSchema, pathExtension, pathExtensionSchema, pathJoin, pathJoinSchema, pathNormalize, pathNormalizeSchema, pathParse, pathParseSchema, pathRelative, pathRelativeSchema, pathResolve, pathResolveSchema, pathUtilityTools, phoneValidator, randomNumber, relationalDelete, relationalGetSchema, relationalInsert, relationalQuery, relationalSelect, relationalUpdate, retryWithBackoff2 as retryWithBackoff, scraperTools, searchConfluence, searchResultSchema, sendSlackMessage, slackTools, statistics, streamSelectChunks, stringCaseConverter, stringJoin, stringLength, stringReplace, stringSplit, stringSubstring, stringTrim, stringUtilityTools, transformerArraySchema, transformerObjectSchema, transformerTools, transformerValueSchema, updateConfluencePage, urlBuilder, urlBuilderSchema, urlQueryParser, urlQueryParserSchema, urlValidator, urlValidatorSchema, urlValidatorSimple, urlValidatorTools, uuidValidator, validateBatch, validateColumnTypes, validateColumnsExist, validateTableExists, validateText, validationTools, webScraper, webScraperSchema, webSearch, webSearchOutputSchema, webSearchSchema, withTransaction, xmlGenerator, xmlGeneratorSchema, xmlParser, xmlParserSchema, xmlToJson, xmlToJsonSchema, xmlTools };
10570
+ export { AskHumanInputSchema, CalculatorSchema, ConnectionManager, ConnectionState, CreditCardValidatorSchema, CurrentDateTimeSchema, DEFAULT_BATCH_SIZE, DEFAULT_CHUNK_SIZE, DEFAULT_DESTINATION_POLICY, DEFAULT_RETRY_CONFIG2 as DEFAULT_RETRY_CONFIG, DateArithmeticSchema, DateComparisonSchema, DateDifferenceSchema, DateFormatterSchema, DestinationPolicyError, DuckDuckGoProvider, EmailValidatorSchema, EmbeddingManager, HttpMethod, IpValidatorSchema, MAX_BATCH_SIZE, MathFunctionsSchema, MissingPeerDependencyError, OpenAIEmbeddingProvider, PhoneValidatorSchema, RandomNumberSchema, SchemaInspector, SerperProvider, StatisticsSchema, StringCaseConverterSchema, StringJoinSchema, StringLengthSchema, StringReplaceSchema, StringSplitSchema, StringSubstringSchema, StringTrimSchema, UrlValidatorSimpleSchema, UuidValidatorSchema, archiveConfluencePage, arrayFilter, arrayFilterSchema, arrayGroupBy, arrayGroupBySchema, arrayMap, arrayMapSchema, arraySort, arraySortSchema, askHumanTool, assertDestinationAllowed, benchmarkBatchExecution, benchmarkStreamingSelectMemory, buildDeleteQuery, buildInsertQuery, buildSelectQuery, buildUpdateQuery, calculator, checkPeerDependency, confluenceTools, createArrayFilterTool, createArrayGroupByTool, createArrayMapTool, createArraySortTool, createAskHumanTool, createCalculatorTool, createConfluencePage, createConfluenceTools, createCreditCardValidatorTool, createCsvGeneratorTool, createCsvParserTool, createCsvToJsonTool, createCsvTools, createCurrentDateTimeTool, createDateArithmeticTool, createDateComparisonTool, createDateDifferenceTool, createDateFormatterTool, createDateTimeTools, createDirectoryCreateTool, createDirectoryDeleteTool, createDirectoryListTool, createDirectoryOperationTools, createDuckDuckGoProvider, createEmailValidatorTool, createExtractImagesTool, createExtractLinksTool, createFileAppendTool, createFileDeleteTool, createFileExistsTool, createFileOperationTools, createFileReaderTool, createFileSearchTool, createFileWriterTool, createHtmlParserTool, createHtmlParserTools, createHttpTools, createIpValidatorTool, createJsonMergeTool, createJsonParserTool, createJsonQueryTool, createJsonStringifyTool, createJsonToCsvTool, createJsonToXmlTool, createJsonTools, createJsonValidatorTool, createMathFunctionsTool, createMathOperationTools, createNeo4jCreateNodeWithEmbeddingTool, createNeo4jFindNodesTool, createNeo4jGetSchemaTool, createNeo4jQueryTool, createNeo4jTools, createNeo4jTraverseTool, createNeo4jVectorSearchTool, createNeo4jVectorSearchWithEmbeddingTool, createObjectOmitTool, createObjectPickTool, createPathBasenameTool, createPathDirnameTool, createPathExtensionTool, createPathJoinTool, createPathNormalizeTool, createPathParseTool, createPathRelativeTool, createPathResolveTool, createPathUtilityTools, createPhoneValidatorTool, createRandomNumberTool, createScraperTools, createSelectReadableStream, createSerperProvider, createSlackTools, createStatisticsTool, createStringCaseConverterTool, createStringJoinTool, createStringLengthTool, createStringReplaceTool, createStringSplitTool, createStringSubstringTool, createStringTrimTool, createStringUtilityTools, createTransformerTools, createUrlBuilderTool, createUrlQueryParserTool, createUrlValidatorSimpleTool, createUrlValidatorTool, createUrlValidatorTools, createUuidValidatorTool, createValidationTools, createWebScraperTool, createXmlGeneratorTool, createXmlParserTool, createXmlToJsonTool, createXmlTools, creditCardValidator, csvGenerator, csvGeneratorSchema, csvParser, csvParserSchema, csvToJson, csvToJsonSchema, csvTools, currentDateTime, dateArithmetic, dateComparison, dateDifference, dateFormatter, dateTimeTools, diffSchemas, directoryCreate, directoryCreateSchema, directoryDelete, directoryDeleteSchema, directoryList, directoryListSchema, directoryOperationTools, emailValidator, embeddingManager, executeBatchedTask, executeQuery2 as executeQuery, executeStreamingSelect, exportSchemaToJson, extractImages, extractImagesSchema, extractLinks, extractLinksSchema, fileAppend, fileAppendSchema, fileDelete, fileDeleteSchema, fileExists, fileExistsSchema, fileOperationTools, fileReader, fileReaderSchema, fileSearch, fileSearchSchema, fileWriter, fileWriterSchema, generateBatchEmbeddings, generateEmbedding, getCohereApiKey, getConfluencePage, getEmbeddingModel, getEmbeddingProvider, getHuggingFaceApiKey, getInstallationInstructions, getOllamaBaseUrl, getOpenAIApiKey, getPeerDependencyName, getSlackChannels, getSlackMessages, getSpacePages, getVendorTypeMap, getVoyageApiKey, htmlParser, htmlParserSchema, htmlParserTools, httpClient, httpGet, httpGetSchema, httpPost, httpPostSchema, httpRequestSchema, httpTools, importSchemaFromJson, initializeEmbeddings, initializeEmbeddingsWithConfig, initializeFromEnv, initializeNeo4jTools, ipValidator, isRetryableError2 as isRetryableError, jsonMerge, jsonMergeSchema, jsonParser, jsonParserSchema, jsonQuery, jsonQuerySchema, jsonStringify, jsonStringifySchema, jsonToCsv, jsonToCsvSchema, jsonToXml, jsonToXmlSchema, jsonTools, jsonValidator, jsonValidatorSchema, listConfluenceSpaces, mapColumnType, mapSchemaTypes, mathFunctions, mathOperationTools, neo4jCoreTools, neo4jCreateNodeWithEmbedding, neo4jCreateNodeWithEmbeddingSchema, neo4jFindNodes, neo4jFindNodesSchema, neo4jGetSchema, neo4jGetSchemaSchema, neo4jPool, neo4jQuery, neo4jQuerySchema, neo4jTools, neo4jTraverse, neo4jTraverseSchema, neo4jVectorSearch, neo4jVectorSearchSchema, neo4jVectorSearchWithEmbedding, neo4jVectorSearchWithEmbeddingSchema, notifySlack, objectOmit, objectOmitSchema, objectPick, objectPickSchema, pathBasename, pathBasenameSchema, pathDirname, pathDirnameSchema, pathExtension, pathExtensionSchema, pathJoin, pathJoinSchema, pathNormalize, pathNormalizeSchema, pathParse, pathParseSchema, pathRelative, pathRelativeSchema, pathResolve, pathResolveSchema, pathUtilityTools, phoneValidator, randomNumber, relationalDelete, relationalGetSchema, relationalInsert, relationalQuery, relationalSelect, relationalUpdate, requestWithDestinationPolicy, retryWithBackoff2 as retryWithBackoff, scraperTools, searchConfluence, searchResultSchema, sendSlackMessage, slackTools, statistics, streamSelectChunks, stringCaseConverter, stringJoin, stringLength, stringReplace, stringSplit, stringSubstring, stringTrim, stringUtilityTools, transformerArraySchema, transformerObjectSchema, transformerTools, transformerValueSchema, updateConfluencePage, urlBuilder, urlBuilderSchema, urlQueryParser, urlQueryParserSchema, urlValidator, urlValidatorSchema, urlValidatorSimple, urlValidatorTools, uuidValidator, validateBatch, validateColumnTypes, validateColumnsExist, validateTableExists, validateText, validationTools, webScraper, webScraperSchema, webSearch, webSearchOutputSchema, webSearchSchema, withTransaction, xmlGenerator, xmlGeneratorSchema, xmlParser, xmlParserSchema, xmlToJson, xmlToJsonSchema, xmlTools };
10364
10571
  //# sourceMappingURL=index.js.map
10365
10572
  //# sourceMappingURL=index.js.map