@defai.digital/ax-cli 3.13.0 → 3.14.0

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 (91) hide show
  1. package/README.md +14 -4
  2. package/dist/agent/loop-detector.d.ts +2 -0
  3. package/dist/agent/loop-detector.js +11 -15
  4. package/dist/agent/loop-detector.js.map +1 -1
  5. package/dist/agent/subagent.js +3 -3
  6. package/dist/agent/subagent.js.map +1 -1
  7. package/dist/commands/doctor.js +86 -1
  8. package/dist/commands/doctor.js.map +1 -1
  9. package/dist/commands/mcp.js +206 -0
  10. package/dist/commands/mcp.js.map +1 -1
  11. package/dist/commands/setup.js +50 -0
  12. package/dist/commands/setup.js.map +1 -1
  13. package/dist/constants.js +1 -1
  14. package/dist/hooks/hook-runner.js +1 -1
  15. package/dist/hooks/hook-runner.js.map +1 -1
  16. package/dist/index.js +2 -0
  17. package/dist/index.js.map +1 -1
  18. package/dist/llm/tools.d.ts +29 -0
  19. package/dist/llm/tools.js +41 -0
  20. package/dist/llm/tools.js.map +1 -1
  21. package/dist/mcp/client-v2.d.ts +33 -0
  22. package/dist/mcp/client-v2.js +68 -0
  23. package/dist/mcp/client-v2.js.map +1 -1
  24. package/dist/mcp/client.d.ts +17 -0
  25. package/dist/mcp/client.js +17 -0
  26. package/dist/mcp/client.js.map +1 -1
  27. package/dist/mcp/index.d.ts +5 -1
  28. package/dist/mcp/index.js +6 -0
  29. package/dist/mcp/index.js.map +1 -1
  30. package/dist/mcp/prompts.d.ts +68 -0
  31. package/dist/mcp/prompts.js +129 -0
  32. package/dist/mcp/prompts.js.map +1 -0
  33. package/dist/mcp/resources.d.ts +1 -0
  34. package/dist/mcp/resources.js +9 -2
  35. package/dist/mcp/resources.js.map +1 -1
  36. package/dist/mcp/zai-detector.d.ts +63 -0
  37. package/dist/mcp/zai-detector.js +193 -0
  38. package/dist/mcp/zai-detector.js.map +1 -0
  39. package/dist/mcp/zai-templates.d.ts +90 -0
  40. package/dist/mcp/zai-templates.js +148 -0
  41. package/dist/mcp/zai-templates.js.map +1 -0
  42. package/dist/planner/task-planner.js +2 -2
  43. package/dist/planner/task-planner.js.map +1 -1
  44. package/dist/sdk/index.d.ts +7 -1
  45. package/dist/sdk/index.js +16 -1
  46. package/dist/sdk/index.js.map +1 -1
  47. package/dist/sdk/version.d.ts +3 -2
  48. package/dist/sdk/version.js +3 -2
  49. package/dist/sdk/version.js.map +1 -1
  50. package/dist/tools/ask-user.js +2 -1
  51. package/dist/tools/ask-user.js.map +1 -1
  52. package/dist/tools/bash.js +4 -5
  53. package/dist/tools/bash.js.map +1 -1
  54. package/dist/ui/components/chat-history.js +2 -63
  55. package/dist/ui/components/chat-history.js.map +1 -1
  56. package/dist/ui/components/chat-interface.js +11 -5
  57. package/dist/ui/components/chat-interface.js.map +1 -1
  58. package/dist/ui/components/collapsible-tool-result.d.ts +12 -0
  59. package/dist/ui/components/collapsible-tool-result.js +56 -50
  60. package/dist/ui/components/collapsible-tool-result.js.map +1 -1
  61. package/dist/ui/components/mcp-dashboard.d.ts +15 -0
  62. package/dist/ui/components/mcp-dashboard.js +520 -0
  63. package/dist/ui/components/mcp-dashboard.js.map +1 -0
  64. package/dist/ui/components/phase-progress.js +26 -69
  65. package/dist/ui/components/phase-progress.js.map +1 -1
  66. package/dist/ui/components/status-bar.js +7 -13
  67. package/dist/ui/components/status-bar.js.map +1 -1
  68. package/dist/ui/components/subagent-monitor.js +2 -25
  69. package/dist/ui/components/subagent-monitor.js.map +1 -1
  70. package/dist/ui/components/toast-notification.js +9 -14
  71. package/dist/ui/components/toast-notification.js.map +1 -1
  72. package/dist/ui/components/tool-group-display.js +8 -4
  73. package/dist/ui/components/tool-group-display.js.map +1 -1
  74. package/dist/ui/components/virtualized-chat-history.js +1 -44
  75. package/dist/ui/components/virtualized-chat-history.js.map +1 -1
  76. package/dist/ui/hooks/use-enhanced-input.js +10 -11
  77. package/dist/ui/hooks/use-enhanced-input.js.map +1 -1
  78. package/dist/ui/hooks/use-input-handler.d.ts +5 -1
  79. package/dist/ui/hooks/use-input-handler.js +277 -14
  80. package/dist/ui/hooks/use-input-handler.js.map +1 -1
  81. package/dist/ui/utils/change-summarizer.js +25 -11
  82. package/dist/ui/utils/change-summarizer.js.map +1 -1
  83. package/dist/ui/utils/semantic-action-detector.js +33 -30
  84. package/dist/ui/utils/semantic-action-detector.js.map +1 -1
  85. package/dist/ui/utils/tool-grouper.d.ts +4 -0
  86. package/dist/ui/utils/tool-grouper.js +71 -67
  87. package/dist/ui/utils/tool-grouper.js.map +1 -1
  88. package/eslint.config.js +2 -0
  89. package/node_modules/@ax-cli/schemas/package.json +2 -2
  90. package/package.json +1 -1
  91. package/packages/schemas/package.json +2 -2
