@kwonye/mcpx 0.1.68 → 0.1.73
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 +1 -0
- package/dist/adapters/claude-desktop.d.ts.map +1 -0
- package/dist/adapters/claude.d.ts +1 -0
- package/dist/adapters/claude.d.ts.map +1 -0
- package/dist/adapters/cline.d.ts +1 -0
- package/dist/adapters/cline.d.ts.map +1 -0
- package/dist/adapters/codex.d.ts +1 -0
- package/dist/adapters/codex.d.ts.map +1 -0
- package/dist/adapters/cursor.d.ts +1 -0
- package/dist/adapters/cursor.d.ts.map +1 -0
- package/dist/adapters/index.d.ts +1 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/kiro.d.ts +1 -0
- package/dist/adapters/kiro.d.ts.map +1 -0
- package/dist/adapters/opencode.d.ts +1 -0
- package/dist/adapters/opencode.d.ts.map +1 -0
- package/dist/adapters/qwen.d.ts +1 -0
- package/dist/adapters/qwen.d.ts.map +1 -0
- package/dist/adapters/utils/index.d.ts +1 -0
- package/dist/adapters/utils/index.d.ts.map +1 -0
- package/dist/adapters/vscode.d.ts +1 -0
- package/dist/adapters/vscode.d.ts.map +1 -0
- package/dist/cli-7rggq938.js +3292 -0
- package/dist/cli-ezvj44tr.js +3292 -0
- package/dist/cli-q8de7zb0.js +12 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +1880 -1131
- package/dist/compat/claude.d.ts +1 -0
- package/dist/compat/claude.d.ts.map +1 -0
- package/dist/compat/codex.d.ts +1 -0
- package/dist/compat/codex.d.ts.map +1 -0
- package/dist/compat/index.d.ts +1 -0
- package/dist/compat/index.d.ts.map +1 -0
- package/dist/compat/qwen.d.ts +1 -0
- package/dist/compat/qwen.d.ts.map +1 -0
- package/dist/compat/unsupported.d.ts +1 -0
- package/dist/compat/unsupported.d.ts.map +1 -0
- package/dist/compat/vscode.d.ts +1 -0
- package/dist/compat/vscode.d.ts.map +1 -0
- package/dist/core/auth-probe.d.ts +1 -0
- package/dist/core/auth-probe.d.ts.map +1 -0
- package/dist/core/config.d.ts +1 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/daemon.d.ts +1 -0
- package/dist/core/daemon.d.ts.map +1 -0
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +81 -24
- package/dist/core/managed-index.d.ts +1 -0
- package/dist/core/managed-index.d.ts.map +1 -0
- package/dist/core/paths.d.ts +2 -0
- package/dist/core/paths.d.ts.map +1 -0
- package/dist/core/registry.d.ts +1 -0
- package/dist/core/registry.d.ts.map +1 -0
- package/dist/core/secrets.d.ts +1 -0
- package/dist/core/secrets.d.ts.map +1 -0
- package/dist/core/server-auth.d.ts +1 -0
- package/dist/core/server-auth.d.ts.map +1 -0
- package/dist/core/status.d.ts +1 -0
- package/dist/core/status.d.ts.map +1 -0
- package/dist/core/sync.d.ts +1 -0
- package/dist/core/sync.d.ts.map +1 -0
- package/dist/core/update-manager.d.ts +1 -0
- package/dist/core/update-manager.d.ts.map +1 -0
- package/dist/core/update.d.ts +1 -0
- package/dist/core/update.d.ts.map +1 -0
- package/dist/gateway/server.d.ts +1 -0
- package/dist/gateway/server.d.ts.map +1 -0
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -10
- package/dist/util/fs.d.ts +1 -0
- package/dist/util/fs.d.ts.map +1 -0
- package/dist/version.d.ts +2 -1
- package/dist/version.d.ts.map +1 -0
- package/package.json +10 -11
- package/dist/adapters/claude-desktop.js +0 -118
- package/dist/adapters/claude-desktop.js.map +0 -1
- package/dist/adapters/claude.js +0 -131
- package/dist/adapters/claude.js.map +0 -1
- package/dist/adapters/cline.js +0 -135
- package/dist/adapters/cline.js.map +0 -1
- package/dist/adapters/codex.js +0 -125
- package/dist/adapters/codex.js.map +0 -1
- package/dist/adapters/cursor.js +0 -125
- package/dist/adapters/cursor.js.map +0 -1
- package/dist/adapters/index.js +0 -23
- package/dist/adapters/index.js.map +0 -1
- package/dist/adapters/kiro.js +0 -120
- package/dist/adapters/kiro.js.map +0 -1
- package/dist/adapters/opencode.js +0 -122
- package/dist/adapters/opencode.js.map +0 -1
- package/dist/adapters/qwen.js +0 -117
- package/dist/adapters/qwen.js.map +0 -1
- package/dist/adapters/utils/index.js +0 -144
- package/dist/adapters/utils/index.js.map +0 -1
- package/dist/adapters/vscode.js +0 -125
- package/dist/adapters/vscode.js.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/compat/claude.js +0 -252
- package/dist/compat/claude.js.map +0 -1
- package/dist/compat/codex.js +0 -179
- package/dist/compat/codex.js.map +0 -1
- package/dist/compat/index.js +0 -108
- package/dist/compat/index.js.map +0 -1
- package/dist/compat/qwen.js +0 -316
- package/dist/compat/qwen.js.map +0 -1
- package/dist/compat/unsupported.js +0 -47
- package/dist/compat/unsupported.js.map +0 -1
- package/dist/compat/vscode.js +0 -164
- package/dist/compat/vscode.js.map +0 -1
- package/dist/core/auth-probe.js +0 -54
- package/dist/core/auth-probe.js.map +0 -1
- package/dist/core/config.js +0 -76
- package/dist/core/config.js.map +0 -1
- package/dist/core/daemon.js +0 -176
- package/dist/core/daemon.js.map +0 -1
- package/dist/core/index.js.map +0 -1
- package/dist/core/managed-index.js +0 -22
- package/dist/core/managed-index.js.map +0 -1
- package/dist/core/paths.js +0 -55
- package/dist/core/paths.js.map +0 -1
- package/dist/core/registry.js +0 -51
- package/dist/core/registry.js.map +0 -1
- package/dist/core/secrets.js +0 -108
- package/dist/core/secrets.js.map +0 -1
- package/dist/core/server-auth.js +0 -112
- package/dist/core/server-auth.js.map +0 -1
- package/dist/core/status.js +0 -65
- package/dist/core/status.js.map +0 -1
- package/dist/core/sync.js +0 -128
- package/dist/core/sync.js.map +0 -1
- package/dist/core/update-manager.js +0 -170
- package/dist/core/update-manager.js.map +0 -1
- package/dist/core/update.js +0 -111
- package/dist/core/update.js.map +0 -1
- package/dist/gateway/server.js +0 -995
- package/dist/gateway/server.js.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/util/fs.js +0 -34
- package/dist/util/fs.js.map +0 -1
- package/dist/version.js +0 -2
- package/dist/version.js.map +0 -1
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Unsupported client detection.
|
|
3
|
-
*
|
|
4
|
-
* Detects client-native patterns that are not supported in compatibility mode
|
|
5
|
-
* and provides helpful guidance to use `mcpx add` instead.
|
|
6
|
-
*
|
|
7
|
-
* Unsupported clients:
|
|
8
|
-
* - cursor-agent (Cursor uses different MCP management)
|
|
9
|
-
* - cline (Cline uses config-based setup)
|
|
10
|
-
* - kiro (Kiro uses one-click/config-based setup)
|
|
11
|
-
* - opencode (OpenCode uses generic mcpx add)
|
|
12
|
-
*/
|
|
13
|
-
/**
|
|
14
|
-
* Map of unsupported client names to their guidance messages.
|
|
15
|
-
*/
|
|
16
|
-
const UNSUPPORTED_CLIENTS = {
|
|
17
|
-
"cursor-agent": "Cursor MCP management uses a different interface. Use `mcpx add <name> <url|command>` directly to add MCP servers to mcpx.",
|
|
18
|
-
"cline": "Cline uses config-based MCP setup. Use `mcpx add <name> <url|command>` to add servers to mcpx, then sync to Cline.",
|
|
19
|
-
"kiro": "Kiro uses one-click/config-based MCP setup. Use `mcpx add <name> <url|command>` to add servers to mcpx, then sync to Kiro.",
|
|
20
|
-
"opencode": "OpenCode uses generic mcpx integration. Use `mcpx add <name> <url|command>` to add servers directly."
|
|
21
|
-
};
|
|
22
|
-
/**
|
|
23
|
-
* List of unsupported client prefixes to detect.
|
|
24
|
-
*/
|
|
25
|
-
const UNSUPPORTED_PREFIXES = Object.keys(UNSUPPORTED_CLIENTS);
|
|
26
|
-
/**
|
|
27
|
-
* Detects if argv matches an unsupported client pattern.
|
|
28
|
-
*
|
|
29
|
-
* @param argv - The command-line arguments
|
|
30
|
-
* @returns Unsupported client info if detected, null otherwise
|
|
31
|
-
*/
|
|
32
|
-
export function detectUnsupportedClient(argv) {
|
|
33
|
-
if (argv.length === 0) {
|
|
34
|
-
return null;
|
|
35
|
-
}
|
|
36
|
-
const firstArg = argv[0];
|
|
37
|
-
for (const prefix of UNSUPPORTED_PREFIXES) {
|
|
38
|
-
if (firstArg === prefix || firstArg.startsWith(`${prefix}-`) || firstArg.startsWith(`${prefix}_`)) {
|
|
39
|
-
return {
|
|
40
|
-
client: firstArg,
|
|
41
|
-
error: `${UNSUPPORTED_CLIENTS[prefix]}\n\nExample: mcpx add my-server https://example.com/mcp`
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
return null;
|
|
46
|
-
}
|
|
47
|
-
//# sourceMappingURL=unsupported.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"unsupported.js","sourceRoot":"","sources":["../../src/compat/unsupported.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAOH;;GAEG;AACH,MAAM,mBAAmB,GAA2B;IAClD,cAAc,EAAE,4HAA4H;IAC5I,OAAO,EAAE,oHAAoH;IAC7H,MAAM,EAAE,4HAA4H;IACpI,UAAU,EAAE,sGAAsG;CACnH,CAAC;AAEF;;GAEG;AACH,MAAM,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAc;IACpD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAEzB,KAAK,MAAM,MAAM,IAAI,oBAAoB,EAAE,CAAC;QAC1C,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC;YAClG,OAAO;gBACL,MAAM,EAAE,QAAQ;gBAChB,KAAK,EAAE,GAAG,mBAAmB,CAAC,MAAM,CAAC,yDAAyD;aAC/F,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/compat/vscode.js
DELETED
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* VS Code MCP compatibility layer.
|
|
3
|
-
*
|
|
4
|
-
* Supports:
|
|
5
|
-
* - code --add-mcp '<json>' with single-server JSON
|
|
6
|
-
* - Fields: name, type, url, command, args, env, headers
|
|
7
|
-
*
|
|
8
|
-
* Rejects:
|
|
9
|
-
* - VS Code-only fields: sandbox, scope, container-specific config
|
|
10
|
-
* - Multi-server JSON arrays
|
|
11
|
-
* - Invalid JSON
|
|
12
|
-
*/
|
|
13
|
-
/**
|
|
14
|
-
* VS Code-only fields that cannot be mapped to mcpx.
|
|
15
|
-
*/
|
|
16
|
-
const VS_CODE_ONLY_FIELDS = [
|
|
17
|
-
"sandbox",
|
|
18
|
-
"scope",
|
|
19
|
-
"container",
|
|
20
|
-
"containerId",
|
|
21
|
-
"workspaceFolder",
|
|
22
|
-
"lifecycle",
|
|
23
|
-
"alwaysAllow",
|
|
24
|
-
"disabled"
|
|
25
|
-
];
|
|
26
|
-
/**
|
|
27
|
-
* Validates VS Code server config and rejects unsupported fields.
|
|
28
|
-
*/
|
|
29
|
-
function validateVSCodeConfig(config) {
|
|
30
|
-
// Check for VS Code-only fields
|
|
31
|
-
for (const field of VS_CODE_ONLY_FIELDS) {
|
|
32
|
-
if (config[field] !== undefined) {
|
|
33
|
-
return `VS Code field "${field}" is not supported. Use global \`mcpx add\` for advanced configuration.`;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
// Validate required fields
|
|
37
|
-
if (!config.name) {
|
|
38
|
-
return "VS Code config must include 'name' field.";
|
|
39
|
-
}
|
|
40
|
-
// Must have either url (HTTP) or command (stdio)
|
|
41
|
-
if (!config.url && !config.command) {
|
|
42
|
-
return "VS Code config must include either 'url' (HTTP) or 'command' (stdio) field.";
|
|
43
|
-
}
|
|
44
|
-
// Cannot have both url and command
|
|
45
|
-
if (config.url && config.command) {
|
|
46
|
-
return "VS Code config cannot have both 'url' and 'command'. Specify one transport type.";
|
|
47
|
-
}
|
|
48
|
-
// Validate type field if present
|
|
49
|
-
if (config.type !== undefined && config.type !== "http" && config.type !== "stdio") {
|
|
50
|
-
return `Invalid 'type' value: ${config.type}. Must be 'http' or 'stdio'.`;
|
|
51
|
-
}
|
|
52
|
-
// Validate env is a simple string map
|
|
53
|
-
if (config.env !== undefined) {
|
|
54
|
-
if (typeof config.env !== "object" || config.env === null || Array.isArray(config.env)) {
|
|
55
|
-
return "'env' must be a key-value object.";
|
|
56
|
-
}
|
|
57
|
-
for (const [key, value] of Object.entries(config.env)) {
|
|
58
|
-
if (typeof value !== "string") {
|
|
59
|
-
return `'env["${key}"]' must be a string value.`;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
// Validate headers is a simple string map
|
|
64
|
-
if (config.headers !== undefined) {
|
|
65
|
-
if (typeof config.headers !== "object" || config.headers === null || Array.isArray(config.headers)) {
|
|
66
|
-
return "'headers' must be a key-value object.";
|
|
67
|
-
}
|
|
68
|
-
for (const [key, value] of Object.entries(config.headers)) {
|
|
69
|
-
if (typeof value !== "string") {
|
|
70
|
-
return `'headers["${key}"]' must be a string value.`;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
// Validate args is an array of strings
|
|
75
|
-
if (config.args !== undefined) {
|
|
76
|
-
if (!Array.isArray(config.args)) {
|
|
77
|
-
return "'args' must be an array.";
|
|
78
|
-
}
|
|
79
|
-
for (let i = 0; i < config.args.length; i++) {
|
|
80
|
-
if (typeof config.args[i] !== "string") {
|
|
81
|
-
return `'args[${i}]' must be a string.`;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
return null;
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Normalizes VS Code JSON config to canonical mcpx add format.
|
|
89
|
-
*
|
|
90
|
-
* VS Code HTTP: { name, url, headers? }
|
|
91
|
-
* -> mcpx add <name> <url> --header "Key=Value"...
|
|
92
|
-
*
|
|
93
|
-
* VS Code stdio: { name, command, args?, env? }
|
|
94
|
-
* -> mcpx add <name> <command> [args...] --env KEY=VALUE...
|
|
95
|
-
*/
|
|
96
|
-
function normalizeVSCodeConfig(config) {
|
|
97
|
-
const normalized = [config.name];
|
|
98
|
-
if (config.url) {
|
|
99
|
-
// HTTP mode
|
|
100
|
-
normalized.push(config.url);
|
|
101
|
-
// Add headers
|
|
102
|
-
if (config.headers) {
|
|
103
|
-
for (const [key, value] of Object.entries(config.headers)) {
|
|
104
|
-
normalized.push("--header", `${key}=${value}`);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
else if (config.command) {
|
|
109
|
-
// stdio mode
|
|
110
|
-
normalized.push(config.command);
|
|
111
|
-
// Add args
|
|
112
|
-
if (config.args && config.args.length > 0) {
|
|
113
|
-
normalized.push(...config.args);
|
|
114
|
-
}
|
|
115
|
-
// Add env vars
|
|
116
|
-
if (config.env) {
|
|
117
|
-
for (const [key, value] of Object.entries(config.env)) {
|
|
118
|
-
normalized.push("--env", `${key}=${value}`);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
return normalized;
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Parses VS Code --add-mcp JSON payload and normalizes to mcpx add format.
|
|
126
|
-
*/
|
|
127
|
-
export function parseVSCodeArgs(jsonPayload) {
|
|
128
|
-
if (!jsonPayload) {
|
|
129
|
-
return {
|
|
130
|
-
normalizedArgs: [],
|
|
131
|
-
error: "Usage: mcpx code --add-mcp '<json>'"
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
// Parse JSON
|
|
135
|
-
let config;
|
|
136
|
-
try {
|
|
137
|
-
config = JSON.parse(jsonPayload);
|
|
138
|
-
}
|
|
139
|
-
catch (parseError) {
|
|
140
|
-
return {
|
|
141
|
-
normalizedArgs: [],
|
|
142
|
-
error: `Invalid JSON: ${parseError.message}`
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
// Reject arrays - we only support single-server config
|
|
146
|
-
if (Array.isArray(config)) {
|
|
147
|
-
return {
|
|
148
|
-
normalizedArgs: [],
|
|
149
|
-
error: "Array of servers not supported. Use `mcpx add` for each server individually."
|
|
150
|
-
};
|
|
151
|
-
}
|
|
152
|
-
// Validate config
|
|
153
|
-
const validationError = validateVSCodeConfig(config);
|
|
154
|
-
if (validationError) {
|
|
155
|
-
return {
|
|
156
|
-
normalizedArgs: [],
|
|
157
|
-
error: validationError
|
|
158
|
-
};
|
|
159
|
-
}
|
|
160
|
-
// Normalize to mcpx add format
|
|
161
|
-
const normalized = normalizeVSCodeConfig(config);
|
|
162
|
-
return { normalizedArgs: normalized };
|
|
163
|
-
}
|
|
164
|
-
//# sourceMappingURL=vscode.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vscode.js","sourceRoot":"","sources":["../../src/compat/vscode.ts"],"names":[],"mappings":"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"}
|
package/dist/core/auth-probe.js
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
const JSON_RPC_VERSION = "2.0";
|
|
2
|
-
const DEFAULT_AUTH_PROBE_TIMEOUT_MS = 8000;
|
|
3
|
-
function resolveHeaders(spec, secrets) {
|
|
4
|
-
const headers = {
|
|
5
|
-
"content-type": "application/json",
|
|
6
|
-
accept: "application/json, text/event-stream"
|
|
7
|
-
};
|
|
8
|
-
for (const [key, value] of Object.entries(spec.headers ?? {})) {
|
|
9
|
-
headers[key] = secrets.resolveMaybeSecret(value);
|
|
10
|
-
}
|
|
11
|
-
return headers;
|
|
12
|
-
}
|
|
13
|
-
export async function probeHttpAuthRequirement(spec, secrets, timeoutMs = DEFAULT_AUTH_PROBE_TIMEOUT_MS) {
|
|
14
|
-
const timeoutController = new AbortController();
|
|
15
|
-
const timeoutHandle = setTimeout(() => timeoutController.abort(), timeoutMs);
|
|
16
|
-
try {
|
|
17
|
-
const headers = resolveHeaders(spec, secrets);
|
|
18
|
-
const response = await fetch(spec.url, {
|
|
19
|
-
method: "POST",
|
|
20
|
-
headers,
|
|
21
|
-
body: JSON.stringify({
|
|
22
|
-
jsonrpc: JSON_RPC_VERSION,
|
|
23
|
-
id: "mcpx-auth-probe",
|
|
24
|
-
method: "tools/list",
|
|
25
|
-
params: {}
|
|
26
|
-
}),
|
|
27
|
-
signal: timeoutController.signal
|
|
28
|
-
});
|
|
29
|
-
if (response.status === 401 || response.status === 403) {
|
|
30
|
-
return {
|
|
31
|
-
authRequired: true,
|
|
32
|
-
status: response.status,
|
|
33
|
-
wwwAuthenticate: response.headers.get("www-authenticate") ?? undefined
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
return {
|
|
37
|
-
authRequired: false,
|
|
38
|
-
status: response.status
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
catch (error) {
|
|
42
|
-
const isAbort = error.name === "AbortError";
|
|
43
|
-
return {
|
|
44
|
-
authRequired: false,
|
|
45
|
-
error: isAbort
|
|
46
|
-
? `Auth probe timed out after ${timeoutMs}ms.`
|
|
47
|
-
: error.message
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
finally {
|
|
51
|
-
clearTimeout(timeoutHandle);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=auth-probe.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth-probe.js","sourceRoot":"","sources":["../../src/core/auth-probe.ts"],"names":[],"mappings":"AAGA,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAC/B,MAAM,6BAA6B,GAAG,IAAI,CAAC;AAS3C,SAAS,cAAc,CAAC,IAAoB,EAAE,OAAuB;IACnE,MAAM,OAAO,GAA2B;QACtC,cAAc,EAAE,kBAAkB;QAClC,MAAM,EAAE,qCAAqC;KAC9C,CAAC;IAEF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,IAAoB,EACpB,OAAuB,EACvB,SAAS,GAAG,6BAA6B;IAEzC,MAAM,iBAAiB,GAAG,IAAI,eAAe,EAAE,CAAC;IAChD,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAE7E,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;YACrC,MAAM,EAAE,MAAM;YACd,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,OAAO,EAAE,gBAAgB;gBACzB,EAAE,EAAE,iBAAiB;gBACrB,MAAM,EAAE,YAAY;gBACpB,MAAM,EAAE,EAAE;aACX,CAAC;YACF,MAAM,EAAE,iBAAiB,CAAC,MAAM;SACjC,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvD,OAAO;gBACL,YAAY,EAAE,IAAI;gBAClB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,eAAe,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,SAAS;aACvE,CAAC;QACJ,CAAC;QAED,OAAO;YACL,YAAY,EAAE,KAAK;YACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;SACxB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAI,KAA2B,CAAC,IAAI,KAAK,YAAY,CAAC;QACnE,OAAO;YACL,YAAY,EAAE,KAAK;YACnB,KAAK,EAAE,OAAO;gBACZ,CAAC,CAAC,8BAA8B,SAAS,KAAK;gBAC9C,CAAC,CAAE,KAAe,CAAC,OAAO;SAC7B,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,aAAa,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC"}
|
package/dist/core/config.js
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import { normalizeServerSpecEnabled } from "../types.js";
|
|
3
|
-
import { getConfigPath } from "./paths.js";
|
|
4
|
-
import { readJsonFile, writeJsonAtomic } from "../util/fs.js";
|
|
5
|
-
const clientStateSchema = z.object({
|
|
6
|
-
status: z.enum(["SYNCED", "UNSUPPORTED_HTTP", "ERROR", "SKIPPED"]),
|
|
7
|
-
lastSyncAt: z.string().optional(),
|
|
8
|
-
message: z.string().optional(),
|
|
9
|
-
configPath: z.string().optional()
|
|
10
|
-
});
|
|
11
|
-
const httpServerSchema = z.object({
|
|
12
|
-
transport: z.literal("http"),
|
|
13
|
-
url: z.url(),
|
|
14
|
-
headers: z.record(z.string(), z.string()).optional(),
|
|
15
|
-
enabled: z.boolean().default(true)
|
|
16
|
-
});
|
|
17
|
-
const stdioServerSchema = z.object({
|
|
18
|
-
transport: z.literal("stdio"),
|
|
19
|
-
command: z.string().min(1),
|
|
20
|
-
args: z.array(z.string()).optional(),
|
|
21
|
-
env: z.record(z.string(), z.string()).optional(),
|
|
22
|
-
cwd: z.string().min(1).optional(),
|
|
23
|
-
enabled: z.boolean().default(true)
|
|
24
|
-
});
|
|
25
|
-
const serverSchema = z.discriminatedUnion("transport", [httpServerSchema, stdioServerSchema]);
|
|
26
|
-
const configSchema = z.object({
|
|
27
|
-
schemaVersion: z.literal(1).default(1),
|
|
28
|
-
gateway: z.object({
|
|
29
|
-
port: z.number().int().min(1).max(65535).default(37373),
|
|
30
|
-
tokenRef: z.string().default("secret://local_gateway_token"),
|
|
31
|
-
autoStart: z.boolean().default(true)
|
|
32
|
-
}).default({
|
|
33
|
-
port: 37373,
|
|
34
|
-
tokenRef: "secret://local_gateway_token",
|
|
35
|
-
autoStart: true
|
|
36
|
-
}),
|
|
37
|
-
servers: z.record(z.string(), serverSchema).default({}),
|
|
38
|
-
clients: z.record(z.string(), clientStateSchema).default({})
|
|
39
|
-
});
|
|
40
|
-
export function defaultConfig() {
|
|
41
|
-
return {
|
|
42
|
-
schemaVersion: 1,
|
|
43
|
-
gateway: {
|
|
44
|
-
port: 37373,
|
|
45
|
-
tokenRef: "secret://local_gateway_token",
|
|
46
|
-
autoStart: true
|
|
47
|
-
},
|
|
48
|
-
servers: {},
|
|
49
|
-
clients: {}
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
export function loadConfig(configPath = getConfigPath()) {
|
|
53
|
-
const raw = readJsonFile(configPath, defaultConfig());
|
|
54
|
-
const parsed = configSchema.safeParse(raw);
|
|
55
|
-
if (!parsed.success) {
|
|
56
|
-
return defaultConfig();
|
|
57
|
-
}
|
|
58
|
-
const clientEntries = {};
|
|
59
|
-
for (const [key, value] of Object.entries(parsed.data.clients)) {
|
|
60
|
-
if (["claude", "claude-desktop", "codex", "cursor", "cline", "opencode", "kiro", "vscode", "qwen"].includes(key)) {
|
|
61
|
-
clientEntries[key] = value;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
const servers = Object.fromEntries(Object.entries(parsed.data.servers).map(([name, spec]) => [name, normalizeServerSpecEnabled(spec)]));
|
|
65
|
-
return {
|
|
66
|
-
schemaVersion: 1,
|
|
67
|
-
gateway: parsed.data.gateway,
|
|
68
|
-
servers,
|
|
69
|
-
clients: clientEntries
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
export function saveConfig(config, configPath = getConfigPath()) {
|
|
73
|
-
config.servers = Object.fromEntries(Object.entries(config.servers).map(([name, spec]) => [name, normalizeServerSpecEnabled(spec)]));
|
|
74
|
-
writeJsonAtomic(configPath, config);
|
|
75
|
-
}
|
|
76
|
-
//# sourceMappingURL=config.js.map
|
package/dist/core/config.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
|
package/dist/core/daemon.js
DELETED
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import net from "node:net";
|
|
3
|
-
import { spawn } from "node:child_process";
|
|
4
|
-
import { getLogPath, getPidPath, ensureParentDir } from "./paths.js";
|
|
5
|
-
import { createGatewayServer } from "../gateway/server.js";
|
|
6
|
-
import { ensureGatewayToken, getGatewayTokenSecretName } from "./registry.js";
|
|
7
|
-
import { saveConfig } from "./config.js";
|
|
8
|
-
import { startBackgroundUpdateCheck } from "./update-manager.js";
|
|
9
|
-
function readPidFromFile(pidPath = getPidPath()) {
|
|
10
|
-
if (!fs.existsSync(pidPath)) {
|
|
11
|
-
return null;
|
|
12
|
-
}
|
|
13
|
-
const raw = fs.readFileSync(pidPath, "utf8").trim();
|
|
14
|
-
if (!raw) {
|
|
15
|
-
return null;
|
|
16
|
-
}
|
|
17
|
-
const pid = Number(raw);
|
|
18
|
-
if (!Number.isFinite(pid) || pid <= 0) {
|
|
19
|
-
return null;
|
|
20
|
-
}
|
|
21
|
-
return pid;
|
|
22
|
-
}
|
|
23
|
-
function processExists(pid) {
|
|
24
|
-
try {
|
|
25
|
-
process.kill(pid, 0);
|
|
26
|
-
return true;
|
|
27
|
-
}
|
|
28
|
-
catch {
|
|
29
|
-
return false;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
async function isPortAvailable(port) {
|
|
33
|
-
return new Promise((resolve) => {
|
|
34
|
-
const tester = net.createServer();
|
|
35
|
-
tester.once("error", () => {
|
|
36
|
-
resolve(false);
|
|
37
|
-
});
|
|
38
|
-
tester.once("listening", () => {
|
|
39
|
-
tester.close(() => resolve(true));
|
|
40
|
-
});
|
|
41
|
-
tester.listen(port, "127.0.0.1");
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
export async function resolveGatewayPort(config) {
|
|
45
|
-
if (await isPortAvailable(config.gateway.port)) {
|
|
46
|
-
return config.gateway.port;
|
|
47
|
-
}
|
|
48
|
-
for (let offset = 1; offset <= 20; offset += 1) {
|
|
49
|
-
const candidate = config.gateway.port + offset;
|
|
50
|
-
if (candidate > 65535) {
|
|
51
|
-
break;
|
|
52
|
-
}
|
|
53
|
-
if (await isPortAvailable(candidate)) {
|
|
54
|
-
config.gateway.port = candidate;
|
|
55
|
-
saveConfig(config);
|
|
56
|
-
return candidate;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
throw new Error(`No available local port found near ${config.gateway.port}.`);
|
|
60
|
-
}
|
|
61
|
-
export function getDaemonStatus(config) {
|
|
62
|
-
const pidPath = getPidPath();
|
|
63
|
-
const pid = readPidFromFile(pidPath);
|
|
64
|
-
if (!pid) {
|
|
65
|
-
return {
|
|
66
|
-
running: false,
|
|
67
|
-
pidFile: pidPath,
|
|
68
|
-
logFile: getLogPath(),
|
|
69
|
-
port: config.gateway.port
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
return {
|
|
73
|
-
running: processExists(pid),
|
|
74
|
-
pid,
|
|
75
|
-
pidFile: pidPath,
|
|
76
|
-
logFile: getLogPath(),
|
|
77
|
-
port: config.gateway.port
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
export async function startDaemon(config, cliPath, secrets) {
|
|
81
|
-
const existingStatus = getDaemonStatus(config);
|
|
82
|
-
if (existingStatus.running && existingStatus.pid) {
|
|
83
|
-
return {
|
|
84
|
-
started: false,
|
|
85
|
-
pid: existingStatus.pid,
|
|
86
|
-
port: config.gateway.port,
|
|
87
|
-
message: "mcpx daemon already running."
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
const port = await resolveGatewayPort(config);
|
|
91
|
-
ensureGatewayToken(config, secrets);
|
|
92
|
-
const pidPath = getPidPath();
|
|
93
|
-
const logPath = getLogPath();
|
|
94
|
-
ensureParentDir(pidPath);
|
|
95
|
-
ensureParentDir(logPath);
|
|
96
|
-
const logFd = fs.openSync(logPath, "a", 0o600);
|
|
97
|
-
const child = spawn(process.execPath, [cliPath, "daemon", "run", "--port", String(port)], {
|
|
98
|
-
detached: true,
|
|
99
|
-
stdio: ["ignore", logFd, logFd],
|
|
100
|
-
env: {
|
|
101
|
-
...process.env,
|
|
102
|
-
MCPX_DAEMON_CHILD: "1"
|
|
103
|
-
}
|
|
104
|
-
});
|
|
105
|
-
child.unref();
|
|
106
|
-
fs.writeFileSync(pidPath, `${child.pid}\n`, { mode: 0o600 });
|
|
107
|
-
startBackgroundUpdateCheck();
|
|
108
|
-
return {
|
|
109
|
-
started: true,
|
|
110
|
-
pid: child.pid ?? -1,
|
|
111
|
-
port,
|
|
112
|
-
message: "mcpx daemon started."
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
export function stopDaemon() {
|
|
116
|
-
const pidPath = getPidPath();
|
|
117
|
-
const pid = readPidFromFile(pidPath);
|
|
118
|
-
if (!pid) {
|
|
119
|
-
return {
|
|
120
|
-
stopped: false,
|
|
121
|
-
message: "mcpx daemon is not running."
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
try {
|
|
125
|
-
process.kill(pid, "SIGTERM");
|
|
126
|
-
}
|
|
127
|
-
catch {
|
|
128
|
-
// Ignore already dead process.
|
|
129
|
-
}
|
|
130
|
-
try {
|
|
131
|
-
fs.unlinkSync(pidPath);
|
|
132
|
-
}
|
|
133
|
-
catch {
|
|
134
|
-
// Ignore cleanup failure.
|
|
135
|
-
}
|
|
136
|
-
return {
|
|
137
|
-
stopped: true,
|
|
138
|
-
message: `Stopped mcpx daemon (pid ${pid}).`
|
|
139
|
-
};
|
|
140
|
-
}
|
|
141
|
-
export async function restartDaemon(config, cliPath, secrets) {
|
|
142
|
-
stopDaemon();
|
|
143
|
-
return startDaemon(config, cliPath, secrets);
|
|
144
|
-
}
|
|
145
|
-
export function readDaemonLogs(maxLines = 200) {
|
|
146
|
-
const logPath = getLogPath();
|
|
147
|
-
if (!fs.existsSync(logPath)) {
|
|
148
|
-
return "";
|
|
149
|
-
}
|
|
150
|
-
const lines = fs.readFileSync(logPath, "utf8").split("\n");
|
|
151
|
-
return lines.slice(Math.max(lines.length - maxLines, 0)).join("\n");
|
|
152
|
-
}
|
|
153
|
-
export function runDaemonForeground(config, port, secrets) {
|
|
154
|
-
return new Promise((resolve, reject) => {
|
|
155
|
-
const tokenName = getGatewayTokenSecretName(config);
|
|
156
|
-
const token = secrets.getSecret(tokenName);
|
|
157
|
-
if (!token) {
|
|
158
|
-
reject(new Error(`Local gateway token not found: ${tokenName}`));
|
|
159
|
-
return;
|
|
160
|
-
}
|
|
161
|
-
const server = createGatewayServer({
|
|
162
|
-
port,
|
|
163
|
-
expectedToken: token,
|
|
164
|
-
secrets
|
|
165
|
-
});
|
|
166
|
-
const cleanup = () => {
|
|
167
|
-
server.close(() => resolve());
|
|
168
|
-
};
|
|
169
|
-
process.on("SIGINT", cleanup);
|
|
170
|
-
process.on("SIGTERM", cleanup);
|
|
171
|
-
server.on("error", (error) => {
|
|
172
|
-
reject(error);
|
|
173
|
-
});
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
//# sourceMappingURL=daemon.js.map
|
package/dist/core/daemon.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/core/daemon.ts"],"names":[],"mappings":"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"}
|
package/dist/core/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,SAAS;AACT,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEpE,SAAS;AACT,OAAO,EACL,eAAe,EACf,WAAW,EACX,UAAU,EACV,aAAa,EACb,cAAc,EACd,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAGrB,OAAO;AACP,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG1D,+BAA+B;AAC/B,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAExF,UAAU;AACV,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,cAAc;AACd,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,WAAW,EACZ,MAAM,kBAAkB,CAAC;AAE1B,SAAS;AACT,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGhE,aAAa;AACb,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAG3D,gBAAgB;AAChB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,QAAQ;AACR,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEhE,SAAS;AACT,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAErH,OAAO,EAAE,0BAA0B,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { getManagedIndexPath } from "./paths.js";
|
|
2
|
-
import { readJsonFile, writeJsonAtomic } from "../util/fs.js";
|
|
3
|
-
export function defaultManagedIndex() {
|
|
4
|
-
return {
|
|
5
|
-
schemaVersion: 1,
|
|
6
|
-
managed: {}
|
|
7
|
-
};
|
|
8
|
-
}
|
|
9
|
-
export function loadManagedIndex(filePath = getManagedIndexPath()) {
|
|
10
|
-
const raw = readJsonFile(filePath, defaultManagedIndex());
|
|
11
|
-
if (!raw || typeof raw !== "object") {
|
|
12
|
-
return defaultManagedIndex();
|
|
13
|
-
}
|
|
14
|
-
if (raw.schemaVersion !== 1) {
|
|
15
|
-
return defaultManagedIndex();
|
|
16
|
-
}
|
|
17
|
-
return raw;
|
|
18
|
-
}
|
|
19
|
-
export function saveManagedIndex(index, filePath = getManagedIndexPath()) {
|
|
20
|
-
writeJsonAtomic(filePath, index);
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=managed-index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"managed-index.js","sourceRoot":"","sources":["../../src/core/managed-index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAE9D,MAAM,UAAU,mBAAmB;IACjC,OAAO;QACL,aAAa,EAAE,CAAC;QAChB,OAAO,EAAE,EAAE;KACZ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAQ,GAAG,mBAAmB,EAAE;IAC/D,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,mBAAmB,EAAE,CAAC,CAAC;IAE1D,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,mBAAmB,EAAE,CAAC;IAC/B,CAAC;IAED,IAAK,GAAkC,CAAC,aAAa,KAAK,CAAC,EAAE,CAAC;QAC5D,OAAO,mBAAmB,EAAE,CAAC;IAC/B,CAAC;IAED,OAAO,GAAmB,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAmB,EAAE,QAAQ,GAAG,mBAAmB,EAAE;IACpF,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACnC,CAAC"}
|
package/dist/core/paths.js
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import os from "node:os";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import fs from "node:fs";
|
|
4
|
-
function envOrDefault(value, fallback) {
|
|
5
|
-
if (value && value.trim().length > 0) {
|
|
6
|
-
return value;
|
|
7
|
-
}
|
|
8
|
-
return fallback;
|
|
9
|
-
}
|
|
10
|
-
export function getConfigRoot() {
|
|
11
|
-
return envOrDefault(process.env.MCPX_CONFIG_HOME ?? process.env.XDG_CONFIG_HOME, path.join(os.homedir(), ".config"));
|
|
12
|
-
}
|
|
13
|
-
export function getDataRoot() {
|
|
14
|
-
return envOrDefault(process.env.MCPX_DATA_HOME ?? process.env.XDG_DATA_HOME, path.join(os.homedir(), ".local", "share"));
|
|
15
|
-
}
|
|
16
|
-
export function getStateRoot() {
|
|
17
|
-
return envOrDefault(process.env.MCPX_STATE_HOME ?? process.env.XDG_STATE_HOME, path.join(os.homedir(), ".local", "state"));
|
|
18
|
-
}
|
|
19
|
-
export function getConfigPath() {
|
|
20
|
-
return path.join(getConfigRoot(), "mcpx", "config.json");
|
|
21
|
-
}
|
|
22
|
-
export function getManagedIndexPath() {
|
|
23
|
-
return path.join(getDataRoot(), "mcpx", "managed-index.json");
|
|
24
|
-
}
|
|
25
|
-
export function getSecretNamesPath() {
|
|
26
|
-
return path.join(getDataRoot(), "mcpx", "secret-names.json");
|
|
27
|
-
}
|
|
28
|
-
export function getRuntimeDir() {
|
|
29
|
-
return path.join(getStateRoot(), "mcpx", "runtime");
|
|
30
|
-
}
|
|
31
|
-
export function getLogDir() {
|
|
32
|
-
return path.join(getStateRoot(), "mcpx", "logs");
|
|
33
|
-
}
|
|
34
|
-
export function getPidPath() {
|
|
35
|
-
return path.join(getRuntimeDir(), "daemon.pid");
|
|
36
|
-
}
|
|
37
|
-
export function getLogPath() {
|
|
38
|
-
return path.join(getLogDir(), "daemon.log");
|
|
39
|
-
}
|
|
40
|
-
export function getUpdatesDir() {
|
|
41
|
-
return path.join(getDataRoot(), "mcpx", "updates");
|
|
42
|
-
}
|
|
43
|
-
export function getStagedVersionPath() {
|
|
44
|
-
return path.join(getUpdatesDir(), "staged-version.json");
|
|
45
|
-
}
|
|
46
|
-
export function getUpdateLockPath() {
|
|
47
|
-
return path.join(getUpdatesDir(), ".update.lock");
|
|
48
|
-
}
|
|
49
|
-
export function ensureDir(dirPath) {
|
|
50
|
-
fs.mkdirSync(dirPath, { recursive: true });
|
|
51
|
-
}
|
|
52
|
-
export function ensureParentDir(filePath) {
|
|
53
|
-
fs.mkdirSync(path.dirname(filePath), { recursive: true });
|
|
54
|
-
}
|
|
55
|
-
//# sourceMappingURL=paths.js.map
|
package/dist/core/paths.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/core/paths.ts"],"names":[],"mappings":"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"}
|