@agentforge/tools 0.16.85 → 0.16.87

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,7 +1,7 @@
1
1
  import { toolBuilder, ToolCategory, LogLevel, createLogger } from '@agentforge/core';
2
2
  import { lookup } from 'dns/promises';
3
3
  import net from 'net';
4
- import axios13 from 'axios';
4
+ import axios11 from 'axios';
5
5
  import { z } from 'zod';
6
6
  import * as cheerio from 'cheerio';
7
7
  import { WebClient } from '@slack/web-api';
@@ -42,8 +42,6 @@ var DestinationPolicyError = class extends Error {
42
42
  this.reason = reason;
43
43
  this.name = "DestinationPolicyError";
44
44
  }
45
- url;
46
- reason;
47
45
  code = "WEB_DESTINATION_BLOCKED";
48
46
  };
49
47
  function ipv4ToNumber(address) {
@@ -202,7 +200,7 @@ async function requestWithDestinationPolicy(config, policy = {}) {
202
200
  for (let redirectCount = 0; ; redirectCount += 1) {
203
201
  const validatedAddresses = await validateDestinationAllowed(currentUrl, effectivePolicy);
204
202
  currentConfig.lookup = createPinnedLookup(validatedAddresses);
205
- const response = await axios13(currentConfig);
203
+ const response = await axios11(currentConfig);
206
204
  if (!isRedirectStatus(response.status)) return response;
207
205
  if (effectivePolicy.allowRedirects === false) blockDestination(currentUrl, "redirect");
208
206
  if (redirectCount >= maxRedirects) throw new DestinationPolicyError(currentUrl, "redirect", `Maximum redirect count (${maxRedirects}) exceeded for ${currentUrl}`);
@@ -713,7 +711,7 @@ var DuckDuckGoProvider = class {
713
711
  async search(query, maxResults, timeout = DEFAULT_TIMEOUT) {
714
712
  return retryWithBackoff(async () => {
715
713
  try {
716
- const response = await axios13.get(
714
+ const response = await axios11.get(
717
715
  "https://api.duckduckgo.com/",
718
716
  {
719
717
  params: {
@@ -817,7 +815,7 @@ var SerperProvider = class {
817
815
  }
818
816
  return retryWithBackoff(async () => {
819
817
  try {
820
- const response = await axios13.post(
818
+ const response = await axios11.post(
821
819
  "https://google.serper.dev/search",
822
820
  {
823
821
  q: query,
@@ -1251,7 +1249,7 @@ function createSearchConfluenceTool(getAuth, getAuthHeader2, logger19) {
1251
1249
  logger19.info("search-confluence called", { query, limit });
1252
1250
  try {
1253
1251
  const { ATLASSIAN_SITE_URL } = getAuth();
1254
- const response = await axios13.get(`${ATLASSIAN_SITE_URL}/wiki/rest/api/content/search`, {
1252
+ const response = await axios11.get(`${ATLASSIAN_SITE_URL}/wiki/rest/api/content/search`, {
1255
1253
  headers: {
1256
1254
  Authorization: getAuthHeader2(),
1257
1255
  Accept: "application/json"
@@ -1313,7 +1311,7 @@ function createGetConfluencePageTool(getAuth, getAuthHeader2, logger19) {
1313
1311
  logger19.info("get-confluence-page called", { page_id });
1314
1312
  try {
1315
1313
  const { ATLASSIAN_SITE_URL } = getAuth();
1316
- const response = await axios13.get(`${ATLASSIAN_SITE_URL}/wiki/rest/api/content/${page_id}`, {
1314
+ const response = await axios11.get(`${ATLASSIAN_SITE_URL}/wiki/rest/api/content/${page_id}`, {
1317
1315
  headers: {
1318
1316
  Authorization: getAuthHeader2(),
1319
1317
  Accept: "application/json"
@@ -1364,7 +1362,7 @@ function createListConfluenceSpacesTool(getAuth, getAuthHeader2, logger19) {
1364
1362
  logger19.info("list-confluence-spaces called", { limit });
1365
1363
  try {
1366
1364
  const { ATLASSIAN_SITE_URL } = getAuth();
1367
- const response = await axios13.get(`${ATLASSIAN_SITE_URL}/wiki/rest/api/space`, {
1365
+ const response = await axios11.get(`${ATLASSIAN_SITE_URL}/wiki/rest/api/space`, {
1368
1366
  headers: {
1369
1367
  Authorization: getAuthHeader2(),
1370
1368
  Accept: "application/json"
@@ -1410,7 +1408,7 @@ function createGetSpacePagesTool(getAuth, getAuthHeader2, logger19) {
1410
1408
  logger19.info("get-space-pages called", { space_key, limit });
1411
1409
  try {
1412
1410
  const { ATLASSIAN_SITE_URL } = getAuth();
1413
- const response = await axios13.get(`${ATLASSIAN_SITE_URL}/wiki/rest/api/content`, {
1411
+ const response = await axios11.get(`${ATLASSIAN_SITE_URL}/wiki/rest/api/content`, {
1414
1412
  headers: {
1415
1413
  Authorization: getAuthHeader2(),
1416
1414
  Accept: "application/json"
@@ -1484,7 +1482,7 @@ function createCreateConfluencePageTool(getAuth, getAuthHeader2, logger19) {
1484
1482
  if (parent_page_id) {
1485
1483
  pageData.ancestors = [{ id: parent_page_id }];
1486
1484
  }
1487
- const response = await axios13.post(
1485
+ const response = await axios11.post(
1488
1486
  `${ATLASSIAN_SITE_URL}/wiki/rest/api/content`,
1489
1487
  pageData,
1490
1488
  {
@@ -1532,7 +1530,7 @@ function createUpdateConfluencePageTool(getAuth, getAuthHeader2, logger19) {
1532
1530
  logger19.info("update-confluence-page called", { page_id, title });
1533
1531
  try {
1534
1532
  const { ATLASSIAN_SITE_URL } = getAuth();
1535
- const getResponse = await axios13.get(
1533
+ const getResponse = await axios11.get(
1536
1534
  `${ATLASSIAN_SITE_URL}/wiki/rest/api/content/${page_id}`,
1537
1535
  {
1538
1536
  headers: {
@@ -1542,7 +1540,7 @@ function createUpdateConfluencePageTool(getAuth, getAuthHeader2, logger19) {
1542
1540
  }
1543
1541
  );
1544
1542
  const currentVersion = getResponse.data.version.number;
1545
- const updateResponse = await axios13.put(
1543
+ const updateResponse = await axios11.put(
1546
1544
  `${ATLASSIAN_SITE_URL}/wiki/rest/api/content/${page_id}`,
1547
1545
  {
1548
1546
  type: "page",
@@ -1603,7 +1601,7 @@ function createArchiveConfluencePageTool(getAuth, getAuthHeader2, logger19) {
1603
1601
  });
1604
1602
  try {
1605
1603
  const { ATLASSIAN_SITE_URL } = getAuth();
1606
- const getResponse = await axios13.get(
1604
+ const getResponse = await axios11.get(
1607
1605
  `${ATLASSIAN_SITE_URL}/wiki/rest/api/content/${page_id}`,
1608
1606
  {
1609
1607
  headers: {
@@ -1614,7 +1612,7 @@ function createArchiveConfluencePageTool(getAuth, getAuthHeader2, logger19) {
1614
1612
  );
1615
1613
  const currentVersion = getResponse.data.version.number;
1616
1614
  const pageData = getResponse.data;
1617
- await axios13.put(
1615
+ await axios11.put(
1618
1616
  `${ATLASSIAN_SITE_URL}/wiki/rest/api/content/${page_id}`,
1619
1617
  {
1620
1618
  version: { number: currentVersion + 1 },
@@ -2340,9 +2338,21 @@ function createTransformerTools(config = {}) {
2340
2338
  createObjectOmitTool()
2341
2339
  ];
2342
2340
  }
2341
+ var neo4jJsonValueSchema = z.lazy(() => z.union([
2342
+ z.string(),
2343
+ z.number().finite(),
2344
+ z.boolean(),
2345
+ z.null(),
2346
+ z.array(neo4jJsonValueSchema),
2347
+ z.record(z.string(), neo4jJsonValueSchema)
2348
+ ])).describe("JSON-safe Neo4j property value");
2349
+ var neo4jPropertiesSchema = z.record(
2350
+ z.string(),
2351
+ neo4jJsonValueSchema
2352
+ );
2343
2353
  var neo4jQuerySchema = z.object({
2344
2354
  cypher: z.string().describe("Cypher query to execute"),
2345
- parameters: z.record(z.any()).optional().describe("Query parameters for parameterized queries"),
2355
+ parameters: neo4jPropertiesSchema.optional().describe("Query parameters for parameterized queries"),
2346
2356
  database: z.string().optional().describe("Database name (defaults to configured database)")
2347
2357
  });
2348
2358
  var neo4jGetSchemaSchema = z.object({
@@ -2350,7 +2360,7 @@ var neo4jGetSchemaSchema = z.object({
2350
2360
  });
2351
2361
  var neo4jFindNodesSchema = z.object({
2352
2362
  label: z.string().describe("Node label to search for"),
2353
- properties: z.record(z.any()).optional().describe("Properties to match (key-value pairs)"),
2363
+ properties: neo4jPropertiesSchema.optional().describe("Properties to match (key-value pairs)"),
2354
2364
  limit: z.number().default(100).describe("Maximum number of nodes to return"),
2355
2365
  database: z.string().optional().describe("Database name (defaults to configured database)")
2356
2366
  });
@@ -2380,7 +2390,7 @@ var neo4jVectorSearchWithEmbeddingSchema = z.object({
2380
2390
  });
2381
2391
  var neo4jCreateNodeWithEmbeddingSchema = z.object({
2382
2392
  label: z.string().describe("Node label"),
2383
- properties: z.record(z.string(), z.any().describe("Property value")).describe("Node properties (key-value pairs)"),
2393
+ properties: neo4jPropertiesSchema.describe("Node properties (key-value pairs)"),
2384
2394
  textProperty: z.string().describe("Name of the property containing text to embed"),
2385
2395
  embeddingProperty: z.string().default("embedding").describe("Name of the property to store the embedding vector"),
2386
2396
  model: z.string().optional().describe("Embedding model to use (defaults to configured model)"),
@@ -2548,6 +2558,13 @@ async function initializeFromEnv() {
2548
2558
  }
2549
2559
 
2550
2560
  // src/data/neo4j/embeddings/utils.ts
2561
+ function withProviderErrorMetadata(error, message) {
2562
+ const wrappedError = new Error(message);
2563
+ if (!isRecord2(error)) return wrappedError;
2564
+ if (typeof error.code === "string") wrappedError.code = error.code;
2565
+ if (error.response !== void 0) wrappedError.response = error.response;
2566
+ return wrappedError;
2567
+ }
2551
2568
  var DEFAULT_RETRY_CONFIG2 = {
2552
2569
  maxRetries: 3,
2553
2570
  initialDelay: 1e3,
@@ -2556,17 +2573,25 @@ var DEFAULT_RETRY_CONFIG2 = {
2556
2573
  // 10 seconds
2557
2574
  backoffMultiplier: 2
2558
2575
  };
2576
+ function isRecord2(value) {
2577
+ return typeof value === "object" && value !== null;
2578
+ }
2559
2579
  function isRetryableError2(error) {
2560
- if (error.code === "ECONNRESET" || error.code === "ETIMEDOUT" || error.code === "ENOTFOUND") {
2580
+ if (!isRecord2(error)) return false;
2581
+ const response = isRecord2(error.response) ? error.response : void 0;
2582
+ const status = typeof response?.status === "number" ? response.status : void 0;
2583
+ const code = typeof error.code === "string" ? error.code : void 0;
2584
+ const message = typeof error.message === "string" ? error.message : void 0;
2585
+ if (code === "ECONNRESET" || code === "ETIMEDOUT" || code === "ENOTFOUND") {
2561
2586
  return true;
2562
2587
  }
2563
- if (error.code === "ECONNABORTED" || error.message?.includes("timeout")) {
2588
+ if (code === "ECONNABORTED" || message?.includes("timeout")) {
2564
2589
  return true;
2565
2590
  }
2566
- if (error.response?.status >= 500 && error.response?.status < 600) {
2591
+ if (status !== void 0 && status >= 500 && status < 600) {
2567
2592
  return true;
2568
2593
  }
2569
- if (error.response?.status === 429) {
2594
+ if (status === 429) {
2570
2595
  return true;
2571
2596
  }
2572
2597
  return false;
@@ -2679,7 +2704,7 @@ var OpenAIEmbeddingProvider = class {
2679
2704
  const modelToUse = model || this.defaultModel;
2680
2705
  return retryWithBackoff2(async () => {
2681
2706
  try {
2682
- const response = await axios13.post(
2707
+ const response = await axios11.post(
2683
2708
  `${this.baseURL}/embeddings`,
2684
2709
  {
2685
2710
  input: text,
@@ -2708,25 +2733,18 @@ var OpenAIEmbeddingProvider = class {
2708
2733
  }
2709
2734
  };
2710
2735
  } catch (error) {
2711
- let wrappedError;
2712
- if (error.response?.status === 401) {
2713
- wrappedError = new Error(
2714
- "Invalid OpenAI API key. Get your key at https://platform.openai.com/api-keys"
2715
- );
2716
- } else if (error.response?.status === 429) {
2717
- wrappedError = new Error(
2718
- "OpenAI API rate limit exceeded. Please try again later or upgrade your plan."
2719
- );
2720
- } else if (error.response?.status === 400) {
2721
- wrappedError = new Error(
2722
- `OpenAI API error: ${error.response.data?.error?.message || "Bad request"}`
2723
- );
2736
+ let message;
2737
+ const response = axios11.isAxiosError(error) ? error.response : void 0;
2738
+ if (response?.status === 401) {
2739
+ message = "Invalid OpenAI API key. Get your key at https://platform.openai.com/api-keys";
2740
+ } else if (response?.status === 429) {
2741
+ message = "OpenAI API rate limit exceeded. Please try again later or upgrade your plan.";
2742
+ } else if (response?.status === 400) {
2743
+ message = `OpenAI API error: ${response.data?.error?.message || "Bad request"}`;
2724
2744
  } else {
2725
- wrappedError = new Error(`OpenAI embedding generation failed: ${error.message}`);
2745
+ message = `OpenAI embedding generation failed: ${error instanceof Error ? error.message : "Unknown error"}`;
2726
2746
  }
2727
- if (error.code) wrappedError.code = error.code;
2728
- if (error.response) wrappedError.response = error.response;
2729
- throw wrappedError;
2747
+ throw withProviderErrorMetadata(error, message);
2730
2748
  }
2731
2749
  });
2732
2750
  }
@@ -2743,7 +2761,7 @@ var OpenAIEmbeddingProvider = class {
2743
2761
  const modelToUse = model || this.defaultModel;
2744
2762
  return retryWithBackoff2(async () => {
2745
2763
  try {
2746
- const response = await axios13.post(
2764
+ const response = await axios11.post(
2747
2765
  `${this.baseURL}/embeddings`,
2748
2766
  {
2749
2767
  input: texts,
@@ -2773,25 +2791,18 @@ var OpenAIEmbeddingProvider = class {
2773
2791
  }
2774
2792
  };
2775
2793
  } catch (error) {
2776
- let wrappedError;
2777
- if (error.response?.status === 401) {
2778
- wrappedError = new Error(
2779
- "Invalid OpenAI API key. Get your key at https://platform.openai.com/api-keys"
2780
- );
2781
- } else if (error.response?.status === 429) {
2782
- wrappedError = new Error(
2783
- "OpenAI API rate limit exceeded. Please try again later or upgrade your plan."
2784
- );
2785
- } else if (error.response?.status === 400) {
2786
- wrappedError = new Error(
2787
- `OpenAI API error: ${error.response.data?.error?.message || "Bad request"}`
2788
- );
2794
+ let message;
2795
+ const response = axios11.isAxiosError(error) ? error.response : void 0;
2796
+ if (response?.status === 401) {
2797
+ message = "Invalid OpenAI API key. Get your key at https://platform.openai.com/api-keys";
2798
+ } else if (response?.status === 429) {
2799
+ message = "OpenAI API rate limit exceeded. Please try again later or upgrade your plan.";
2800
+ } else if (response?.status === 400) {
2801
+ message = `OpenAI API error: ${response.data?.error?.message || "Bad request"}`;
2789
2802
  } else {
2790
- wrappedError = new Error(`OpenAI batch embedding generation failed: ${error.message}`);
2803
+ message = `OpenAI batch embedding generation failed: ${error instanceof Error ? error.message : "Unknown error"}`;
2791
2804
  }
2792
- if (error.code) wrappedError.code = error.code;
2793
- if (error.response) wrappedError.response = error.response;
2794
- throw wrappedError;
2805
+ throw withProviderErrorMetadata(error, message);
2795
2806
  }
2796
2807
  });
2797
2808
  }
@@ -2823,7 +2834,7 @@ var CohereEmbeddingProvider = class {
2823
2834
  const modelToUse = model || this.defaultModel;
2824
2835
  return retryWithBackoff2(async () => {
2825
2836
  try {
2826
- const response = await axios13.post(
2837
+ const response = await axios11.post(
2827
2838
  `${this.baseUrl}/embed`,
2828
2839
  {
2829
2840
  texts,
@@ -2851,22 +2862,20 @@ var CohereEmbeddingProvider = class {
2851
2862
  } : void 0
2852
2863
  };
2853
2864
  } catch (error) {
2854
- if (axios13.isAxiosError(error)) {
2865
+ if (axios11.isAxiosError(error)) {
2855
2866
  const status = error.response?.status;
2856
- const message = error.response?.data?.message || error.message;
2857
- let wrappedError;
2867
+ const providerMessage = error.response?.data?.message || error.message;
2868
+ let message;
2858
2869
  if (status === 401) {
2859
- wrappedError = new Error(`Cohere API authentication failed. Please check your COHERE_API_KEY. ${message}`);
2870
+ message = `Cohere API authentication failed. Please check your COHERE_API_KEY. ${providerMessage}`;
2860
2871
  } else if (status === 429) {
2861
- wrappedError = new Error(`Cohere API rate limit exceeded. ${message}`);
2872
+ message = `Cohere API rate limit exceeded. ${providerMessage}`;
2862
2873
  } else if (status === 400) {
2863
- wrappedError = new Error(`Cohere API request invalid: ${message}`);
2874
+ message = `Cohere API request invalid: ${providerMessage}`;
2864
2875
  } else {
2865
- wrappedError = new Error(`Cohere API error (${status}): ${message}`);
2876
+ message = `Cohere API error (${status}): ${providerMessage}`;
2866
2877
  }
2867
- if (error.code) wrappedError.code = error.code;
2868
- if (error.response) wrappedError.response = error.response;
2869
- throw wrappedError;
2878
+ throw withProviderErrorMetadata(error, message);
2870
2879
  }
2871
2880
  throw error;
2872
2881
  }
@@ -2891,7 +2900,7 @@ var HuggingFaceEmbeddingProvider = class {
2891
2900
  const modelToUse = model || this.defaultModel;
2892
2901
  return retryWithBackoff2(async () => {
2893
2902
  try {
2894
- const response = await axios13.post(
2903
+ const response = await axios11.post(
2895
2904
  `${this.baseUrl}/${modelToUse}`,
2896
2905
  {
2897
2906
  inputs: text,
@@ -2913,24 +2922,22 @@ var HuggingFaceEmbeddingProvider = class {
2913
2922
  dimensions: embedding.length
2914
2923
  };
2915
2924
  } catch (error) {
2916
- if (axios13.isAxiosError(error)) {
2925
+ if (axios11.isAxiosError(error)) {
2917
2926
  const status = error.response?.status;
2918
2927
  const message = error.response?.data?.error || error.message;
2919
- let wrappedError;
2928
+ let messageText;
2920
2929
  if (status === 401) {
2921
- wrappedError = new Error(`HuggingFace API authentication failed. Please check your HUGGINGFACE_API_KEY. ${message}`);
2930
+ messageText = `HuggingFace API authentication failed. Please check your HUGGINGFACE_API_KEY. ${message}`;
2922
2931
  } else if (status === 429) {
2923
- wrappedError = new Error(`HuggingFace API rate limit exceeded. ${message}`);
2932
+ messageText = `HuggingFace API rate limit exceeded. ${message}`;
2924
2933
  } else if (status === 400) {
2925
- wrappedError = new Error(`HuggingFace API request invalid: ${message}`);
2934
+ messageText = `HuggingFace API request invalid: ${message}`;
2926
2935
  } else if (status === 503) {
2927
- wrappedError = new Error(`HuggingFace model is loading. Please retry in a moment. ${message}`);
2936
+ messageText = `HuggingFace model is loading. Please retry in a moment. ${message}`;
2928
2937
  } else {
2929
- wrappedError = new Error(`HuggingFace API error (${status}): ${message}`);
2938
+ messageText = `HuggingFace API error (${status}): ${message}`;
2930
2939
  }
2931
- if (error.code) wrappedError.code = error.code;
2932
- if (error.response) wrappedError.response = error.response;
2933
- throw wrappedError;
2940
+ throw withProviderErrorMetadata(error, messageText);
2934
2941
  }
2935
2942
  throw error;
2936
2943
  }
@@ -2940,7 +2947,7 @@ var HuggingFaceEmbeddingProvider = class {
2940
2947
  const modelToUse = model || this.defaultModel;
2941
2948
  return retryWithBackoff2(async () => {
2942
2949
  try {
2943
- const response = await axios13.post(
2950
+ const response = await axios11.post(
2944
2951
  `${this.baseUrl}/${modelToUse}`,
2945
2952
  {
2946
2953
  inputs: texts,
@@ -2963,24 +2970,22 @@ var HuggingFaceEmbeddingProvider = class {
2963
2970
  dimensions
2964
2971
  };
2965
2972
  } catch (error) {
2966
- if (axios13.isAxiosError(error)) {
2973
+ if (axios11.isAxiosError(error)) {
2967
2974
  const status = error.response?.status;
2968
2975
  const message = error.response?.data?.error || error.message;
2969
- let wrappedError;
2976
+ let messageText;
2970
2977
  if (status === 401) {
2971
- wrappedError = new Error(`HuggingFace API authentication failed. Please check your HUGGINGFACE_API_KEY. ${message}`);
2978
+ messageText = `HuggingFace API authentication failed. Please check your HUGGINGFACE_API_KEY. ${message}`;
2972
2979
  } else if (status === 429) {
2973
- wrappedError = new Error(`HuggingFace API rate limit exceeded. ${message}`);
2980
+ messageText = `HuggingFace API rate limit exceeded. ${message}`;
2974
2981
  } else if (status === 400) {
2975
- wrappedError = new Error(`HuggingFace API request invalid: ${message}`);
2982
+ messageText = `HuggingFace API request invalid: ${message}`;
2976
2983
  } else if (status === 503) {
2977
- wrappedError = new Error(`HuggingFace model is loading. Please retry in a moment. ${message}`);
2984
+ messageText = `HuggingFace model is loading. Please retry in a moment. ${message}`;
2978
2985
  } else {
2979
- wrappedError = new Error(`HuggingFace API error (${status}): ${message}`);
2986
+ messageText = `HuggingFace API error (${status}): ${message}`;
2980
2987
  }
2981
- if (error.code) wrappedError.code = error.code;
2982
- if (error.response) wrappedError.response = error.response;
2983
- throw wrappedError;
2988
+ throw withProviderErrorMetadata(error, messageText);
2984
2989
  }
2985
2990
  throw error;
2986
2991
  }
@@ -3014,7 +3019,7 @@ var VoyageEmbeddingProvider = class {
3014
3019
  const modelToUse = model || this.defaultModel;
3015
3020
  return retryWithBackoff2(async () => {
3016
3021
  try {
3017
- const response = await axios13.post(
3022
+ const response = await axios11.post(
3018
3023
  `${this.baseUrl}/embeddings`,
3019
3024
  {
3020
3025
  input: texts,
@@ -3041,22 +3046,20 @@ var VoyageEmbeddingProvider = class {
3041
3046
  } : void 0
3042
3047
  };
3043
3048
  } catch (error) {
3044
- if (axios13.isAxiosError(error)) {
3049
+ if (axios11.isAxiosError(error)) {
3045
3050
  const status = error.response?.status;
3046
3051
  const message = error.response?.data?.message || error.message;
3047
- let wrappedError;
3052
+ let messageText;
3048
3053
  if (status === 401) {
3049
- wrappedError = new Error(`Voyage AI API authentication failed. Please check your VOYAGE_API_KEY. ${message}`);
3054
+ messageText = `Voyage AI API authentication failed. Please check your VOYAGE_API_KEY. ${message}`;
3050
3055
  } else if (status === 429) {
3051
- wrappedError = new Error(`Voyage AI API rate limit exceeded. ${message}`);
3056
+ messageText = `Voyage AI API rate limit exceeded. ${message}`;
3052
3057
  } else if (status === 400) {
3053
- wrappedError = new Error(`Voyage AI API request invalid: ${message}`);
3058
+ messageText = `Voyage AI API request invalid: ${message}`;
3054
3059
  } else {
3055
- wrappedError = new Error(`Voyage AI API error (${status}): ${message}`);
3060
+ messageText = `Voyage AI API error (${status}): ${message}`;
3056
3061
  }
3057
- if (error.code) wrappedError.code = error.code;
3058
- if (error.response) wrappedError.response = error.response;
3059
- throw wrappedError;
3062
+ throw withProviderErrorMetadata(error, messageText);
3060
3063
  }
3061
3064
  throw error;
3062
3065
  }
@@ -3080,7 +3083,7 @@ var OllamaEmbeddingProvider = class {
3080
3083
  const modelToUse = model || this.defaultModel;
3081
3084
  return retryWithBackoff2(async () => {
3082
3085
  try {
3083
- const response = await axios13.post(
3086
+ const response = await axios11.post(
3084
3087
  `${this.baseUrl}/api/embeddings`,
3085
3088
  {
3086
3089
  model: modelToUse,
@@ -3099,22 +3102,20 @@ var OllamaEmbeddingProvider = class {
3099
3102
  dimensions: embedding.length
3100
3103
  };
3101
3104
  } catch (error) {
3102
- if (axios13.isAxiosError(error)) {
3105
+ if (axios11.isAxiosError(error)) {
3103
3106
  const status = error.response?.status;
3104
3107
  const message = error.response?.data?.error || error.message;
3105
- let wrappedError;
3108
+ let messageText;
3106
3109
  if (error.code === "ECONNREFUSED") {
3107
- wrappedError = new Error(`Cannot connect to Ollama at ${this.baseUrl}. Make sure Ollama is running locally.`);
3110
+ messageText = `Cannot connect to Ollama at ${this.baseUrl}. Make sure Ollama is running locally.`;
3108
3111
  } else if (status === 404) {
3109
- wrappedError = new Error(`Ollama model not found. Pull it with: ollama pull <model-name>`);
3112
+ messageText = "Ollama model not found. Pull it with: ollama pull <model-name>";
3110
3113
  } else if (status === 400) {
3111
- wrappedError = new Error(`Ollama API request invalid: ${message}`);
3114
+ messageText = `Ollama API request invalid: ${message}`;
3112
3115
  } else {
3113
- wrappedError = new Error(`Ollama API error (${status}): ${message}`);
3116
+ messageText = `Ollama API error (${status}): ${message}`;
3114
3117
  }
3115
- if (error.code) wrappedError.code = error.code;
3116
- if (error.response) wrappedError.response = error.response;
3117
- throw wrappedError;
3118
+ throw withProviderErrorMetadata(error, messageText);
3118
3119
  }
3119
3120
  throw error;
3120
3121
  }
@@ -3706,7 +3707,7 @@ function createNeo4jFindNodesTool() {
3706
3707
  parameters = { ...parameters, ...filterParams };
3707
3708
  }
3708
3709
  cypher += ` RETURN n LIMIT $limit`;
3709
- parameters.limit = input.limit;
3710
+ parameters.limit = input.limit ?? 100;
3710
3711
  const result = await session.run(cypher, parameters);
3711
3712
  const formattedResults = formatResults(result.records);
3712
3713
  return {
@@ -4132,8 +4133,6 @@ For more information, see the @agentforge/tools documentation.`
4132
4133
  this.name = "MissingPeerDependencyError";
4133
4134
  Object.setPrototypeOf(this, _MissingPeerDependencyError.prototype);
4134
4135
  }
4135
- vendor;
4136
- packageName;
4137
4136
  };
4138
4137
  function isPeerDependencyAvailable(packageName) {
4139
4138
  try {
@@ -6822,8 +6821,6 @@ var SchemaInspector = class _SchemaInspector {
6822
6821
  this.cacheTtlMs = config?.cacheTtlMs ?? DEFAULT_CACHE_TTL_MS;
6823
6822
  this.cacheKey = config?.cacheKey;
6824
6823
  }
6825
- manager;
6826
- vendor;
6827
6824
  cacheTtlMs;
6828
6825
  cacheKey;
6829
6826
  static clearCache(cacheKey) {
@@ -9340,8 +9337,6 @@ var FileSystemPolicyError = class extends Error {
9340
9337
  this.inputPath = inputPath;
9341
9338
  this.name = "FileSystemPolicyError";
9342
9339
  }
9343
- operation;
9344
- inputPath;
9345
9340
  code = "FILE_SYSTEM_POLICY_VIOLATION";
9346
9341
  };
9347
9342
  function containsTraversal(inputPath) {
@@ -10646,11 +10641,11 @@ var AskHumanInputSchema = z.object({
10646
10641
  });
10647
10642
  var logLevel3 = process.env.LOG_LEVEL?.toLowerCase() || LogLevel.INFO;
10648
10643
  var logger18 = createLogger("agentforge:tools:agent:ask-human", { level: logLevel3 });
10649
- function isRecord2(value) {
10644
+ function isRecord3(value) {
10650
10645
  return typeof value === "object" && value !== null;
10651
10646
  }
10652
10647
  function resolveInterrupt(module) {
10653
- if (!isRecord2(module)) {
10648
+ if (!isRecord3(module)) {
10654
10649
  return void 0;
10655
10650
  }
10656
10651
  const candidate = module.interrupt;
@@ -10757,6 +10752,6 @@ function createAskHumanTool() {
10757
10752
  }
10758
10753
  var askHumanTool = createAskHumanTool();
10759
10754
 
10760
- export { AskHumanInputSchema, CalculatorSchema, ConnectionManager, ConnectionState, CreditCardValidatorSchema, CurrentDateTimeSchema, DEFAULT_BATCH_SIZE, DEFAULT_CHUNK_SIZE, DEFAULT_DESTINATION_POLICY, DEFAULT_FILE_SYSTEM_POLICY, DEFAULT_RETRY_CONFIG2 as DEFAULT_RETRY_CONFIG, DateArithmeticSchema, DateComparisonSchema, DateDifferenceSchema, DateFormatterSchema, DestinationPolicyError, DuckDuckGoProvider, EmailValidatorSchema, EmbeddingManager, FileSystemPolicy, FileSystemPolicyError, 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, createFileSystemPolicy, createFileWriterTool, createHtmlParserTool, createHtmlParserTools, createHttpTools, createIpValidatorTool, createJsonMergeTool, createJsonParserTool, createJsonQueryTool, createJsonStringifyTool, createJsonToCsvTool, createJsonToXmlTool, createJsonTools, createJsonValidatorTool, createMathFunctionsTool, createMathOperationTools, createModelSafeToolPreset, 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, resolveFileSystemPolicy, 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 };
10755
+ export { AskHumanInputSchema, CalculatorSchema, ConnectionManager, ConnectionState, CreditCardValidatorSchema, CurrentDateTimeSchema, DEFAULT_BATCH_SIZE, DEFAULT_CHUNK_SIZE, DEFAULT_DESTINATION_POLICY, DEFAULT_FILE_SYSTEM_POLICY, DEFAULT_RETRY_CONFIG2 as DEFAULT_RETRY_CONFIG, DateArithmeticSchema, DateComparisonSchema, DateDifferenceSchema, DateFormatterSchema, DestinationPolicyError, DuckDuckGoProvider, EmailValidatorSchema, EmbeddingManager, FileSystemPolicy, FileSystemPolicyError, 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, createFileSystemPolicy, createFileWriterTool, createHtmlParserTool, createHtmlParserTools, createHttpTools, createIpValidatorTool, createJsonMergeTool, createJsonParserTool, createJsonQueryTool, createJsonStringifyTool, createJsonToCsvTool, createJsonToXmlTool, createJsonTools, createJsonValidatorTool, createMathFunctionsTool, createMathOperationTools, createModelSafeToolPreset, 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, resolveFileSystemPolicy, 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, withProviderErrorMetadata, withTransaction, xmlGenerator, xmlGeneratorSchema, xmlParser, xmlParserSchema, xmlToJson, xmlToJsonSchema, xmlTools };
10761
10756
  //# sourceMappingURL=index.js.map
10762
10757
  //# sourceMappingURL=index.js.map