@adversity/coding-tool-x 3.0.2 → 3.0.3
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/web/index.html
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<link rel="icon" href="/favicon.ico">
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
7
7
|
<title>CC-TOOL - ClaudeCode增强工作助手</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-BDN4_LfP.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/vue-vendor-6JaYHOiI.js">
|
|
10
10
|
<link rel="modulepreload" crossorigin href="/assets/vendors-D2HHw_aW.js">
|
|
11
11
|
<link rel="modulepreload" crossorigin href="/assets/icons-BlzwYoRU.js">
|
package/package.json
CHANGED
|
@@ -530,14 +530,53 @@ async function fetchModelsFromProvider(channel, channelType) {
|
|
|
530
530
|
});
|
|
531
531
|
}
|
|
532
532
|
} else if (res.statusCode === 401 || res.statusCode === 403) {
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
533
|
+
// Check if it's a Cloudflare protection issue
|
|
534
|
+
const bodyLower = data.toLowerCase();
|
|
535
|
+
const isCloudflare = bodyLower.includes('cloudflare') || bodyLower.includes('challenge') || bodyLower.includes('cf-ray');
|
|
536
|
+
|
|
537
|
+
let errorMessage;
|
|
538
|
+
let errorHint;
|
|
539
|
+
|
|
540
|
+
if (isCloudflare) {
|
|
541
|
+
errorMessage = 'Cloudflare 防护拦截,已使用默认模型';
|
|
542
|
+
errorHint = '该 API 端点受 Cloudflare 保护,已自动使用默认模型 claude-sonnet-4-5';
|
|
543
|
+
console.warn(`[ModelDetector] Cloudflare protection detected for ${channel.name}, using default model`);
|
|
544
|
+
resolve({
|
|
545
|
+
models: ['claude-sonnet-4-5'],
|
|
546
|
+
supported: true,
|
|
547
|
+
cached: false,
|
|
548
|
+
fallbackUsed: true,
|
|
549
|
+
error: errorMessage,
|
|
550
|
+
errorHint: errorHint,
|
|
551
|
+
statusCode: res.statusCode
|
|
552
|
+
});
|
|
553
|
+
} else if (res.statusCode === 401) {
|
|
554
|
+
errorMessage = 'API 密钥认证失败';
|
|
555
|
+
errorHint = '请检查 API 密钥是否正确配置';
|
|
556
|
+
console.error(`[ModelDetector] Authentication failed for ${channel.name}: ${res.statusCode} - ${errorMessage}`);
|
|
557
|
+
resolve({
|
|
558
|
+
models: [],
|
|
559
|
+
supported: true,
|
|
560
|
+
cached: false,
|
|
561
|
+
fallbackUsed: true,
|
|
562
|
+
error: errorMessage,
|
|
563
|
+
errorHint: errorHint,
|
|
564
|
+
statusCode: res.statusCode
|
|
565
|
+
});
|
|
566
|
+
} else {
|
|
567
|
+
errorMessage = '访问被拒绝';
|
|
568
|
+
errorHint = '请检查 API 密钥权限或联系服务提供商';
|
|
569
|
+
console.error(`[ModelDetector] Access denied for ${channel.name}: ${res.statusCode} - ${errorMessage}`);
|
|
570
|
+
resolve({
|
|
571
|
+
models: [],
|
|
572
|
+
supported: true,
|
|
573
|
+
cached: false,
|
|
574
|
+
fallbackUsed: true,
|
|
575
|
+
error: errorMessage,
|
|
576
|
+
errorHint: errorHint,
|
|
577
|
+
statusCode: res.statusCode
|
|
578
|
+
});
|
|
579
|
+
}
|
|
541
580
|
} else if (res.statusCode === 404) {
|
|
542
581
|
console.warn(`[ModelDetector] Model list endpoint not found for ${channel.name}`);
|
|
543
582
|
resolve({
|
|
@@ -545,7 +584,9 @@ async function fetchModelsFromProvider(channel, channelType) {
|
|
|
545
584
|
supported: false,
|
|
546
585
|
cached: false,
|
|
547
586
|
fallbackUsed: true,
|
|
548
|
-
error: '
|
|
587
|
+
error: '模型列表端点不存在',
|
|
588
|
+
errorHint: '该 API 可能不支持 /v1/models 接口,请手动输入模型名称',
|
|
589
|
+
statusCode: 404
|
|
549
590
|
});
|
|
550
591
|
} else if (res.statusCode === 429) {
|
|
551
592
|
console.warn(`[ModelDetector] Rate limited for ${channel.name}`);
|
|
@@ -554,7 +595,9 @@ async function fetchModelsFromProvider(channel, channelType) {
|
|
|
554
595
|
supported: true,
|
|
555
596
|
cached: false,
|
|
556
597
|
fallbackUsed: true,
|
|
557
|
-
error: '
|
|
598
|
+
error: '请求频率限制',
|
|
599
|
+
errorHint: '请稍后再试或联系服务提供商提高限额',
|
|
600
|
+
statusCode: 429
|
|
558
601
|
});
|
|
559
602
|
} else {
|
|
560
603
|
console.error(`[ModelDetector] Unexpected status ${res.statusCode} for ${channel.name}`);
|
|
@@ -563,7 +606,9 @@ async function fetchModelsFromProvider(channel, channelType) {
|
|
|
563
606
|
supported: true,
|
|
564
607
|
cached: false,
|
|
565
608
|
fallbackUsed: true,
|
|
566
|
-
error: `HTTP ${res.statusCode}
|
|
609
|
+
error: `HTTP 错误 ${res.statusCode}`,
|
|
610
|
+
errorHint: '请检查 API 端点配置或联系服务提供商',
|
|
611
|
+
statusCode: res.statusCode
|
|
567
612
|
});
|
|
568
613
|
}
|
|
569
614
|
});
|