@kwonye/mcpx 0.1.91 → 0.1.94
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/adapters/claude-desktop.d.ts +2 -1
- package/dist/adapters/claude-desktop.d.ts.map +1 -1
- package/dist/adapters/claude.d.ts +2 -1
- package/dist/adapters/claude.d.ts.map +1 -1
- package/dist/adapters/cline.d.ts.map +1 -1
- package/dist/adapters/codex.d.ts +2 -1
- package/dist/adapters/codex.d.ts.map +1 -1
- package/dist/adapters/cursor.d.ts +2 -1
- package/dist/adapters/cursor.d.ts.map +1 -1
- package/dist/adapters/kiro.d.ts +2 -1
- package/dist/adapters/kiro.d.ts.map +1 -1
- package/dist/adapters/opencode.d.ts.map +1 -1
- package/dist/adapters/qwen.d.ts +2 -1
- package/dist/adapters/qwen.d.ts.map +1 -1
- package/dist/adapters/utils/index.d.ts +11 -3
- package/dist/adapters/utils/index.d.ts.map +1 -1
- package/dist/adapters/vscode.d.ts +2 -1
- package/dist/adapters/vscode.d.ts.map +1 -1
- package/dist/{cli-b83jnbz7.js → cli-154shqmt.js} +180 -1717
- package/dist/cli-9fmn9y72.js +923 -0
- package/dist/{cli-btx8jwra.js → cli-csfsg1yf.js} +136 -8
- package/dist/{cli-grafmdtc.js → cli-mxmgxdm2.js} +181 -1718
- package/dist/cli-n8vt375e.js +2082 -0
- package/dist/{cli-qfvawh8e.js → cli-tk8bggg5.js} +82 -9
- package/dist/{cli-zbbeadz8.js → cli-zjepj3sj.js} +7 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +172 -20
- package/dist/{config-nkgc4c4n.js → config-dtc3c79c.js} +7 -3
- package/dist/core/config-repair.d.ts.map +1 -1
- package/dist/core/config-store.d.ts +3 -0
- package/dist/core/config-store.d.ts.map +1 -0
- package/dist/core/config.d.ts +13 -1
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/daemon.d.ts +1 -1
- package/dist/core/daemon.d.ts.map +1 -1
- package/dist/core/errors.d.ts +18 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/index.d.ts +14 -3
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +133 -12
- package/dist/core/oauth.d.ts.map +1 -1
- package/dist/core/paths.d.ts +4 -0
- package/dist/core/paths.d.ts.map +1 -1
- package/dist/core/plugin-cache.d.ts +21 -0
- package/dist/core/plugin-cache.d.ts.map +1 -0
- package/dist/core/plugin-data.d.ts +29 -0
- package/dist/core/plugin-data.d.ts.map +1 -0
- package/dist/core/plugin-lifecycle.d.ts +8 -0
- package/dist/core/plugin-lifecycle.d.ts.map +1 -0
- package/dist/core/plugin-manager.d.ts +52 -0
- package/dist/core/plugin-manager.d.ts.map +1 -0
- package/dist/core/plugin-parse.d.ts +6 -0
- package/dist/core/plugin-parse.d.ts.map +1 -0
- package/dist/core/plugin-projections.d.ts +9 -0
- package/dist/core/plugin-projections.d.ts.map +1 -0
- package/dist/core/plugin-source.d.ts +5 -0
- package/dist/core/plugin-source.d.ts.map +1 -0
- package/dist/core/registry.d.ts +4 -1
- package/dist/core/registry.d.ts.map +1 -1
- package/dist/core/secrets.d.ts.map +1 -1
- package/dist/core/server-auth.d.ts.map +1 -1
- package/dist/core/status.d.ts +1 -0
- package/dist/core/status.d.ts.map +1 -1
- package/dist/core/sync.d.ts +19 -2
- package/dist/core/sync.d.ts.map +1 -1
- package/dist/gateway/server.d.ts +4 -1
- package/dist/gateway/server.d.ts.map +1 -1
- package/dist/plugin-manager-1sjwfnah.js +31 -0
- package/dist/{registry-vykv33et.js → registry-n12thgf2.js} +2 -2
- package/dist/types.d.ts +85 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/package.json +3 -2
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
getSecretsStorePath,
|
|
6
6
|
readJsonFile,
|
|
7
7
|
writeJsonAtomic
|
|
8
|
-
} from "./cli-
|
|
8
|
+
} from "./cli-zjepj3sj.js";
|
|
9
9
|
import {
|
|
10
10
|
isServerEnabled,
|
|
11
11
|
normalizeServerSpecEnabled
|
|
@@ -32,6 +32,13 @@ function removeServer(config, name, force = false) {
|
|
|
32
32
|
throw new Error(`Server "${name}" does not exist.`);
|
|
33
33
|
}
|
|
34
34
|
delete config.servers[name];
|
|
35
|
+
if (config.projects) {
|
|
36
|
+
for (const project of Object.values(config.projects)) {
|
|
37
|
+
if (project.disabledServers) {
|
|
38
|
+
project.disabledServers = project.disabledServers.filter((s) => s !== name);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
35
42
|
}
|
|
36
43
|
function updateServer(config, name, spec) {
|
|
37
44
|
validateServerName(name);
|
|
@@ -66,14 +73,18 @@ function ensureGatewayToken(config, secrets) {
|
|
|
66
73
|
try {
|
|
67
74
|
const fileValue = fs.readFileSync(tokenPath, "utf8").trim();
|
|
68
75
|
if (fileValue) {
|
|
69
|
-
secrets.setSecret(secretName, fileValue);
|
|
70
76
|
return fileValue;
|
|
71
77
|
}
|
|
72
78
|
} catch {}
|
|
79
|
+
const storeValue = secrets.getSecret(secretName);
|
|
80
|
+
if (storeValue) {
|
|
81
|
+
ensureParentDir(tokenPath);
|
|
82
|
+
fs.writeFileSync(tokenPath, storeValue, { mode: 384 });
|
|
83
|
+
return storeValue;
|
|
84
|
+
}
|
|
73
85
|
const token = crypto.randomBytes(32).toString("base64url");
|
|
74
86
|
ensureParentDir(tokenPath);
|
|
75
87
|
fs.writeFileSync(tokenPath, token, { mode: 384 });
|
|
76
|
-
secrets.setSecret(secretName, token);
|
|
77
88
|
return token;
|
|
78
89
|
}
|
|
79
90
|
function rotateGatewayToken(config, secrets) {
|
|
@@ -82,7 +93,7 @@ function rotateGatewayToken(config, secrets) {
|
|
|
82
93
|
const tokenPath = getGatewayTokenPath(secretName);
|
|
83
94
|
ensureParentDir(tokenPath);
|
|
84
95
|
fs.writeFileSync(tokenPath, token, { mode: 384 });
|
|
85
|
-
secrets.
|
|
96
|
+
secrets.removeSecret(secretName);
|
|
86
97
|
return token;
|
|
87
98
|
}
|
|
88
99
|
function registerProject(globalConfig, projectPath, name) {
|
|
@@ -111,20 +122,82 @@ function setProjectServerEnabled(globalConfig, projectPath, serverName, enabled)
|
|
|
111
122
|
if (!project) {
|
|
112
123
|
throw new Error(`Project "${resolvedPath}" is not registered.`);
|
|
113
124
|
}
|
|
125
|
+
const serverSpec = globalConfig.servers[serverName];
|
|
126
|
+
if (!serverSpec) {
|
|
127
|
+
throw new Error(`Server "${serverName}" does not exist.`);
|
|
128
|
+
}
|
|
114
129
|
if (!project.disabledServers) {
|
|
115
130
|
project.disabledServers = [];
|
|
116
131
|
}
|
|
117
132
|
if (enabled) {
|
|
118
133
|
project.disabledServers = project.disabledServers.filter((s) => s !== serverName);
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
globalConfig.servers[serverName] = { ...serverSpec, enabled: true };
|
|
134
|
+
if (!isServerEnabled(serverSpec)) {
|
|
135
|
+
return { effective: false, reason: "globally_disabled" };
|
|
122
136
|
}
|
|
123
137
|
} else {
|
|
124
138
|
if (!project.disabledServers.includes(serverName)) {
|
|
125
139
|
project.disabledServers.push(serverName);
|
|
126
140
|
}
|
|
127
141
|
}
|
|
142
|
+
return { effective: true };
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// src/core/errors.ts
|
|
146
|
+
class UpstreamError extends Error {
|
|
147
|
+
code;
|
|
148
|
+
upstream;
|
|
149
|
+
status;
|
|
150
|
+
wwwAuthenticate;
|
|
151
|
+
constructor(upstream, code, message, options) {
|
|
152
|
+
super(message);
|
|
153
|
+
this.name = "UpstreamError";
|
|
154
|
+
this.code = code;
|
|
155
|
+
this.upstream = upstream;
|
|
156
|
+
this.status = options?.status;
|
|
157
|
+
this.wwwAuthenticate = options?.wwwAuthenticate;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
class SecretNotFoundError extends Error {
|
|
162
|
+
code = "secret_missing";
|
|
163
|
+
secretName;
|
|
164
|
+
constructor(secretName) {
|
|
165
|
+
super(`Secret not found: ${secretName}. Run: mcpx secret set ${secretName}`);
|
|
166
|
+
this.name = "SecretNotFoundError";
|
|
167
|
+
this.secretName = secretName;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
var TIMEOUT_RE = /timed out after \d+ms/;
|
|
171
|
+
var UNREACHABLE_PATTERNS = [
|
|
172
|
+
/fetch failed/i,
|
|
173
|
+
/ECONNREFUSED/,
|
|
174
|
+
/ENOTFOUND/,
|
|
175
|
+
/EAI_AGAIN/,
|
|
176
|
+
/socket hang up/,
|
|
177
|
+
/ENOENT/,
|
|
178
|
+
/connect econnrefused/i
|
|
179
|
+
];
|
|
180
|
+
function classifyUpstreamError(upstream, error, wwwAuthenticate) {
|
|
181
|
+
if (error instanceof UpstreamError)
|
|
182
|
+
return error;
|
|
183
|
+
if (error instanceof SecretNotFoundError) {
|
|
184
|
+
return new UpstreamError(upstream, "secret_missing", error.message);
|
|
185
|
+
}
|
|
186
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
187
|
+
const maybeHttpError = error;
|
|
188
|
+
if (maybeHttpError?.code && (maybeHttpError.code === 401 || maybeHttpError.code === 403)) {
|
|
189
|
+
return new UpstreamError(upstream, "auth_required", message, {
|
|
190
|
+
status: maybeHttpError.code,
|
|
191
|
+
wwwAuthenticate
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
if (TIMEOUT_RE.test(message)) {
|
|
195
|
+
return new UpstreamError(upstream, "timeout", message);
|
|
196
|
+
}
|
|
197
|
+
if (UNREACHABLE_PATTERNS.some((p) => p.test(message))) {
|
|
198
|
+
return new UpstreamError(upstream, "unreachable", message);
|
|
199
|
+
}
|
|
200
|
+
return new UpstreamError(upstream, "upstream_error", message);
|
|
128
201
|
}
|
|
129
202
|
|
|
130
203
|
// src/core/secrets.ts
|
|
@@ -240,7 +313,7 @@ class SecretsManager {
|
|
|
240
313
|
return value;
|
|
241
314
|
const secret = this.getSecret(secretName);
|
|
242
315
|
if (!secret)
|
|
243
|
-
throw new
|
|
316
|
+
throw new SecretNotFoundError(secretName);
|
|
244
317
|
return secret;
|
|
245
318
|
}
|
|
246
319
|
rotateLocalToken(secretName = "local_gateway_token") {
|
|
@@ -260,4 +333,4 @@ function readSecretValueFromStdin() {
|
|
|
260
333
|
return content;
|
|
261
334
|
}
|
|
262
335
|
|
|
263
|
-
export { SecretsManager, readSecretValueFromStdin, validateServerName, addServer, removeServer, updateServer, setServerEnabled, getGatewayTokenSecretName, ensureGatewayToken, rotateGatewayToken, registerProject, unregisterProject, setProjectServerEnabled };
|
|
336
|
+
export { UpstreamError, SecretNotFoundError, classifyUpstreamError, SecretsManager, readSecretValueFromStdin, validateServerName, addServer, removeServer, updateServer, setServerEnabled, getGatewayTokenSecretName, ensureGatewayToken, rotateGatewayToken, registerProject, unregisterProject, setProjectServerEnabled };
|
|
@@ -59,6 +59,12 @@ function getStagedVersionPath() {
|
|
|
59
59
|
function getUpdateLockPath() {
|
|
60
60
|
return path.join(getUpdatesDir(), ".update.lock");
|
|
61
61
|
}
|
|
62
|
+
function getPluginCacheRoot() {
|
|
63
|
+
return path.join(getDataRoot(), "mcpx", "plugins", "cache");
|
|
64
|
+
}
|
|
65
|
+
function getPluginDataRoot() {
|
|
66
|
+
return path.join(getDataRoot(), "mcpx", "plugins", "data");
|
|
67
|
+
}
|
|
62
68
|
function ensureDir(dirPath) {
|
|
63
69
|
fs.mkdirSync(dirPath, { recursive: true });
|
|
64
70
|
}
|
|
@@ -108,4 +114,4 @@ function sha256(value) {
|
|
|
108
114
|
return crypto.createHash("sha256").update(value).digest("hex");
|
|
109
115
|
}
|
|
110
116
|
|
|
111
|
-
export { homeDir, getConfigPath, getSkillsDir, getManagedIndexPath, getSecretsStorePath, getSecretsKeyPath, getPidPath, getLogPath, getGatewayTokenPath, getUpdatesDir, getStagedVersionPath, getUpdateLockPath, ensureDir, ensureParentDir, findProjectConfigPath, readJsonFile, writeJsonAtomic, sha256 };
|
|
117
|
+
export { homeDir, getConfigPath, getSkillsDir, getManagedIndexPath, getSecretsStorePath, getSecretsKeyPath, getPidPath, getLogPath, getGatewayTokenPath, getUpdatesDir, getStagedVersionPath, getUpdateLockPath, getPluginCacheRoot, getPluginDataRoot, ensureDir, ensureParentDir, findProjectConfigPath, readJsonFile, writeJsonAtomic, sha256 };
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAq+DA,wBAAsB,MAAM,CAAC,IAAI,WAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAoE/D"}
|
package/dist/cli.js
CHANGED
|
@@ -6,18 +6,12 @@ import {
|
|
|
6
6
|
buildStatusReport,
|
|
7
7
|
checkForUpdates,
|
|
8
8
|
defaultAuthSecretName,
|
|
9
|
-
deleteSkill,
|
|
10
9
|
extractRequiredInputs,
|
|
11
10
|
fetchRegistryServerDetail,
|
|
12
|
-
getAdapters,
|
|
13
11
|
getDaemonStatus,
|
|
14
|
-
getGatewayUrl,
|
|
15
|
-
getSkill,
|
|
16
12
|
getStagedCliPath,
|
|
17
13
|
getStagedUpdate,
|
|
18
14
|
listAuthBindings,
|
|
19
|
-
listSkills,
|
|
20
|
-
loadManagedIndex,
|
|
21
15
|
mapRegistryToSpec,
|
|
22
16
|
maybePrefixBearer,
|
|
23
17
|
performRollback,
|
|
@@ -30,23 +24,33 @@ import {
|
|
|
30
24
|
runBackgroundUpdate,
|
|
31
25
|
runDaemonForeground,
|
|
32
26
|
runOAuthLogin,
|
|
33
|
-
saveSkill,
|
|
34
27
|
secretRefName,
|
|
35
28
|
selectBestPackage,
|
|
36
29
|
shouldUseStagedCli,
|
|
37
30
|
startDaemon,
|
|
38
31
|
stopDaemon,
|
|
39
|
-
syncAllClients,
|
|
40
32
|
toSecretRef
|
|
41
|
-
} from "./cli-
|
|
33
|
+
} from "./cli-mxmgxdm2.js";
|
|
42
34
|
import {
|
|
35
|
+
deleteSkill,
|
|
36
|
+
getAdapters,
|
|
37
|
+
getGatewayUrl,
|
|
38
|
+
getSkill,
|
|
39
|
+
listSkills,
|
|
40
|
+
loadManagedIndex,
|
|
41
|
+
persistSyncState,
|
|
42
|
+
saveSkill,
|
|
43
|
+
syncAllClients
|
|
44
|
+
} from "./cli-n8vt375e.js";
|
|
45
|
+
import {
|
|
46
|
+
ConfigLoadError,
|
|
43
47
|
loadConfig,
|
|
44
48
|
loadMergedConfig,
|
|
45
49
|
loadProjectConfig,
|
|
46
50
|
resolveActiveConfig,
|
|
47
51
|
saveConfig,
|
|
48
52
|
saveProjectConfig
|
|
49
|
-
} from "./cli-
|
|
53
|
+
} from "./cli-csfsg1yf.js";
|
|
50
54
|
import {
|
|
51
55
|
SecretsManager,
|
|
52
56
|
addServer,
|
|
@@ -56,12 +60,12 @@ import {
|
|
|
56
60
|
removeServer,
|
|
57
61
|
rotateGatewayToken,
|
|
58
62
|
setServerEnabled
|
|
59
|
-
} from "./cli-
|
|
63
|
+
} from "./cli-tk8bggg5.js";
|
|
60
64
|
import {
|
|
61
65
|
getConfigPath,
|
|
62
66
|
getManagedIndexPath,
|
|
63
67
|
getSecretsStorePath
|
|
64
|
-
} from "./cli-
|
|
68
|
+
} from "./cli-zjepj3sj.js";
|
|
65
69
|
import {
|
|
66
70
|
__require,
|
|
67
71
|
isServerEnabled
|
|
@@ -1070,8 +1074,9 @@ async function ensureDaemonIfEnabled(cliPath, secrets) {
|
|
|
1070
1074
|
async function autoSyncManagedEntries(config, cliPath) {
|
|
1071
1075
|
const secrets = new SecretsManager;
|
|
1072
1076
|
await ensureDaemonIfEnabled(cliPath, secrets);
|
|
1073
|
-
const
|
|
1074
|
-
|
|
1077
|
+
const summary = syncAllClients(config, secrets);
|
|
1078
|
+
persistSyncState(summary, config);
|
|
1079
|
+
saveConfig(config);
|
|
1075
1080
|
printSyncSummary(summary, false);
|
|
1076
1081
|
ensureExitCodeForSyncFailures(summary.hasErrors);
|
|
1077
1082
|
}
|
|
@@ -1565,6 +1570,8 @@ async function reconnectGatewayAndSync(cliPath) {
|
|
|
1565
1570
|
process.stdout.write(`${restart.message} pid=${restart.pid} port=${restart.port}
|
|
1566
1571
|
`);
|
|
1567
1572
|
const summary = syncAllClients(config, secrets);
|
|
1573
|
+
persistSyncState(summary, config);
|
|
1574
|
+
saveConfig(config);
|
|
1568
1575
|
printSyncSummary(summary, false);
|
|
1569
1576
|
}
|
|
1570
1577
|
async function setServerEnabledInteractively(rl, serverName, enabled, cliPath) {
|
|
@@ -1913,11 +1920,13 @@ function registerListCommand(parent) {
|
|
|
1913
1920
|
}
|
|
1914
1921
|
function registerSyncCommand(program, cliPath) {
|
|
1915
1922
|
program.command("sync [clients...]").option("--client <id>", "Limit sync to specific client(s), comma-separated or repeated", (value, prev = []) => [...prev, value], []).option("--json", "Output JSON").description("Sync gateway configuration to supported clients (e.g. `mcpx sync claude`)").action(async (clients, options) => {
|
|
1916
|
-
const config =
|
|
1923
|
+
const config = loadConfig();
|
|
1917
1924
|
const targetClients = parseClientList([...clients ?? [], ...options.client ?? []]);
|
|
1918
1925
|
const secrets = new SecretsManager;
|
|
1919
1926
|
await ensureDaemonIfEnabled(cliPath, secrets);
|
|
1920
|
-
const summary = syncAllClients(config, secrets, targetClients);
|
|
1927
|
+
const summary = syncAllClients(config, secrets, { targetClients });
|
|
1928
|
+
persistSyncState(summary, config);
|
|
1929
|
+
saveConfig(config);
|
|
1921
1930
|
printSyncSummary(summary, options.json ?? false);
|
|
1922
1931
|
ensureExitCodeForSyncFailures(summary.hasErrors);
|
|
1923
1932
|
});
|
|
@@ -2307,11 +2316,11 @@ function registerProjectCommands(program, cliPath) {
|
|
|
2307
2316
|
name: projectName,
|
|
2308
2317
|
servers: {}
|
|
2309
2318
|
};
|
|
2310
|
-
const { saveProjectConfig: saveProjectConfig2 } = await import("./config-
|
|
2319
|
+
const { saveProjectConfig: saveProjectConfig2 } = await import("./config-dtc3c79c.js");
|
|
2311
2320
|
saveProjectConfig2(localConfig, targetPath);
|
|
2312
2321
|
process.stdout.write(`Initialized project configuration at: ${targetPath}
|
|
2313
2322
|
`);
|
|
2314
|
-
const { registerProject: registerProject2 } = await import("./registry-
|
|
2323
|
+
const { registerProject: registerProject2 } = await import("./registry-n12thgf2.js");
|
|
2315
2324
|
const globalConfig = loadConfig();
|
|
2316
2325
|
registerProject2(globalConfig, process.cwd(), projectName);
|
|
2317
2326
|
saveConfig(globalConfig);
|
|
@@ -2342,7 +2351,7 @@ function registerProjectCommands(program, cliPath) {
|
|
|
2342
2351
|
process.exit(1);
|
|
2343
2352
|
}
|
|
2344
2353
|
const entry = globalConfig.projects[resolvedPath];
|
|
2345
|
-
const { unregisterProject: unregisterProject2 } = await import("./registry-
|
|
2354
|
+
const { unregisterProject: unregisterProject2 } = await import("./registry-n12thgf2.js");
|
|
2346
2355
|
unregisterProject2(globalConfig, resolvedPath);
|
|
2347
2356
|
saveConfig(globalConfig);
|
|
2348
2357
|
process.stdout.write(`Unregistered project "${entry.name}" (${resolvedPath}) from the global configuration.
|
|
@@ -2353,6 +2362,131 @@ function registerProjectCommands(program, cliPath) {
|
|
|
2353
2362
|
await autoSyncManagedEntries(mergedConfig, cliPath);
|
|
2354
2363
|
});
|
|
2355
2364
|
}
|
|
2365
|
+
function registerPluginCommands(program, _cliPath) {
|
|
2366
|
+
const plugin = program.command("plugin").description("Manage plugins");
|
|
2367
|
+
plugin.command("inspect <source>").description("Inspect plugin manifest and components").action(async (source) => {
|
|
2368
|
+
const { inspectPlugin } = await import("./plugin-manager-1sjwfnah.js");
|
|
2369
|
+
try {
|
|
2370
|
+
const info = await inspectPlugin(source);
|
|
2371
|
+
process.stdout.write(JSON.stringify(info, null, 2) + `
|
|
2372
|
+
`);
|
|
2373
|
+
} catch (e) {
|
|
2374
|
+
process.stderr.write(`Error: ${e.message}
|
|
2375
|
+
`);
|
|
2376
|
+
process.exit(1);
|
|
2377
|
+
}
|
|
2378
|
+
});
|
|
2379
|
+
plugin.command("install <source>").option("--name <name>", "Plugin name").option("--no-enable", "Don't enable plugin after install").description("Install plugin").action(async (source, options) => {
|
|
2380
|
+
const { installPlugin } = await import("./plugin-manager-1sjwfnah.js");
|
|
2381
|
+
try {
|
|
2382
|
+
const p = await installPlugin(source, {
|
|
2383
|
+
name: options.name,
|
|
2384
|
+
enabled: !options.noEnable
|
|
2385
|
+
});
|
|
2386
|
+
process.stdout.write(`Plugin installed: ${p.id}
|
|
2387
|
+
`);
|
|
2388
|
+
} catch (e) {
|
|
2389
|
+
process.stderr.write(`Error: ${e.message}
|
|
2390
|
+
`);
|
|
2391
|
+
process.exit(1);
|
|
2392
|
+
}
|
|
2393
|
+
});
|
|
2394
|
+
plugin.command("approve <name> <component>").description("Approve a plugin component (hooks, mcpServers)").action(async (name, component) => {
|
|
2395
|
+
const { approvePluginComponent } = await import("./plugin-manager-1sjwfnah.js");
|
|
2396
|
+
try {
|
|
2397
|
+
await approvePluginComponent(name, component);
|
|
2398
|
+
process.stdout.write(`Approved ${component} for plugin ${name}
|
|
2399
|
+
`);
|
|
2400
|
+
} catch (e) {
|
|
2401
|
+
process.stderr.write(`Error: ${e.message}
|
|
2402
|
+
`);
|
|
2403
|
+
process.exit(1);
|
|
2404
|
+
}
|
|
2405
|
+
});
|
|
2406
|
+
plugin.command("prepare <name>").description("Install plugin dependencies").action(async (name) => {
|
|
2407
|
+
const { preparePlugin } = await import("./plugin-manager-1sjwfnah.js");
|
|
2408
|
+
try {
|
|
2409
|
+
await preparePlugin(name);
|
|
2410
|
+
process.stdout.write(`Plugin ${name} prepared
|
|
2411
|
+
`);
|
|
2412
|
+
} catch (e) {
|
|
2413
|
+
process.stderr.write(`Error: ${e.message}
|
|
2414
|
+
`);
|
|
2415
|
+
process.exit(1);
|
|
2416
|
+
}
|
|
2417
|
+
});
|
|
2418
|
+
plugin.command("update <name>").description("Update plugin to latest version").action(async (name) => {
|
|
2419
|
+
const { updatePlugin } = await import("./plugin-manager-1sjwfnah.js");
|
|
2420
|
+
try {
|
|
2421
|
+
const p = await updatePlugin(name);
|
|
2422
|
+
process.stdout.write(`Plugin ${name} updated to ${p.version}
|
|
2423
|
+
`);
|
|
2424
|
+
} catch (e) {
|
|
2425
|
+
process.stderr.write(`Error: ${e.message}
|
|
2426
|
+
`);
|
|
2427
|
+
process.exit(1);
|
|
2428
|
+
}
|
|
2429
|
+
});
|
|
2430
|
+
plugin.command("uninstall <name>").option("--keep-data", "Keep plugin data after uninstall").description("Uninstall plugin").action(async (name, options) => {
|
|
2431
|
+
const { uninstallPlugin } = await import("./plugin-manager-1sjwfnah.js");
|
|
2432
|
+
try {
|
|
2433
|
+
await uninstallPlugin(name, options.keepData || false);
|
|
2434
|
+
process.stdout.write(`Plugin ${name} uninstalled
|
|
2435
|
+
`);
|
|
2436
|
+
} catch (e) {
|
|
2437
|
+
process.stderr.write(`Error: ${e.message}
|
|
2438
|
+
`);
|
|
2439
|
+
process.exit(1);
|
|
2440
|
+
}
|
|
2441
|
+
});
|
|
2442
|
+
plugin.command("enable <name>").description("Enable plugin").action(async (name) => {
|
|
2443
|
+
const { enablePlugin } = await import("./plugin-manager-1sjwfnah.js");
|
|
2444
|
+
try {
|
|
2445
|
+
await enablePlugin(name);
|
|
2446
|
+
process.stdout.write(`Plugin ${name} enabled
|
|
2447
|
+
`);
|
|
2448
|
+
} catch (e) {
|
|
2449
|
+
process.stderr.write(`Error: ${e.message}
|
|
2450
|
+
`);
|
|
2451
|
+
process.exit(1);
|
|
2452
|
+
}
|
|
2453
|
+
});
|
|
2454
|
+
plugin.command("disable <name>").description("Disable plugin").action(async (name) => {
|
|
2455
|
+
const { disablePlugin } = await import("./plugin-manager-1sjwfnah.js");
|
|
2456
|
+
try {
|
|
2457
|
+
await disablePlugin(name);
|
|
2458
|
+
process.stdout.write(`Plugin ${name} disabled
|
|
2459
|
+
`);
|
|
2460
|
+
} catch (e) {
|
|
2461
|
+
process.stderr.write(`Error: ${e.message}
|
|
2462
|
+
`);
|
|
2463
|
+
process.exit(1);
|
|
2464
|
+
}
|
|
2465
|
+
});
|
|
2466
|
+
plugin.command("status [name]").description("Show plugin status").action(async (name) => {
|
|
2467
|
+
const { getPluginStatus, listPlugins } = await import("./plugin-manager-1sjwfnah.js");
|
|
2468
|
+
try {
|
|
2469
|
+
if (name) {
|
|
2470
|
+
const p = await getPluginStatus(name);
|
|
2471
|
+
if (!p) {
|
|
2472
|
+
process.stderr.write(`Error: Plugin ${name} not found
|
|
2473
|
+
`);
|
|
2474
|
+
process.exit(1);
|
|
2475
|
+
}
|
|
2476
|
+
process.stdout.write(JSON.stringify(p, null, 2) + `
|
|
2477
|
+
`);
|
|
2478
|
+
} else {
|
|
2479
|
+
const plugins = await listPlugins();
|
|
2480
|
+
process.stdout.write(JSON.stringify(plugins, null, 2) + `
|
|
2481
|
+
`);
|
|
2482
|
+
}
|
|
2483
|
+
} catch (e) {
|
|
2484
|
+
process.stderr.write(`Error: ${e.message}
|
|
2485
|
+
`);
|
|
2486
|
+
process.exit(1);
|
|
2487
|
+
}
|
|
2488
|
+
});
|
|
2489
|
+
}
|
|
2356
2490
|
function registerProxyCommand(program) {
|
|
2357
2491
|
program.command("proxy <name>").description("Run a stdio MCP proxy bridging to the local mcpx HTTP gateway for the given upstream server").action(async (name) => {
|
|
2358
2492
|
await runStdioProxy(name);
|
|
@@ -2418,12 +2552,30 @@ async function runCli(argv = process.argv) {
|
|
|
2418
2552
|
registerMcpCompat(program, cliPath);
|
|
2419
2553
|
registerUpdateCommand(program);
|
|
2420
2554
|
registerProjectCommands(program, cliPath);
|
|
2555
|
+
registerPluginCommands(program, cliPath);
|
|
2421
2556
|
await program.parseAsync(argv);
|
|
2422
2557
|
}
|
|
2423
2558
|
if (process.argv[1] && import.meta.url === pathToFileURL(fs.realpathSync(process.argv[1])).href) {
|
|
2424
2559
|
runCli().catch((error) => {
|
|
2425
|
-
|
|
2560
|
+
if (error instanceof ConfigLoadError) {
|
|
2561
|
+
process.stderr.write(`Config error: ${error.message}
|
|
2562
|
+
`);
|
|
2563
|
+
if (error.backupPath) {
|
|
2564
|
+
process.stderr.write(`Backup saved to: ${error.backupPath}
|
|
2426
2565
|
`);
|
|
2566
|
+
}
|
|
2567
|
+
if (error.issues && error.issues.length > 0) {
|
|
2568
|
+
for (const issue of error.issues.slice(0, 5)) {
|
|
2569
|
+
process.stderr.write(` - ${issue}
|
|
2570
|
+
`);
|
|
2571
|
+
}
|
|
2572
|
+
}
|
|
2573
|
+
process.stderr.write(`Fix the config file or restore from backup.
|
|
2574
|
+
`);
|
|
2575
|
+
} else {
|
|
2576
|
+
process.stderr.write(`${error.message}
|
|
2577
|
+
`);
|
|
2578
|
+
}
|
|
2427
2579
|
process.exit(1);
|
|
2428
2580
|
});
|
|
2429
2581
|
}
|
|
@@ -1,20 +1,24 @@
|
|
|
1
1
|
import {
|
|
2
|
+
ConfigLoadError,
|
|
2
3
|
defaultConfig,
|
|
3
4
|
loadConfig,
|
|
4
5
|
loadMergedConfig,
|
|
5
6
|
loadProjectConfig,
|
|
7
|
+
migrateProjectServers,
|
|
6
8
|
resolveActiveConfig,
|
|
7
9
|
saveConfig,
|
|
8
10
|
saveProjectConfig
|
|
9
|
-
} from "./cli-
|
|
10
|
-
import"./cli-
|
|
11
|
+
} from "./cli-csfsg1yf.js";
|
|
12
|
+
import"./cli-zjepj3sj.js";
|
|
11
13
|
import"./cli-s4gspqdf.js";
|
|
12
14
|
export {
|
|
13
15
|
saveProjectConfig,
|
|
14
16
|
saveConfig,
|
|
15
17
|
resolveActiveConfig,
|
|
18
|
+
migrateProjectServers,
|
|
16
19
|
loadProjectConfig,
|
|
17
20
|
loadMergedConfig,
|
|
18
21
|
loadConfig,
|
|
19
|
-
defaultConfig
|
|
22
|
+
defaultConfig,
|
|
23
|
+
ConfigLoadError
|
|
20
24
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-repair.d.ts","sourceRoot":"","sources":["../../src/core/config-repair.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAsB,MAAM,aAAa,CAAC;AAsDlE,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"config-repair.d.ts","sourceRoot":"","sources":["../../src/core/config-repair.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAsB,MAAM,aAAa,CAAC;AAsDlE,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAwB3D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-store.d.ts","sourceRoot":"","sources":["../../src/core/config-store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA+C9C,wBAAsB,YAAY,CAAC,CAAC,EAClC,EAAE,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAC1C,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,CAAC,CAAC,CAQZ"}
|
package/dist/core/config.d.ts
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import { type McpxConfig, type UpstreamServerSpec } from "../types.js";
|
|
2
|
+
export declare class ConfigLoadError extends Error {
|
|
3
|
+
readonly configPath: string;
|
|
4
|
+
readonly backupPath?: string;
|
|
5
|
+
readonly issues?: string[];
|
|
6
|
+
constructor(configPath: string, message: string, issues?: string[]);
|
|
7
|
+
}
|
|
2
8
|
export interface ProjectLocalConfig {
|
|
3
9
|
name?: string;
|
|
4
10
|
servers: Record<string, UpstreamServerSpec>;
|
|
@@ -6,7 +12,9 @@ export interface ProjectLocalConfig {
|
|
|
6
12
|
export declare function defaultConfig(): McpxConfig;
|
|
7
13
|
export declare function loadConfig(configPath?: string): McpxConfig;
|
|
8
14
|
export declare function saveConfig(config: McpxConfig, configPath?: string): void;
|
|
9
|
-
export declare function loadProjectConfig(projectConfigPath: string
|
|
15
|
+
export declare function loadProjectConfig(projectConfigPath: string, options?: {
|
|
16
|
+
strict?: boolean;
|
|
17
|
+
}): ProjectLocalConfig;
|
|
10
18
|
export declare function saveProjectConfig(config: ProjectLocalConfig, projectConfigPath: string): void;
|
|
11
19
|
export declare function loadMergedConfig(configPath?: string): McpxConfig;
|
|
12
20
|
export interface ActiveConfigContext {
|
|
@@ -16,6 +24,10 @@ export interface ActiveConfigContext {
|
|
|
16
24
|
config: McpxConfig;
|
|
17
25
|
save: () => void;
|
|
18
26
|
}
|
|
27
|
+
export declare function migrateProjectServers(config: McpxConfig, projectPath: string): {
|
|
28
|
+
migrated: string[];
|
|
29
|
+
conflicts: string[];
|
|
30
|
+
};
|
|
19
31
|
export declare function resolveActiveConfig(options?: {
|
|
20
32
|
global?: boolean;
|
|
21
33
|
local?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAA6C,KAAK,UAAU,EAAwB,KAAK,kBAAkB,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAA6C,KAAK,UAAU,EAAwB,KAAK,kBAAkB,EAAuE,MAAM,aAAa,CAAC;AAK7M,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;gBAEf,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE;CAMnE;AA0GD,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;CAC7C;AAOD,wBAAgB,aAAa,IAAI,UAAU,CAa1C;AAED,wBAAgB,UAAU,CAAC,UAAU,SAAkB,GAAG,UAAU,CAyDnE;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,SAAkB,GAAG,IAAI,CAMjF;AAED,wBAAgB,iBAAiB,CAAC,iBAAiB,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,kBAAkB,CAmB/G;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAK7F;AAED,wBAAgB,gBAAgB,CAAC,UAAU,SAAkB,GAAG,UAAU,CA+BzE;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CA0B1H;AAED,wBAAgB,mBAAmB,CAAC,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,mBAAmB,CAyB5G"}
|
package/dist/core/daemon.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ export interface DaemonStartResult {
|
|
|
13
13
|
port: number;
|
|
14
14
|
message: string;
|
|
15
15
|
}
|
|
16
|
-
export declare function resolveGatewayPort(config: McpxConfig): Promise<number>;
|
|
16
|
+
export declare function resolveGatewayPort(config: McpxConfig, secrets?: SecretsManager): Promise<number>;
|
|
17
17
|
export declare function getDaemonStatus(config: McpxConfig): DaemonStatus;
|
|
18
18
|
export declare function startDaemon(config: McpxConfig, cliPath: string, secrets: SecretsManager): Promise<DaemonStartResult>;
|
|
19
19
|
export declare function stopDaemon(): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/core/daemon.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/core/daemon.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAK9C,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AA6CD,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAgCtG;AA6BD,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,YAAY,CAmBhE;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA+C1H;AAED,wBAAgB,UAAU,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA8ClE;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAG5H;AAED,wBAAgB,cAAc,CAAC,QAAQ,SAAM,GAAG,MAAM,CAQrD;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAqB5G"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export type UpstreamErrorCode = "auth_required" | "auth_expired" | "secret_missing" | "unreachable" | "timeout" | "upstream_error";
|
|
2
|
+
export declare class UpstreamError extends Error {
|
|
3
|
+
readonly code: UpstreamErrorCode;
|
|
4
|
+
readonly upstream: string;
|
|
5
|
+
readonly status?: number;
|
|
6
|
+
readonly wwwAuthenticate?: string;
|
|
7
|
+
constructor(upstream: string, code: UpstreamErrorCode, message: string, options?: {
|
|
8
|
+
status?: number;
|
|
9
|
+
wwwAuthenticate?: string;
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
export declare class SecretNotFoundError extends Error {
|
|
13
|
+
readonly code: UpstreamErrorCode;
|
|
14
|
+
readonly secretName: string;
|
|
15
|
+
constructor(secretName: string);
|
|
16
|
+
}
|
|
17
|
+
export declare function classifyUpstreamError(upstream: string, error: unknown, wwwAuthenticate?: string): UpstreamError;
|
|
18
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GACzB,eAAe,GACf,cAAc,GACd,gBAAgB,GAChB,aAAa,GACb,SAAS,GACT,gBAAgB,CAAC;AAErB,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;gBAEtB,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE;CAQhI;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAoB;IACpD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEhB,UAAU,EAAE,MAAM;CAK/B;AAaD,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,EACd,eAAe,CAAC,EAAE,MAAM,GACvB,aAAa,CA0Bf"}
|
package/dist/core/index.d.ts
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
export { loadConfig, saveConfig, defaultConfig, loadMergedConfig, loadProjectConfig, saveProjectConfig } from "./config.js";
|
|
1
|
+
export { loadConfig, saveConfig, defaultConfig, loadMergedConfig, loadProjectConfig, saveProjectConfig, ConfigLoadError, migrateProjectServers } from "./config.js";
|
|
2
|
+
export { mutateConfig } from "./config-store.js";
|
|
3
|
+
export { UpstreamError, SecretNotFoundError, classifyUpstreamError } from "./errors.js";
|
|
4
|
+
export type { UpstreamErrorCode } from "./errors.js";
|
|
2
5
|
export { parseCliAddCommand, tokenizeCommandLine } from "./add-command.js";
|
|
3
6
|
export { buildEnrichedPath } from "./spawn-env.js";
|
|
4
7
|
export { runOAuthLogin, getOAuthAccessToken, isOAuthReference, oauthReferenceServerName } from "./oauth.js";
|
|
5
8
|
export type { OAuthCodeReceiver } from "./oauth.js";
|
|
6
9
|
export { getDaemonStatus, startDaemon, stopDaemon, restartDaemon, readDaemonLogs, runDaemonForeground } from "./daemon.js";
|
|
7
10
|
export type { DaemonStatus, DaemonStartResult } from "./daemon.js";
|
|
8
|
-
export { syncAllClients, getGatewayUrl } from "./sync.js";
|
|
11
|
+
export { syncAllClients, getGatewayUrl, persistSyncState } from "./sync.js";
|
|
9
12
|
export type { SyncSummary } from "./sync.js";
|
|
10
13
|
export { addServer, removeServer, updateServer, setServerEnabled, setProjectServerEnabled, registerProject, unregisterProject, ensureGatewayToken, rotateGatewayToken } from "./registry.js";
|
|
11
14
|
export { listSkills, getSkill, saveSkill, deleteSkill } from "./skills.js";
|
|
@@ -16,11 +19,19 @@ export type { StatusReport, StatusServerEntry, StatusClientMapping, StatusAuthBi
|
|
|
16
19
|
export { probeHttpAuthRequirement } from "./auth-probe.js";
|
|
17
20
|
export type { HttpAuthProbeResult } from "./auth-probe.js";
|
|
18
21
|
export { loadManagedIndex } from "./managed-index.js";
|
|
22
|
+
export { PluginManager } from "./plugin-manager.js";
|
|
23
|
+
export { PluginCache } from "./plugin-cache.js";
|
|
24
|
+
export { PluginDataManager } from "./plugin-data.js";
|
|
25
|
+
export { syncPluginsToClient, prunePluginProjections, pruneAllPluginProjections } from "./plugin-projections.js";
|
|
26
|
+
export { PluginLifecycle } from "./plugin-lifecycle.js";
|
|
27
|
+
export { parseSource } from "./plugin-source.js";
|
|
28
|
+
export { readManifest, discoverComponents, hasManifest } from "./plugin-parse.js";
|
|
29
|
+
export { inspectPlugin, installPlugin, preparePlugin, updatePlugin, uninstallPlugin, enablePlugin, disablePlugin, approvePluginComponent, getPluginStatus, listPlugins } from "./plugin-manager.js";
|
|
19
30
|
export { getConfigPath, getManagedIndexPath } from "./paths.js";
|
|
20
31
|
export { checkForUpdates, getStagedUpdate, getStagedCliPath, clearStagedUpdate, compareVersions, shouldUseStagedCli } from "./update.js";
|
|
21
32
|
export type { UpdateStatus, StagedUpdateInfo } from "./update.js";
|
|
22
33
|
export { startBackgroundUpdateCheck, performUpdate, performRollback } from "./update-manager.js";
|
|
23
34
|
export { fetchRegistryServerDetail, selectBestPackage, extractRequiredInputs, mapRegistryToSpec } from "./registry-client.js";
|
|
24
35
|
export type { RequiredInput } from "./registry-client.js";
|
|
25
|
-
export type { McpxConfig, ClientId, ClientStatus, UpstreamServerSpec, HttpServerSpec, StdioServerSpec, GatewayConfig, ClientSyncState, ManagedIndex, ManagedEntry, ManagedClientState, ClientImportCandidate, ClientImportScanResult, ClientImportSkippedEntry, SyncImportReport, SyncImportedEntry, SyncDuplicateImportEntry, SyncImportConflictEntry, SyncImportErrorEntry, SyncResult, ManagedGatewayEntry, ProjectConfig, ProjectScope } from "../types.js";
|
|
36
|
+
export type { McpxConfig, ClientId, ClientStatus, UpstreamServerSpec, HttpServerSpec, StdioServerSpec, GatewayConfig, ClientSyncState, ManagedIndex, ManagedEntry, ManagedClientState, ClientImportCandidate, ClientImportScanResult, ClientImportSkippedEntry, SyncImportReport, SyncImportedEntry, SyncDuplicateImportEntry, SyncImportConflictEntry, SyncImportErrorEntry, SyncResult, ManagedGatewayEntry, ProjectConfig, ProjectScope, ManagedPlugin, PluginManifest, PluginComponent, PluginSource, DiscoveredComponents, DiscoveredComponent, PluginSyncInput, PluginSyncResult } from "../types.js";
|
|
26
37
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/core/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"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"}
|