@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.
Files changed (144) hide show
  1. package/dist/adapters/claude-desktop.d.ts +1 -0
  2. package/dist/adapters/claude-desktop.d.ts.map +1 -0
  3. package/dist/adapters/claude.d.ts +1 -0
  4. package/dist/adapters/claude.d.ts.map +1 -0
  5. package/dist/adapters/cline.d.ts +1 -0
  6. package/dist/adapters/cline.d.ts.map +1 -0
  7. package/dist/adapters/codex.d.ts +1 -0
  8. package/dist/adapters/codex.d.ts.map +1 -0
  9. package/dist/adapters/cursor.d.ts +1 -0
  10. package/dist/adapters/cursor.d.ts.map +1 -0
  11. package/dist/adapters/index.d.ts +1 -0
  12. package/dist/adapters/index.d.ts.map +1 -0
  13. package/dist/adapters/kiro.d.ts +1 -0
  14. package/dist/adapters/kiro.d.ts.map +1 -0
  15. package/dist/adapters/opencode.d.ts +1 -0
  16. package/dist/adapters/opencode.d.ts.map +1 -0
  17. package/dist/adapters/qwen.d.ts +1 -0
  18. package/dist/adapters/qwen.d.ts.map +1 -0
  19. package/dist/adapters/utils/index.d.ts +1 -0
  20. package/dist/adapters/utils/index.d.ts.map +1 -0
  21. package/dist/adapters/vscode.d.ts +1 -0
  22. package/dist/adapters/vscode.d.ts.map +1 -0
  23. package/dist/cli-7rggq938.js +3292 -0
  24. package/dist/cli-ezvj44tr.js +3292 -0
  25. package/dist/cli-q8de7zb0.js +12 -0
  26. package/dist/cli.d.ts +1 -0
  27. package/dist/cli.d.ts.map +1 -0
  28. package/dist/cli.js +1880 -1131
  29. package/dist/compat/claude.d.ts +1 -0
  30. package/dist/compat/claude.d.ts.map +1 -0
  31. package/dist/compat/codex.d.ts +1 -0
  32. package/dist/compat/codex.d.ts.map +1 -0
  33. package/dist/compat/index.d.ts +1 -0
  34. package/dist/compat/index.d.ts.map +1 -0
  35. package/dist/compat/qwen.d.ts +1 -0
  36. package/dist/compat/qwen.d.ts.map +1 -0
  37. package/dist/compat/unsupported.d.ts +1 -0
  38. package/dist/compat/unsupported.d.ts.map +1 -0
  39. package/dist/compat/vscode.d.ts +1 -0
  40. package/dist/compat/vscode.d.ts.map +1 -0
  41. package/dist/core/auth-probe.d.ts +1 -0
  42. package/dist/core/auth-probe.d.ts.map +1 -0
  43. package/dist/core/config.d.ts +1 -0
  44. package/dist/core/config.d.ts.map +1 -0
  45. package/dist/core/daemon.d.ts +1 -0
  46. package/dist/core/daemon.d.ts.map +1 -0
  47. package/dist/core/index.d.ts +1 -0
  48. package/dist/core/index.d.ts.map +1 -0
  49. package/dist/core/index.js +81 -24
  50. package/dist/core/managed-index.d.ts +1 -0
  51. package/dist/core/managed-index.d.ts.map +1 -0
  52. package/dist/core/paths.d.ts +2 -0
  53. package/dist/core/paths.d.ts.map +1 -0
  54. package/dist/core/registry.d.ts +1 -0
  55. package/dist/core/registry.d.ts.map +1 -0
  56. package/dist/core/secrets.d.ts +1 -0
  57. package/dist/core/secrets.d.ts.map +1 -0
  58. package/dist/core/server-auth.d.ts +1 -0
  59. package/dist/core/server-auth.d.ts.map +1 -0
  60. package/dist/core/status.d.ts +1 -0
  61. package/dist/core/status.d.ts.map +1 -0
  62. package/dist/core/sync.d.ts +1 -0
  63. package/dist/core/sync.d.ts.map +1 -0
  64. package/dist/core/update-manager.d.ts +1 -0
  65. package/dist/core/update-manager.d.ts.map +1 -0
  66. package/dist/core/update.d.ts +1 -0
  67. package/dist/core/update.d.ts.map +1 -0
  68. package/dist/gateway/server.d.ts +1 -0
  69. package/dist/gateway/server.d.ts.map +1 -0
  70. package/dist/types.d.ts +1 -0
  71. package/dist/types.d.ts.map +1 -0
  72. package/dist/types.js +8 -10
  73. package/dist/util/fs.d.ts +1 -0
  74. package/dist/util/fs.d.ts.map +1 -0
  75. package/dist/version.d.ts +2 -1
  76. package/dist/version.d.ts.map +1 -0
  77. package/package.json +10 -11
  78. package/dist/adapters/claude-desktop.js +0 -118
  79. package/dist/adapters/claude-desktop.js.map +0 -1
  80. package/dist/adapters/claude.js +0 -131
  81. package/dist/adapters/claude.js.map +0 -1
  82. package/dist/adapters/cline.js +0 -135
  83. package/dist/adapters/cline.js.map +0 -1
  84. package/dist/adapters/codex.js +0 -125
  85. package/dist/adapters/codex.js.map +0 -1
  86. package/dist/adapters/cursor.js +0 -125
  87. package/dist/adapters/cursor.js.map +0 -1
  88. package/dist/adapters/index.js +0 -23
  89. package/dist/adapters/index.js.map +0 -1
  90. package/dist/adapters/kiro.js +0 -120
  91. package/dist/adapters/kiro.js.map +0 -1
  92. package/dist/adapters/opencode.js +0 -122
  93. package/dist/adapters/opencode.js.map +0 -1
  94. package/dist/adapters/qwen.js +0 -117
  95. package/dist/adapters/qwen.js.map +0 -1
  96. package/dist/adapters/utils/index.js +0 -144
  97. package/dist/adapters/utils/index.js.map +0 -1
  98. package/dist/adapters/vscode.js +0 -125
  99. package/dist/adapters/vscode.js.map +0 -1
  100. package/dist/cli.js.map +0 -1
  101. package/dist/compat/claude.js +0 -252
  102. package/dist/compat/claude.js.map +0 -1
  103. package/dist/compat/codex.js +0 -179
  104. package/dist/compat/codex.js.map +0 -1
  105. package/dist/compat/index.js +0 -108
  106. package/dist/compat/index.js.map +0 -1
  107. package/dist/compat/qwen.js +0 -316
  108. package/dist/compat/qwen.js.map +0 -1
  109. package/dist/compat/unsupported.js +0 -47
  110. package/dist/compat/unsupported.js.map +0 -1
  111. package/dist/compat/vscode.js +0 -164
  112. package/dist/compat/vscode.js.map +0 -1
  113. package/dist/core/auth-probe.js +0 -54
  114. package/dist/core/auth-probe.js.map +0 -1
  115. package/dist/core/config.js +0 -76
  116. package/dist/core/config.js.map +0 -1
  117. package/dist/core/daemon.js +0 -176
  118. package/dist/core/daemon.js.map +0 -1
  119. package/dist/core/index.js.map +0 -1
  120. package/dist/core/managed-index.js +0 -22
  121. package/dist/core/managed-index.js.map +0 -1
  122. package/dist/core/paths.js +0 -55
  123. package/dist/core/paths.js.map +0 -1
  124. package/dist/core/registry.js +0 -51
  125. package/dist/core/registry.js.map +0 -1
  126. package/dist/core/secrets.js +0 -108
  127. package/dist/core/secrets.js.map +0 -1
  128. package/dist/core/server-auth.js +0 -112
  129. package/dist/core/server-auth.js.map +0 -1
  130. package/dist/core/status.js +0 -65
  131. package/dist/core/status.js.map +0 -1
  132. package/dist/core/sync.js +0 -128
  133. package/dist/core/sync.js.map +0 -1
  134. package/dist/core/update-manager.js +0 -170
  135. package/dist/core/update-manager.js.map +0 -1
  136. package/dist/core/update.js +0 -111
  137. package/dist/core/update.js.map +0 -1
  138. package/dist/gateway/server.js +0 -995
  139. package/dist/gateway/server.js.map +0 -1
  140. package/dist/types.js.map +0 -1
  141. package/dist/util/fs.js +0 -34
  142. package/dist/util/fs.js.map +0 -1
  143. package/dist/version.js +0 -2
  144. package/dist/version.js.map +0 -1
