Skip to content

Commit 5a6874e

Browse files
committed
Progress
1 parent 9619796 commit 5a6874e

File tree

4 files changed

+24
-37
lines changed

4 files changed

+24
-37
lines changed

src/api/providers/pearai.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,16 @@
11
import { OpenAiHandler } from "./openai"
2-
import { ApiHandlerOptions } from "../../shared/api"
2+
import { ApiHandlerOptions, PEARAI_URL } from "../../shared/api"
33

44
export class PearAiHandler extends OpenAiHandler {
55
constructor(options: ApiHandlerOptions) {
66
if (!options.pearaiApiKey) {
7-
throw new Error("PearAI API key is required. Please provide it in the settings.")
7+
throw new Error("PearAI API key not found. Please login to PearAI.")
88
}
99
super({
1010
...options,
1111
// Map PearAI specific options to OpenAI options for compatibility
1212
openAiApiKey: options.pearaiApiKey,
13-
openAiBaseUrl:
14-
options.pearaiBaseUrl ??
15-
"https://stingray-app-gb2an.ondigitalocean.app/pearai-server-api2/integrations/cline",
13+
openAiBaseUrl: PEARAI_URL,
1614
openAiStreamingEnabled: true,
1715
})
1816
}

src/core/webview/ClineProvider.ts

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import { getTheme } from "../../integrations/theme/getTheme"
1414
import { getDiffStrategy } from "../diff/DiffStrategy"
1515
import WorkspaceTracker from "../../integrations/workspace/WorkspaceTracker"
1616
import { McpHub } from "../../services/mcp/McpHub"
17-
import { ApiConfiguration, ApiProvider, ModelInfo } from "../../shared/api"
17+
import { ApiConfiguration, ApiProvider, ModelInfo, PEARAI_URL } from "../../shared/api"
1818
import { findLast } from "../../shared/array"
1919
import { ApiConfigMeta, ExtensionMessage } from "../../shared/ExtensionMessage"
2020
import { HistoryItem } from "../../shared/HistoryItem"
@@ -45,6 +45,9 @@ import { CustomSupportPrompts, supportPrompt } from "../../shared/support-prompt
4545

4646
import { ACTION_NAMES } from "../CodeActionProvider"
4747

48+
// Todo: Remove
49+
const PEARAI_TOKEN = "temp"
50+
4851
/*
4952
https://github.com/microsoft/vscode-webview-ui-toolkit-samples/blob/main/default/weather-webview/src/providers/WeatherViewProvider.ts
5053
@@ -126,7 +129,9 @@ type GlobalStateKey =
126129
| "enhancementApiConfigId"
127130
| "experiments" // Map of experiment IDs to their enabled state
128131
| "autoApprovalEnabled"
129-
| "customModes" // Array of custom modes
132+
| "customModes"
133+
| "pearai-token"
134+
| "pearai-refresh" // Array of custom modes
130135

131136
export const GlobalFileNames = {
132137
apiConversationHistory: "api_conversation_history.json",
@@ -1410,10 +1415,10 @@ export class ClineProvider implements vscode.WebviewViewProvider {
14101415
await this.updateGlobalState("openRouterUseMiddleOutTransform", openRouterUseMiddleOutTransform)
14111416
await this.updateGlobalState("vsCodeLmModelSelector", vsCodeLmModelSelector)
14121417
await this.storeSecret("mistralApiKey", mistralApiKey)
1418+
await this.updateGlobalState("pearai-token", PEARAI_TOKEN)
1419+
await this.updateGlobalState("pearaiBaseUrl", PEARAI_URL)
14131420
await this.updateGlobalState("pearaiModelId", pearaiModelId)
14141421
await this.updateGlobalState("pearaiModelInfo", pearaiModelInfo)
1415-
await this.storeSecret("pearaiApiKey", pearaiApiKey)
1416-
await this.updateGlobalState("pearaiBaseUrl", pearaiBaseUrl)
14171422
if (this.cline) {
14181423
this.cline.api = buildApiHandler(apiConfiguration)
14191424
}
@@ -2033,6 +2038,7 @@ export class ClineProvider implements vscode.WebviewViewProvider {
20332038
deepSeekApiKey,
20342039
mistralApiKey,
20352040
pearaiApiKey,
2041+
pearaiRefreshKey,
20362042
pearaiBaseUrl,
20372043
pearaiModelId,
20382044
pearaiModelInfo,
@@ -2106,7 +2112,8 @@ export class ClineProvider implements vscode.WebviewViewProvider {
21062112
this.getSecret("openAiNativeApiKey") as Promise<string | undefined>,
21072113
this.getSecret("deepSeekApiKey") as Promise<string | undefined>,
21082114
this.getSecret("mistralApiKey") as Promise<string | undefined>,
2109-
this.getSecret("pearaiApiKey") as Promise<string | undefined>,
2115+
this.getGlobalState("pearai-token") as Promise<string | undefined>,
2116+
this.getGlobalState("pearai-refresh") as Promise<string | undefined>,
21102117
this.getGlobalState("pearaiBaseUrl") as Promise<string | undefined>,
21112118
this.getGlobalState("pearaiModelId") as Promise<string | undefined>,
21122119
this.getGlobalState("pearaiModelInfo") as Promise<ModelInfo | undefined>,

src/shared/api.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -598,3 +598,9 @@ export const mistralModels = {
598598
outputPrice: 0.9,
599599
},
600600
} as const satisfies Record<string, ModelInfo>
601+
602+
// CHANGE AS NEEDED FOR TESTING
603+
// PROD:
604+
// export const PEARAI_URL = "https://stingray-app-gb2an.ondigitalocean.app/pearai-server-api2/integrations/cline"
605+
// DEV:
606+
export const PEARAI_URL = "http://localhost:8000/integrations/cline"

webview-ui/src/components/settings/ApiOptions.tsx

Lines changed: 3 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import {
3232
openRouterDefaultModelInfo,
3333
vertexDefaultModelId,
3434
vertexModels,
35+
PEARAI_URL,
3536
} from "../../../../src/shared/api"
3637
import { ExtensionMessage } from "../../../../src/shared/ExtensionMessage"
3738
import { useExtensionState } from "../../context/ExtensionStateContext"
@@ -45,8 +46,6 @@ import OpenRouterModelPicker, {
4546
import OpenAiModelPicker from "./OpenAiModelPicker"
4647
import GlamaModelPicker from "./GlamaModelPicker"
4748

48-
const PEARAI_DEFAULT_URL = "https://stingray-app-gb2an.ondigitalocean.app/pearai-server-api2/integrations/cline"
49-
5049
interface ApiOptionsProps {
5150
apiErrorMessage?: string
5251
modelIdErrorMessage?: string
@@ -60,7 +59,6 @@ const ApiOptions = ({ apiErrorMessage, modelIdErrorMessage }: ApiOptionsProps) =
6059
const [anthropicBaseUrlSelected, setAnthropicBaseUrlSelected] = useState(!!apiConfiguration?.anthropicBaseUrl)
6160
const [azureApiVersionSelected, setAzureApiVersionSelected] = useState(!!apiConfiguration?.azureApiVersion)
6261
const [openRouterBaseUrlSelected, setOpenRouterBaseUrlSelected] = useState(!!apiConfiguration?.openRouterBaseUrl)
63-
const [pearaiBaseUrlSelected, setPearaiBaseUrlSelected] = useState(!!apiConfiguration?.pearaiBaseUrl)
6462
const [isDescriptionExpanded, setIsDescriptionExpanded] = useState(false)
6563

6664
const { selectedProvider, selectedModelId, selectedModelInfo } = useMemo(() => {
@@ -171,34 +169,12 @@ const ApiOptions = ({ apiErrorMessage, modelIdErrorMessage }: ApiOptionsProps) =
171169
placeholder="Enter API Key...">
172170
<span style={{ fontWeight: 500 }}>PearAI API Key</span>
173171
</VSCodeTextField>
174-
<VSCodeTextField
175-
value={apiConfiguration?.pearaiBaseUrl || PEARAI_DEFAULT_URL}
176-
style={{ width: "100%" }}
177-
type="url"
178-
onInput={handleInputChange("pearaiBaseUrl")}
179-
placeholder={PEARAI_DEFAULT_URL}>
180-
<span style={{ fontWeight: 500 }}>Base URL</span>
181-
</VSCodeTextField>
182-
{apiConfiguration?.pearaiBaseUrl && apiConfiguration.pearaiBaseUrl !== PEARAI_DEFAULT_URL && (
183-
<VSCodeButton
184-
onClick={() => {
185-
handleInputChange("pearaiBaseUrl")({
186-
target: {
187-
value: PEARAI_DEFAULT_URL,
188-
},
189-
})
190-
}}>
191-
Reset to default URL
192-
</VSCodeButton>
193-
)}
194172
<p
195173
style={{
196174
fontSize: "12px",
197175
marginTop: "5px",
198176
color: "var(--vscode-descriptionForeground)",
199-
}}>
200-
This key is stored locally and only used to make API requests from this extension.
201-
</p>
177+
}}></p>
202178
</div>
203179
)}
204180

@@ -1607,7 +1583,7 @@ export function normalizeApiConfiguration(apiConfiguration?: ApiConfiguration) {
16071583
case "pearai":
16081584
return {
16091585
selectedProvider: provider,
1610-
selectedModelId: apiConfiguration?.pearaiModelId || "",
1586+
selectedModelId: apiConfiguration?.pearaiModelId || "pearai_model",
16111587
selectedModelInfo: apiConfiguration?.pearaiModelInfo || openAiModelInfoSaneDefaults,
16121588
}
16131589
default:

0 commit comments

Comments
 (0)