Skip to content

Commit 15bbf3a

Browse files
authored
refactor: replace supportsMaxTokens with maxTokensKey for flexible token parameter naming (#563)
* refactor: replace supportsMaxTokens with maxTokensKey for flexible token parameter naming * refactor(zgsm): improve type safety and token handling logic
1 parent c7cd89e commit 15bbf3a

File tree

4 files changed

+19
-11
lines changed

4 files changed

+19
-11
lines changed

packages/types/src/model.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,8 @@ export const modelInfoSchema = z.object({
5757
maxThinkingTokens: z.number().nullish(),
5858
contextWindow: z.number(),
5959
supportsImages: z.boolean().optional(),
60-
supportsMaxTokens: z.boolean().optional(),
60+
// `max_completion_tokens`,`max_tokens` ,undefined
61+
maxTokensKey: z.string().optional(),
6162
supportsComputerUse: z.boolean().optional(),
6263
supportsPromptCache: z.boolean(),
6364
// Capability flag to indicate whether the model supports an output verbosity parameter

packages/types/src/providers/zgsm.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ export const zgsmModels = {
66
default: {
77
maxTokens: 8192,
88
contextWindow: 128_000,
9-
supportsMaxTokens: false,
9+
maxTokensKey: undefined,
1010
supportsImages: false,
1111
supportsComputerUse: false,
1212
supportsPromptCache: true,

src/api/providers/zgsm.ts

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@ export class ZgsmAiHandler extends BaseProvider implements SingleCompletionHandl
262262
requestId: string,
263263
clientId: string,
264264
workspacePath: string,
265-
chatType?: string,
265+
chatType?: "user" | "system",
266266
): Record<string, string> {
267267
return {
268268
"Accept-Language": metadata?.language || "en",
@@ -685,14 +685,19 @@ export class ZgsmAiHandler extends BaseProvider implements SingleCompletionHandl
685685
modelInfo: ModelInfo,
686686
): void {
687687
// Only add max_completion_tokens if includeMaxTokens is true
688-
if (
689-
(this.options.includeMaxTokens === true && this.options.useZgsmCustomConfig) ||
690-
!this.options.useZgsmCustomConfig
691-
) {
688+
if (this.options.useZgsmCustomConfig) {
689+
const maxTokens = this.options.modelMaxTokens || modelInfo.maxTokens
692690
// Use user-configured modelMaxTokens if available, otherwise fall back to model's default maxTokens
693691
// Using max_completion_tokens as max_tokens is deprecated
694-
requestOptions[modelInfo.supportsMaxTokens ? "max_tokens" : "max_completion_tokens"] =
695-
this.options.modelMaxTokens || modelInfo.maxTokens
692+
if (this.options.includeMaxTokens) {
693+
Object.assign(requestOptions, {
694+
[modelInfo.maxTokensKey || "max_completion_tokens"]: maxTokens,
695+
})
696+
}
697+
} else if (modelInfo.maxTokensKey) {
698+
Object.assign(requestOptions, {
699+
[modelInfo.maxTokensKey]: modelInfo.maxTokens,
700+
})
696701
}
697702
}
698703

webview-ui/src/components/chat/ModeSelector.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ export const ModeSelector = ({
192192

193193
return (
194194
<Popover open={open} onOpenChange={onOpenChange} data-testid="mode-selector-root">
195-
<StandardTooltip content={title}>
195+
<StandardTooltip content={`${title} (${zgsmCodeMode})`}>
196196
<PopoverTrigger
197197
disabled={disabled}
198198
data-testid="mode-selector-trigger"
@@ -209,7 +209,9 @@ export const ModeSelector = ({
209209
? "bg-primary opacity-90 hover:bg-primary-hover text-vscode-button-foreground"
210210
: null,
211211
)}>
212-
<span className="truncate">{selectedMode?.name || ""}</span>
212+
<span className="truncate">
213+
{selectedMode?.name || ""} ({zgsmCodeMode})
214+
</span>
213215
</PopoverTrigger>
214216
</StandardTooltip>
215217
<PopoverContent

0 commit comments

Comments
 (0)