@@ -1,179 +0,0 @@
1
- /**
2
- * Codex MCP compatibility layer.
3
- *
4
- * Supports:
5
- * - stdio only: codex mcp add <name> [--env KEY=VALUE ...] -- <command> [args...]
6
- *
7
- * Rejects:
8
- * - HTTP semantics (Codex doesn't support HTTP MCP in CLI)
9
- * - Config-only/project-scope semantics
10
- */
11
- /**
12
- * Parses Codex-style flags from argv.
13
- * Codex uses permissive option ordering before the `--` separator.
14
- */
15
- function parseCodexFlags(argv) {
16
- const envVars = [];
17
- let hasUrlFlag = false;
18
- let hasHttpSemantics = false;
19
- // Find the `--` separator position (if any)
20
- const separatorIndex = argv.indexOf("--");
21
- const flagRegion = separatorIndex === -1 ? argv : argv.slice(0, separatorIndex);
22
- for (let i = 0; i < flagRegion.length; i++) {
23
- const arg = flagRegion[i];
24
- if (arg === "--env" || arg === "-e") {
25
- const value = flagRegion[i + 1];
26
- if (value && !value.startsWith("-")) {
27
- envVars.push(value);
28
- i++; // Skip the value
29
- }
30
- else {
31
- // Env without value - will be caught by validation
32
- envVars.push("");
33
- }
34
- }
35
- else if (arg === "--url") {
36
- hasUrlFlag = true;
37
- hasHttpSemantics = true;
38
- }
39
- else if (arg === "--http") {
40
- hasHttpSemantics = true;
41
- }
42
- else if (arg.startsWith("-") && arg !== "--") {
43
- // Other flags - ignore for now
44
- }
45
- }
46
- return {
47
- envVars,
48
- hasUrlFlag,
49
- hasHttpSemantics
50
- };
51
- }
52
- /**
53
- * Extracts positional arguments from Codex argv.
54
- * Handles permissive option ordering by filtering out known flags.
55
- */
56
- function extractCodexPositionalArgs(argv) {
57
- const separatorIndex = argv.indexOf("--");
58
- if (separatorIndex === -1) {
59
- // No separator - extract non-flag arguments
60
- const positional = [];
61
- let skipNext = false;
62
- for (let i = 0; i < argv.length; i++) {
63
- if (skipNext) {
64
- skipNext = false;
65
- continue;
66
- }
67
- const arg = argv[i];
68
- // Skip known flags and their values
69
- if (arg === "--env" || arg === "-e" || arg === "--url" || arg === "--http") {
70
- skipNext = true;
71
- continue;
72
- }
73
- // Skip other flags
74
- if (arg.startsWith("-")) {
75
- continue;
76
- }
77
- positional.push(arg);
78
- }
79
- return positional;
80
- }
81
- else {
82
- // With separator - everything before is flags/positionals, everything after is command args
83
- const beforeSeparator = argv.slice(0, separatorIndex);
84
- const afterSeparator = argv.slice(separatorIndex + 1);
85
- // Extract positionals from before separator
86
- const positional = [];
87
- let skipNext = false;
88
- for (let i = 0; i < beforeSeparator.length; i++) {
89
- if (skipNext) {
90
- skipNext = false;
91
- continue;
92
- }
93
- const arg = beforeSeparator[i];
94
- if (arg === "--env" || arg === "-e" || arg === "--url" || arg === "--http") {
95
- skipNext = true;
96
- continue;
97
- }
98
- if (arg.startsWith("-")) {
99
- continue;
100
- }
101
- positional.push(arg);
102
- }
103
- // Combine with command args after separator
104
- return [...positional, "--", ...afterSeparator];
105
- }
106
- }
107
- /**
108
- * Validates Codex arguments and rejects unsupported features.
109
- */
110
- function validateCodexArgs(flags, hasSeparator) {
111
- if (flags.hasHttpSemantics) {
112
- return "Codex HTTP semantics are not supported. Use `mcpx add <name> <url>` for HTTP MCP servers.";
113
- }
114
- if (!hasSeparator) {
115
- return "Codex stdio mode requires `--` separator: codex mcp add <name> [--env KEY=VALUE] -- <command> [args...]";
116
- }
117
- return null;
118
- }
119
- /**
120
- * Normalizes Codex args to canonical mcpx add format.
121
- *
122
- * Codex stdio: codex mcp add <name> [--env KEY=VALUE ...] -- <command> [args...]
123
- * -> mcpx add <name> <command> [args...] --env KEY=VALUE...
124
- */
125
- export function parseCodexArgs(argv) {
126
- if (argv.length === 0) {
127
- return {
128
- normalizedArgs: [],
129
- error: "Usage: mcpx codex mcp add <name> [--env KEY=VALUE ...] -- <command> [args...]"
130
- };
131
- }
132
- // Parse flags
133
- const flags = parseCodexFlags(argv);
134
- // Check for stdio separator
135
- const hasSeparator = argv.includes("--");
136
- // Validate - reject unsupported features
137
- const validationError = validateCodexArgs(flags, hasSeparator);
138
- if (validationError) {
139
- return {
140
- normalizedArgs: [],
141
- error: validationError
142
- };
143
- }
144
- // Extract positional arguments
145
- const positional = extractCodexPositionalArgs(argv);
146
- const separatorIndex = positional.indexOf("--");
147
- // stdio mode: <name> -- <command> [args...]
148
- const beforeSeparator = positional.slice(0, separatorIndex);
149
- const afterSeparator = positional.slice(separatorIndex + 1);
150
- if (beforeSeparator.length < 1) {
151
- return {
152
- normalizedArgs: [],
153
- error: "stdio mode requires: codex mcp add <name> -- <command> [args...]"
154
- };
155
- }
156
- if (afterSeparator.length === 0) {
157
- return {
158
- normalizedArgs: [],
159
- error: "stdio mode requires a command after `--`: codex mcp add <name> -- <command> [args...]"
160
- };
161
- }
162
- const name = beforeSeparator[0];
163
- // Build normalized args for stdio
164
- // mcpx add <name> <command> [args...] --env KEY=VALUE...
165
- const normalized = [name];
166
- // Add command and args
167
- if (afterSeparator.length > 0) {
168
- normalized.push(afterSeparator[0]);
169
- if (afterSeparator.length > 1) {
170
- normalized.push(...afterSeparator.slice(1));
171
- }
172
- }
173
- // Add env vars
174
- for (const envVar of flags.envVars) {
175
- normalized.push("--env", envVar);
176
- }
177
- return { normalizedArgs: normalized };
178
- }
179
- //# sourceMappingURL=codex.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/compat/codex.ts"],"names":[],"mappings":"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"}
@@ -1,108 +0,0 @@
1
- /**
2
- * Client-native compatibility layer for mcpx CLI.
3
- *
4
- * This module detects client-native argv patterns before Commander parses
5
- * and normalizes them to canonical `mcpx add` format.
6
- */
7
- import { parseClaudeArgs } from "./claude.js";
8
- import { parseCodexArgs } from "./codex.js";
9
- import { parseVSCodeArgs } from "./vscode.js";
10
- import { parseQwenArgs } from "./qwen.js";
11
- import { detectUnsupportedClient } from "./unsupported.js";
12
- /**
13
- * Detects client-native argv patterns and normalizes them to canonical mcpx add format.
14
- *
15
- * @param argv - The command-line arguments (typically process.argv.slice(2))
16
- * @returns Compatibility result with normalized args or error
17
- */
18
- export function parseCompatibilityArgs(argv) {
19
- // Check for unsupported client patterns first (before valid patterns)
20
- const unsupported = detectUnsupportedClient(argv);
21
- if (unsupported) {
22
- return {
23
- client: unsupported.client,
24
- normalizedArgs: null,
25
- error: unsupported.error
26
- };
27
- }
28
- // Check for Claude: mcpx claude mcp add ...
29
- if (argv[0] === "claude" && argv[1] === "mcp" && argv[2] === "add") {
30
- const claudeArgs = argv.slice(3);
31
- const result = parseClaudeArgs(claudeArgs);
32
- if (result.error) {
33
- return {
34
- client: "claude",
35
- normalizedArgs: null,
36
- error: result.error
37
- };
38
- }
39
- return {
40
- client: "claude",
41
- normalizedArgs: result.normalizedArgs
42
- };
43
- }
44
- // Check for Codex: mcpx codex mcp add ...
45
- if (argv[0] === "codex" && argv[1] === "mcp" && argv[2] === "add") {
46
- const codexArgs = argv.slice(3);
47
- const result = parseCodexArgs(codexArgs);
48
- if (result.error) {
49
- return {
50
- client: "codex",
51
- normalizedArgs: null,
52
- error: result.error
53
- };
54
- }
55
- return {
56
- client: "codex",
57
- normalizedArgs: result.normalizedArgs
58
- };
59
- }
60
- // Check for VS Code: mcpx code --add-mcp '<json>'
61
- if (argv[0] === "code" && argv[1] === "--add-mcp") {
62
- const jsonPayload = argv[2];
63
- const result = parseVSCodeArgs(jsonPayload);
64
- if (result.error) {
65
- return {
66
- client: "vscode",
67
- normalizedArgs: null,
68
- error: result.error
69
- };
70
- }
71
- return {
72
- client: "vscode",
73
- normalizedArgs: result.normalizedArgs
74
- };
75
- }
76
- // Check for Qwen: mcpx qwen mcp add ...
77
- if (argv[0] === "qwen" && argv[1] === "mcp" && argv[2] === "add") {
78
- const qwenArgs = argv.slice(3);
79
- const result = parseQwenArgs(qwenArgs);
80
- if (result.error) {
81
- return {
82
- client: "qwen",
83
- normalizedArgs: null,
84
- error: result.error
85
- };
86
- }
87
- return {
88
- client: "qwen",
89
- normalizedArgs: result.normalizedArgs
90
- };
91
- }
92
- // Not a client-native compatibility command
93
- return {
94
- client: null,
95
- normalizedArgs: null
96
- };
97
- }
98
- /**
99
- * Checks if argv matches any client-native pattern.
100
- *
101
- * @param argv - The command-line arguments
102
- * @returns True if argv matches a client-native pattern
103
- */
104
- export function isClientNativeCommand(argv) {
105
- const result = parseCompatibilityArgs(argv);
106
- return result.client !== null;
107
- }
108
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/compat/index.ts"],"names":[],"mappings":"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"}
@@ -1,316 +0,0 @@
1
- /**
2
- * Qwen CLI MCP compatibility layer.
3
- *
4
- * Supports:
5
- * - stdio add: qwen mcp add <name> <command> [args...] [--env KEY=VALUE]...
6
- * - HTTP add: qwen mcp add --transport http <name> <url> [--header "Name: Value"]...
7
- * - SSE add: qwen mcp add --transport sse <name> <url>
8
- *
9
- * Rejects:
10
- * - --scope (user/project scope not supported in mcpx)
11
- * - --trust (trust bypass not supported)
12
- * - --include-tools / --exclude-tools (tool filtering not supported)
13
- * - --timeout (timeout config not supported in mcpx add)
14
- */
15
- /**
16
- * Parses Qwen-style flags from argv, handling permissive option ordering.
17
- */
18
- function parseQwenFlags(argv) {
19
- const headers = [];
20
- const envVars = [];
21
- let transport;
22
- let timeout;
23
- let trust = false;
24
- const includeTools = [];
25
- const excludeTools = [];
26
- let description;
27
- let hasScope = false;
28
- // Find the `--` separator position (if any)
29
- const separatorIndex = argv.indexOf("--");
30
- const flagRegion = separatorIndex === -1 ? argv : argv.slice(0, separatorIndex);
31
- for (let i = 0; i < flagRegion.length; i++) {
32
- const arg = flagRegion[i];
33
- if (arg === "--header" || arg === "-H") {
34
- const value = flagRegion[i + 1];
35
- if (value && !value.startsWith("-")) {
36
- headers.push(value);
37
- i++;
38
- }
39
- }
40
- else if (arg === "--env" || arg === "-e") {
41
- const value = flagRegion[i + 1];
42
- if (value && !value.startsWith("-")) {
43
- envVars.push(value);
44
- i++;
45
- }
46
- }
47
- else if (arg === "--transport" || arg === "-t") {
48
- const value = flagRegion[i + 1];
49
- if (value && (value === "stdio" || value === "http" || value === "sse")) {
50
- transport = value;
51
- }
52
- i++;
53
- }
54
- else if (arg === "--scope" || arg === "-s") {
55
- hasScope = true;
56
- i++; // Skip scope value
57
- }
58
- else if (arg === "--timeout") {
59
- timeout = flagRegion[i + 1];
60
- i++;
61
- }
62
- else if (arg === "--trust") {
63
- trust = true;
64
- }
65
- else if (arg === "--include-tools") {
66
- const value = flagRegion[i + 1];
67
- if (value) {
68
- includeTools.push(...value.split(",").map((t) => t.trim()));
69
- i++;
70
- }
71
- }
72
- else if (arg === "--exclude-tools") {
73
- const value = flagRegion[i + 1];
74
- if (value) {
75
- excludeTools.push(...value.split(",").map((t) => t.trim()));
76
- i++;
77
- }
78
- }
79
- else if (arg === "--description") {
80
- description = flagRegion[i + 1];
81
- i++;
82
- }
83
- }
84
- return {
85
- headers,
86
- envVars,
87
- transport,
88
- timeout,
89
- trust,
90
- includeTools,
91
- excludeTools,
92
- description,
93
- hasScope
94
- };
95
- }
96
- /**
97
- * Extracts positional arguments (name, command/url, args) from Qwen argv.
98
- *
99
- * Qwen format: <name> [flags] <command> [command args...]
100
- * Flags like --env, --header, --transport come before the command.
101
- * Everything after the first non-flag positional (after name) is treated as command+args.
102
- */
103
- function extractPositionalArgs(argv) {
104
- const separatorIndex = argv.indexOf("--");
105
- if (separatorIndex === -1) {
106
- const positional = [];
107
- let skipNext = false;
108
- let foundCommand = false;
109
- for (let i = 0; i < argv.length; i++) {
110
- if (skipNext) {
111
- skipNext = false;
112
- continue;
113
- }
114
- const arg = argv[i];
115
- // Skip known flags and their values
116
- if (arg === "--header" ||
117
- arg === "-H" ||
118
- arg === "--env" ||
119
- arg === "-e" ||
120
- arg === "--transport" ||
121
- arg === "-t" ||
122
- arg === "--scope" ||
123
- arg === "-s" ||
124
- arg === "--timeout" ||
125
- arg === "--trust" ||
126
- arg === "--include-tools" ||
127
- arg === "--exclude-tools" ||
128
- arg === "--description") {
129
- skipNext = true;
130
- continue;
131
- }
132
- // Before finding the command, skip other long flags
133
- if (!foundCommand && arg.startsWith("--") && !arg.includes("=")) {
134
- continue;
135
- }
136
- // First non-flag positional after name is the command
137
- // After that, include everything (including short flags like -m, -y)
138
- if (!foundCommand && positional.length === 1) {
139
- // This is the command
140
- foundCommand = true;
141
- }
142
- positional.push(arg);
143
- }
144
- return positional;
145
- }
146
- else {
147
- const beforeSeparator = argv.slice(0, separatorIndex);
148
- const afterSeparator = argv.slice(separatorIndex + 1);
149
- const positional = [];
150
- let skipNext = false;
151
- let foundCommand = false;
152
- for (let i = 0; i < beforeSeparator.length; i++) {
153
- if (skipNext) {
154
- skipNext = false;
155
- continue;
156
- }
157
- const arg = beforeSeparator[i];
158
- if (arg === "--header" ||
159
- arg === "-H" ||
160
- arg === "--env" ||
161
- arg === "-e" ||
162
- arg === "--transport" ||
163
- arg === "-t" ||
164
- arg === "--scope" ||
165
- arg === "-s" ||
166
- arg === "--timeout" ||
167
- arg === "--trust" ||
168
- arg === "--include-tools" ||
169
- arg === "--exclude-tools" ||
170
- arg === "--description") {
171
- skipNext = true;
172
- continue;
173
- }
174
- // Skip other long flags before command
175
- if (!foundCommand && arg.startsWith("--") && !arg.includes("=")) {
176
- continue;
177
- }
178
- // First non-flag positional after name is the command
179
- if (!foundCommand && positional.length === 1) {
180
- foundCommand = true;
181
- }
182
- positional.push(arg);
183
- }
184
- return [...positional, "--", ...afterSeparator];
185
- }
186
- }
187
- /**
188
- * Validates Qwen arguments and rejects unsupported features.
189
- */
190
- function validateQwenArgs(flags) {
191
- if (flags.hasScope) {
192
- return "Qwen --scope is not supported. Use global `mcpx add` for project-wide servers.";
193
- }
194
- if (flags.trust) {
195
- return "Qwen --trust is not supported. Use `mcpx auth` to configure auth after adding the server.";
196
- }
197
- if (flags.includeTools.length > 0 || flags.excludeTools.length > 0) {
198
- return "Qwen --include-tools/--exclude-tools are not supported. Use `mcpx add` directly for advanced configuration.";
199
- }
200
- if (flags.timeout) {
201
- return "Qwen --timeout is not supported. Configure timeouts in the server config after adding.";
202
- }
203
- if (flags.transport === "sse") {
204
- return "Qwen --transport sse is not supported. Use `mcpx add <name> <url>` for HTTP/SSE servers.";
205
- }
206
- return null;
207
- }
208
- /**
209
- * Normalizes Qwen args to canonical mcpx add format.
210
- *
211
- * Qwen stdio: qwen mcp add <name> <command> [args...] [--env KEY=VALUE]...
212
- * -> mcpx add <name> <command> [args...] --env KEY=VALUE...
213
- *
214
- * Qwen HTTP: qwen mcp add --transport http <name> <url> [--header "Name: Value"]...
215
- * -> mcpx add <name> <url> --transport http --header "Name=Value"...
216
- */
217
- export function parseQwenArgs(argv) {
218
- if (argv.length === 0) {
219
- return {
220
- normalizedArgs: [],
221
- error: "Usage: mcpx qwen mcp add <name> <commandOrUrl> [options...]"
222
- };
223
- }
224
- // Parse flags
225
- const flags = parseQwenFlags(argv);
226
- // Validate - reject unsupported features
227
- const validationError = validateQwenArgs(flags);
228
- if (validationError) {
229
- return {
230
- normalizedArgs: [],
231
- error: validationError
232
- };
233
- }
234
- // Convert Qwen-style headers (Name: Value) to mcpx format (Name=Value)
235
- const convertedHeaders = flags.headers.map((header) => {
236
- const colonIndex = header.indexOf(":");
237
- if (colonIndex > 0) {
238
- const key = header.slice(0, colonIndex).trim();
239
- const value = header.slice(colonIndex + 1).trim();
240
- return `${key}=${value}`;
241
- }
242
- return header;
243
- });
244
- // Extract positional arguments
245
- const positional = extractPositionalArgs(argv);
246
- // Check for stdio separator
247
- const separatorIndex = positional.indexOf("--");
248
- // Determine transport mode
249
- // HTTP mode requires explicit --transport http OR second positional is a URL
250
- const secondPositional = positional[1];
251
- const isHttpUrl = secondPositional && (secondPositional.startsWith("http://") || secondPositional.startsWith("https://"));
252
- const isHttpMode = flags.transport === "http" || (flags.transport === undefined && isHttpUrl);
253
- if (isHttpMode && separatorIndex === -1) {
254
- // HTTP mode: <name> <url>
255
- if (positional.length < 2) {
256
- return {
257
- normalizedArgs: [],
258
- error: "HTTP mode requires: qwen mcp add <name> <url>"
259
- };
260
- }
261
- const [name, url, ...rest] = positional;
262
- const normalized = [name, url];
263
- // Add headers (converted from Name: Value to Name=Value)
264
- for (const header of convertedHeaders) {
265
- normalized.push("--header", header);
266
- }
267
- // Add transport flag if explicitly HTTP (at the end for consistency)
268
- if (flags.transport === "http") {
269
- normalized.push("--transport", "http");
270
- }
271
- // Add any remaining positionals as args
272
- if (rest.length > 0) {
273
- normalized.push(...rest);
274
- }
275
- return { normalizedArgs: normalized };
276
- }
277
- else {
278
- // stdio mode: <name> <command> [args...]
279
- const beforeSeparator = separatorIndex === -1 ? positional : positional.slice(0, separatorIndex);
280
- const afterSeparator = separatorIndex === -1 ? [] : positional.slice(separatorIndex + 1);
281
- if (beforeSeparator.length < 1) {
282
- return {
283
- normalizedArgs: [],
284
- error: "stdio mode requires: qwen mcp add <name> <command> [args...]"
285
- };
286
- }
287
- const name = beforeSeparator[0];
288
- const command = beforeSeparator[1];
289
- if (!command) {
290
- return {
291
- normalizedArgs: [],
292
- error: "stdio mode requires a command: qwen mcp add <name> <command> [args...]"
293
- };
294
- }
295
- const normalized = [name, command];
296
- // Add command args (before separator, after name and command)
297
- const commandArgs = beforeSeparator.slice(2);
298
- if (commandArgs.length > 0) {
299
- normalized.push(...commandArgs);
300
- }
301
- // Add args after separator
302
- if (afterSeparator.length > 0) {
303
- normalized.push("--", ...afterSeparator);
304
- }
305
- // Add env vars
306
- for (const envVar of flags.envVars) {
307
- normalized.push("--env", envVar);
308
- }
309
- // Add headers (if any - unusual for stdio but allow passthrough, converted)
310
- for (const header of convertedHeaders) {
311
- normalized.push("--header", header);
312
- }
313
- return { normalizedArgs: normalized };
314
- }
315
- }
316
- //# sourceMappingURL=qwen.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"qwen.js","sourceRoot":"","sources":["../../src/compat/qwen.ts"],"names":[],"mappings":"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"}