@winspan/claude-forge 1.4.1 → 1.4.2
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/README.md +1 -1
- package/dist/ai-provider/base-provider.d.ts.map +1 -1
- package/dist/ai-provider/base-provider.js +18 -9
- package/dist/ai-provider/base-provider.js.map +1 -1
- package/dist/ai-provider/types.d.ts +3 -1
- package/dist/ai-provider/types.d.ts.map +1 -1
- package/dist/ai-provider/types.js +8 -2
- package/dist/ai-provider/types.js.map +1 -1
- package/dist/utils/circuit-breaker.d.ts +5 -1
- package/dist/utils/circuit-breaker.d.ts.map +1 -1
- package/dist/utils/circuit-breaker.js +17 -3
- package/dist/utils/circuit-breaker.js.map +1 -1
- package/dist/utils/claude-api.d.ts.map +1 -1
- package/dist/utils/claude-api.js +11 -0
- package/dist/utils/claude-api.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-provider.d.ts","sourceRoot":"","sources":["../../src/ai-provider/base-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG7D;;;;GAIG;AACH,8BAAsB,YAAa,YAAW,UAAU;IACtD,SAAS,CAAC,KAAK,EAAE,YAAY,CAS3B;IAEF,SAAS,CAAC,cAAc,iBAAiC;IACzD,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAAQ;IAC/C,SAAS,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEjD;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAK3D;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QACxE,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE;YAAE,aAAa,EAAE,MAAM,CAAC;YAAC,iBAAiB,EAAE,MAAM,CAAA;SAAE,CAAC;KAC9D,CAAC;IAEF;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,YAAY,IAAI,MAAM;IAEzC;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAE7E;;;;;OAKG;IACG,QAAQ,CACZ,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAkB,EACzB,gBAAgB,CAAC,EAAE,MAAM,GAAG,iBAAiB,EAC7C,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"base-provider.d.ts","sourceRoot":"","sources":["../../src/ai-provider/base-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG7D;;;;GAIG;AACH,8BAAsB,YAAa,YAAW,UAAU;IACtD,SAAS,CAAC,KAAK,EAAE,YAAY,CAS3B;IAEF,SAAS,CAAC,cAAc,iBAAiC;IACzD,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAAQ;IAC/C,SAAS,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEjD;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAK3D;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QACxE,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE;YAAE,aAAa,EAAE,MAAM,CAAC;YAAC,iBAAiB,EAAE,MAAM,CAAA;SAAE,CAAC;KAC9D,CAAC;IAEF;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,YAAY,IAAI,MAAM;IAEzC;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAE7E;;;;;OAKG;IACG,QAAQ,CACZ,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAkB,EACzB,gBAAgB,CAAC,EAAE,MAAM,GAAG,iBAAiB,EAC7C,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC;IAiIlB,QAAQ,IAAI,QAAQ,CAAC,YAAY,CAAC;IASlC,WAAW,IAAI,MAAM;CAatB"}
|
|
@@ -64,15 +64,20 @@ export class BaseProvider {
|
|
|
64
64
|
this.stats.byLabel[label].retries++;
|
|
65
65
|
}
|
|
66
66
|
try {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
]);
|
|
67
|
+
// 手动检查熔断器状态(不使用 execute(),以便精细控制哪些错误计入熔断)
|
|
68
|
+
if (!this.circuitBreaker.canAttempt()) {
|
|
69
|
+
this.stats.circuitBreakerTrips++;
|
|
70
|
+
throw new CircuitOpenError(this.circuitBreaker.getLastErrorMessage());
|
|
71
|
+
}
|
|
72
|
+
const timeoutRace = new Promise((_, reject) => {
|
|
73
|
+
setTimeout(() => reject(new ApiTimeoutError(timeout)), timeout);
|
|
75
74
|
});
|
|
75
|
+
const result = await Promise.race([
|
|
76
|
+
this.doComplete(prompt, maxTokens),
|
|
77
|
+
timeoutRace,
|
|
78
|
+
]);
|
|
79
|
+
// 成功:重置熔断器
|
|
80
|
+
this.circuitBreaker.recordSuccess();
|
|
76
81
|
const latency = Date.now() - startTime;
|
|
77
82
|
this.stats.totalLatencyMs += latency;
|
|
78
83
|
this.stats.byLabel[label].latencyMs += latency;
|
|
@@ -110,20 +115,24 @@ export class BaseProvider {
|
|
|
110
115
|
catch (err) {
|
|
111
116
|
lastError = err;
|
|
112
117
|
if (err instanceof CircuitOpenError) {
|
|
113
|
-
|
|
118
|
+
// 已在上面统计过 circuitBreakerTrips
|
|
114
119
|
throw err;
|
|
115
120
|
}
|
|
116
121
|
if (err instanceof ApiTimeoutError) {
|
|
117
122
|
this.stats.totalErrors++;
|
|
118
123
|
this.stats.byLabel[label].errors++;
|
|
124
|
+
this.circuitBreaker.recordFailure(err); // 超时计入熔断
|
|
119
125
|
throw err; // 超时不重试
|
|
120
126
|
}
|
|
121
127
|
const status = err.status;
|
|
122
128
|
if (status && status >= 400 && status < 500) {
|
|
129
|
+
// 4xx 是客户端/配置错误,不会自愈,不计入熔断器
|
|
123
130
|
this.stats.totalErrors++;
|
|
124
131
|
this.stats.byLabel[label].errors++;
|
|
125
132
|
throw err; // 4xx 不重试
|
|
126
133
|
}
|
|
134
|
+
// 5xx / 网络错误:计入熔断器,允许重试
|
|
135
|
+
this.circuitBreaker.recordFailure(err);
|
|
127
136
|
if (attempt === retries) {
|
|
128
137
|
break; // 最后一次尝试失败
|
|
129
138
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-provider.js","sourceRoot":"","sources":["../../src/ai-provider/base-provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE/D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC;;;;GAIG;AACH,MAAM,OAAgB,YAAY;IACtB,KAAK,GAAiB;QAC9B,UAAU,EAAE,CAAC;QACb,WAAW,EAAE,CAAC;QACd,cAAc,EAAE,CAAC;QACjB,YAAY,EAAE,CAAC;QACf,mBAAmB,EAAE,CAAC;QACtB,aAAa,EAAE,CAAC;QAChB,cAAc,EAAE,CAAC;QACjB,OAAO,EAAE,EAAE;KACZ,CAAC;IAEQ,cAAc,GAAG,IAAI,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/C,OAAO,GAAyB,IAAI,CAAC;IACrC,gBAAgB,GAAkB,IAAI,CAAC;IAEjD;;OAEG;IACH,UAAU,CAAC,OAAsB,EAAE,SAAiB;QAClD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;IACpC,CAAC;IAqBD;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,CACZ,MAAc,EACd,QAAgB,SAAS,EACzB,gBAA6C,EAC7C,SAAkB;QAElB,QAAQ;QACR,IAAI,OAAe,CAAC;QACpB,IAAI,OAAe,CAAC;QACpB,IAAI,SAAiB,CAAC;QAEtB,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE,CAAC;YACzC,kDAAkD;YAClD,OAAO,GAAG,gBAAgB,CAAC;YAC3B,OAAO,GAAG,SAAS,IAAI,MAAM,CAAC;YAC9B,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,uCAAuC;YACvC,MAAM,OAAO,GAAG,gBAAgB,IAAI,EAAE,CAAC;YACvC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC;YAC/B,OAAO,GAAG,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC;YACtC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC;QACxC,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;QAC3G,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QAElC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,SAAS,GAAiB,IAAI,CAAC;QAEnC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC;YACpD,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAChB,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;gBAC1B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;YACtC,CAAC;YAED,IAAI,CAAC;gBACH,
|
|
1
|
+
{"version":3,"file":"base-provider.js","sourceRoot":"","sources":["../../src/ai-provider/base-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,6 +51,8 @@ export declare class ApiTimeoutError extends Error {
|
|
|
51
51
|
constructor(timeoutMs: number);
|
|
52
52
|
}
|
|
53
53
|
export declare class CircuitOpenError extends Error {
|
|
54
|
-
|
|
54
|
+
/** 触发熔断的根因错误摘要 */
|
|
55
|
+
readonly rootCause?: string;
|
|
56
|
+
constructor(rootCause?: string);
|
|
55
57
|
}
|
|
56
58
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ai-provider/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrI;AAED,MAAM,WAAW,UAAU;IACzB;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEvF;;OAEG;IACH,QAAQ,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC;IAEnC;;OAEG;IACH,WAAW,IAAI,MAAM,CAAC;CACvB;AAED,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,SAAS,EAAE,MAAM;CAI9B;AAED,qBAAa,gBAAiB,SAAQ,KAAK
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ai-provider/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrI;AAED,MAAM,WAAW,UAAU;IACzB;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEvF;;OAEG;IACH,QAAQ,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC;IAEnC;;OAEG;IACH,WAAW,IAAI,MAAM,CAAC;CACvB;AAED,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,SAAS,EAAE,MAAM;CAI9B;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,kBAAkB;IAClB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEhB,SAAS,CAAC,EAAE,MAAM;CAQ/B"}
|
|
@@ -9,9 +9,15 @@ export class ApiTimeoutError extends Error {
|
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
11
|
export class CircuitOpenError extends Error {
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
/** 触发熔断的根因错误摘要 */
|
|
13
|
+
rootCause;
|
|
14
|
+
constructor(rootCause) {
|
|
15
|
+
const msg = rootCause
|
|
16
|
+
? `熔断器已打开,API 调用被拒绝 | 根因:${rootCause}`
|
|
17
|
+
: '熔断器已打开,API 调用被拒绝(连续失败过多)';
|
|
18
|
+
super(msg);
|
|
14
19
|
this.name = 'CircuitOpenError';
|
|
20
|
+
this.rootCause = rootCause;
|
|
15
21
|
}
|
|
16
22
|
}
|
|
17
23
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/ai-provider/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA6CH,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACxC,YAAY,SAAiB;QAC3B,KAAK,CAAC,YAAY,SAAS,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/ai-provider/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA6CH,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACxC,YAAY,SAAiB;QAC3B,KAAK,CAAC,YAAY,SAAS,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC,kBAAkB;IACT,SAAS,CAAU;IAE5B,YAAY,SAAkB;QAC5B,MAAM,GAAG,GAAG,SAAS;YACnB,CAAC,CAAC,yBAAyB,SAAS,EAAE;YACtC,CAAC,CAAC,0BAA0B,CAAC;QAC/B,KAAK,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF"}
|
|
@@ -12,6 +12,8 @@ export declare class CircuitBreaker {
|
|
|
12
12
|
private failureCount;
|
|
13
13
|
private lastFailureTime;
|
|
14
14
|
private state;
|
|
15
|
+
/** 触发熔断的最后一次错误摘要 */
|
|
16
|
+
private lastErrorMessage;
|
|
15
17
|
constructor(threshold?: number, timeout?: number);
|
|
16
18
|
/**
|
|
17
19
|
* 执行函数,带熔断保护
|
|
@@ -24,12 +26,14 @@ export declare class CircuitBreaker {
|
|
|
24
26
|
/**
|
|
25
27
|
* 记录失败(用于非 execute 模式)
|
|
26
28
|
*/
|
|
27
|
-
recordFailure(): void;
|
|
29
|
+
recordFailure(err?: unknown): void;
|
|
28
30
|
/**
|
|
29
31
|
* 检查是否可以尝试请求(用于非 execute 模式)
|
|
30
32
|
*/
|
|
31
33
|
canAttempt(): boolean;
|
|
32
34
|
private reset;
|
|
33
35
|
getState(): 'closed' | 'open' | 'half-open';
|
|
36
|
+
/** 获取触发熔断的最后一次错误摘要 */
|
|
37
|
+
getLastErrorMessage(): string;
|
|
34
38
|
}
|
|
35
39
|
//# sourceMappingURL=circuit-breaker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../../src/utils/circuit-breaker.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,qBAAa,cAAc;
|
|
1
|
+
{"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../../src/utils/circuit-breaker.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,qBAAa,cAAc;IAQvB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,OAAO;IARjB,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,KAAK,CAA6C;IAC1D,oBAAoB;IACpB,OAAO,CAAC,gBAAgB,CAAM;gBAGpB,SAAS,GAAE,MAAU,EACrB,OAAO,GAAE,MAAe;IAGlC;;OAEG;IACG,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAqBlD;;OAEG;IACH,aAAa,IAAI,IAAI;IAOrB;;OAEG;IACH,aAAa,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,IAAI;IAgBlC;;OAEG;IACH,UAAU,IAAI,OAAO;IAYrB,OAAO,CAAC,KAAK;IAMb,QAAQ,IAAI,QAAQ,GAAG,MAAM,GAAG,WAAW;IAI3C,sBAAsB;IACtB,mBAAmB,IAAI,MAAM;CAG9B"}
|
|
@@ -13,6 +13,8 @@ export class CircuitBreaker {
|
|
|
13
13
|
failureCount = 0;
|
|
14
14
|
lastFailureTime = 0;
|
|
15
15
|
state = 'closed';
|
|
16
|
+
/** 触发熔断的最后一次错误摘要 */
|
|
17
|
+
lastErrorMessage = '';
|
|
16
18
|
constructor(threshold = 5, timeout = 60_000) {
|
|
17
19
|
this.threshold = threshold;
|
|
18
20
|
this.timeout = timeout;
|
|
@@ -26,7 +28,7 @@ export class CircuitBreaker {
|
|
|
26
28
|
this.state = 'half-open';
|
|
27
29
|
}
|
|
28
30
|
else {
|
|
29
|
-
throw new CircuitOpenError();
|
|
31
|
+
throw new CircuitOpenError(this.lastErrorMessage);
|
|
30
32
|
}
|
|
31
33
|
}
|
|
32
34
|
try {
|
|
@@ -37,7 +39,7 @@ export class CircuitBreaker {
|
|
|
37
39
|
return result;
|
|
38
40
|
}
|
|
39
41
|
catch (err) {
|
|
40
|
-
this.recordFailure();
|
|
42
|
+
this.recordFailure(err);
|
|
41
43
|
throw err;
|
|
42
44
|
}
|
|
43
45
|
}
|
|
@@ -53,9 +55,16 @@ export class CircuitBreaker {
|
|
|
53
55
|
/**
|
|
54
56
|
* 记录失败(用于非 execute 模式)
|
|
55
57
|
*/
|
|
56
|
-
recordFailure() {
|
|
58
|
+
recordFailure(err) {
|
|
57
59
|
this.failureCount++;
|
|
58
60
|
this.lastFailureTime = Date.now();
|
|
61
|
+
// 记录错误摘要(截取前 200 字符)
|
|
62
|
+
if (err instanceof Error) {
|
|
63
|
+
this.lastErrorMessage = err.message.slice(0, 200);
|
|
64
|
+
}
|
|
65
|
+
else if (typeof err === 'string') {
|
|
66
|
+
this.lastErrorMessage = err.slice(0, 200);
|
|
67
|
+
}
|
|
59
68
|
if (this.failureCount >= this.threshold) {
|
|
60
69
|
this.state = 'open';
|
|
61
70
|
}
|
|
@@ -78,9 +87,14 @@ export class CircuitBreaker {
|
|
|
78
87
|
reset() {
|
|
79
88
|
this.failureCount = 0;
|
|
80
89
|
this.state = 'closed';
|
|
90
|
+
this.lastErrorMessage = '';
|
|
81
91
|
}
|
|
82
92
|
getState() {
|
|
83
93
|
return this.state;
|
|
84
94
|
}
|
|
95
|
+
/** 获取触发熔断的最后一次错误摘要 */
|
|
96
|
+
getLastErrorMessage() {
|
|
97
|
+
return this.lastErrorMessage;
|
|
98
|
+
}
|
|
85
99
|
}
|
|
86
100
|
//# sourceMappingURL=circuit-breaker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../src/utils/circuit-breaker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D;;;;;;;GAOG;AACH,MAAM,OAAO,cAAc;
|
|
1
|
+
{"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../src/utils/circuit-breaker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-api.d.ts","sourceRoot":"","sources":["../../src/utils/claude-api.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAe5E,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,gBAAgB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CA6BxG;AAED;;GAEG;AACH,qBAAa,SAAU,SAAQ,YAAY;IACzC,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,KAAK,CAAS;gBAEV,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,MAA4B,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa;
|
|
1
|
+
{"version":3,"file":"claude-api.d.ts","sourceRoot":"","sources":["../../src/utils/claude-api.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAe5E,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,gBAAgB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CA6BxG;AAED;;GAEG;AACH,qBAAa,SAAU,SAAQ,YAAY;IACzC,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,KAAK,CAAS;gBAEV,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,MAA4B,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa;cAwB3F,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QACrE,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE;YAAE,aAAa,EAAE,MAAM,CAAC;YAAC,iBAAiB,EAAE,MAAM,CAAA;SAAE,CAAC;KAC9D,CAAC;IAiBF,SAAS,CAAC,YAAY,IAAI,MAAM;IAEhC,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAI3D,WAAW,IAAI,MAAM;CAc/B;AAED,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAMnG;AAED,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAK9F"}
|
package/dist/utils/claude-api.js
CHANGED
|
@@ -55,6 +55,17 @@ export class ClaudeAPI extends BaseProvider {
|
|
|
55
55
|
super();
|
|
56
56
|
const resolvedKey = resolveApiKey(apiKey);
|
|
57
57
|
const baseURL = baseUrl || resolveBaseUrl();
|
|
58
|
+
// 校验 base_url:不应包含 API 路径后缀
|
|
59
|
+
if (baseURL) {
|
|
60
|
+
const suspiciousPaths = ['/v1/messages', '/messages', '/chat', '/completions', '/api/llm'];
|
|
61
|
+
const hasSuspiciousPath = suspiciousPaths.some(p => baseURL.includes(p));
|
|
62
|
+
if (hasSuspiciousPath) {
|
|
63
|
+
console.warn(`⚠️ base_url 包含 API 路径后缀,可能导致 404 错误\n` +
|
|
64
|
+
` 当前配置:${baseURL}\n` +
|
|
65
|
+
` 建议修改为:${baseURL.split('/v1')[0].split('/messages')[0].split('/chat')[0].split('/api/llm')[0]}\n` +
|
|
66
|
+
` Anthropic SDK 会自动拼接 /v1/messages 路径`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
58
69
|
this.client = new Anthropic({ apiKey: resolvedKey, ...(baseURL ? { baseURL } : {}) });
|
|
59
70
|
this.model = model;
|
|
60
71
|
if (storage)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-api.js","sourceRoot":"","sources":["../../src/utils/claude-api.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"claude-api.js","sourceRoot":"","sources":["../../src/utils/claude-api.ts"],"names":[],"mappings":"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"}
|