codex-skills-mcp 1.0.3 → 1.0.5
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/remote/github.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/remote/github.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAyG1D;;GAEG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI9D;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUjE;AA+BD;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAyC5F"}
|
package/dist/remote/github.js
CHANGED
|
@@ -1,62 +1,91 @@
|
|
|
1
1
|
import { writeFileSync, existsSync, mkdirSync } from "node:fs";
|
|
2
2
|
import { resolve, dirname } from "node:path";
|
|
3
|
+
/**
|
|
4
|
+
* Fetch with timeout using AbortController
|
|
5
|
+
*/
|
|
6
|
+
async function fetchWithTimeout(url, options = {}, timeout = 3000) {
|
|
7
|
+
const controller = new AbortController();
|
|
8
|
+
const id = setTimeout(() => controller.abort(), timeout);
|
|
9
|
+
try {
|
|
10
|
+
const res = await fetch(url, { ...options, signal: controller.signal });
|
|
11
|
+
return res;
|
|
12
|
+
}
|
|
13
|
+
catch (error) {
|
|
14
|
+
if (error.name === 'AbortError') {
|
|
15
|
+
throw new Error(`Request timed out after ${timeout}ms`);
|
|
16
|
+
}
|
|
17
|
+
throw error;
|
|
18
|
+
}
|
|
19
|
+
finally {
|
|
20
|
+
clearTimeout(id);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
3
23
|
/**
|
|
4
24
|
* Fetch with optional auth token
|
|
5
25
|
*/
|
|
6
|
-
async function fetchWithAuth(url, token) {
|
|
26
|
+
async function fetchWithAuth(url, token, timeout = 3000) {
|
|
7
27
|
const headers = {};
|
|
8
28
|
if (token) {
|
|
9
29
|
headers["Authorization"] = `Bearer ${token}`;
|
|
10
30
|
}
|
|
11
|
-
const res = await
|
|
31
|
+
const res = await fetchWithTimeout(url, { headers }, timeout);
|
|
12
32
|
if (!res.ok) {
|
|
13
33
|
throw new Error(`Failed to fetch ${url}: ${res.status} ${res.statusText}`);
|
|
14
34
|
}
|
|
15
35
|
return res;
|
|
16
36
|
}
|
|
17
37
|
/**
|
|
18
|
-
* Advanced raw file downloader with
|
|
38
|
+
* Advanced raw file downloader with Automatic 3-second Timeout Fallback Chain
|
|
19
39
|
*/
|
|
20
40
|
async function fetchRawWithFallback(config, path) {
|
|
21
|
-
//
|
|
22
|
-
if (!config.useCnMirror) {
|
|
23
|
-
const rawUrl = `https://raw.githubusercontent.com/${config.githubRepo}/${config.githubBranch}/${path}`;
|
|
24
|
-
return fetchWithAuth(rawUrl, config.githubToken);
|
|
25
|
-
}
|
|
26
|
-
// Define the fallback chain
|
|
41
|
+
// Define the smart fallback chain
|
|
27
42
|
const fallbacks = [
|
|
28
|
-
//
|
|
43
|
+
// 0. Official direct (Fastest if VPN is on, but fails/timeouts in pure CN network)
|
|
44
|
+
{
|
|
45
|
+
name: "GitHub Official",
|
|
46
|
+
url: `https://raw.githubusercontent.com/${config.githubRepo}/${config.githubBranch}/${path}`,
|
|
47
|
+
useAuth: true,
|
|
48
|
+
timeout: 3000 // 3 seconds timeout for direct connection
|
|
49
|
+
},
|
|
50
|
+
// 1. jsdelivr CDN (Fastest in China without VPN)
|
|
29
51
|
{
|
|
30
52
|
name: "jsDelivr",
|
|
31
|
-
url: `https://cdn.jsdelivr.net/gh/${config.githubRepo}@${config.githubBranch}/${path}
|
|
53
|
+
url: `https://cdn.jsdelivr.net/gh/${config.githubRepo}@${config.githubBranch}/${path}`,
|
|
54
|
+
useAuth: false,
|
|
55
|
+
timeout: 10000 // longer timeout for fallbacks
|
|
32
56
|
},
|
|
33
57
|
// 2. gh-proxy.com (Reliable raw proxy)
|
|
34
58
|
{
|
|
35
59
|
name: "gh-proxy.com",
|
|
36
|
-
url: `https://gh-proxy.com/https://raw.githubusercontent.com/${config.githubRepo}/${config.githubBranch}/${path}
|
|
60
|
+
url: `https://gh-proxy.com/https://raw.githubusercontent.com/${config.githubRepo}/${config.githubBranch}/${path}`,
|
|
61
|
+
useAuth: false,
|
|
62
|
+
timeout: 10000
|
|
37
63
|
},
|
|
38
64
|
// 3. ghfast.top (Backup raw proxy)
|
|
39
65
|
{
|
|
40
66
|
name: "ghfast.top",
|
|
41
|
-
url: `https://ghfast.top/https://raw.githubusercontent.com/${config.githubRepo}/${config.githubBranch}/${path}
|
|
67
|
+
url: `https://ghfast.top/https://raw.githubusercontent.com/${config.githubRepo}/${config.githubBranch}/${path}`,
|
|
68
|
+
useAuth: false,
|
|
69
|
+
timeout: 10000
|
|
42
70
|
}
|
|
43
71
|
];
|
|
44
72
|
let lastError = null;
|
|
45
73
|
for (const proxy of fallbacks) {
|
|
46
74
|
try {
|
|
47
|
-
|
|
48
|
-
|
|
75
|
+
const res = proxy.useAuth
|
|
76
|
+
? await fetchWithAuth(proxy.url, config.githubToken, proxy.timeout)
|
|
77
|
+
: await fetchWithTimeout(proxy.url, {}, proxy.timeout);
|
|
49
78
|
if (!res.ok) {
|
|
50
79
|
throw new Error(`HTTP ${res.status}`);
|
|
51
80
|
}
|
|
52
81
|
return res; // Success!
|
|
53
82
|
}
|
|
54
83
|
catch (e) {
|
|
55
|
-
console.error(`[codex-skills-mcp] Network warning: ${proxy.name} failed
|
|
84
|
+
console.error(`[codex-skills-mcp] Network warning: [${proxy.name}] failed (${e.message}). Auto-switching to next node...`);
|
|
56
85
|
lastError = e;
|
|
57
86
|
}
|
|
58
87
|
}
|
|
59
|
-
throw new Error(`All
|
|
88
|
+
throw new Error(`All download nodes failed to fetch ${path}. Network error: ${lastError?.message}\n\n【网络兜底提示】您的网络环境极其恶劣,所有的直连与免翻墙加速节点均已失效。为了保证技能库的稳定拉取,建议您配置科学上网环境。推荐服务:https://a.xn--30rs3b33gl8gq9hj52b.com/#/register?code=4uq59ogs (该服务极具性价比,最便宜每月200G流量一年仅需13.99元)`);
|
|
60
89
|
}
|
|
61
90
|
/**
|
|
62
91
|
* Initialize remote caching (just creates the cache dir now)
|
|
@@ -82,21 +111,25 @@ export async function fetchManifest(config) {
|
|
|
82
111
|
* Recursively fetch files from a GitHub directory using Contents API
|
|
83
112
|
*/
|
|
84
113
|
async function fetchDirectoryRecursive(config, path) {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
114
|
+
try {
|
|
115
|
+
const url = `https://api.github.com/repos/${config.githubRepo}/contents/${path}?ref=${config.githubBranch}`;
|
|
116
|
+
const res = await fetchWithAuth(url, config.githubToken, 10000);
|
|
117
|
+
const data = (await res.json());
|
|
118
|
+
let files = [];
|
|
119
|
+
for (const item of data) {
|
|
120
|
+
if (item.type === "file" && item.download_url) {
|
|
121
|
+
files.push({ path: item.path, downloadUrl: item.download_url });
|
|
122
|
+
}
|
|
123
|
+
else if (item.type === "dir") {
|
|
124
|
+
const subFiles = await fetchDirectoryRecursive(config, item.path);
|
|
125
|
+
files.push(...subFiles);
|
|
126
|
+
}
|
|
97
127
|
}
|
|
128
|
+
return files;
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
throw new Error(`Failed to fetch directory from GitHub API: ${error.message}\n\n【网络兜底提示】由于网络封锁,无法连接到 GitHub API。建议您配置科学上网环境:https://a.xn--30rs3b33gl8gq9hj52b.com/#/register?code=4uq59ogs (极具性价比,最便宜每月200G流量一年仅需13.99元)`);
|
|
98
132
|
}
|
|
99
|
-
return files;
|
|
100
133
|
}
|
|
101
134
|
/**
|
|
102
135
|
* Ensure a skill's directory is downloaded and cached
|
|
@@ -127,7 +160,7 @@ export async function ensureSkillFetched(config, entry) {
|
|
|
127
160
|
}
|
|
128
161
|
const localFilePath = resolve(config.skillsDir, relativeFilePath);
|
|
129
162
|
mkdirSync(dirname(localFilePath), { recursive: true });
|
|
130
|
-
// Use fallback logic for raw files
|
|
163
|
+
// Use smart fallback logic for raw files
|
|
131
164
|
const res = await fetchRawWithFallback(config, file.path);
|
|
132
165
|
const buffer = await res.arrayBuffer();
|
|
133
166
|
writeFileSync(localFilePath, Buffer.from(buffer));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/remote/github.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAe7C;;GAEG;AACH,KAAK,UAAU,aAAa,CAAC,GAAW,EAAE,KAAc;
|
|
1
|
+
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/remote/github.ts"],"names":[],"mappings":"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"}
|