@@ -0,0 +1,129 @@
1
+ /**
2
+ * MCP Prompts Module
3
+ *
4
+ * Handles discovering and executing MCP server prompts.
5
+ * Prompts are exposed as slash commands with the format:
6
+ * /mcp__<servername>__<promptname>
7
+ */
8
+ // ============================================================================
9
+ // Shared MCP Identifier Parsing (used by prompts.ts and collapsible-tool-result.tsx)
10
+ // ============================================================================
11
+ /**
12
+ * Parse MCP identifier with double-underscore separator
13
+ * Handles formats like "mcp__server__name" or "/mcp__server__name"
14
+ *
15
+ * @param identifier - The MCP identifier string
16
+ * @param prefix - Optional prefix to strip (e.g., "/mcp__" or "mcp__")
17
+ * @returns Parsed server and name, or null if invalid
18
+ */
19
+ export function parseMCPIdentifier(identifier, prefix) {
20
+ if (!identifier.startsWith(prefix)) {
21
+ return null;
22
+ }
23
+ const withoutPrefix = identifier.slice(prefix.length);
24
+ const parts = withoutPrefix.split("__");
25
+ if (parts.length < 2) {
26
+ return null;
27
+ }
28
+ const serverName = parts[0];
29
+ const name = parts.slice(1).join("__");
30
+ // Validate non-empty parts
31
+ if (!serverName || !name) {
32
+ return null;
33
+ }
34
+ return { serverName, name };
35
+ }
36
+ /**
37
+ * List prompts from an MCP server
38
+ */
39
+ export async function listServerPrompts(client, serverName) {
40
+ try {
41
+ const result = await client.listPrompts();
42
+ return result.prompts.map((prompt) => ({
43
+ serverName,
44
+ name: prompt.name,
45
+ description: prompt.description,
46
+ arguments: prompt.arguments,
47
+ }));
48
+ }
49
+ catch {
50
+ // Server may not support prompts - this is not an error
51
+ return [];
52
+ }
53
+ }
54
+ /**
55
+ * Get a specific prompt from an MCP server
56
+ */
57
+ export async function getServerPrompt(client, _serverName, promptName, args) {
58
+ try {
59
+ const result = await client.getPrompt({
60
+ name: promptName,
61
+ arguments: args,
62
+ });
63
+ return result;
64
+ }
65
+ catch {
66
+ return null;
67
+ }
68
+ }
69
+ /**
70
+ * Convert MCP prompt to slash command name
71
+ * Format: /mcp__servername__promptname
72
+ */
73
+ export function promptToSlashCommand(prompt) {
74
+ return `/mcp__${prompt.serverName}__${prompt.name}`;
75
+ }
76
+ /**
77
+ * Parse slash command to extract server and prompt names
78
+ * Uses shared parseMCPIdentifier for consistency
79
+ */
80
+ export function parsePromptCommand(command) {
81
+ const parsed = parseMCPIdentifier(command, "/mcp__");
82
+ if (!parsed)
83
+ return null;
84
+ return { serverName: parsed.serverName, promptName: parsed.name };
85
+ }
86
+ /**
87
+ * Format prompt result for chat display
88
+ * BUG FIX: Handle array content which is valid per MCP protocol
89
+ */
90
+ export function formatPromptResult(result) {
91
+ const messages = result.messages || [];
92
+ if (messages.length === 0) {
93
+ return result.description || "No prompt content available";
94
+ }
95
+ // Helper to extract text from a single content item
96
+ const extractText = (content) => {
97
+ if (typeof content === "string") {
98
+ return content;
99
+ }
100
+ if (content && typeof content === "object" && "text" in content) {
101
+ const textValue = content.text;
102
+ // BUG FIX: Ensure text is actually a string before returning
103
+ return typeof textValue === "string" ? textValue : JSON.stringify(content);
104
+ }
105
+ return JSON.stringify(content);
106
+ };
107
+ // Combine all message contents
108
+ return messages
109
+ .map((msg) => {
110
+ // Handle array content (valid per MCP protocol)
111
+ if (Array.isArray(msg.content)) {
112
+ return msg.content.map(extractText).join("\n");
113
+ }
114
+ return extractText(msg.content);
115
+ })
116
+ .join("\n\n");
117
+ }
118
+ /**
119
+ * Generate command description for auto-complete
120
+ */
121
+ export function getPromptDescription(prompt) {
122
+ let desc = prompt.description || `MCP prompt from ${prompt.serverName}`;
123
+ if (prompt.arguments && prompt.arguments.length > 0) {
124
+ const argNames = prompt.arguments.map((a) => (a.required ? a.name : `[${a.name}]`));
125
+ desc += ` (${argNames.join(", ")})`;
126
+ }
127
+ return desc;
128
+ }
129
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/mcp/prompts.ts"],"names":[],"mappings":"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"}
@@ -41,6 +41,7 @@ export declare function parseMCPReference(reference: string): {
41
41
  } | null;
