setIsOpen(false)} />
- {hasBothModeTypes && (
-
- Wave AI Cloud
-
- )}
- {waveProviderConfigs.map((config, index) => {
- const isFirst = index === 0 && !hasBothModeTypes;
- const isDisabled = !hasPremium && config["waveai:premium"];
- const isSelected = currentMode === config.mode;
- return (
-
- );
- })}
- {hasBothModeTypes && (
-
- )}
- {hasBothModeTypes && (
-
- Custom
-
- )}
- {otherProviderConfigs.map((config, index) => {
- const isFirst = index === 0 && !hasBothModeTypes;
- const isLast = index === otherProviderConfigs.length - 1;
- const isDisabled = !hasPremium && config["waveai:premium"];
- const isSelected = currentMode === config.mode;
+ {sections.map((section, sectionIndex) => {
+ const isFirstSection = sectionIndex === 0;
+ const isLastSection = sectionIndex === sections.length - 1;
+
return (
-
diff --git a/frontend/app/aipanel/aipanelmessages.tsx b/frontend/app/aipanel/aipanelmessages.tsx
index 1c55f1f071..ac24d6145f 100644
--- a/frontend/app/aipanel/aipanelmessages.tsx
+++ b/frontend/app/aipanel/aipanelmessages.tsx
@@ -62,7 +62,7 @@ export const AIPanelMessages = memo(({ messages, status, onContextMenu }: AIPane
onContextMenu={onContextMenu}
>
{selectedFile.docsUrl && (
-
-
-
+
+
+
+
+
)}
{selectedFile.path}
diff --git a/frontend/types/gotypes.d.ts b/frontend/types/gotypes.d.ts
index 7aa02b3a3e..988fcf012f 100644
--- a/frontend/types/gotypes.d.ts
+++ b/frontend/types/gotypes.d.ts
@@ -24,12 +24,13 @@ declare global {
"ai:model"?: string;
"ai:thinkinglevel"?: string;
"ai:endpoint"?: string;
- "ai:apiversion"?: string;
+ "ai:azureapiversion"?: string;
"ai:apitoken"?: string;
"ai:apitokensecretname"?: string;
"ai:azureresourcename"?: string;
"ai:azuredeployment"?: string;
"ai:capabilities"?: string[];
+ "ai:switchcompat"?: string[];
"waveai:cloud"?: boolean;
"waveai:premium"?: boolean;
};
diff --git a/pkg/wconfig/defaultconfig/waveai.json b/pkg/wconfig/defaultconfig/waveai.json
index bb07f7a340..c115211b73 100644
--- a/pkg/wconfig/defaultconfig/waveai.json
+++ b/pkg/wconfig/defaultconfig/waveai.json
@@ -8,7 +8,8 @@
"ai:apitype": "openai-responses",
"ai:model": "gpt-5-mini",
"ai:thinkinglevel": "low",
- "ai:capabilities": ["tools", "images", "pdfs"]
+ "ai:capabilities": ["tools", "images", "pdfs"],
+ "ai:switchcompat": ["wavecloud"]
},
"waveai@balanced": {
"display:name": "Balanced",
@@ -20,7 +21,8 @@
"ai:model": "gpt-5.1",
"ai:thinkinglevel": "low",
"ai:capabilities": ["tools", "images", "pdfs"],
- "waveai:premium": true
+ "waveai:premium": true,
+ "ai:switchcompat": ["wavecloud"]
},
"waveai@deep": {
"display:name": "Deep",
@@ -32,6 +34,7 @@
"ai:model": "gpt-5.1",
"ai:thinkinglevel": "medium",
"ai:capabilities": ["tools", "images", "pdfs"],
- "waveai:premium": true
+ "waveai:premium": true,
+ "ai:switchcompat": ["wavecloud"]
}
}
diff --git a/pkg/wconfig/settingsconfig.go b/pkg/wconfig/settingsconfig.go
index 1d6adf1eda..6d0da5dab5 100644
--- a/pkg/wconfig/settingsconfig.go
+++ b/pkg/wconfig/settingsconfig.go
@@ -278,6 +278,7 @@ type AIModeConfigType struct {
AzureResourceName string `json:"ai:azureresourcename,omitempty"`
AzureDeployment string `json:"ai:azuredeployment,omitempty"`
Capabilities []string `json:"ai:capabilities,omitempty" jsonschema:"enum=pdfs,enum=images,enum=tools"`
+ SwitchCompat []string `json:"ai:switchcompat,omitempty"`
WaveAICloud bool `json:"waveai:cloud,omitempty"`
WaveAIPremium bool `json:"waveai:premium,omitempty"`
}
diff --git a/schema/waveai.json b/schema/waveai.json
index b88d3b1bfb..1612cac88d 100644
--- a/schema/waveai.json
+++ b/schema/waveai.json
@@ -30,7 +30,7 @@
"ai:apitype": {
"type": "string",
"enum": [
- "anthropic-messages",
+ "google-gemini",
"openai-responses",
"openai-chat"
]
@@ -49,7 +49,7 @@
"ai:endpoint": {
"type": "string"
},
- "ai:apiversion": {
+ "ai:azureapiversion": {
"type": "string"
},
"ai:apitoken": {
@@ -75,6 +75,12 @@
},
"type": "array"
},
+ "ai:switchcompat": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
"waveai:cloud": {
"type": "boolean"
},