@arikusi/deepseek-mcp-server 1.1.1 → 1.3.0
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/CHANGELOG.md +44 -1
- package/README.md +134 -18
- package/dist/circuit-breaker.d.ts +37 -0
- package/dist/circuit-breaker.d.ts.map +1 -0
- package/dist/circuit-breaker.js +101 -0
- package/dist/circuit-breaker.js.map +1 -0
- package/dist/config.d.ts +9 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +10 -0
- package/dist/config.js.map +1 -1
- package/dist/cost.d.ts +30 -13
- package/dist/cost.d.ts.map +1 -1
- package/dist/cost.js +58 -19
- package/dist/cost.js.map +1 -1
- package/dist/deepseek-client.d.ts +23 -5
- package/dist/deepseek-client.d.ts.map +1 -1
- package/dist/deepseek-client.js +256 -115
- package/dist/deepseek-client.js.map +1 -1
- package/dist/errors.d.ts +13 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +18 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/resources/config.d.ts +7 -0
- package/dist/resources/config.d.ts.map +1 -0
- package/dist/resources/config.js +44 -0
- package/dist/resources/config.js.map +1 -0
- package/dist/resources/index.d.ts +7 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +13 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/resources/models.d.ts +7 -0
- package/dist/resources/models.d.ts.map +1 -0
- package/dist/resources/models.js +62 -0
- package/dist/resources/models.js.map +1 -0
- package/dist/resources/usage.d.ts +7 -0
- package/dist/resources/usage.d.ts.map +1 -0
- package/dist/resources/usage.js +31 -0
- package/dist/resources/usage.js.map +1 -0
- package/dist/schemas.d.ts +72 -20
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +15 -2
- package/dist/schemas.js.map +1 -1
- package/dist/session.d.ts +68 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +184 -0
- package/dist/session.js.map +1 -0
- package/dist/tools/deepseek-chat.d.ts +2 -1
- package/dist/tools/deepseek-chat.d.ts.map +1 -1
- package/dist/tools/deepseek-chat.js +97 -32
- package/dist/tools/deepseek-chat.js.map +1 -1
- package/dist/tools/deepseek-sessions.d.ts +7 -0
- package/dist/tools/deepseek-sessions.d.ts.map +1 -0
- package/dist/tools/deepseek-sessions.js +101 -0
- package/dist/tools/deepseek-sessions.js.map +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/types.d.ts +71 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/usage-tracker.d.ts +40 -0
- package/dist/usage-tracker.d.ts.map +1 -0
- package/dist/usage-tracker.js +76 -0
- package/dist/usage-tracker.js.map +1 -0
- package/package.json +5 -2
package/dist/cost.js
CHANGED
|
@@ -1,34 +1,73 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Cost Calculation Module
|
|
3
3
|
* Handles pricing and cost formatting for DeepSeek API requests
|
|
4
|
+
*
|
|
5
|
+
* DeepSeek V3.2 unified pricing (both deepseek-chat and deepseek-reasoner):
|
|
6
|
+
* - Cache hit input: $0.028/1M tokens
|
|
7
|
+
* - Cache miss input: $0.28/1M tokens
|
|
8
|
+
* - Output: $0.42/1M tokens
|
|
4
9
|
*/
|
|
5
|
-
/** DeepSeek pricing per 1M tokens (USD) */
|
|
10
|
+
/** DeepSeek V3.2 unified pricing per 1M tokens (USD) */
|
|
6
11
|
export const PRICING = {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
},
|
|
11
|
-
'deepseek-reasoner': {
|
|
12
|
-
prompt: 0.55,
|
|
13
|
-
completion: 2.19,
|
|
14
|
-
},
|
|
12
|
+
cache_hit: 0.028,
|
|
13
|
+
cache_miss: 0.28,
|
|
14
|
+
output: 0.42,
|
|
15
15
|
};
|
|
16
16
|
/**
|
|
17
|
-
* Calculate cost for a request based on token usage
|
|
17
|
+
* Calculate cost for a request based on token usage.
|
|
18
|
+
* Supports V3.2 cache hit/miss pricing. If cache fields are absent,
|
|
19
|
+
* treats all input tokens as cache miss (backward compatible).
|
|
18
20
|
*/
|
|
19
|
-
export function calculateCost(
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
export function calculateCost(usage) {
|
|
22
|
+
const { prompt_tokens, completion_tokens, prompt_cache_hit_tokens, prompt_cache_miss_tokens, } = usage;
|
|
23
|
+
let inputCost;
|
|
24
|
+
let cacheHitRatio;
|
|
25
|
+
let cacheSavings;
|
|
26
|
+
if (prompt_cache_hit_tokens !== undefined &&
|
|
27
|
+
prompt_cache_miss_tokens !== undefined) {
|
|
28
|
+
// V3.2 cache-aware pricing
|
|
29
|
+
const hitCost = (prompt_cache_hit_tokens / 1_000_000) * PRICING.cache_hit;
|
|
30
|
+
const missCost = (prompt_cache_miss_tokens / 1_000_000) * PRICING.cache_miss;
|
|
31
|
+
inputCost = hitCost + missCost;
|
|
32
|
+
if (prompt_tokens > 0) {
|
|
33
|
+
cacheHitRatio = prompt_cache_hit_tokens / prompt_tokens;
|
|
34
|
+
}
|
|
35
|
+
// Savings = what all-miss would cost minus actual cost
|
|
36
|
+
const allMissCost = (prompt_tokens / 1_000_000) * PRICING.cache_miss;
|
|
37
|
+
cacheSavings = allMissCost - inputCost;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
// Backward compatible: treat all input as cache miss
|
|
41
|
+
inputCost = (prompt_tokens / 1_000_000) * PRICING.cache_miss;
|
|
42
|
+
}
|
|
43
|
+
const outputCost = (completion_tokens / 1_000_000) * PRICING.output;
|
|
44
|
+
return {
|
|
45
|
+
inputCost,
|
|
46
|
+
outputCost,
|
|
47
|
+
totalCost: inputCost + outputCost,
|
|
48
|
+
cacheHitRatio,
|
|
49
|
+
cacheSavings,
|
|
50
|
+
};
|
|
24
51
|
}
|
|
25
52
|
/**
|
|
26
|
-
* Format cost as readable USD string
|
|
53
|
+
* Format cost as readable USD string with optional cache savings info
|
|
27
54
|
*/
|
|
28
|
-
export function formatCost(
|
|
55
|
+
export function formatCost(breakdown) {
|
|
56
|
+
const cost = breakdown.totalCost;
|
|
57
|
+
let formatted;
|
|
29
58
|
if (cost < 0.01) {
|
|
30
|
-
|
|
59
|
+
formatted = `$${cost.toFixed(4)}`;
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
formatted = `$${cost.toFixed(2)}`;
|
|
63
|
+
}
|
|
64
|
+
if (breakdown.cacheHitRatio !== undefined &&
|
|
65
|
+
breakdown.cacheHitRatio > 0 &&
|
|
66
|
+
breakdown.cacheSavings !== undefined &&
|
|
67
|
+
breakdown.cacheSavings > 0) {
|
|
68
|
+
const pct = Math.round(breakdown.cacheHitRatio * 100);
|
|
69
|
+
formatted += ` (cache hit: ${pct}%, saved ~$${breakdown.cacheSavings.toFixed(4)})`;
|
|
31
70
|
}
|
|
32
|
-
return
|
|
71
|
+
return formatted;
|
|
33
72
|
}
|
|
34
73
|
//# sourceMappingURL=cost.js.map
|
package/dist/cost.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cost.js","sourceRoot":"","sources":["../src/cost.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cost.js","sourceRoot":"","sources":["../src/cost.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,wDAAwD;AACxD,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,SAAS,EAAE,KAAK;IAChB,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE,IAAI;CACJ,CAAC;AAaX;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,KAK7B;IACC,MAAM,EACJ,aAAa,EACb,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,GACzB,GAAG,KAAK,CAAC;IAEV,IAAI,SAAiB,CAAC;IACtB,IAAI,aAAiC,CAAC;IACtC,IAAI,YAAgC,CAAC;IAErC,IACE,uBAAuB,KAAK,SAAS;QACrC,wBAAwB,KAAK,SAAS,EACtC,CAAC;QACD,2BAA2B;QAC3B,MAAM,OAAO,GACX,CAAC,uBAAuB,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;QAC5D,MAAM,QAAQ,GACZ,CAAC,wBAAwB,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;QAC9D,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;QAE/B,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YACtB,aAAa,GAAG,uBAAuB,GAAG,aAAa,CAAC;QAC1D,CAAC;QAED,uDAAuD;QACvD,MAAM,WAAW,GAAG,CAAC,aAAa,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;QACrE,YAAY,GAAG,WAAW,GAAG,SAAS,CAAC;IACzC,CAAC;SAAM,CAAC;QACN,qDAAqD;QACrD,SAAS,GAAG,CAAC,aAAa,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAC/D,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,iBAAiB,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAEpE,OAAO;QACL,SAAS;QACT,UAAU;QACV,SAAS,EAAE,SAAS,GAAG,UAAU;QACjC,aAAa;QACb,YAAY;KACb,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,SAAwB;IACjD,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC;IACjC,IAAI,SAAiB,CAAC;IAEtB,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC;QAChB,SAAS,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACpC,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACpC,CAAC;IAED,IACE,SAAS,CAAC,aAAa,KAAK,SAAS;QACrC,SAAS,CAAC,aAAa,GAAG,CAAC;QAC3B,SAAS,CAAC,YAAY,KAAK,SAAS;QACpC,SAAS,CAAC,YAAY,GAAG,CAAC,EAC1B,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,GAAG,GAAG,CAAC,CAAC;QACtD,SAAS,IAAI,gBAAgB,GAAG,cAAc,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACrF,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -1,11 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* DeepSeek API Client
|
|
3
3
|
* Wrapper around OpenAI SDK for DeepSeek API
|
|
4
|
+
* Features: circuit breaker protection, automatic model fallback
|
|
4
5
|
*/
|
|
5
|
-
import type { ChatCompletionParams, ChatCompletionResponse } from './types.js';
|
|
6
|
+
import type { ChatCompletionParams, ChatCompletionResponse, FallbackInfo } from './types.js';
|
|
7
|
+
/** Extended response with optional fallback info */
|
|
8
|
+
export interface ChatCompletionResponseWithFallback extends ChatCompletionResponse {
|
|
9
|
+
fallback?: FallbackInfo;
|
|
10
|
+
}
|
|
6
11
|
export declare class DeepSeekClient {
|
|
7
12
|
private client;
|
|
13
|
+
private circuitBreaker;
|
|
8
14
|
constructor();
|
|
15
|
+
/**
|
|
16
|
+
* Get circuit breaker status
|
|
17
|
+
*/
|
|
18
|
+
getCircuitBreakerStatus(): import("./types.js").CircuitBreakerStatus;
|
|
9
19
|
/**
|
|
10
20
|
* Build request params shared between streaming and non-streaming
|
|
11
21
|
*/
|
|
@@ -15,14 +25,22 @@ export declare class DeepSeekClient {
|
|
|
15
25
|
*/
|
|
16
26
|
private wrapError;
|
|
17
27
|
/**
|
|
18
|
-
*
|
|
28
|
+
* Parse raw API response into ChatCompletionResponse
|
|
19
29
|
*/
|
|
20
|
-
|
|
30
|
+
private parseResponse;
|
|
21
31
|
/**
|
|
22
|
-
* Create a streaming
|
|
32
|
+
* Create a chat completion (non-streaming) with circuit breaker and fallback
|
|
33
|
+
*/
|
|
34
|
+
createChatCompletion(params: ChatCompletionParams): Promise<ChatCompletionResponseWithFallback>;
|
|
35
|
+
/**
|
|
36
|
+
* Create a streaming chat completion with circuit breaker and fallback
|
|
23
37
|
* Returns the full text after streaming completes (buffered)
|
|
24
38
|
*/
|
|
25
|
-
createStreamingChatCompletion(params: ChatCompletionParams): Promise<
|
|
39
|
+
createStreamingChatCompletion(params: ChatCompletionParams): Promise<ChatCompletionResponseWithFallback>;
|
|
40
|
+
/**
|
|
41
|
+
* Internal streaming implementation
|
|
42
|
+
*/
|
|
43
|
+
private streamInternal;
|
|
26
44
|
/**
|
|
27
45
|
* Test API connection
|
|
28
46
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deepseek-client.d.ts","sourceRoot":"","sources":["../src/deepseek-client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"deepseek-client.d.ts","sourceRoot":"","sources":["../src/deepseek-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EAItB,YAAY,EAEb,MAAM,YAAY,CAAC;AAiBpB,oDAAoD;AACpD,MAAM,WAAW,kCAAmC,SAAQ,sBAAsB;IAChF,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAwBD,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,cAAc,CAAiB;;IAevC;;OAEG;IACH,uBAAuB;IAIvB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAyD1B;;OAEG;IACH,OAAO,CAAC,SAAS;IASjB;;OAEG;IACH,OAAO,CAAC,aAAa;IAoCrB;;OAEG;IACG,oBAAoB,CACxB,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,kCAAkC,CAAC;IAoD9C;;;OAGG;IACG,6BAA6B,CACjC,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,kCAAkC,CAAC;IAwC9C;;OAEG;YACW,cAAc;IA4F5B;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;CAazC"}
|
package/dist/deepseek-client.js
CHANGED
|
@@ -1,13 +1,56 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* DeepSeek API Client
|
|
3
3
|
* Wrapper around OpenAI SDK for DeepSeek API
|
|
4
|
+
* Features: circuit breaker protection, automatic model fallback
|
|
4
5
|
*/
|
|
5
6
|
import OpenAI from 'openai';
|
|
6
7
|
import { getConfig } from './config.js';
|
|
7
|
-
import { ApiError } from './errors.js';
|
|
8
|
+
import { ApiError, CircuitBreakerOpenError, FallbackExhaustedError, } from './errors.js';
|
|
9
|
+
import { CircuitBreaker } from './circuit-breaker.js';
|
|
8
10
|
import { hasReasoningContent, getErrorMessage } from './types.js';
|
|
11
|
+
/** Parameters that are incompatible with thinking mode */
|
|
12
|
+
const THINKING_INCOMPATIBLE_PARAMS = [
|
|
13
|
+
'temperature',
|
|
14
|
+
'top_p',
|
|
15
|
+
'frequency_penalty',
|
|
16
|
+
'presence_penalty',
|
|
17
|
+
];
|
|
18
|
+
/** Fallback model mapping */
|
|
19
|
+
const FALLBACK_MODEL = {
|
|
20
|
+
'deepseek-reasoner': 'deepseek-chat',
|
|
21
|
+
'deepseek-chat': 'deepseek-reasoner',
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Check if an error is retryable / should trigger fallback
|
|
25
|
+
*/
|
|
26
|
+
function isRetryableError(error) {
|
|
27
|
+
if (error instanceof CircuitBreakerOpenError)
|
|
28
|
+
return true;
|
|
29
|
+
if (error instanceof Error) {
|
|
30
|
+
const msg = error.message.toLowerCase();
|
|
31
|
+
// Rate limit, server errors, timeouts
|
|
32
|
+
if (msg.includes('429') || msg.includes('rate limit'))
|
|
33
|
+
return true;
|
|
34
|
+
if (msg.includes('503') || msg.includes('service unavailable'))
|
|
35
|
+
return true;
|
|
36
|
+
if (msg.includes('502') || msg.includes('bad gateway'))
|
|
37
|
+
return true;
|
|
38
|
+
if (msg.includes('timeout') || msg.includes('timed out'))
|
|
39
|
+
return true;
|
|
40
|
+
if (msg.includes('econnrefused') || msg.includes('econnreset'))
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
// OpenAI SDK errors with status code
|
|
44
|
+
if (typeof error === 'object' && error !== null && 'status' in error) {
|
|
45
|
+
const status = error.status;
|
|
46
|
+
if (status === 429 || status === 502 || status === 503)
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
9
51
|
export class DeepSeekClient {
|
|
10
52
|
client;
|
|
53
|
+
circuitBreaker;
|
|
11
54
|
constructor() {
|
|
12
55
|
const config = getConfig();
|
|
13
56
|
this.client = new OpenAI({
|
|
@@ -16,22 +59,53 @@ export class DeepSeekClient {
|
|
|
16
59
|
timeout: config.requestTimeout,
|
|
17
60
|
maxRetries: config.maxRetries,
|
|
18
61
|
});
|
|
62
|
+
this.circuitBreaker = new CircuitBreaker(5, 30000);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Get circuit breaker status
|
|
66
|
+
*/
|
|
67
|
+
getCircuitBreakerStatus() {
|
|
68
|
+
return this.circuitBreaker.getStatus();
|
|
19
69
|
}
|
|
20
70
|
/**
|
|
21
71
|
* Build request params shared between streaming and non-streaming
|
|
22
72
|
*/
|
|
23
73
|
buildRequestParams(params, stream) {
|
|
74
|
+
const isThinkingEnabled = params.thinking?.type === 'enabled';
|
|
75
|
+
// Filter incompatible params when thinking mode is active
|
|
76
|
+
if (isThinkingEnabled) {
|
|
77
|
+
const filtered = [];
|
|
78
|
+
for (const key of THINKING_INCOMPATIBLE_PARAMS) {
|
|
79
|
+
if (params[key] !== undefined) {
|
|
80
|
+
filtered.push(key);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
if (filtered.length > 0) {
|
|
84
|
+
console.error(`[DeepSeek MCP] Warning: Thinking mode active, ignoring incompatible params: ${filtered.join(', ')}`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
24
87
|
const requestParams = {
|
|
25
88
|
model: params.model,
|
|
26
89
|
messages: params.messages,
|
|
27
|
-
temperature: params.temperature ?? 1.0,
|
|
90
|
+
temperature: isThinkingEnabled ? undefined : (params.temperature ?? 1.0),
|
|
28
91
|
max_tokens: params.max_tokens,
|
|
29
|
-
top_p: params.top_p,
|
|
30
|
-
frequency_penalty: params.frequency_penalty,
|
|
31
|
-
presence_penalty: params.presence_penalty,
|
|
92
|
+
top_p: isThinkingEnabled ? undefined : params.top_p,
|
|
93
|
+
frequency_penalty: isThinkingEnabled ? undefined : params.frequency_penalty,
|
|
94
|
+
presence_penalty: isThinkingEnabled ? undefined : params.presence_penalty,
|
|
32
95
|
stop: params.stop,
|
|
33
96
|
stream,
|
|
34
97
|
};
|
|
98
|
+
// Pass thinking config via extra_body (DeepSeek extension)
|
|
99
|
+
if (params.thinking) {
|
|
100
|
+
requestParams.extra_body = {
|
|
101
|
+
...requestParams.extra_body,
|
|
102
|
+
thinking: params.thinking,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
// Pass response_format for JSON mode
|
|
106
|
+
if (params.response_format) {
|
|
107
|
+
requestParams.response_format = params.response_format;
|
|
108
|
+
}
|
|
35
109
|
if (params.tools?.length) {
|
|
36
110
|
requestParams.tools = params.tools;
|
|
37
111
|
}
|
|
@@ -47,142 +121,209 @@ export class DeepSeekClient {
|
|
|
47
121
|
wrapError(error, context) {
|
|
48
122
|
if (error instanceof ApiError)
|
|
49
123
|
throw error;
|
|
124
|
+
if (error instanceof FallbackExhaustedError)
|
|
125
|
+
throw error;
|
|
126
|
+
if (error instanceof CircuitBreakerOpenError)
|
|
127
|
+
throw error;
|
|
50
128
|
const message = getErrorMessage(error);
|
|
51
129
|
const cause = error instanceof Error ? error : undefined;
|
|
52
130
|
throw new ApiError(`${context}: ${message}`, { cause });
|
|
53
131
|
}
|
|
54
132
|
/**
|
|
55
|
-
*
|
|
133
|
+
* Parse raw API response into ChatCompletionResponse
|
|
134
|
+
*/
|
|
135
|
+
parseResponse(response) {
|
|
136
|
+
const choice = response.choices[0];
|
|
137
|
+
if (!choice) {
|
|
138
|
+
throw new ApiError('No response from DeepSeek API');
|
|
139
|
+
}
|
|
140
|
+
const reasoning_content = hasReasoningContent(choice.message)
|
|
141
|
+
? choice.message.reasoning_content
|
|
142
|
+
: undefined;
|
|
143
|
+
const tool_calls = choice.message.tool_calls
|
|
144
|
+
?.map((tc) => ({
|
|
145
|
+
id: tc.id,
|
|
146
|
+
type: 'function',
|
|
147
|
+
function: {
|
|
148
|
+
name: tc.function.name,
|
|
149
|
+
arguments: tc.function.arguments,
|
|
150
|
+
},
|
|
151
|
+
}));
|
|
152
|
+
return {
|
|
153
|
+
content: choice.message.content || '',
|
|
154
|
+
reasoning_content,
|
|
155
|
+
model: response.model,
|
|
156
|
+
usage: {
|
|
157
|
+
prompt_tokens: response.usage?.prompt_tokens || 0,
|
|
158
|
+
completion_tokens: response.usage?.completion_tokens || 0,
|
|
159
|
+
total_tokens: response.usage?.total_tokens || 0,
|
|
160
|
+
prompt_cache_hit_tokens: response.usage?.prompt_cache_hit_tokens,
|
|
161
|
+
prompt_cache_miss_tokens: response.usage?.prompt_cache_miss_tokens,
|
|
162
|
+
},
|
|
163
|
+
finish_reason: choice.finish_reason || 'stop',
|
|
164
|
+
tool_calls: tool_calls?.length ? tool_calls : undefined,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Create a chat completion (non-streaming) with circuit breaker and fallback
|
|
56
169
|
*/
|
|
57
170
|
async createChatCompletion(params) {
|
|
171
|
+
const config = getConfig();
|
|
58
172
|
try {
|
|
59
|
-
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
// Extract reasoning content if available (for deepseek-reasoner)
|
|
67
|
-
const reasoning_content = hasReasoningContent(choice.message)
|
|
68
|
-
? choice.message.reasoning_content
|
|
69
|
-
: undefined;
|
|
70
|
-
// Extract tool_calls if present
|
|
71
|
-
const tool_calls = choice.message.tool_calls
|
|
72
|
-
?.map((tc) => ({
|
|
73
|
-
id: tc.id,
|
|
74
|
-
type: 'function',
|
|
75
|
-
function: {
|
|
76
|
-
name: tc.function.name,
|
|
77
|
-
arguments: tc.function.arguments,
|
|
78
|
-
},
|
|
79
|
-
}));
|
|
80
|
-
return {
|
|
81
|
-
content: choice.message.content || '',
|
|
82
|
-
reasoning_content,
|
|
83
|
-
model: response.model,
|
|
84
|
-
usage: {
|
|
85
|
-
prompt_tokens: response.usage?.prompt_tokens || 0,
|
|
86
|
-
completion_tokens: response.usage?.completion_tokens || 0,
|
|
87
|
-
total_tokens: response.usage?.total_tokens || 0,
|
|
88
|
-
},
|
|
89
|
-
finish_reason: choice.finish_reason || 'stop',
|
|
90
|
-
tool_calls: tool_calls?.length ? tool_calls : undefined,
|
|
91
|
-
};
|
|
173
|
+
// Primary attempt through circuit breaker
|
|
174
|
+
const result = await this.circuitBreaker.execute(async () => {
|
|
175
|
+
const requestParams = this.buildRequestParams(params, false);
|
|
176
|
+
const rawResponse = await this.client.chat.completions.create(requestParams);
|
|
177
|
+
return this.parseResponse(rawResponse);
|
|
178
|
+
});
|
|
179
|
+
return result;
|
|
92
180
|
}
|
|
93
181
|
catch (error) {
|
|
182
|
+
// Try fallback if enabled and error is retryable
|
|
183
|
+
if (config.fallbackEnabled && isRetryableError(error)) {
|
|
184
|
+
const fallbackModel = FALLBACK_MODEL[params.model];
|
|
185
|
+
const reason = getErrorMessage(error);
|
|
186
|
+
console.error(`[DeepSeek MCP] Primary model ${params.model} failed (${reason}), falling back to ${fallbackModel}`);
|
|
187
|
+
try {
|
|
188
|
+
const fallbackParams = { ...params, model: fallbackModel };
|
|
189
|
+
// Fallback bypasses circuit breaker (it's a different attempt)
|
|
190
|
+
const requestParams = this.buildRequestParams(fallbackParams, false);
|
|
191
|
+
const rawResponse = await this.client.chat.completions.create(requestParams);
|
|
192
|
+
const result = this.parseResponse(rawResponse);
|
|
193
|
+
return {
|
|
194
|
+
...result,
|
|
195
|
+
fallback: {
|
|
196
|
+
originalModel: params.model,
|
|
197
|
+
fallbackModel,
|
|
198
|
+
reason,
|
|
199
|
+
},
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
catch (fallbackError) {
|
|
203
|
+
console.error(`[DeepSeek MCP] Fallback model ${fallbackModel} also failed:`, fallbackError);
|
|
204
|
+
throw new FallbackExhaustedError(`All models failed. Primary (${params.model}): ${reason}. Fallback (${fallbackModel}): ${getErrorMessage(fallbackError)}`, [params.model, fallbackModel]);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
// Not retryable or fallback disabled
|
|
94
208
|
console.error('DeepSeek API Error:', error);
|
|
95
209
|
this.wrapError(error, 'DeepSeek API Error');
|
|
96
210
|
}
|
|
97
211
|
}
|
|
98
212
|
/**
|
|
99
|
-
* Create a streaming chat completion
|
|
213
|
+
* Create a streaming chat completion with circuit breaker and fallback
|
|
100
214
|
* Returns the full text after streaming completes (buffered)
|
|
101
215
|
*/
|
|
102
216
|
async createStreamingChatCompletion(params) {
|
|
217
|
+
const config = getConfig();
|
|
103
218
|
try {
|
|
104
|
-
const
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
fullContent += choice.delta.content;
|
|
126
|
-
}
|
|
127
|
-
// Collect reasoning content (for deepseek-reasoner)
|
|
128
|
-
if (choice.delta && hasReasoningContent(choice.delta)) {
|
|
129
|
-
reasoningContent += choice.delta.reasoning_content;
|
|
130
|
-
}
|
|
131
|
-
// Accumulate tool_calls deltas
|
|
132
|
-
if (choice.delta?.tool_calls) {
|
|
133
|
-
for (const tc of choice.delta.tool_calls) {
|
|
134
|
-
const existing = toolCallsMap.get(tc.index);
|
|
135
|
-
if (existing) {
|
|
136
|
-
if (tc.function?.name)
|
|
137
|
-
existing.function.name += tc.function.name;
|
|
138
|
-
if (tc.function?.arguments)
|
|
139
|
-
existing.function.arguments += tc.function.arguments;
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
toolCallsMap.set(tc.index, {
|
|
143
|
-
id: tc.id || '',
|
|
144
|
-
type: 'function',
|
|
145
|
-
function: {
|
|
146
|
-
name: tc.function?.name || '',
|
|
147
|
-
arguments: tc.function?.arguments || '',
|
|
148
|
-
},
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
// Get finish reason
|
|
154
|
-
if (choice.finish_reason) {
|
|
155
|
-
finishReason = choice.finish_reason;
|
|
156
|
-
}
|
|
157
|
-
// Get model name
|
|
158
|
-
if (chunk.model) {
|
|
159
|
-
modelName = chunk.model;
|
|
219
|
+
const result = await this.circuitBreaker.execute(async () => {
|
|
220
|
+
return this.streamInternal(params);
|
|
221
|
+
});
|
|
222
|
+
return result;
|
|
223
|
+
}
|
|
224
|
+
catch (error) {
|
|
225
|
+
if (config.fallbackEnabled && isRetryableError(error)) {
|
|
226
|
+
const fallbackModel = FALLBACK_MODEL[params.model];
|
|
227
|
+
const reason = getErrorMessage(error);
|
|
228
|
+
console.error(`[DeepSeek MCP] Streaming primary ${params.model} failed (${reason}), falling back to ${fallbackModel}`);
|
|
229
|
+
try {
|
|
230
|
+
const fallbackParams = { ...params, model: fallbackModel };
|
|
231
|
+
const result = await this.streamInternal(fallbackParams);
|
|
232
|
+
return {
|
|
233
|
+
...result,
|
|
234
|
+
fallback: {
|
|
235
|
+
originalModel: params.model,
|
|
236
|
+
fallbackModel,
|
|
237
|
+
reason,
|
|
238
|
+
},
|
|
239
|
+
};
|
|
160
240
|
}
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
usage = chunk.usage;
|
|
241
|
+
catch (fallbackError) {
|
|
242
|
+
throw new FallbackExhaustedError(`All models failed (streaming). Primary (${params.model}): ${reason}. Fallback (${fallbackModel}): ${getErrorMessage(fallbackError)}`, [params.model, fallbackModel]);
|
|
164
243
|
}
|
|
165
244
|
}
|
|
166
|
-
// Convert tool calls map to sorted array
|
|
167
|
-
const toolCalls = toolCallsMap.size > 0
|
|
168
|
-
? Array.from(toolCallsMap.entries())
|
|
169
|
-
.sort(([a], [b]) => a - b)
|
|
170
|
-
.map(([, tc]) => tc)
|
|
171
|
-
: undefined;
|
|
172
|
-
return {
|
|
173
|
-
content: fullContent,
|
|
174
|
-
reasoning_content: reasoningContent || undefined,
|
|
175
|
-
model: modelName,
|
|
176
|
-
usage,
|
|
177
|
-
finish_reason: finishReason,
|
|
178
|
-
tool_calls: toolCalls,
|
|
179
|
-
};
|
|
180
|
-
}
|
|
181
|
-
catch (error) {
|
|
182
245
|
console.error('DeepSeek Streaming API Error:', error);
|
|
183
246
|
this.wrapError(error, 'DeepSeek Streaming API Error');
|
|
184
247
|
}
|
|
185
248
|
}
|
|
249
|
+
/**
|
|
250
|
+
* Internal streaming implementation
|
|
251
|
+
*/
|
|
252
|
+
async streamInternal(params) {
|
|
253
|
+
const requestParams = this.buildRequestParams(params, true);
|
|
254
|
+
const stream = await this.client.chat.completions.create(requestParams);
|
|
255
|
+
let fullContent = '';
|
|
256
|
+
let reasoningContent = '';
|
|
257
|
+
let modelName = params.model;
|
|
258
|
+
let finishReason = 'stop';
|
|
259
|
+
let usage = {
|
|
260
|
+
prompt_tokens: 0,
|
|
261
|
+
completion_tokens: 0,
|
|
262
|
+
total_tokens: 0,
|
|
263
|
+
};
|
|
264
|
+
const toolCallsMap = new Map();
|
|
265
|
+
for await (const rawChunk of stream) {
|
|
266
|
+
const chunk = rawChunk;
|
|
267
|
+
const choice = chunk.choices[0];
|
|
268
|
+
if (!choice)
|
|
269
|
+
continue;
|
|
270
|
+
if (choice.delta?.content) {
|
|
271
|
+
fullContent += choice.delta.content;
|
|
272
|
+
}
|
|
273
|
+
if (choice.delta && hasReasoningContent(choice.delta)) {
|
|
274
|
+
reasoningContent += choice.delta.reasoning_content;
|
|
275
|
+
}
|
|
276
|
+
if (choice.delta?.tool_calls) {
|
|
277
|
+
for (const tc of choice.delta.tool_calls) {
|
|
278
|
+
const existing = toolCallsMap.get(tc.index);
|
|
279
|
+
if (existing) {
|
|
280
|
+
if (tc.function?.name)
|
|
281
|
+
existing.function.name += tc.function.name;
|
|
282
|
+
if (tc.function?.arguments)
|
|
283
|
+
existing.function.arguments += tc.function.arguments;
|
|
284
|
+
}
|
|
285
|
+
else {
|
|
286
|
+
toolCallsMap.set(tc.index, {
|
|
287
|
+
id: tc.id || '',
|
|
288
|
+
type: 'function',
|
|
289
|
+
function: {
|
|
290
|
+
name: tc.function?.name || '',
|
|
291
|
+
arguments: tc.function?.arguments || '',
|
|
292
|
+
},
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
if (choice.finish_reason) {
|
|
298
|
+
finishReason = choice.finish_reason;
|
|
299
|
+
}
|
|
300
|
+
if (chunk.model) {
|
|
301
|
+
modelName = chunk.model;
|
|
302
|
+
}
|
|
303
|
+
if (chunk.usage) {
|
|
304
|
+
usage = {
|
|
305
|
+
prompt_tokens: chunk.usage.prompt_tokens,
|
|
306
|
+
completion_tokens: chunk.usage.completion_tokens,
|
|
307
|
+
total_tokens: chunk.usage.total_tokens,
|
|
308
|
+
prompt_cache_hit_tokens: chunk.usage.prompt_cache_hit_tokens,
|
|
309
|
+
prompt_cache_miss_tokens: chunk.usage.prompt_cache_miss_tokens,
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
const toolCalls = toolCallsMap.size > 0
|
|
314
|
+
? Array.from(toolCallsMap.entries())
|
|
315
|
+
.sort(([a], [b]) => a - b)
|
|
316
|
+
.map(([, tc]) => tc)
|
|
317
|
+
: undefined;
|
|
318
|
+
return {
|
|
319
|
+
content: fullContent,
|
|
320
|
+
reasoning_content: reasoningContent || undefined,
|
|
321
|
+
model: modelName,
|
|
322
|
+
usage,
|
|
323
|
+
finish_reason: finishReason,
|
|
324
|
+
tool_calls: toolCalls,
|
|
325
|
+
};
|
|
326
|
+
}
|
|
186
327
|
/**
|
|
187
328
|
* Test API connection
|
|
188
329
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deepseek-client.js","sourceRoot":"","sources":["../src/deepseek-client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"deepseek-client.js","sourceRoot":"","sources":["../src/deepseek-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EACL,QAAQ,EACR,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAUtD,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElE,0DAA0D;AAC1D,MAAM,4BAA4B,GAAG;IACnC,aAAa;IACb,OAAO;IACP,mBAAmB;IACnB,kBAAkB;CACV,CAAC;AAEX,6BAA6B;AAC7B,MAAM,cAAc,GAAyC;IAC3D,mBAAmB,EAAE,eAAe;IACpC,eAAe,EAAE,mBAAmB;CACrC,CAAC;AAOF;;GAEG;AACH,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,KAAK,YAAY,uBAAuB;QAAE,OAAO,IAAI,CAAC;IAC1D,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACxC,sCAAsC;QACtC,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC;YAAE,OAAO,IAAI,CAAC;QACnE,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YAAE,OAAO,IAAI,CAAC;QAC5E,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC;YAAE,OAAO,IAAI,CAAC;QACpE,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC;YAAE,OAAO,IAAI,CAAC;QACtE,IAAI,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC;YAAE,OAAO,IAAI,CAAC;IAC9E,CAAC;IACD,qCAAqC;IACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;QACrE,MAAM,MAAM,GAAI,KAA4B,CAAC,MAAM,CAAC;QACpD,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;IACtE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,OAAO,cAAc;IACjB,MAAM,CAAS;IACf,cAAc,CAAiB;IAEvC;QACE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAE3B,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,MAAM,CAAC,cAAc;YAC9B,UAAU,EAAE,MAAM,CAAC,UAAU;SAC9B,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,uBAAuB;QACrB,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;IACzC,CAAC;IAED;;OAEG;IACK,kBAAkB,CACxB,MAA4B,EAC5B,MAAe;QAEf,MAAM,iBAAiB,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,KAAK,SAAS,CAAC;QAE9D,0DAA0D;QAC1D,IAAI,iBAAiB,EAAE,CAAC;YACtB,MAAM,QAAQ,GAAa,EAAE,CAAC;YAC9B,KAAK,MAAM,GAAG,IAAI,4BAA4B,EAAE,CAAC;gBAC/C,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;oBAC9B,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC;YACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,KAAK,CACX,+EAA+E,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACrG,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,aAAa,GAAiF;YAClG,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,MAAM,CAAC,QAA+C;YAChE,WAAW,EAAE,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,IAAI,GAAG,CAAC;YACxE,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK;YACnD,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB;YAC3E,gBAAgB,EAAE,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB;YACzE,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,MAAM;SACP,CAAC;QAEF,2DAA2D;QAC3D,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,aAAa,CAAC,UAAU,GAAG;gBACzB,GAAG,aAAa,CAAC,UAAU;gBAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC1B,CAAC;QACJ,CAAC;QAED,qCAAqC;QACrC,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YAC3B,aAAa,CAAC,eAAe,GAAG,MAAM,CAAC,eAAuE,CAAC;QACjH,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;YACzB,aAAa,CAAC,KAAK,GAAG,MAAM,CAAC,KAAoC,CAAC;QACpE,CAAC;QACD,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACrC,aAAa,CAAC,WAAW;gBACvB,MAAM,CAAC,WAAoD,CAAC;QAChE,CAAC;QAED,OAAO,aAAa,CAAC;IACvB,CAAC;IAED;;OAEG;IACK,SAAS,CAAC,KAAc,EAAE,OAAe;QAC/C,IAAI,KAAK,YAAY,QAAQ;YAAE,MAAM,KAAK,CAAC;QAC3C,IAAI,KAAK,YAAY,sBAAsB;YAAE,MAAM,KAAK,CAAC;QACzD,IAAI,KAAK,YAAY,uBAAuB;YAAE,MAAM,KAAK,CAAC;QAC1D,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QACzD,MAAM,IAAI,QAAQ,CAAC,GAAG,OAAO,KAAK,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,QAA6B;QACjD,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,QAAQ,CAAC,+BAA+B,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC;YAC3D,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB;YAClC,CAAC,CAAC,SAAS,CAAC;QAEd,MAAM,UAAU,GAA2B,MAAM,CAAC,OAAO,CAAC,UAAU;YAClE,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACb,EAAE,EAAE,EAAE,CAAC,EAAE;YACT,IAAI,EAAE,UAAmB;YACzB,QAAQ,EAAE;gBACR,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI;gBACtB,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS;aACjC;SACF,CAAC,CAAC,CAAC;QAEN,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE;YACrC,iBAAiB;YACjB,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,KAAK,EAAE;gBACL,aAAa,EAAE,QAAQ,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC;gBACjD,iBAAiB,EAAE,QAAQ,CAAC,KAAK,EAAE,iBAAiB,IAAI,CAAC;gBACzD,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAE,YAAY,IAAI,CAAC;gBAC/C,uBAAuB,EAAE,QAAQ,CAAC,KAAK,EAAE,uBAAuB;gBAChE,wBAAwB,EAAE,QAAQ,CAAC,KAAK,EAAE,wBAAwB;aACnE;YACD,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,MAAM;YAC7C,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;SACxD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB,CACxB,MAA4B;QAE5B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAE3B,IAAI,CAAC;YACH,0CAA0C;YAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;gBAC1D,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC7D,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;gBAC7E,OAAO,IAAI,CAAC,aAAa,CAAC,WAA6C,CAAC,CAAC;YAC3E,CAAC,CAAC,CAAC;YACH,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,iDAAiD;YACjD,IAAI,MAAM,CAAC,eAAe,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtD,MAAM,aAAa,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACnD,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;gBACtC,OAAO,CAAC,KAAK,CACX,gCAAgC,MAAM,CAAC,KAAK,YAAY,MAAM,sBAAsB,aAAa,EAAE,CACpG,CAAC;gBAEF,IAAI,CAAC;oBACH,MAAM,cAAc,GAAG,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;oBAC3D,+DAA+D;oBAC/D,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;oBACrE,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;oBAC7E,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,WAA6C,CAAC,CAAC;oBACjF,OAAO;wBACL,GAAG,MAAM;wBACT,QAAQ,EAAE;4BACR,aAAa,EAAE,MAAM,CAAC,KAAK;4BAC3B,aAAa;4BACb,MAAM;yBACP;qBACF,CAAC;gBACJ,CAAC;gBAAC,OAAO,aAAsB,EAAE,CAAC;oBAChC,OAAO,CAAC,KAAK,CACX,iCAAiC,aAAa,eAAe,EAC7D,aAAa,CACd,CAAC;oBACF,MAAM,IAAI,sBAAsB,CAC9B,+BAA+B,MAAM,CAAC,KAAK,MAAM,MAAM,eAAe,aAAa,MAAM,eAAe,CAAC,aAAa,CAAC,EAAE,EACzH,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,CAC9B,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,qCAAqC;YACrC,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;YAC5C,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,6BAA6B,CACjC,MAA4B;QAE5B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAE3B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;gBAC1D,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC;YACH,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAI,MAAM,CAAC,eAAe,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtD,MAAM,aAAa,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACnD,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;gBACtC,OAAO,CAAC,KAAK,CACX,oCAAoC,MAAM,CAAC,KAAK,YAAY,MAAM,sBAAsB,aAAa,EAAE,CACxG,CAAC;gBAEF,IAAI,CAAC;oBACH,MAAM,cAAc,GAAG,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;oBAC3D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;oBACzD,OAAO;wBACL,GAAG,MAAM;wBACT,QAAQ,EAAE;4BACR,aAAa,EAAE,MAAM,CAAC,KAAK;4BAC3B,aAAa;4BACb,MAAM;yBACP;qBACF,CAAC;gBACJ,CAAC;gBAAC,OAAO,aAAsB,EAAE,CAAC;oBAChC,MAAM,IAAI,sBAAsB,CAC9B,2CAA2C,MAAM,CAAC,KAAK,MAAM,MAAM,eAAe,aAAa,MAAM,eAAe,CAAC,aAAa,CAAC,EAAE,EACrI,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,CAC9B,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;YACtD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,8BAA8B,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc,CAAC,MAA4B;QACvD,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAExE,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,gBAAgB,GAAG,EAAE,CAAC;QAC1B,IAAI,SAAS,GAAW,MAAM,CAAC,KAAK,CAAC;QACrC,IAAI,YAAY,GAAG,MAAM,CAAC;QAC1B,IAAI,KAAK,GAAoC;YAC3C,aAAa,EAAE,CAAC;YAChB,iBAAiB,EAAE,CAAC;YACpB,YAAY,EAAE,CAAC;SAChB,CAAC;QAEF,MAAM,YAAY,GAAG,IAAI,GAAG,EAOzB,CAAC;QAEJ,IAAI,KAAK,EAAE,MAAM,QAAQ,IAAI,MAAgC,EAAE,CAAC;YAC9D,MAAM,KAAK,GAAG,QAA+B,CAAC;YAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAChC,IAAI,CAAC,MAAM;gBAAE,SAAS;YAEtB,IAAI,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;gBAC1B,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;YACtC,CAAC;YAED,IAAI,MAAM,CAAC,KAAK,IAAI,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtD,gBAAgB,IAAI,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC;YACrD,CAAC;YAED,IAAI,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC;gBAC7B,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;oBACzC,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;oBAC5C,IAAI,QAAQ,EAAE,CAAC;wBACb,IAAI,EAAE,CAAC,QAAQ,EAAE,IAAI;4BAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;wBAClE,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS;4BACxB,QAAQ,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;oBACzD,CAAC;yBAAM,CAAC;wBACN,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE;4BACzB,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE;4BACf,IAAI,EAAE,UAAU;4BAChB,QAAQ,EAAE;gCACR,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE;gCAC7B,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE,SAAS,IAAI,EAAE;6BACxC;yBACF,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;gBACzB,YAAY,GAAG,MAAM,CAAC,aAAa,CAAC;YACtC,CAAC;YAED,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAChB,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;YAC1B,CAAC;YAED,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAChB,KAAK,GAAG;oBACN,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC,aAAa;oBACxC,iBAAiB,EAAE,KAAK,CAAC,KAAK,CAAC,iBAAiB;oBAChD,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY;oBACtC,uBAAuB,EAAE,KAAK,CAAC,KAAK,CAAC,uBAAuB;oBAC5D,wBAAwB,EAAE,KAAK,CAAC,KAAK,CAAC,wBAAwB;iBAC/D,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GACb,YAAY,CAAC,IAAI,GAAG,CAAC;YACnB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;iBAC/B,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;iBACzB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YACxB,CAAC,CAAC,SAAS,CAAC;QAEhB,OAAO;YACL,OAAO,EAAE,WAAW;YACpB,iBAAiB,EAAE,gBAAgB,IAAI,SAAS;YAChD,KAAK,EAAE,SAA0B;YACjC,KAAK;YACL,aAAa,EAAE,YAAY;YAC3B,UAAU,EAAE,SAAS;SACtB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc;QAClB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC;gBAC/C,KAAK,EAAE,eAAe;gBACtB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBAC3C,UAAU,EAAE,EAAE;aACf,CAAC,CAAC;YACH,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YAChD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -59,6 +59,19 @@ export declare class ValidationError extends BaseError {
|
|
|
59
59
|
message: string;
|
|
60
60
|
}>, options?: ErrorOptions);
|
|
61
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* All fallback models exhausted
|
|
64
|
+
*/
|
|
65
|
+
export declare class FallbackExhaustedError extends ApiError {
|
|
66
|
+
readonly attemptedModels: string[];
|
|
67
|
+
constructor(message: string, attemptedModels: string[], options?: ErrorOptions);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Circuit breaker is open — fast-fail
|
|
71
|
+
*/
|
|
72
|
+
export declare class CircuitBreakerOpenError extends BaseError {
|
|
73
|
+
constructor(message?: string, options?: ErrorOptions);
|
|
74
|
+
}
|
|
62
75
|
/**
|
|
63
76
|
* Network/connection error
|
|
64
77
|
*/
|