42
42
  /**
43
43
  * Extract all MCP references from text
44
+ * BUG FIX: Exclude trailing punctuation that could be captured accidentally
44
45
  */
45
46
  export declare function extractMCPReferences(text: string): string[];
46
47
  /**
@@ -16,7 +16,7 @@ export async function listAllResources(mcpManager) {
16
16
  const serverResources = await listServerResources(mcpManager, serverName);
17
17
  resources.push(...serverResources);
18
18
  }
19
- catch (error) {
19
+ catch {
20
20
  // Silently skip servers that don't support resources
21
21
  console.warn(`Server "${serverName}" does not support resources or failed to list them`);
22
22
  }
@@ -92,13 +92,20 @@ export function parseMCPReference(reference) {
92
92
  }
93
93
  const serverName = withoutPrefix.substring(0, slashIndex);
94
94
  const uri = withoutPrefix.substring(slashIndex + 1);
95
+ // BUG FIX: Validate that both serverName and uri are non-empty
96
+ if (!serverName || !uri) {
97
+ return null;
98
+ }
95
99
  return { serverName, uri };
96
100
  }
97
101
  /**
98
102
  * Extract all MCP references from text
103
+ * BUG FIX: Exclude trailing punctuation that could be captured accidentally
99
104
  */
100
105
  export function extractMCPReferences(text) {
101
- const pattern = /@mcp:[a-z0-9_-]+\/[^\s]+/gi;
106
+ // Pattern captures @mcp:server/uri but excludes trailing punctuation
107
+ // [^\s.,;:!?)\]}>] ensures we don't capture sentence-ending punctuation
108
+ const pattern = /@mcp:[a-z0-9_-]+\/[^\s.,;:!?)\]}>]+/gi;
102
109
  const matches = text.match(pattern);
103
110
  return matches || [];
104
111
  }
