@defai.digital/ax-cli 0.1.1 → 0.2.2
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/README.md +24 -16
- package/automatosx.config.json +333 -0
- package/dist/agent/grok-agent.d.ts +7 -1
- package/dist/agent/grok-agent.js +22 -9
- package/dist/agent/grok-agent.js.map +1 -1
- package/dist/commands/mcp.js +1 -1
- package/dist/commands/mcp.js.map +1 -1
- package/dist/constants.d.ts +67 -1
- package/dist/constants.js +57 -1
- package/dist/constants.js.map +1 -1
- package/dist/grok/client.d.ts +133 -2
- package/dist/grok/client.js +173 -16
- package/dist/grok/client.js.map +1 -1
- package/dist/grok/types.d.ts +291 -0
- package/dist/grok/types.js +127 -0
- package/dist/grok/types.js.map +1 -0
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/mcp/config.d.ts +1 -1
- package/dist/mcp/config.js +28 -5
- package/dist/mcp/config.js.map +1 -1
- package/dist/mcp/transports.d.ts +6 -3
- package/dist/mcp/transports.js +18 -12
- package/dist/mcp/transports.js.map +1 -1
- package/dist/schemas/api-schemas.d.ts +569 -0
- package/dist/schemas/api-schemas.js +117 -0
- package/dist/schemas/api-schemas.js.map +1 -0
- package/dist/schemas/confirmation-schemas.d.ts +60 -0
- package/dist/schemas/confirmation-schemas.js +41 -0
- package/dist/schemas/confirmation-schemas.js.map +1 -0
- package/dist/schemas/index-unified.d.ts +12 -0
- package/dist/schemas/index-unified.js +17 -0
- package/dist/schemas/index-unified.js.map +1 -0
- package/dist/schemas/index.d.ts +8 -8
- package/dist/schemas/index.js +5 -4
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/mcp-schemas.d.ts +171 -0
- package/dist/schemas/mcp-schemas.js +77 -0
- package/dist/schemas/mcp-schemas.js.map +1 -0
- package/dist/schemas/tool-schemas.d.ts +2 -2
- package/dist/tools/search.js +2 -2
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/text-editor.js +6 -0
- package/dist/tools/text-editor.js.map +1 -1
- package/dist/ui/components/api-key-input.js +2 -2
- package/dist/ui/components/api-key-input.js.map +1 -1
- package/dist/ui/components/chat-history.js +2 -0
- package/dist/ui/components/chat-history.js.map +1 -1
- package/dist/ui/components/chat-interface.js +31 -1
- package/dist/ui/components/chat-interface.js.map +1 -1
- package/dist/ui/components/mcp-status.js +1 -1
- package/dist/ui/components/mcp-status.js.map +1 -1
- package/dist/ui/components/reasoning-display.d.ts +109 -0
- package/dist/ui/components/reasoning-display.js +110 -0
- package/dist/ui/components/reasoning-display.js.map +1 -0
- package/dist/ui/shared/max-sized-box.js +1 -1
- package/dist/ui/shared/max-sized-box.js.map +1 -1
- package/dist/utils/cache.d.ts +75 -0
- package/dist/utils/cache.js +137 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/confirmation-service.js +2 -2
- package/dist/utils/confirmation-service.js.map +1 -1
- package/dist/utils/index.d.ts +13 -0
- package/dist/utils/index.js +23 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/path-validator.d.ts +30 -0
- package/dist/utils/path-validator.js +67 -0
- package/dist/utils/path-validator.js.map +1 -0
- package/dist/utils/performance.d.ts +72 -0
- package/dist/utils/performance.js +114 -0
- package/dist/utils/performance.js.map +1 -0
- package/dist/utils/settings-manager.js +2 -2
- package/dist/utils/settings-manager.js.map +1 -1
- package/dist/utils/token-counter.d.ts +8 -1
- package/dist/utils/token-counter.js +11 -10
- package/dist/utils/token-counter.js.map +1 -1
- package/eslint.config.js +60 -0
- package/package.json +6 -2
package/dist/constants.d.ts
CHANGED
|
@@ -5,8 +5,64 @@
|
|
|
5
5
|
export declare const AGENT_CONFIG: {
|
|
6
6
|
readonly MAX_TOOL_ROUNDS: 400;
|
|
7
7
|
readonly DEFAULT_TIMEOUT: 360000;
|
|
8
|
-
readonly DEFAULT_MAX_TOKENS:
|
|
8
|
+
readonly DEFAULT_MAX_TOKENS: 8192;
|
|
9
9
|
};
|
|
10
|
+
export declare const GLM_MODELS: {
|
|
11
|
+
readonly "glm-4.6": {
|
|
12
|
+
readonly name: "glm-4.6";
|
|
13
|
+
readonly contextWindow: 200000;
|
|
14
|
+
readonly maxOutputTokens: 128000;
|
|
15
|
+
readonly defaultMaxTokens: 8192;
|
|
16
|
+
readonly supportsThinking: true;
|
|
17
|
+
readonly defaultTemperature: 0.7;
|
|
18
|
+
readonly temperatureRange: {
|
|
19
|
+
readonly min: 0.6;
|
|
20
|
+
readonly max: 1;
|
|
21
|
+
};
|
|
22
|
+
readonly tokenEfficiency: 1.3;
|
|
23
|
+
};
|
|
24
|
+
readonly "grok-code-fast-1": {
|
|
25
|
+
readonly name: "grok-code-fast-1";
|
|
26
|
+
readonly contextWindow: 128000;
|
|
27
|
+
readonly maxOutputTokens: 4096;
|
|
28
|
+
readonly defaultMaxTokens: 1536;
|
|
29
|
+
readonly supportsThinking: false;
|
|
30
|
+
readonly defaultTemperature: 0.7;
|
|
31
|
+
readonly temperatureRange: {
|
|
32
|
+
readonly min: 0;
|
|
33
|
+
readonly max: 2;
|
|
34
|
+
};
|
|
35
|
+
readonly tokenEfficiency: 1;
|
|
36
|
+
};
|
|
37
|
+
readonly "glm-4-air": {
|
|
38
|
+
readonly name: "glm-4-air";
|
|
39
|
+
readonly contextWindow: 128000;
|
|
40
|
+
readonly maxOutputTokens: 8192;
|
|
41
|
+
readonly defaultMaxTokens: 4096;
|
|
42
|
+
readonly supportsThinking: false;
|
|
43
|
+
readonly defaultTemperature: 0.7;
|
|
44
|
+
readonly temperatureRange: {
|
|
45
|
+
readonly min: 0.6;
|
|
46
|
+
readonly max: 1;
|
|
47
|
+
};
|
|
48
|
+
readonly tokenEfficiency: 1.15;
|
|
49
|
+
};
|
|
50
|
+
readonly "glm-4-airx": {
|
|
51
|
+
readonly name: "glm-4-airx";
|
|
52
|
+
readonly contextWindow: 8192;
|
|
53
|
+
readonly maxOutputTokens: 8192;
|
|
54
|
+
readonly defaultMaxTokens: 2048;
|
|
55
|
+
readonly supportsThinking: false;
|
|
56
|
+
readonly defaultTemperature: 0.7;
|
|
57
|
+
readonly temperatureRange: {
|
|
58
|
+
readonly min: 0.6;
|
|
59
|
+
readonly max: 1;
|
|
60
|
+
};
|
|
61
|
+
readonly tokenEfficiency: 1.1;
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
export type SupportedModel = keyof typeof GLM_MODELS;
|
|
65
|
+
export declare const DEFAULT_MODEL: SupportedModel;
|
|
10
66
|
export declare const FILE_CONFIG: {
|
|
11
67
|
readonly MAX_FILE_SIZE: number;
|
|
12
68
|
readonly MAX_BUFFER_SIZE: number;
|
|
@@ -29,6 +85,16 @@ export declare const TOKEN_CONFIG: {
|
|
|
29
85
|
readonly TOKENS_FOR_REPLY_PRIMING: 3;
|
|
30
86
|
readonly DEFAULT_MODEL: "gpt-4";
|
|
31
87
|
readonly DEFAULT_ENCODING: "cl100k_base";
|
|
88
|
+
readonly CACHE_MAX_SIZE: 1000;
|
|
89
|
+
};
|
|
90
|
+
export declare const CACHE_CONFIG: {
|
|
91
|
+
readonly DEFAULT_MAX_SIZE: 1000;
|
|
92
|
+
readonly DEFAULT_TTL: 300000;
|
|
93
|
+
};
|
|
94
|
+
export declare const PERF_CONFIG: {
|
|
95
|
+
readonly DEBOUNCE_DELAY: 300;
|
|
96
|
+
readonly THROTTLE_LIMIT: 1000;
|
|
97
|
+
readonly SLOW_OPERATION_THRESHOLD: 1000;
|
|
32
98
|
};
|
|
33
99
|
export declare const TOOL_NAMES: {
|
|
34
100
|
readonly BASH: "execute_bash";
|
package/dist/constants.js
CHANGED
|
@@ -6,8 +6,52 @@
|
|
|
6
6
|
export const AGENT_CONFIG = {
|
|
7
7
|
MAX_TOOL_ROUNDS: 400,
|
|
8
8
|
DEFAULT_TIMEOUT: 360000, // 6 minutes
|
|
9
|
-
DEFAULT_MAX_TOKENS: 1536
|
|
9
|
+
DEFAULT_MAX_TOKENS: 8192, // Updated for GLM-4.6 (was 1536)
|
|
10
10
|
};
|
|
11
|
+
// GLM Model Configuration
|
|
12
|
+
export const GLM_MODELS = {
|
|
13
|
+
"glm-4.6": {
|
|
14
|
+
name: "glm-4.6",
|
|
15
|
+
contextWindow: 200000, // 200K tokens
|
|
16
|
+
maxOutputTokens: 128000, // 128K max output
|
|
17
|
+
defaultMaxTokens: 8192, // Conservative default
|
|
18
|
+
supportsThinking: true,
|
|
19
|
+
defaultTemperature: 0.7,
|
|
20
|
+
temperatureRange: { min: 0.6, max: 1.0 },
|
|
21
|
+
tokenEfficiency: 1.3, // 30% more efficient
|
|
22
|
+
},
|
|
23
|
+
"grok-code-fast-1": {
|
|
24
|
+
name: "grok-code-fast-1",
|
|
25
|
+
contextWindow: 128000, // 128K tokens
|
|
26
|
+
maxOutputTokens: 4096,
|
|
27
|
+
defaultMaxTokens: 1536,
|
|
28
|
+
supportsThinking: false,
|
|
29
|
+
defaultTemperature: 0.7,
|
|
30
|
+
temperatureRange: { min: 0.0, max: 2.0 },
|
|
31
|
+
tokenEfficiency: 1.0,
|
|
32
|
+
},
|
|
33
|
+
"glm-4-air": {
|
|
34
|
+
name: "glm-4-air",
|
|
35
|
+
contextWindow: 128000,
|
|
36
|
+
maxOutputTokens: 8192,
|
|
37
|
+
defaultMaxTokens: 4096,
|
|
38
|
+
supportsThinking: false,
|
|
39
|
+
defaultTemperature: 0.7,
|
|
40
|
+
temperatureRange: { min: 0.6, max: 1.0 },
|
|
41
|
+
tokenEfficiency: 1.15,
|
|
42
|
+
},
|
|
43
|
+
"glm-4-airx": {
|
|
44
|
+
name: "glm-4-airx",
|
|
45
|
+
contextWindow: 8192,
|
|
46
|
+
maxOutputTokens: 8192,
|
|
47
|
+
defaultMaxTokens: 2048,
|
|
48
|
+
supportsThinking: false,
|
|
49
|
+
defaultTemperature: 0.7,
|
|
50
|
+
temperatureRange: { min: 0.6, max: 1.0 },
|
|
51
|
+
tokenEfficiency: 1.1,
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
export const DEFAULT_MODEL = "glm-4.6";
|
|
11
55
|
// File Operations
|
|
12
56
|
export const FILE_CONFIG = {
|
|
13
57
|
MAX_FILE_SIZE: 1024 * 1024, // 1MB
|
|
@@ -35,6 +79,18 @@ export const TOKEN_CONFIG = {
|
|
|
35
79
|
TOKENS_FOR_REPLY_PRIMING: 3,
|
|
36
80
|
DEFAULT_MODEL: 'gpt-4',
|
|
37
81
|
DEFAULT_ENCODING: 'cl100k_base',
|
|
82
|
+
CACHE_MAX_SIZE: 1000, // Maximum cached token counts
|
|
83
|
+
};
|
|
84
|
+
// Cache Configuration
|
|
85
|
+
export const CACHE_CONFIG = {
|
|
86
|
+
DEFAULT_MAX_SIZE: 1000,
|
|
87
|
+
DEFAULT_TTL: 300000, // 5 minutes
|
|
88
|
+
};
|
|
89
|
+
// Performance Monitoring
|
|
90
|
+
export const PERF_CONFIG = {
|
|
91
|
+
DEBOUNCE_DELAY: 300, // ms
|
|
92
|
+
THROTTLE_LIMIT: 1000, // ms
|
|
93
|
+
SLOW_OPERATION_THRESHOLD: 1000, // ms - log warning if operation takes longer
|
|
38
94
|
};
|
|
39
95
|
// Tool Names
|
|
40
96
|
export const TOOL_NAMES = {
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,sBAAsB;AACtB,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,eAAe,EAAE,GAAG;IACpB,eAAe,EAAE,MAAM,EAAE,YAAY;IACrC,kBAAkB,EAAE,IAAI;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
package/dist/grok/client.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ChatCompletionMessageParam } from "openai/resources/chat";
|
|
2
|
+
import type { ChatOptions, GLM46StreamChunk } from "./types.js";
|
|
2
3
|
export type GrokMessage = ChatCompletionMessageParam;
|
|
3
4
|
export interface GrokTool {
|
|
4
5
|
type: "function";
|
|
@@ -31,19 +32,149 @@ export interface GrokResponse {
|
|
|
31
32
|
message: {
|
|
32
33
|
role: string;
|
|
33
34
|
content: string | null;
|
|
35
|
+
reasoning_content?: string;
|
|
34
36
|
tool_calls?: GrokToolCall[];
|
|
35
37
|
};
|
|
36
38
|
finish_reason: string;
|
|
37
39
|
}>;
|
|
40
|
+
usage?: {
|
|
41
|
+
prompt_tokens: number;
|
|
42
|
+
completion_tokens: number;
|
|
43
|
+
total_tokens: number;
|
|
44
|
+
reasoning_tokens?: number;
|
|
45
|
+
};
|
|
38
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* GrokClient - Enhanced client for GLM-4.6 API
|
|
49
|
+
*
|
|
50
|
+
* Supports advanced features including:
|
|
51
|
+
* - Thinking/reasoning mode
|
|
52
|
+
* - Configurable temperature (0.6-1.0 for GLM-4.6)
|
|
53
|
+
* - Extended context windows (up to 200K tokens)
|
|
54
|
+
* - Multiple model support
|
|
55
|
+
*/
|
|
39
56
|
export declare class GrokClient {
|
|
40
57
|
private client;
|
|
41
58
|
private currentModel;
|
|
42
59
|
private defaultMaxTokens;
|
|
60
|
+
private defaultTemperature;
|
|
43
61
|
constructor(apiKey: string, model?: string, baseURL?: string);
|
|
62
|
+
/**
|
|
63
|
+
* Validate and normalize model name
|
|
64
|
+
*/
|
|
65
|
+
private validateModel;
|
|
66
|
+
/**
|
|
67
|
+
* Validate temperature for current model
|
|
68
|
+
*/
|
|
69
|
+
private validateTemperature;
|
|
70
|
+
/**
|
|
71
|
+
* Validate max tokens for current model
|
|
72
|
+
*/
|
|
73
|
+
private validateMaxTokens;
|
|
74
|
+
/**
|
|
75
|
+
* Validate thinking configuration for current model
|
|
76
|
+
*/
|
|
77
|
+
private validateThinking;
|
|
44
78
|
setModel(model: string): void;
|
|
45
79
|
getCurrentModel(): string;
|
|
46
|
-
|
|
47
|
-
|
|
80
|
+
getModelConfig(): {
|
|
81
|
+
readonly name: "glm-4.6";
|
|
82
|
+
readonly contextWindow: 200000;
|
|
83
|
+
readonly maxOutputTokens: 128000;
|
|
84
|
+
readonly defaultMaxTokens: 8192;
|
|
85
|
+
readonly supportsThinking: true;
|
|
86
|
+
readonly defaultTemperature: 0.7;
|
|
87
|
+
readonly temperatureRange: {
|
|
88
|
+
readonly min: 0.6;
|
|
89
|
+
readonly max: 1;
|
|
90
|
+
};
|
|
91
|
+
readonly tokenEfficiency: 1.3;
|
|
92
|
+
} | {
|
|
93
|
+
readonly name: "grok-code-fast-1";
|
|
94
|
+
readonly contextWindow: 128000;
|
|
95
|
+
readonly maxOutputTokens: 4096;
|
|
96
|
+
readonly defaultMaxTokens: 1536;
|
|
97
|
+
readonly supportsThinking: false;
|
|
98
|
+
readonly defaultTemperature: 0.7;
|
|
99
|
+
readonly temperatureRange: {
|
|
100
|
+
readonly min: 0;
|
|
101
|
+
readonly max: 2;
|
|
102
|
+
};
|
|
103
|
+
readonly tokenEfficiency: 1;
|
|
104
|
+
} | {
|
|
105
|
+
readonly name: "glm-4-air";
|
|
106
|
+
readonly contextWindow: 128000;
|
|
107
|
+
readonly maxOutputTokens: 8192;
|
|
108
|
+
readonly defaultMaxTokens: 4096;
|
|
109
|
+
readonly supportsThinking: false;
|
|
110
|
+
readonly defaultTemperature: 0.7;
|
|
111
|
+
readonly temperatureRange: {
|
|
112
|
+
readonly min: 0.6;
|
|
113
|
+
readonly max: 1;
|
|
114
|
+
};
|
|
115
|
+
readonly tokenEfficiency: 1.15;
|
|
116
|
+
} | {
|
|
117
|
+
readonly name: "glm-4-airx";
|
|
118
|
+
readonly contextWindow: 8192;
|
|
119
|
+
readonly maxOutputTokens: 8192;
|
|
120
|
+
readonly defaultMaxTokens: 2048;
|
|
121
|
+
readonly supportsThinking: false;
|
|
122
|
+
readonly defaultTemperature: 0.7;
|
|
123
|
+
readonly temperatureRange: {
|
|
124
|
+
readonly min: 0.6;
|
|
125
|
+
readonly max: 1;
|
|
126
|
+
};
|
|
127
|
+
readonly tokenEfficiency: 1.1;
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* Chat completion with GLM-4.6 support
|
|
131
|
+
*
|
|
132
|
+
* @param messages - Conversation messages
|
|
133
|
+
* @param tools - Available tools/functions
|
|
134
|
+
* @param options - Chat options including temperature, thinking mode, etc.
|
|
135
|
+
* @returns Promise<GrokResponse>
|
|
136
|
+
*
|
|
137
|
+
* @example
|
|
138
|
+
* ```typescript
|
|
139
|
+
* const response = await client.chat(messages, tools, {
|
|
140
|
+
* model: 'glm-4.6',
|
|
141
|
+
* temperature: 0.7,
|
|
142
|
+
* thinking: { type: 'enabled' },
|
|
143
|
+
* maxTokens: 8192
|
|
144
|
+
* });
|
|
145
|
+
* ```
|
|
146
|
+
*/
|
|
147
|
+
chat(messages: GrokMessage[], tools?: GrokTool[], options?: ChatOptions): Promise<GrokResponse>;
|
|
148
|
+
/**
|
|
149
|
+
* Streaming chat completion with GLM-4.6 support
|
|
150
|
+
*
|
|
151
|
+
* Yields chunks including reasoning_content when thinking is enabled
|
|
152
|
+
*
|
|
153
|
+
* @param messages - Conversation messages
|
|
154
|
+
* @param tools - Available tools/functions
|
|
155
|
+
* @param options - Chat options including temperature, thinking mode, etc.
|
|
156
|
+
* @returns AsyncGenerator yielding GLM46StreamChunk
|
|
157
|
+
*
|
|
158
|
+
* @example
|
|
159
|
+
* ```typescript
|
|
160
|
+
* const stream = client.chatStream(messages, tools, {
|
|
161
|
+
* thinking: { type: 'enabled' }
|
|
162
|
+
* });
|
|
163
|
+
*
|
|
164
|
+
* for await (const chunk of stream) {
|
|
165
|
+
* if (chunk.choices[0]?.delta?.reasoning_content) {
|
|
166
|
+
* console.log('Reasoning:', chunk.choices[0].delta.reasoning_content);
|
|
167
|
+
* }
|
|
168
|
+
* if (chunk.choices[0]?.delta?.content) {
|
|
169
|
+
* console.log('Content:', chunk.choices[0].delta.content);
|
|
170
|
+
* }
|
|
171
|
+
* }
|
|
172
|
+
* ```
|
|
173
|
+
*/
|
|
174
|
+
chatStream(messages: GrokMessage[], tools?: GrokTool[], options?: ChatOptions): AsyncGenerator<GLM46StreamChunk, void, unknown>;
|
|
175
|
+
/**
|
|
176
|
+
* Search with web context (deprecated - use chat with searchOptions)
|
|
177
|
+
* @deprecated Use chat() with searchOptions parameter instead
|
|
178
|
+
*/
|
|
48
179
|
search(query: string, searchParameters?: SearchParameters): Promise<GrokResponse>;
|
|
49
180
|
}
|
package/dist/grok/client.js
CHANGED
|
@@ -1,58 +1,210 @@
|
|
|
1
1
|
import OpenAI from "openai";
|
|
2
|
+
import { safeValidateGrokResponse } from "../schemas/api-schemas.js";
|
|
3
|
+
import { ErrorCategory, createErrorMessage } from "../utils/error-handler.js";
|
|
4
|
+
import { GLM_MODELS, DEFAULT_MODEL } from "../constants.js";
|
|
5
|
+
/**
|
|
6
|
+
* GrokClient - Enhanced client for GLM-4.6 API
|
|
7
|
+
*
|
|
8
|
+
* Supports advanced features including:
|
|
9
|
+
* - Thinking/reasoning mode
|
|
10
|
+
* - Configurable temperature (0.6-1.0 for GLM-4.6)
|
|
11
|
+
* - Extended context windows (up to 200K tokens)
|
|
12
|
+
* - Multiple model support
|
|
13
|
+
*/
|
|
2
14
|
export class GrokClient {
|
|
3
15
|
client;
|
|
4
|
-
currentModel
|
|
16
|
+
currentModel;
|
|
5
17
|
defaultMaxTokens;
|
|
18
|
+
defaultTemperature;
|
|
6
19
|
constructor(apiKey, model, baseURL) {
|
|
7
20
|
this.client = new OpenAI({
|
|
8
21
|
apiKey,
|
|
9
22
|
baseURL: baseURL || process.env.GROK_BASE_URL || "https://api.x.ai/v1",
|
|
10
23
|
timeout: 360000,
|
|
11
24
|
});
|
|
25
|
+
// Set model with validation
|
|
26
|
+
this.currentModel = this.validateModel(model || DEFAULT_MODEL);
|
|
27
|
+
// Get model configuration
|
|
28
|
+
const modelConfig = GLM_MODELS[this.currentModel];
|
|
29
|
+
// Set defaults from environment or model config
|
|
12
30
|
const envMax = Number(process.env.GROK_MAX_TOKENS);
|
|
13
|
-
this.defaultMaxTokens = Number.isFinite(envMax) && envMax > 0
|
|
14
|
-
|
|
15
|
-
|
|
31
|
+
this.defaultMaxTokens = Number.isFinite(envMax) && envMax > 0
|
|
32
|
+
? Math.min(envMax, modelConfig.maxOutputTokens)
|
|
33
|
+
: modelConfig.defaultMaxTokens;
|
|
34
|
+
const envTemp = Number(process.env.GROK_TEMPERATURE);
|
|
35
|
+
this.defaultTemperature = Number.isFinite(envTemp) &&
|
|
36
|
+
envTemp >= modelConfig.temperatureRange.min &&
|
|
37
|
+
envTemp <= modelConfig.temperatureRange.max
|
|
38
|
+
? envTemp
|
|
39
|
+
: modelConfig.defaultTemperature;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Validate and normalize model name
|
|
43
|
+
*/
|
|
44
|
+
validateModel(model) {
|
|
45
|
+
if (model in GLM_MODELS) {
|
|
46
|
+
return model;
|
|
47
|
+
}
|
|
48
|
+
console.warn(`Unknown model "${model}", using default: ${DEFAULT_MODEL}`);
|
|
49
|
+
return DEFAULT_MODEL;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Validate temperature for current model
|
|
53
|
+
*/
|
|
54
|
+
validateTemperature(temperature, model) {
|
|
55
|
+
const config = GLM_MODELS[model];
|
|
56
|
+
const { min, max } = config.temperatureRange;
|
|
57
|
+
if (temperature < min || temperature > max) {
|
|
58
|
+
throw new Error(`Temperature ${temperature} is out of range for model ${model}. ` +
|
|
59
|
+
`Valid range: ${min} - ${max}`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Validate max tokens for current model
|
|
64
|
+
*/
|
|
65
|
+
validateMaxTokens(maxTokens, model) {
|
|
66
|
+
const config = GLM_MODELS[model];
|
|
67
|
+
if (maxTokens > config.maxOutputTokens) {
|
|
68
|
+
throw new Error(`Max tokens ${maxTokens} exceeds limit for model ${model}. ` +
|
|
69
|
+
`Maximum: ${config.maxOutputTokens}`);
|
|
70
|
+
}
|
|
71
|
+
if (maxTokens < 1) {
|
|
72
|
+
throw new Error(`Max tokens must be at least 1, got ${maxTokens}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Validate thinking configuration for current model
|
|
77
|
+
*/
|
|
78
|
+
validateThinking(thinking, model) {
|
|
79
|
+
if (thinking && thinking.type === "enabled") {
|
|
80
|
+
const config = GLM_MODELS[model];
|
|
81
|
+
if (!config.supportsThinking) {
|
|
82
|
+
throw new Error(`Thinking mode is not supported by model ${model}. ` +
|
|
83
|
+
`Use glm-4.6 for thinking capabilities.`);
|
|
84
|
+
}
|
|
16
85
|
}
|
|
17
86
|
}
|
|
18
87
|
setModel(model) {
|
|
19
|
-
this.currentModel = model;
|
|
88
|
+
this.currentModel = this.validateModel(model);
|
|
20
89
|
}
|
|
21
90
|
getCurrentModel() {
|
|
22
91
|
return this.currentModel;
|
|
23
92
|
}
|
|
24
|
-
|
|
93
|
+
getModelConfig() {
|
|
94
|
+
return GLM_MODELS[this.currentModel];
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Chat completion with GLM-4.6 support
|
|
98
|
+
*
|
|
99
|
+
* @param messages - Conversation messages
|
|
100
|
+
* @param tools - Available tools/functions
|
|
101
|
+
* @param options - Chat options including temperature, thinking mode, etc.
|
|
102
|
+
* @returns Promise<GrokResponse>
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* ```typescript
|
|
106
|
+
* const response = await client.chat(messages, tools, {
|
|
107
|
+
* model: 'glm-4.6',
|
|
108
|
+
* temperature: 0.7,
|
|
109
|
+
* thinking: { type: 'enabled' },
|
|
110
|
+
* maxTokens: 8192
|
|
111
|
+
* });
|
|
112
|
+
* ```
|
|
113
|
+
*/
|
|
114
|
+
async chat(messages, tools, options) {
|
|
25
115
|
try {
|
|
116
|
+
// Merge options with defaults
|
|
117
|
+
const model = this.validateModel(options?.model || this.currentModel);
|
|
118
|
+
const temperature = options?.temperature ?? this.defaultTemperature;
|
|
119
|
+
const maxTokens = options?.maxTokens ?? this.defaultMaxTokens;
|
|
120
|
+
const thinking = options?.thinking;
|
|
121
|
+
const searchOptions = options?.searchOptions;
|
|
122
|
+
// Validate parameters
|
|
123
|
+
this.validateTemperature(temperature, model);
|
|
124
|
+
this.validateMaxTokens(maxTokens, model);
|
|
125
|
+
this.validateThinking(thinking, model);
|
|
26
126
|
const requestPayload = {
|
|
27
|
-
model
|
|
127
|
+
model,
|
|
28
128
|
messages,
|
|
29
129
|
tools: tools || [],
|
|
30
130
|
tool_choice: tools && tools.length > 0 ? "auto" : undefined,
|
|
31
|
-
temperature
|
|
32
|
-
max_tokens:
|
|
131
|
+
temperature,
|
|
132
|
+
max_tokens: maxTokens,
|
|
33
133
|
};
|
|
134
|
+
// Add GLM-4.6 thinking parameter if specified
|
|
135
|
+
if (thinking) {
|
|
136
|
+
requestPayload.thinking = thinking;
|
|
137
|
+
}
|
|
34
138
|
// Add search parameters if specified
|
|
35
139
|
if (searchOptions?.search_parameters) {
|
|
36
140
|
requestPayload.search_parameters = searchOptions.search_parameters;
|
|
37
141
|
}
|
|
38
142
|
const response = await this.client.chat.completions.create(requestPayload);
|
|
143
|
+
// Validate response structure
|
|
144
|
+
const validationResult = safeValidateGrokResponse(response);
|
|
145
|
+
if (!validationResult.success) {
|
|
146
|
+
console.warn(createErrorMessage(ErrorCategory.VALIDATION, 'Grok API response validation', validationResult.error || 'Invalid response structure'));
|
|
147
|
+
// Return response anyway for backward compatibility, but log warning
|
|
148
|
+
}
|
|
39
149
|
return response;
|
|
40
150
|
}
|
|
41
151
|
catch (error) {
|
|
42
|
-
|
|
152
|
+
// Enhance error message with context
|
|
153
|
+
const modelInfo = options?.model || this.currentModel;
|
|
154
|
+
throw new Error(`Grok API error (model: ${modelInfo}): ${error.message}`);
|
|
43
155
|
}
|
|
44
156
|
}
|
|
45
|
-
|
|
157
|
+
/**
|
|
158
|
+
* Streaming chat completion with GLM-4.6 support
|
|
159
|
+
*
|
|
160
|
+
* Yields chunks including reasoning_content when thinking is enabled
|
|
161
|
+
*
|
|
162
|
+
* @param messages - Conversation messages
|
|
163
|
+
* @param tools - Available tools/functions
|
|
164
|
+
* @param options - Chat options including temperature, thinking mode, etc.
|
|
165
|
+
* @returns AsyncGenerator yielding GLM46StreamChunk
|
|
166
|
+
*
|
|
167
|
+
* @example
|
|
168
|
+
* ```typescript
|
|
169
|
+
* const stream = client.chatStream(messages, tools, {
|
|
170
|
+
* thinking: { type: 'enabled' }
|
|
171
|
+
* });
|
|
172
|
+
*
|
|
173
|
+
* for await (const chunk of stream) {
|
|
174
|
+
* if (chunk.choices[0]?.delta?.reasoning_content) {
|
|
175
|
+
* console.log('Reasoning:', chunk.choices[0].delta.reasoning_content);
|
|
176
|
+
* }
|
|
177
|
+
* if (chunk.choices[0]?.delta?.content) {
|
|
178
|
+
* console.log('Content:', chunk.choices[0].delta.content);
|
|
179
|
+
* }
|
|
180
|
+
* }
|
|
181
|
+
* ```
|
|
182
|
+
*/
|
|
183
|
+
async *chatStream(messages, tools, options) {
|
|
46
184
|
try {
|
|
185
|
+
// Merge options with defaults
|
|
186
|
+
const model = this.validateModel(options?.model || this.currentModel);
|
|
187
|
+
const temperature = options?.temperature ?? this.defaultTemperature;
|
|
188
|
+
const maxTokens = options?.maxTokens ?? this.defaultMaxTokens;
|
|
189
|
+
const thinking = options?.thinking;
|
|
190
|
+
const searchOptions = options?.searchOptions;
|
|
191
|
+
// Validate parameters
|
|
192
|
+
this.validateTemperature(temperature, model);
|
|
193
|
+
this.validateMaxTokens(maxTokens, model);
|
|
194
|
+
this.validateThinking(thinking, model);
|
|
47
195
|
const requestPayload = {
|
|
48
|
-
model
|
|
196
|
+
model,
|
|
49
197
|
messages,
|
|
50
198
|
tools: tools || [],
|
|
51
199
|
tool_choice: tools && tools.length > 0 ? "auto" : undefined,
|
|
52
|
-
temperature
|
|
53
|
-
max_tokens:
|
|
200
|
+
temperature,
|
|
201
|
+
max_tokens: maxTokens,
|
|
54
202
|
stream: true,
|
|
55
203
|
};
|
|
204
|
+
// Add GLM-4.6 thinking parameter if specified
|
|
205
|
+
if (thinking) {
|
|
206
|
+
requestPayload.thinking = thinking;
|
|
207
|
+
}
|
|
56
208
|
// Add search parameters if specified
|
|
57
209
|
if (searchOptions?.search_parameters) {
|
|
58
210
|
requestPayload.search_parameters = searchOptions.search_parameters;
|
|
@@ -63,9 +215,14 @@ export class GrokClient {
|
|
|
63
215
|
}
|
|
64
216
|
}
|
|
65
217
|
catch (error) {
|
|
66
|
-
|
|
218
|
+
const modelInfo = options?.model || this.currentModel;
|
|
219
|
+
throw new Error(`Grok API streaming error (model: ${modelInfo}): ${error.message}`);
|
|
67
220
|
}
|
|
68
221
|
}
|
|
222
|
+
/**
|
|
223
|
+
* Search with web context (deprecated - use chat with searchOptions)
|
|
224
|
+
* @deprecated Use chat() with searchOptions parameter instead
|
|
225
|
+
*/
|
|
69
226
|
async search(query, searchParameters) {
|
|
70
227
|
const searchMessage = {
|
|
71
228
|
role: "user",
|
|
@@ -74,7 +231,7 @@ export class GrokClient {
|
|
|
74
231
|
const searchOptions = {
|
|
75
232
|
search_parameters: searchParameters || { mode: "on" },
|
|
76
233
|
};
|
|
77
|
-
return this.chat([searchMessage], [],
|
|
234
|
+
return this.chat([searchMessage], [], { searchOptions });
|
|
78
235
|
}
|
|
79
236
|
}
|
|
80
237
|
//# sourceMappingURL=client.js.map
|
package/dist/grok/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/grok/client.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/grok/client.ts"],"names":[],"mappings":"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"}
|