@agentforge/tools 0.16.85 → 0.16.86

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';
@@ -202,7 +202,7 @@ async function requestWithDestinationPolicy(config, policy = {}) {
202
202
  for (let redirectCount = 0; ; redirectCount += 1) {
203
203
  const validatedAddresses = await validateDestinationAllowed(currentUrl, effectivePolicy);
204
204
  currentConfig.lookup = createPinnedLookup(validatedAddresses);
205
- const response = await axios13(currentConfig);
205
+ const response = await axios11(currentConfig);
206
206
  if (!isRedirectStatus(response.status)) return response;
207
207
  if (effectivePolicy.allowRedirects === false) blockDestination(currentUrl, "redirect");
208
208
  if (redirectCount >= maxRedirects) throw new DestinationPolicyError(currentUrl, "redirect", `Maximum redirect count (${maxRedirects}) exceeded for ${currentUrl}`);
@@ -713,7 +713,7 @@ var DuckDuckGoProvider = class {
713
713
  async search(query, maxResults, timeout = DEFAULT_TIMEOUT) {
714
714
  return retryWithBackoff(async () => {
715
715
  try {
716
- const response = await axios13.get(
716
+ const response = await axios11.get(
717
717
  "https://api.duckduckgo.com/",
718
718
  {
719
719
  params: {
@@ -817,7 +817,7 @@ var SerperProvider = class {
817
817
  }
818
818
  return retryWithBackoff(async () => {
819
819
  try {
820
- const response = await axios13.post(
820
+ const response = await axios11.post(
821
821
  "https://google.serper.dev/search",
822
822
  {
823
823
  q: query,
@@ -1251,7 +1251,7 @@ function createSearchConfluenceTool(getAuth, getAuthHeader2, logger19) {
1251
1251
  logger19.info("search-confluence called", { query, limit });
1252
1252
  try {
1253
1253
  const { ATLASSIAN_SITE_URL } = getAuth();
1254
- const response = await axios13.get(`${ATLASSIAN_SITE_URL}/wiki/rest/api/content/search`, {
1254
+ const response = await axios11.get(`${ATLASSIAN_SITE_URL}/wiki/rest/api/content/search`, {
1255
1255
  headers: {
1256
1256
  Authorization: getAuthHeader2(),
1257
1257
  Accept: "application/json"
@@ -1313,7 +1313,7 @@ function createGetConfluencePageTool(getAuth, getAuthHeader2, logger19) {
1313
1313
  logger19.info("get-confluence-page called", { page_id });
1314
1314
  try {
1315
1315
  const { ATLASSIAN_SITE_URL } = getAuth();
1316
- const response = await axios13.get(`${ATLASSIAN_SITE_URL}/wiki/rest/api/content/${page_id}`, {
1316
+ const response = await axios11.get(`${ATLASSIAN_SITE_URL}/wiki/rest/api/content/${page_id}`, {
1317
1317
  headers: {
1318
1318
  Authorization: getAuthHeader2(),
1319
1319
  Accept: "application/json"
@@ -1364,7 +1364,7 @@ function createListConfluenceSpacesTool(getAuth, getAuthHeader2, logger19) {
1364
1364
  logger19.info("list-confluence-spaces called", { limit });
1365
1365
  try {
1366
1366
  const { ATLASSIAN_SITE_URL } = getAuth();
1367
- const response = await axios13.get(`${ATLASSIAN_SITE_URL}/wiki/rest/api/space`, {
1367
+ const response = await axios11.get(`${ATLASSIAN_SITE_URL}/wiki/rest/api/space`, {
1368
1368
  headers: {
1369
1369
  Authorization: getAuthHeader2(),
1370
1370
  Accept: "application/json"
@@ -1410,7 +1410,7 @@ function createGetSpacePagesTool(getAuth, getAuthHeader2, logger19) {
1410
1410
  logger19.info("get-space-pages called", { space_key, limit });
1411
1411
  try {
1412
1412
  const { ATLASSIAN_SITE_URL } = getAuth();
1413
- const response = await axios13.get(`${ATLASSIAN_SITE_URL}/wiki/rest/api/content`, {
1413
+ const response = await axios11.get(`${ATLASSIAN_SITE_URL}/wiki/rest/api/content`, {
1414
1414
  headers: {
1415
1415
  Authorization: getAuthHeader2(),
1416
1416
  Accept: "application/json"
@@ -1484,7 +1484,7 @@ function createCreateConfluencePageTool(getAuth, getAuthHeader2, logger19) {
1484
1484
  if (parent_page_id) {
1485
1485
  pageData.ancestors = [{ id: parent_page_id }];
1486
1486
  }
1487
- const response = await axios13.post(
1487
+ const response = await axios11.post(
1488
1488
  `${ATLASSIAN_SITE_URL}/wiki/rest/api/content`,
1489
1489
  pageData,
1490
1490
  {
@@ -1532,7 +1532,7 @@ function createUpdateConfluencePageTool(getAuth, getAuthHeader2, logger19) {
1532
1532
  logger19.info("update-confluence-page called", { page_id, title });
1533
1533
  try {
1534
1534
  const { ATLASSIAN_SITE_URL } = getAuth();
1535
- const getResponse = await axios13.get(
1535
+ const getResponse = await axios11.get(
1536
1536
  `${ATLASSIAN_SITE_URL}/wiki/rest/api/content/${page_id}`,
1537
1537
  {
1538
1538
  headers: {
@@ -1542,7 +1542,7 @@ function createUpdateConfluencePageTool(getAuth, getAuthHeader2, logger19) {
1542
1542
  }
1543
1543
  );
1544
1544
  const currentVersion = getResponse.data.version.number;
1545
- const updateResponse = await axios13.put(
1545
+ const updateResponse = await axios11.put(
1546
1546
  `${ATLASSIAN_SITE_URL}/wiki/rest/api/content/${page_id}`,
1547
1547
  {
1548
1548
  type: "page",
@@ -1603,7 +1603,7 @@ function createArchiveConfluencePageTool(getAuth, getAuthHeader2, logger19) {
1603
1603
  });
1604
1604
  try {
1605
1605
  const { ATLASSIAN_SITE_URL } = getAuth();
1606
- const getResponse = await axios13.get(
1606
+ const getResponse = await axios11.get(
1607
1607
  `${ATLASSIAN_SITE_URL}/wiki/rest/api/content/${page_id}`,
1608
1608
  {
1609
1609
  headers: {
@@ -1614,7 +1614,7 @@ function createArchiveConfluencePageTool(getAuth, getAuthHeader2, logger19) {
1614
1614
  );
1615
1615
  const currentVersion = getResponse.data.version.number;
1616
1616
  const pageData = getResponse.data;
1617
- await axios13.put(
1617
+ await axios11.put(
1618
1618
  `${ATLASSIAN_SITE_URL}/wiki/rest/api/content/${page_id}`,
1619
1619
  {
1620
1620
  version: { number: currentVersion + 1 },
@@ -2340,9 +2340,21 @@ function createTransformerTools(config = {}) {
2340
2340
  createObjectOmitTool()
2341
2341
  ];
2342
2342
  }
2343
+ var neo4jJsonValueSchema = z.lazy(() => z.union([
2344
+ z.string(),
2345
+ z.number().finite(),
2346
+ z.boolean(),
2347
+ z.null(),
2348
+ z.array(neo4jJsonValueSchema),
2349
+ z.record(z.string(), neo4jJsonValueSchema)
2350
+ ])).describe("JSON-safe Neo4j property value");
2351
+ var neo4jPropertiesSchema = z.record(
2352
+ z.string(),
2353
+ neo4jJsonValueSchema
2354
+ );
2343
2355
  var neo4jQuerySchema = z.object({
2344
2356
  cypher: z.string().describe("Cypher query to execute"),
2345
- parameters: z.record(z.any()).optional().describe("Query parameters for parameterized queries"),
2357
+ parameters: neo4jPropertiesSchema.optional().describe("Query parameters for parameterized queries"),
2346
2358
  database: z.string().optional().describe("Database name (defaults to configured database)")
2347
2359
  });
2348
2360
  var neo4jGetSchemaSchema = z.object({
@@ -2350,7 +2362,7 @@ var neo4jGetSchemaSchema = z.object({
2350
2362
  });
2351
2363
  var neo4jFindNodesSchema = z.object({
2352
2364
  label: z.string().describe("Node label to search for"),
2353
- properties: z.record(z.any()).optional().describe("Properties to match (key-value pairs)"),
2365
+ properties: neo4jPropertiesSchema.optional().describe("Properties to match (key-value pairs)"),
2354
2366
  limit: z.number().default(100).describe("Maximum number of nodes to return"),
2355
2367
  database: z.string().optional().describe("Database name (defaults to configured database)")
2356
2368
  });
@@ -2380,7 +2392,7 @@ var neo4jVectorSearchWithEmbeddingSchema = z.object({
2380
2392
  });
2381
2393
  var neo4jCreateNodeWithEmbeddingSchema = z.object({
2382
2394
  label: z.string().describe("Node label"),
2383
- properties: z.record(z.string(), z.any().describe("Property value")).describe("Node properties (key-value pairs)"),
2395
+ properties: neo4jPropertiesSchema.describe("Node properties (key-value pairs)"),
2384
2396
  textProperty: z.string().describe("Name of the property containing text to embed"),
2385
2397
  embeddingProperty: z.string().default("embedding").describe("Name of the property to store the embedding vector"),
2386
2398
  model: z.string().optional().describe("Embedding model to use (defaults to configured model)"),
@@ -2548,6 +2560,13 @@ async function initializeFromEnv() {
2548
2560
  }
2549
2561
 
2550
2562
  // src/data/neo4j/embeddings/utils.ts
2563
+ function withProviderErrorMetadata(error, message) {
2564
+ const wrappedError = new Error(message);
2565
+ if (!isRecord2(error)) return wrappedError;
2566
+ if (typeof error.code === "string") wrappedError.code = error.code;
2567
+ if (error.response !== void 0) wrappedError.response = error.response;
2568
+ return wrappedError;
2569
+ }
2551
2570
  var DEFAULT_RETRY_CONFIG2 = {
2552
2571
  maxRetries: 3,
2553
2572
  initialDelay: 1e3,
@@ -2556,17 +2575,25 @@ var DEFAULT_RETRY_CONFIG2 = {
2556
2575
  // 10 seconds
2557
2576
  backoffMultiplier: 2
2558
2577
  };
2578
+ function isRecord2(value) {
2579
+ return typeof value === "object" && value !== null;
2580
+ }
2559
2581
  function isRetryableError2(error) {
2560
- if (error.code === "ECONNRESET" || error.code === "ETIMEDOUT" || error.code === "ENOTFOUND") {
2582
+ if (!isRecord2(error)) return false;
2583
+ const response = isRecord2(error.response) ? error.response : void 0;
2584
+ const status = typeof response?.status === "number" ? response.status : void 0;
2585
+ const code = typeof error.code === "string" ? error.code : void 0;
2586
+ const message = typeof error.message === "string" ? error.message : void 0;
2587
+ if (code === "ECONNRESET" || code === "ETIMEDOUT" || code === "ENOTFOUND") {
2561
2588
  return true;
2562
2589
  }
2563
- if (error.code === "ECONNABORTED" || error.message?.includes("timeout")) {
2590
+ if (code === "ECONNABORTED" || message?.includes("timeout")) {
2564
2591
  return true;
2565
2592
  }
2566
- if (error.response?.status >= 500 && error.response?.status < 600) {
2593
+ if (status !== void 0 && status >= 500 && status < 600) {
2567
2594
  return true;
2568
2595
  }
2569
- if (error.response?.status === 429) {
2596
+ if (status === 429) {
2570
2597
  return true;
2571
2598
  }
2572
2599
  return false;
@@ -2679,7 +2706,7 @@ var OpenAIEmbeddingProvider = class {
2679
2706
  const modelToUse = model || this.defaultModel;
2680
2707
  return retryWithBackoff2(async () => {
2681
2708
  try {
2682
- const response = await axios13.post(
2709
+ const response = await axios11.post(
2683
2710
  `${this.baseURL}/embeddings`,
2684
2711
  {
2685
2712
  input: text,
@@ -2708,25 +2735,18 @@ var OpenAIEmbeddingProvider = class {
2708
2735
  }
2709
2736
  };
2710
2737
  } 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
- );
2738
+ let message;
2739
+ const response = axios11.isAxiosError(error) ? error.response : void 0;
2740
+ if (response?.status === 401) {
2741
+ message = "Invalid OpenAI API key. Get your key at https://platform.openai.com/api-keys";
2742
+ } else if (response?.status === 429) {
2743
+ message = "OpenAI API rate limit exceeded. Please try again later or upgrade your plan.";
2744
+ } else if (response?.status === 400) {
2745
+ message = `OpenAI API error: ${response.data?.error?.message || "Bad request"}`;
2724
2746
  } else {
2725
- wrappedError = new Error(`OpenAI embedding generation failed: ${error.message}`);
2747
+ message = `OpenAI embedding generation failed: ${error instanceof Error ? error.message : "Unknown error"}`;
2726
2748
  }
2727
- if (error.code) wrappedError.code = error.code;
2728
- if (error.response) wrappedError.response = error.response;
2729
- throw wrappedError;
2749
+ throw withProviderErrorMetadata(error, message);
2730
2750
  }
2731
2751
  });
2732
2752
  }
@@ -2743,7 +2763,7 @@ var OpenAIEmbeddingProvider = class {
2743
2763
  const modelToUse = model || this.defaultModel;
2744
2764
  return retryWithBackoff2(async () => {
2745
2765
  try {
2746
- const response = await axios13.post(
2766
+ const response = await axios11.post(
2747
2767
  `${this.baseURL}/embeddings`,
2748
2768
  {
2749
2769
  input: texts,
@@ -2773,25 +2793,18 @@ var OpenAIEmbeddingProvider = class {
2773
2793
  }
2774
2794
  };
2775
2795
  } 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
- );
2796
+ let message;
2797
+ const response = axios11.isAxiosError(error) ? error.response : void 0;
2798
+ if (response?.status === 401) {
2799
+ message = "Invalid OpenAI API key. Get your key at https://platform.openai.com/api-keys";
2800
+ } else if (response?.status === 429) {
2801
+ message = "OpenAI API rate limit exceeded. Please try again later or upgrade your plan.";
2802
+ } else if (response?.status === 400) {
2803
+ message = `OpenAI API error: ${response.data?.error?.message || "Bad request"}`;
2789
2804
  } else {
2790
- wrappedError = new Error(`OpenAI batch embedding generation failed: ${error.message}`);
2805
+ message = `OpenAI batch embedding generation failed: ${error instanceof Error ? error.message : "Unknown error"}`;
2791
2806
  }
2792
- if (error.code) wrappedError.code = error.code;
2793
- if (error.response) wrappedError.response = error.response;
2794
- throw wrappedError;
2807
+ throw withProviderErrorMetadata(error, message);
2795
2808
  }
2796
2809
  });
2797
2810
  }
@@ -2823,7 +2836,7 @@ var CohereEmbeddingProvider = class {
2823
2836
  const modelToUse = model || this.defaultModel;
2824
2837
  return retryWithBackoff2(async () => {
2825
2838
  try {
2826
- const response = await axios13.post(
2839
+ const response = await axios11.post(
2827
2840
  `${this.baseUrl}/embed`,
2828
2841
  {
2829
2842
  texts,
@@ -2851,22 +2864,20 @@ var CohereEmbeddingProvider = class {
2851
2864
  } : void 0
2852
2865
  };
2853
2866
  } catch (error) {
2854
- if (axios13.isAxiosError(error)) {
2867
+ if (axios11.isAxiosError(error)) {
2855
2868
  const status = error.response?.status;
2856
- const message = error.response?.data?.message || error.message;
2857
- let wrappedError;
2869
+ const providerMessage = error.response?.data?.message || error.message;
2870
+ let message;
2858
2871
  if (status === 401) {
2859
- wrappedError = new Error(`Cohere API authentication failed. Please check your COHERE_API_KEY. ${message}`);
2872
+ message = `Cohere API authentication failed. Please check your COHERE_API_KEY. ${providerMessage}`;
2860
2873
  } else if (status === 429) {
2861
- wrappedError = new Error(`Cohere API rate limit exceeded. ${message}`);
2874
+ message = `Cohere API rate limit exceeded. ${providerMessage}`;
2862
2875
  } else if (status === 400) {
2863
- wrappedError = new Error(`Cohere API request invalid: ${message}`);
2876
+ message = `Cohere API request invalid: ${providerMessage}`;
2864
2877
  } else {
2865
- wrappedError = new Error(`Cohere API error (${status}): ${message}`);
2878
+ message = `Cohere API error (${status}): ${providerMessage}`;
2866
2879
  }
2867
- if (error.code) wrappedError.code = error.code;
2868
- if (error.response) wrappedError.response = error.response;
2869
- throw wrappedError;
2880
+ throw withProviderErrorMetadata(error, message);
2870
2881
  }
2871
2882
  throw error;
2872
2883
  }
@@ -2891,7 +2902,7 @@ var HuggingFaceEmbeddingProvider = class {
2891
2902
  const modelToUse = model || this.defaultModel;
2892
2903
  return retryWithBackoff2(async () => {
2893
2904
  try {
2894
- const response = await axios13.post(
2905
+ const response = await axios11.post(
2895
2906
  `${this.baseUrl}/${modelToUse}`,
2896
2907
  {
2897
2908
  inputs: text,
@@ -2913,24 +2924,22 @@ var HuggingFaceEmbeddingProvider = class {
2913
2924
  dimensions: embedding.length
2914
2925
  };
2915
2926
  } catch (error) {
2916
- if (axios13.isAxiosError(error)) {
2927
+ if (axios11.isAxiosError(error)) {
2917
2928
  const status = error.response?.status;
2918
2929
  const message = error.response?.data?.error || error.message;
2919
- let wrappedError;
2930
+ let messageText;
2920
2931
  if (status === 401) {
2921
- wrappedError = new Error(`HuggingFace API authentication failed. Please check your HUGGINGFACE_API_KEY. ${message}`);
2932
+ messageText = `HuggingFace API authentication failed. Please check your HUGGINGFACE_API_KEY. ${message}`;
2922
2933
  } else if (status === 429) {
2923
- wrappedError = new Error(`HuggingFace API rate limit exceeded. ${message}`);
2934
+ messageText = `HuggingFace API rate limit exceeded. ${message}`;
2924
2935
  } else if (status === 400) {
2925
- wrappedError = new Error(`HuggingFace API request invalid: ${message}`);
2936
+ messageText = `HuggingFace API request invalid: ${message}`;
2926
2937
  } else if (status === 503) {
2927
- wrappedError = new Error(`HuggingFace model is loading. Please retry in a moment. ${message}`);
2938
+ messageText = `HuggingFace model is loading. Please retry in a moment. ${message}`;
2928
2939
  } else {
2929
- wrappedError = new Error(`HuggingFace API error (${status}): ${message}`);
2940
+ messageText = `HuggingFace API error (${status}): ${message}`;
2930
2941
  }
2931
- if (error.code) wrappedError.code = error.code;
2932
- if (error.response) wrappedError.response = error.response;
2933
- throw wrappedError;
2942
+ throw withProviderErrorMetadata(error, messageText);
2934
2943
  }
2935
2944
  throw error;
2936
2945
  }
@@ -2940,7 +2949,7 @@ var HuggingFaceEmbeddingProvider = class {
2940
2949
  const modelToUse = model || this.defaultModel;
2941
2950
  return retryWithBackoff2(async () => {
2942
2951
  try {
2943
- const response = await axios13.post(
2952
+ const response = await axios11.post(
2944
2953
  `${this.baseUrl}/${modelToUse}`,
2945
2954
  {
2946
2955
  inputs: texts,
@@ -2963,24 +2972,22 @@ var HuggingFaceEmbeddingProvider = class {
2963
2972
  dimensions
2964
2973
  };
2965
2974
  } catch (error) {
2966
- if (axios13.isAxiosError(error)) {
2975
+ if (axios11.isAxiosError(error)) {
2967
2976
  const status = error.response?.status;
2968
2977
  const message = error.response?.data?.error || error.message;
2969
- let wrappedError;
2978
+ let messageText;
2970
2979
  if (status === 401) {
2971
- wrappedError = new Error(`HuggingFace API authentication failed. Please check your HUGGINGFACE_API_KEY. ${message}`);
2980
+ messageText = `HuggingFace API authentication failed. Please check your HUGGINGFACE_API_KEY. ${message}`;
2972
2981
  } else if (status === 429) {
2973
- wrappedError = new Error(`HuggingFace API rate limit exceeded. ${message}`);
2982
+ messageText = `HuggingFace API rate limit exceeded. ${message}`;
2974
2983
  } else if (status === 400) {
2975
- wrappedError = new Error(`HuggingFace API request invalid: ${message}`);
2984
+ messageText = `HuggingFace API request invalid: ${message}`;
2976
2985
  } else if (status === 503) {
2977
- wrappedError = new Error(`HuggingFace model is loading. Please retry in a moment. ${message}`);
2986
+ messageText = `HuggingFace model is loading. Please retry in a moment. ${message}`;
2978
2987
  } else {
2979
- wrappedError = new Error(`HuggingFace API error (${status}): ${message}`);
2988
+ messageText = `HuggingFace API error (${status}): ${message}`;
2980
2989
  }
2981
- if (error.code) wrappedError.code = error.code;
2982
- if (error.response) wrappedError.response = error.response;
2983
- throw wrappedError;
2990
+ throw withProviderErrorMetadata(error, messageText);
2984
2991
  }
2985
2992
  throw error;
2986
2993
  }
@@ -3014,7 +3021,7 @@ var VoyageEmbeddingProvider = class {
3014
3021
  const modelToUse = model || this.defaultModel;
3015
3022
  return retryWithBackoff2(async () => {
3016
3023
  try {
3017
- const response = await axios13.post(
3024
+ const response = await axios11.post(
3018
3025
  `${this.baseUrl}/embeddings`,
3019
3026
  {
3020
3027
  input: texts,
@@ -3041,22 +3048,20 @@ var VoyageEmbeddingProvider = class {
3041
3048
  } : void 0
3042
3049
  };
3043
3050
  } catch (error) {
3044
- if (axios13.isAxiosError(error)) {
3051
+ if (axios11.isAxiosError(error)) {
3045
3052
  const status = error.response?.status;
3046
3053
  const message = error.response?.data?.message || error.message;
3047
- let wrappedError;
3054
+ let messageText;
3048
3055
  if (status === 401) {
3049
- wrappedError = new Error(`Voyage AI API authentication failed. Please check your VOYAGE_API_KEY. ${message}`);
3056
+ messageText = `Voyage AI API authentication failed. Please check your VOYAGE_API_KEY. ${message}`;
3050
3057
  } else if (status === 429) {
3051
- wrappedError = new Error(`Voyage AI API rate limit exceeded. ${message}`);
3058
+ messageText = `Voyage AI API rate limit exceeded. ${message}`;
3052
3059
  } else if (status === 400) {
3053
- wrappedError = new Error(`Voyage AI API request invalid: ${message}`);
3060
+ messageText = `Voyage AI API request invalid: ${message}`;
3054
3061
  } else {
3055
- wrappedError = new Error(`Voyage AI API error (${status}): ${message}`);
3062
+ messageText = `Voyage AI API error (${status}): ${message}`;
3056
3063
  }
3057
- if (error.code) wrappedError.code = error.code;
3058
- if (error.response) wrappedError.response = error.response;
3059
- throw wrappedError;
3064
+ throw withProviderErrorMetadata(error, messageText);
3060
3065
  }
3061
3066
  throw error;
3062
3067
  }
@@ -3080,7 +3085,7 @@ var OllamaEmbeddingProvider = class {
3080
3085
  const modelToUse = model || this.defaultModel;
3081
3086
  return retryWithBackoff2(async () => {
3082
3087
  try {
3083
- const response = await axios13.post(
3088
+ const response = await axios11.post(
3084
3089
  `${this.baseUrl}/api/embeddings`,
3085
3090
  {
3086
3091
  model: modelToUse,
@@ -3099,22 +3104,20 @@ var OllamaEmbeddingProvider = class {
3099
3104
  dimensions: embedding.length
3100
3105
  };
3101
3106
  } catch (error) {
3102
- if (axios13.isAxiosError(error)) {
3107
+ if (axios11.isAxiosError(error)) {
3103
3108
  const status = error.response?.status;
3104
3109
  const message = error.response?.data?.error || error.message;
3105
- let wrappedError;
3110
+ let messageText;
3106
3111
  if (error.code === "ECONNREFUSED") {
3107
- wrappedError = new Error(`Cannot connect to Ollama at ${this.baseUrl}. Make sure Ollama is running locally.`);
3112
+ messageText = `Cannot connect to Ollama at ${this.baseUrl}. Make sure Ollama is running locally.`;
3108
3113
  } else if (status === 404) {
3109
- wrappedError = new Error(`Ollama model not found. Pull it with: ollama pull <model-name>`);
3114
+ messageText = "Ollama model not found. Pull it with: ollama pull <model-name>";
3110
3115
  } else if (status === 400) {
3111
- wrappedError = new Error(`Ollama API request invalid: ${message}`);
3116
+ messageText = `Ollama API request invalid: ${message}`;
3112
3117
  } else {
3113
- wrappedError = new Error(`Ollama API error (${status}): ${message}`);
3118
+ messageText = `Ollama API error (${status}): ${message}`;
3114
3119
  }
3115
- if (error.code) wrappedError.code = error.code;
3116
- if (error.response) wrappedError.response = error.response;
3117
- throw wrappedError;
3120
+ throw withProviderErrorMetadata(error, messageText);
3118
3121
  }
3119
3122
  throw error;
3120
3123
  }
@@ -3706,7 +3709,7 @@ function createNeo4jFindNodesTool() {
3706
3709
  parameters = { ...parameters, ...filterParams };
3707
3710
  }
3708
3711
  cypher += ` RETURN n LIMIT $limit`;
3709
- parameters.limit = input.limit;
3712
+ parameters.limit = input.limit ?? 100;
3710
3713
  const result = await session.run(cypher, parameters);
3711
3714
  const formattedResults = formatResults(result.records);
3712
3715
  return {
@@ -10646,11 +10649,11 @@ var AskHumanInputSchema = z.object({
10646
10649
  });
10647
10650
  var logLevel3 = process.env.LOG_LEVEL?.toLowerCase() || LogLevel.INFO;
10648
10651
  var logger18 = createLogger("agentforge:tools:agent:ask-human", { level: logLevel3 });
10649
- function isRecord2(value) {
10652
+ function isRecord3(value) {
10650
10653
  return typeof value === "object" && value !== null;
10651
10654
  }
10652
10655
  function resolveInterrupt(module) {
10653
- if (!isRecord2(module)) {
10656
+ if (!isRecord3(module)) {
10654
10657
  return void 0;
10655
10658
  }
10656
10659
  const candidate = module.interrupt;
@@ -10757,6 +10760,6 @@ function createAskHumanTool() {
10757
10760
  }
10758
10761
  var askHumanTool = createAskHumanTool();
10759
10762
 
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 };
10763
+ 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
10764
  //# sourceMappingURL=index.js.map
10762
10765
  //# sourceMappingURL=index.js.map