@agentforge/tools 0.18.6 → 0.18.7
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.cjs +92 -65
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +92 -65
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -2890,6 +2890,61 @@ var OpenAIEmbeddingProvider = class {
|
|
|
2890
2890
|
});
|
|
2891
2891
|
}
|
|
2892
2892
|
};
|
|
2893
|
+
async function generateHostedEmbedding(text, model, generateBatch) {
|
|
2894
|
+
const result = await generateBatch([text], model);
|
|
2895
|
+
return {
|
|
2896
|
+
embedding: result.embeddings[0],
|
|
2897
|
+
model: result.model,
|
|
2898
|
+
dimensions: result.dimensions,
|
|
2899
|
+
usage: result.usage
|
|
2900
|
+
};
|
|
2901
|
+
}
|
|
2902
|
+
function generateHostedBatchEmbeddings({
|
|
2903
|
+
texts,
|
|
2904
|
+
model,
|
|
2905
|
+
request: request2,
|
|
2906
|
+
formatError
|
|
2907
|
+
}) {
|
|
2908
|
+
return retryWithBackoff2(async () => {
|
|
2909
|
+
try {
|
|
2910
|
+
const { embeddings, usage } = await request2(texts, model);
|
|
2911
|
+
return {
|
|
2912
|
+
embeddings,
|
|
2913
|
+
model,
|
|
2914
|
+
dimensions: embeddings[0]?.length || 0,
|
|
2915
|
+
usage
|
|
2916
|
+
};
|
|
2917
|
+
} catch (error) {
|
|
2918
|
+
if (!axios5__default.default.isAxiosError(error)) throw error;
|
|
2919
|
+
const status = error.response?.status;
|
|
2920
|
+
const providerMessage = error.response?.data?.message || error.message;
|
|
2921
|
+
throw withProviderErrorMetadata(
|
|
2922
|
+
error,
|
|
2923
|
+
formatError({
|
|
2924
|
+
kind: classifyHttpError(status),
|
|
2925
|
+
status,
|
|
2926
|
+
providerMessage
|
|
2927
|
+
})
|
|
2928
|
+
);
|
|
2929
|
+
}
|
|
2930
|
+
});
|
|
2931
|
+
}
|
|
2932
|
+
function classifyHttpError(status) {
|
|
2933
|
+
if (status === 401) return "authentication";
|
|
2934
|
+
if (status === 429) return "rate-limit";
|
|
2935
|
+
if (status === 400) return "invalid-request";
|
|
2936
|
+
return "other";
|
|
2937
|
+
}
|
|
2938
|
+
|
|
2939
|
+
// src/data/neo4j/embeddings/providers/cohere.ts
|
|
2940
|
+
function formatCohereError({ kind, status, providerMessage }) {
|
|
2941
|
+
if (kind === "authentication") {
|
|
2942
|
+
return `Cohere API authentication failed. Please check your COHERE_API_KEY. ${providerMessage}`;
|
|
2943
|
+
}
|
|
2944
|
+
if (kind === "rate-limit") return `Cohere API rate limit exceeded. ${providerMessage}`;
|
|
2945
|
+
if (kind === "invalid-request") return `Cohere API request invalid: ${providerMessage}`;
|
|
2946
|
+
return `Cohere API error (${status}): ${providerMessage}`;
|
|
2947
|
+
}
|
|
2893
2948
|
var CohereEmbeddingProvider = class {
|
|
2894
2949
|
name = "cohere";
|
|
2895
2950
|
defaultModel = "embed-english-v3.0";
|
|
@@ -2905,62 +2960,43 @@ var CohereEmbeddingProvider = class {
|
|
|
2905
2960
|
return !!this.apiKey;
|
|
2906
2961
|
}
|
|
2907
2962
|
async generateEmbedding(text, model) {
|
|
2908
|
-
|
|
2909
|
-
|
|
2910
|
-
|
|
2911
|
-
|
|
2912
|
-
|
|
2913
|
-
usage: result.usage
|
|
2914
|
-
};
|
|
2963
|
+
return generateHostedEmbedding(
|
|
2964
|
+
text,
|
|
2965
|
+
model,
|
|
2966
|
+
(texts, batchModel) => this.generateBatchEmbeddings(texts, batchModel)
|
|
2967
|
+
);
|
|
2915
2968
|
}
|
|
2916
2969
|
async generateBatchEmbeddings(texts, model) {
|
|
2917
2970
|
const modelToUse = model || this.defaultModel;
|
|
2918
|
-
return
|
|
2919
|
-
|
|
2971
|
+
return generateHostedBatchEmbeddings({
|
|
2972
|
+
texts,
|
|
2973
|
+
model: modelToUse,
|
|
2974
|
+
formatError: formatCohereError,
|
|
2975
|
+
request: async (requestTexts, requestModel) => {
|
|
2920
2976
|
const response = await axios5__default.default.post(
|
|
2921
2977
|
`${this.baseUrl}/embed`,
|
|
2922
2978
|
{
|
|
2923
|
-
texts,
|
|
2924
|
-
model:
|
|
2979
|
+
texts: requestTexts,
|
|
2980
|
+
model: requestModel,
|
|
2925
2981
|
input_type: "search_document",
|
|
2926
2982
|
// For storing in vector DB
|
|
2927
2983
|
embedding_types: ["float"]
|
|
2928
2984
|
},
|
|
2929
2985
|
{
|
|
2930
2986
|
headers: {
|
|
2931
|
-
|
|
2987
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
2932
2988
|
"Content-Type": "application/json"
|
|
2933
2989
|
}
|
|
2934
2990
|
}
|
|
2935
2991
|
);
|
|
2936
2992
|
const embeddings = response.data.embeddings.float;
|
|
2937
|
-
const dimensions = embeddings[0]?.length || 0;
|
|
2938
2993
|
return {
|
|
2939
2994
|
embeddings,
|
|
2940
|
-
model: modelToUse,
|
|
2941
|
-
dimensions,
|
|
2942
2995
|
usage: response.data.meta?.billed_units ? {
|
|
2943
2996
|
promptTokens: response.data.meta.billed_units.input_tokens || 0,
|
|
2944
2997
|
totalTokens: response.data.meta.billed_units.input_tokens || 0
|
|
2945
2998
|
} : void 0
|
|
2946
2999
|
};
|
|
2947
|
-
} catch (error) {
|
|
2948
|
-
if (axios5__default.default.isAxiosError(error)) {
|
|
2949
|
-
const status = error.response?.status;
|
|
2950
|
-
const providerMessage = error.response?.data?.message || error.message;
|
|
2951
|
-
let message;
|
|
2952
|
-
if (status === 401) {
|
|
2953
|
-
message = `Cohere API authentication failed. Please check your COHERE_API_KEY. ${providerMessage}`;
|
|
2954
|
-
} else if (status === 429) {
|
|
2955
|
-
message = `Cohere API rate limit exceeded. ${providerMessage}`;
|
|
2956
|
-
} else if (status === 400) {
|
|
2957
|
-
message = `Cohere API request invalid: ${providerMessage}`;
|
|
2958
|
-
} else {
|
|
2959
|
-
message = `Cohere API error (${status}): ${providerMessage}`;
|
|
2960
|
-
}
|
|
2961
|
-
throw withProviderErrorMetadata(error, message);
|
|
2962
|
-
}
|
|
2963
|
-
throw error;
|
|
2964
3000
|
}
|
|
2965
3001
|
});
|
|
2966
3002
|
}
|
|
@@ -3049,6 +3085,14 @@ var HuggingFaceEmbeddingProvider = class {
|
|
|
3049
3085
|
});
|
|
3050
3086
|
}
|
|
3051
3087
|
};
|
|
3088
|
+
function formatVoyageError({ kind, status, providerMessage }) {
|
|
3089
|
+
if (kind === "authentication") {
|
|
3090
|
+
return `Voyage AI API authentication failed. Please check your VOYAGE_API_KEY. ${providerMessage}`;
|
|
3091
|
+
}
|
|
3092
|
+
if (kind === "rate-limit") return `Voyage AI API rate limit exceeded. ${providerMessage}`;
|
|
3093
|
+
if (kind === "invalid-request") return `Voyage AI API request invalid: ${providerMessage}`;
|
|
3094
|
+
return `Voyage AI API error (${status}): ${providerMessage}`;
|
|
3095
|
+
}
|
|
3052
3096
|
var VoyageEmbeddingProvider = class {
|
|
3053
3097
|
name = "voyage";
|
|
3054
3098
|
defaultModel = "voyage-2";
|
|
@@ -3064,61 +3108,44 @@ var VoyageEmbeddingProvider = class {
|
|
|
3064
3108
|
return !!this.apiKey;
|
|
3065
3109
|
}
|
|
3066
3110
|
async generateEmbedding(text, model) {
|
|
3067
|
-
|
|
3068
|
-
|
|
3069
|
-
|
|
3070
|
-
|
|
3071
|
-
|
|
3072
|
-
usage: result.usage
|
|
3073
|
-
};
|
|
3111
|
+
return generateHostedEmbedding(
|
|
3112
|
+
text,
|
|
3113
|
+
model,
|
|
3114
|
+
(texts, batchModel) => this.generateBatchEmbeddings(texts, batchModel)
|
|
3115
|
+
);
|
|
3074
3116
|
}
|
|
3075
3117
|
async generateBatchEmbeddings(texts, model) {
|
|
3076
3118
|
const modelToUse = model || this.defaultModel;
|
|
3077
|
-
return
|
|
3078
|
-
|
|
3119
|
+
return generateHostedBatchEmbeddings({
|
|
3120
|
+
texts,
|
|
3121
|
+
model: modelToUse,
|
|
3122
|
+
formatError: formatVoyageError,
|
|
3123
|
+
request: async (requestTexts, requestModel) => {
|
|
3079
3124
|
const response = await axios5__default.default.post(
|
|
3080
3125
|
`${this.baseUrl}/embeddings`,
|
|
3081
3126
|
{
|
|
3082
|
-
input:
|
|
3083
|
-
model:
|
|
3127
|
+
input: requestTexts,
|
|
3128
|
+
model: requestModel,
|
|
3084
3129
|
input_type: "document"
|
|
3085
3130
|
// For storing in vector DB
|
|
3086
3131
|
},
|
|
3087
3132
|
{
|
|
3088
3133
|
headers: {
|
|
3089
|
-
|
|
3134
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
3090
3135
|
"Content-Type": "application/json"
|
|
3091
3136
|
}
|
|
3092
3137
|
}
|
|
3093
3138
|
);
|
|
3094
|
-
const embeddings = response.data.data.map(
|
|
3095
|
-
|
|
3139
|
+
const embeddings = response.data.data.map(
|
|
3140
|
+
(item) => item.embedding
|
|
3141
|
+
);
|
|
3096
3142
|
return {
|
|
3097
3143
|
embeddings,
|
|
3098
|
-
model: modelToUse,
|
|
3099
|
-
dimensions,
|
|
3100
3144
|
usage: response.data.usage ? {
|
|
3101
3145
|
promptTokens: response.data.usage.total_tokens || 0,
|
|
3102
3146
|
totalTokens: response.data.usage.total_tokens || 0
|
|
3103
3147
|
} : void 0
|
|
3104
3148
|
};
|
|
3105
|
-
} catch (error) {
|
|
3106
|
-
if (axios5__default.default.isAxiosError(error)) {
|
|
3107
|
-
const status = error.response?.status;
|
|
3108
|
-
const message = error.response?.data?.message || error.message;
|
|
3109
|
-
let messageText;
|
|
3110
|
-
if (status === 401) {
|
|
3111
|
-
messageText = `Voyage AI API authentication failed. Please check your VOYAGE_API_KEY. ${message}`;
|
|
3112
|
-
} else if (status === 429) {
|
|
3113
|
-
messageText = `Voyage AI API rate limit exceeded. ${message}`;
|
|
3114
|
-
} else if (status === 400) {
|
|
3115
|
-
messageText = `Voyage AI API request invalid: ${message}`;
|
|
3116
|
-
} else {
|
|
3117
|
-
messageText = `Voyage AI API error (${status}): ${message}`;
|
|
3118
|
-
}
|
|
3119
|
-
throw withProviderErrorMetadata(error, messageText);
|
|
3120
|
-
}
|
|
3121
|
-
throw error;
|
|
3122
3149
|
}
|
|
3123
3150
|
});
|
|
3124
3151
|
}
|