@@ -1 +1 @@
1
- {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/mcp/resources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/mcp/resources.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Z.AI Service Detector
3
+ *
4
+ * Detects Z.AI configuration, validates API keys, and manages
5
+ * Z.AI MCP server enablement status.
6
+ */
7
+ import { type ZAIServerName, type ZAIPlanTier } from './zai-templates.js';
8
+ /**
9
+ * Z.AI service status
10
+ */
11
+ export interface ZAIServiceStatus {
12
+ /** Whether a Z.AI API key is configured */
13
+ hasApiKey: boolean;
14
+ /** Whether the current model is a GLM model */
15
+ isGLMModel: boolean;
16
+ /** Detected plan tier (if determinable) */
17
+ planTier?: ZAIPlanTier;
18
+ /** List of enabled Z.AI MCP servers */
19
+ enabledServers: ZAIServerName[];
20
+ /** Node.js version check for vision server */
21
+ nodeVersionOk: boolean;
22
+ /** Current Node.js version */
23
+ nodeVersion: string;
24
+ }
25
+ /**
26
+ * Check if a model name is a GLM model
27
+ */
28
+ export declare function isGLMModel(model: string): boolean;
29
+ /**
30
+ * Check if a base URL is a Z.AI endpoint
31
+ */
32
+ export declare function isZAIBaseURL(baseURL: string): boolean;
33
+ /**
34
+ * Detect Z.AI services status
35
+ */
36
+ export declare function detectZAIServices(): Promise<ZAIServiceStatus>;
37
+ /**
38
+ * Get list of enabled Z.AI MCP servers from config
39
+ */
40
+ export declare function getEnabledZAIServers(): Promise<ZAIServerName[]>;
41
+ /**
42
+ * Validate Z.AI API key by making a test request
43
+ *
44
+ * @param apiKey - The API key to validate
45
+ * @returns true if valid, false otherwise
46
+ */
47
+ export declare function validateZAIApiKey(apiKey: string): Promise<boolean>;
48
+ /**
49
+ * Get Z.AI API key from config or environment
50
+ */
51
+ export declare function getZAIApiKey(): string | null;
52
+ /**
53
+ * Check if Z.AI MCP is fully configured
54
+ */
55
+ export declare function isZAIMCPConfigured(): Promise<boolean>;
56
+ /**
57
+ * Get recommended servers based on system capabilities
58
+ */
59
+ export declare function getRecommendedServers(status: ZAIServiceStatus): ZAIServerName[];
60
+ /**
61
+ * Format status for display
62
+ */
63
+ export declare function formatZAIStatus(status: ZAIServiceStatus): string;
@@ -0,0 +1,193 @@
1
+ /**
2
+ * Z.AI Service Detector
3
+ *
4
+ * Detects Z.AI configuration, validates API keys, and manages
5
+ * Z.AI MCP server enablement status.
6
+ */
7
+ import { getSettingsManager } from '../utils/settings-manager.js';
8
+ import { loadMCPConfig } from './config.js';
9
+ import { ZAI_SERVER_NAMES, ZAI_VISION_PACKAGE, } from './zai-templates.js';
10
+ /**
11
+ * Z.AI base URLs that indicate GLM usage
12
+ */
13
+ const ZAI_BASE_URLS = [
14
+ 'api.z.ai',
15
+ 'open.z.ai',
16
+ 'open.bigmodel.cn',
17
+ 'chatglm.cn',
18
+ ];
19
+ /**
20
+ * GLM model name patterns
21
+ */
22
+ const GLM_MODEL_PATTERNS = [
23
+ /^glm/i,
24
+ /^chatglm/i,
25
+ /^codegeex/i,
26
+ /^cogview/i,
27
+ /^cogvideo/i,
28
+ ];
29
+ /**
30
+ * Check if a model name is a GLM model
31
+ */
32
+ export function isGLMModel(model) {
33
+ if (!model)
34
+ return false;
35
+ return GLM_MODEL_PATTERNS.some(pattern => pattern.test(model));
36
+ }
37
+ /**
38
+ * Check if a base URL is a Z.AI endpoint
39
+ */
40
+ export function isZAIBaseURL(baseURL) {
41
+ if (!baseURL)
42
+ return false;
43
+ const lowerURL = baseURL.toLowerCase();
44
+ return ZAI_BASE_URLS.some(domain => lowerURL.includes(domain));
45
+ }
46
+ /**
47
+ * Get current Node.js version
48
+ */
49
+ function getNodeVersion() {
50
+ return process.version.replace(/^v/, '');
51
+ }
52
+ /**
53
+ * Check if Node.js version meets minimum requirement
54
+ */
55
+ function checkNodeVersion(minVersion) {
56
+ const current = getNodeVersion().split('.').map(Number);
57
+ const required = minVersion.split('.').map(Number);
58
+ for (let i = 0; i < Math.max(current.length, required.length); i++) {
59
+ const curr = current[i] || 0;
60
+ const req = required[i] || 0;
61
+ if (curr > req)
62
+ return true;
63
+ if (curr < req)
64
+ return false;
65
+ }
66
+ return true;
67
+ }
68
+ /**
69
+ * Detect Z.AI services status
70
+ */
71
+ export async function detectZAIServices() {
72
+ const settings = getSettingsManager();
73
+ // Check for API key
74
+ const apiKey = settings.getApiKey() || '';
75
+ const hasApiKey = apiKey.length > 0;
76
+ // Check if using GLM model
77
+ const model = settings.getCurrentModel() || process.env.AI_MODEL || '';
78
+ const baseURL = settings.getBaseURL() || '';
79
+ const isGLM = isGLMModel(model) || isZAIBaseURL(baseURL);
80
+ // Check Node.js version for vision server
81
+ const nodeVersion = getNodeVersion();
82
+ const nodeVersionOk = checkNodeVersion(ZAI_VISION_PACKAGE.minNodeVersion);
83
+ // Check which Z.AI servers are already configured
84
+ const enabledServers = await getEnabledZAIServers();
85
+ return {
86
+ hasApiKey,
87
+ isGLMModel: isGLM,
88
+ enabledServers,
89
+ nodeVersionOk,
90
+ nodeVersion,
91
+ };
92
+ }
93
+ /**
94
+ * Get list of enabled Z.AI MCP servers from config
95
+ */
96
+ export async function getEnabledZAIServers() {
97
+ try {
98
+ const mcpConfig = loadMCPConfig();
99
+ if (!mcpConfig?.servers)
100
+ return [];
101
+ const serverNames = mcpConfig.servers.map(s => s.name);
102
+ const zaiServers = Object.values(ZAI_SERVER_NAMES);
103
+ return serverNames.filter((name) => zaiServers.includes(name));
104
+ }
105
+ catch {
106
+ return [];
107
+ }
108
+ }
109
+ /**
110
+ * Validate Z.AI API key by making a test request
111
+ *
112
+ * @param apiKey - The API key to validate
113
+ * @returns true if valid, false otherwise
114
+ */
115
+ export async function validateZAIApiKey(apiKey) {
116
+ if (!apiKey || apiKey.trim().length === 0) {
117
+ return false;
118
+ }
119
+ try {
120
+ // Make a lightweight request to validate the key
121
+ // Using the models endpoint as it's fast and doesn't consume quota
122
+ const response = await fetch('https://open.z.ai/api/v1/models', {
123
+ method: 'GET',
124
+ headers: {
125
+ 'Authorization': `Bearer ${apiKey}`,
126
+ 'Content-Type': 'application/json',
127
+ },
128
+ signal: AbortSignal.timeout(5000),
129
+ });
130
+ return response.ok;
131
+ }
132
+ catch {
133
+ // Network error or timeout - assume key might be valid
134
+ // Better to allow setup to continue than block on network issues
135
+ return true;
136
+ }
137
+ }
138
+ /**
139
+ * Get Z.AI API key from config or environment
140
+ */
141
+ export function getZAIApiKey() {
142
+ const settings = getSettingsManager();
143
+ const apiKey = settings.getApiKey() || process.env.Z_AI_API_KEY;
144
+ if (apiKey && apiKey.trim().length > 0) {
145
+ return apiKey.trim();
146
+ }
147
+ return null;
148
+ }
149
+ /**
150
+ * Check if Z.AI MCP is fully configured
151
+ */
152
+ export async function isZAIMCPConfigured() {
153
+ const status = await detectZAIServices();
154
+ return status.hasApiKey && status.enabledServers.length > 0;
155
+ }
156
+ /**
157
+ * Get recommended servers based on system capabilities
158
+ */
159
+ export function getRecommendedServers(status) {
160
+ const recommended = [
161
+ ZAI_SERVER_NAMES.WEB_SEARCH,
162
+ ZAI_SERVER_NAMES.WEB_READER,
163
+ ];
164
+ // Only recommend vision if Node.js version is sufficient
165
+ if (status.nodeVersionOk) {
166
+ recommended.push(ZAI_SERVER_NAMES.VISION);
167
+ }
168
+ return recommended;
169
+ }
170
+ /**
171
+ * Format status for display
172
+ */
173
+ export function formatZAIStatus(status) {
174
+ const lines = [];
175
+ lines.push('Z.AI MCP Status');
176
+ lines.push('===============');
177
+ lines.push('');
178
+ lines.push(`API Key: ${status.hasApiKey ? '✓ Configured' : '✗ Not configured'}`);
179
+ lines.push(`GLM Model: ${status.isGLMModel ? '✓ Detected' : '○ Not detected'}`);
180
+ lines.push(`Node.js: v${status.nodeVersion} ${status.nodeVersionOk ? '✓' : `(v${ZAI_VISION_PACKAGE.minNodeVersion}+ required for vision)`}`);
181
+ lines.push('');
182
+ lines.push('Enabled Servers:');
183
+ if (status.enabledServers.length === 0) {
184
+ lines.push(' (none)');
185
+ }
186
+ else {
187
+ for (const server of status.enabledServers) {
188
+ lines.push(` ✓ ${server}`);
189
+ }
190
+ }
191
+ return lines.join('\n');
192
+ }
193
+ //# sourceMappingURL=zai-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zai-detector.js","sourceRoot":"","sources":["../../src/mcp/zai-detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Z.AI Official MCP Server Templates
3
+ *
4
+ * Pre-configured templates for Z.AI's official MCP servers:
5
+ * - Web Reader: Extract content from web pages
6
+ * - Web Search: Real-time web search
7
+ * - Vision: Image and video analysis via GLM-4.5V
8
+ *
9
+ * These templates enable seamless integration for GLM users.
10
+ */
11
+ import type { MCPServerConfig } from '../schemas/settings-schemas.js';
12
+ /**
13
+ * Z.AI MCP server identifiers
14
+ */
15
+ export declare const ZAI_SERVER_NAMES: {
16
+ readonly WEB_READER: "zai-web-reader";
17
+ readonly WEB_SEARCH: "zai-web-search";
18
+ readonly VISION: "zai-vision";
19
+ };
20
+ export type ZAIServerName = typeof ZAI_SERVER_NAMES[keyof typeof ZAI_SERVER_NAMES];
21
+ /**
22
+ * Z.AI API endpoints for MCP servers
23
+ */
24
+ export declare const ZAI_ENDPOINTS: {
25
+ readonly WEB_READER: "https://api.z.ai/api/mcp/web_reader/mcp";
26
+ readonly WEB_SEARCH: "https://api.z.ai/api/mcp/web_search_prime/mcp";
27
+ };
28
+ /**
29
+ * Z.AI Vision MCP package info
30
+ */
31
+ export declare const ZAI_VISION_PACKAGE: {
32
+ readonly name: "@z_ai/mcp-server";
33
+ readonly minNodeVersion: "22.0.0";
34
+ };
35
+ /**
36
+ * Z.AI MCP server template definition
37
+ */
38
+ export interface ZAIMCPTemplate {
39
+ name: ZAIServerName;
40
+ displayName: string;
41
+ description: string;
42
+ tools: string[];
43
+ transport: 'http' | 'stdio';
44
+ quotaType: 'web' | 'vision';
45
+ requirements?: {
46
+ nodeVersion?: string;
47
+ };
48
+ }
49
+ /**
50
+ * Z.AI MCP server templates
51
+ */
52
+ export declare const ZAI_MCP_TEMPLATES: Record<ZAIServerName, ZAIMCPTemplate>;
53
+ /**
54
+ * Generate MCP server config for a Z.AI server
55
+ *
56
+ * @param serverName - The Z.AI server name
57
+ * @param apiKey - Z.AI API key for authentication
58
+ * @returns MCPServerConfig ready for use
59
+ */
60
+ export declare function generateZAIServerConfig(serverName: ZAIServerName, apiKey: string): MCPServerConfig;
61
+ /**
62
+ * Get all Z.AI server names
63
+ */
64
+ export declare function getAllZAIServerNames(): ZAIServerName[];
65
+ /**
66
+ * Check if a server name is a Z.AI server
67
+ */
68
+ export declare function isZAIServer(serverName: string): serverName is ZAIServerName;
69
+ /**
70
+ * Get template by server name
71
+ */
72
+ export declare function getZAITemplate(serverName: ZAIServerName): ZAIMCPTemplate;
73
+ /**
74
+ * Quota limits by plan tier
75
+ */
76
+ export declare const ZAI_QUOTA_LIMITS: {
77
+ readonly lite: {
78
+ readonly webRequests: 100;
79
+ readonly visionHours: 5;
80
+ };
81
+ readonly pro: {
82
+ readonly webRequests: 1000;
83
+ readonly visionHours: 5;
84
+ };
85
+ readonly max: {
86
+ readonly webRequests: 4000;
87
+ readonly visionHours: 5;
88
+ };
89
+ };
90
+ export type ZAIPlanTier = keyof typeof ZAI_QUOTA_LIMITS;