diff --git a/packages/types/src/kilocode.ts b/packages/types/src/kilocode.ts index 75757397f2d..7da68614c77 100644 --- a/packages/types/src/kilocode.ts +++ b/packages/types/src/kilocode.ts @@ -34,3 +34,21 @@ export const fastApplyModelSchema = z.enum([ ]) export type FastApplyModel = z.infer + +export function getKiloBaseUriFromToken(kilocodeToken?: string) { + if (kilocodeToken) { + try { + const payload_string = kilocodeToken.split(".")[1] + if (!payload_string) return "https://api.kilocode.ai" + + const payload_json = + typeof atob !== "undefined" ? atob(payload_string) : Buffer.from(payload_string, "base64").toString() + const payload = JSON.parse(payload_json) + //note: this is UNTRUSTED, so we need to make sure we're OK with this being manipulated by an attacker; e.g. we should not read uri's from the JWT directly. + if (payload.env === "development") return "http://localhost:3000" + } catch (_error) { + console.warn("Failed to get base URL from Kilo Code token") + } + } + return "https://api.kilocode.ai" +} diff --git a/src/api/providers/fetchers/modelCache.ts b/src/api/providers/fetchers/modelCache.ts index 3f1553fb7fa..5ec5ea14f39 100644 --- a/src/api/providers/fetchers/modelCache.ts +++ b/src/api/providers/fetchers/modelCache.ts @@ -19,7 +19,7 @@ import { getGlamaModels } from "./glama" import { getUnboundModels } from "./unbound" import { getLiteLLMModels } from "./litellm" import { GetModelsOptions } from "../../../shared/api" -import { getKiloBaseUriFromToken } from "../../../shared/kilocode/token" +import { getKiloBaseUriFromToken } from "@roo-code/types" import { getOllamaModels } from "./ollama" import { getLMStudioModels } from "./lmstudio" import { getIOIntelligenceModels } from "./io-intelligence" diff --git a/src/api/providers/kilocode-openrouter.ts b/src/api/providers/kilocode-openrouter.ts index c7f6f96190a..fb6b2c8cc60 100644 --- a/src/api/providers/kilocode-openrouter.ts +++ b/src/api/providers/kilocode-openrouter.ts @@ -3,7 +3,7 @@ import { CompletionUsage, OpenRouterHandler } from "./openrouter" import { getModelParams } from "../transform/model-params" import { getModels } from "./fetchers/modelCache" import { DEEP_SEEK_DEFAULT_TEMPERATURE, openRouterDefaultModelId, openRouterDefaultModelInfo } from "@roo-code/types" -import { getKiloBaseUriFromToken } from "../../shared/kilocode/token" +import { getKiloBaseUriFromToken } from "@roo-code/types" import { ApiHandlerCreateMessageMetadata } from ".." import { getModelEndpoints } from "./fetchers/modelEndpointCache" import { getKilocodeDefaultModel } from "./kilocode/getKilocodeDefaultModel" diff --git a/src/api/providers/kilocode/getKilocodeDefaultModel.ts b/src/api/providers/kilocode/getKilocodeDefaultModel.ts index ba1566c36de..aee20c7161d 100644 --- a/src/api/providers/kilocode/getKilocodeDefaultModel.ts +++ b/src/api/providers/kilocode/getKilocodeDefaultModel.ts @@ -1,5 +1,5 @@ import { openRouterDefaultModelId, type ProviderSettings } from "@roo-code/types" -import { getKiloBaseUriFromToken } from "../../../shared/kilocode/token" +import { getKiloBaseUriFromToken } from "@roo-code/types" import { TelemetryService } from "@roo-code/telemetry" import { z } from "zod" import { fetchWithTimeout } from "./fetchWithTimeout" diff --git a/src/core/config/CustomModesManager.ts b/src/core/config/CustomModesManager.ts index fdb8a84d9f3..671a3671fd5 100644 --- a/src/core/config/CustomModesManager.ts +++ b/src/core/config/CustomModesManager.ts @@ -17,7 +17,7 @@ import { GlobalFileNames } from "../../shared/globalFileNames" import { ensureSettingsDirectoryExists } from "../../utils/globalContext" import { t } from "../../i18n" // kilocode_change start -import { getKiloBaseUriFromToken } from "../../shared/kilocode/token" +import { getKiloBaseUriFromToken } from "@roo-code/types" import { X_KILOCODE_ORGANIZATIONID, X_KILOCODE_TESTER } from "../../shared/kilocode/headers" // kilocode_change end diff --git a/src/core/kilocode/webview/webviewMessageHandlerUtils.ts b/src/core/kilocode/webview/webviewMessageHandlerUtils.ts index c955afe5da1..2f9423e56a0 100644 --- a/src/core/kilocode/webview/webviewMessageHandlerUtils.ts +++ b/src/core/kilocode/webview/webviewMessageHandlerUtils.ts @@ -5,7 +5,7 @@ import { t } from "../../../i18n" import { WebviewMessage } from "../../../shared/WebviewMessage" import { Task } from "../../task/Task" import axios from "axios" -import { getKiloBaseUriFromToken } from "../../../shared/kilocode/token" +import { getKiloBaseUriFromToken } from "@roo-code/types" // Helper function to delete messages for resending const deleteMessagesForResend = async (cline: Task, originalMessageIndex: number, originalMessageTs: number) => { diff --git a/src/core/tools/editFileTool.ts b/src/core/tools/editFileTool.ts index 0b10e85f1eb..28ec7a17a0f 100644 --- a/src/core/tools/editFileTool.ts +++ b/src/core/tools/editFileTool.ts @@ -9,7 +9,7 @@ import { formatResponse } from "../prompts/responses" import { ToolUse, AskApproval, HandleError, PushToolResult, RemoveClosingTag } from "../../shared/tools" import { fileExistsAtPath } from "../../utils/fs" import { getReadablePath } from "../../utils/path" -import { getKiloBaseUriFromToken } from "../../shared/kilocode/token" +import { getKiloBaseUriFromToken } from "@roo-code/types" import { DEFAULT_HEADERS } from "../../api/providers/constants" import { TelemetryService } from "@roo-code/telemetry" import { type ClineProviderState } from "../webview/ClineProvider" diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts index a34ab9c929b..3845816e748 100644 --- a/src/core/webview/webviewMessageHandler.ts +++ b/src/core/webview/webviewMessageHandler.ts @@ -6,7 +6,7 @@ import pWaitFor from "p-wait-for" import * as vscode from "vscode" // kilocode_change start import axios from "axios" -import { getKiloBaseUriFromToken } from "../../shared/kilocode/token" +import { getKiloBaseUriFromToken } from "@roo-code/types" import { ProfileData, SeeNewChangesPayload, diff --git a/src/services/marketplace/RemoteConfigLoader.ts b/src/services/marketplace/RemoteConfigLoader.ts index 8d684731e49..41f8026c0eb 100644 --- a/src/services/marketplace/RemoteConfigLoader.ts +++ b/src/services/marketplace/RemoteConfigLoader.ts @@ -1,7 +1,7 @@ import axios from "axios" import * as yaml from "yaml" import { z } from "zod" -import { getKiloBaseUriFromToken } from "../../shared/kilocode/token" // kilocode_change +import { getKiloBaseUriFromToken } from "@roo-code/types" // kilocode_change import { type MarketplaceItem, type MarketplaceItemType, diff --git a/src/services/marketplace/__tests__/RemoteConfigLoader.spec.ts b/src/services/marketplace/__tests__/RemoteConfigLoader.spec.ts index cca5385c4c7..e47fdd1be42 100644 --- a/src/services/marketplace/__tests__/RemoteConfigLoader.spec.ts +++ b/src/services/marketplace/__tests__/RemoteConfigLoader.spec.ts @@ -14,9 +14,13 @@ vi.mock("@roo-code/cloud", () => ({ })) // kilocode_change start -vi.mock("../../../shared/kilocode/token", () => ({ - getKiloBaseUriFromToken: () => "https://test.api.com", -})) +vi.mock("@roo-code/types", async (importOriginal) => { + const actual = await importOriginal() + return { + ...actual, + getKiloBaseUriFromToken: () => "https://test.api.com", + } +}) // kilocode_change end describe("RemoteConfigLoader", () => { diff --git a/src/shared/kilocode/token.ts b/src/shared/kilocode/token.ts deleted file mode 100644 index 5b6856f8779..00000000000 --- a/src/shared/kilocode/token.ts +++ /dev/null @@ -1,15 +0,0 @@ -export function getKiloBaseUriFromToken(kilocodeToken?: string) { - if (kilocodeToken) { - try { - const payload_string = kilocodeToken.split(".")[1] - const payload_json = - typeof atob !== "undefined" ? atob(payload_string) : Buffer.from(payload_string, "base64").toString() - const payload = JSON.parse(payload_json) - //note: this is UNTRUSTED, so we need to make sure we're OK with this being manipulated by an attacker; e.g. we should not read uri's from the JWT directly. - if (payload.env === "development") return "http://localhost:3000" - } catch (_error) { - console.warn("Failed to get base URL from Kilo Code token") - } - } - return "https://api.kilocode.ai" -} diff --git a/webview-ui/src/components/kilocode/settings/KiloModelInfoView.tsx b/webview-ui/src/components/kilocode/settings/KiloModelInfoView.tsx index 960db4c154e..5fd63e068a9 100644 --- a/webview-ui/src/components/kilocode/settings/KiloModelInfoView.tsx +++ b/webview-ui/src/components/kilocode/settings/KiloModelInfoView.tsx @@ -5,7 +5,7 @@ import { ModelInfoSupportsItem } from "@/components/settings/ModelInfoView" import { Collapsible, CollapsibleContent, CollapsibleTrigger, StandardTooltip } from "@/components/ui" import { FreeModelsInfoView } from "../FreeModelsLink" import { useQuery } from "@tanstack/react-query" -import { getKiloBaseUriFromToken } from "@roo/kilocode/token" +import { getKiloBaseUriFromToken } from "@roo-code/types" import { telemetryClient } from "@/utils/TelemetryClient" import { useModelProviders } from "@/components/ui/hooks/useSelectedModel"