From ed39ada96950497ea7d10e4155d867cb47058aa3 Mon Sep 17 00:00:00 2001 From: Mark IJbema Date: Thu, 16 Oct 2025 15:13:19 +0200 Subject: [PATCH 1/3] move method so it is easier to reuse --- packages/types/src/index.ts | 1 + packages/types/src/kilocode-utils.ts | 17 +++++++++++++++++ src/shared/kilocode/token.ts | 16 +--------------- 3 files changed, 19 insertions(+), 15 deletions(-) create mode 100644 packages/types/src/kilocode-utils.ts diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index d369dcabcb8..2027fec4a4e 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -23,6 +23,7 @@ export * from "./tool.js" export * from "./type-fu.js" export * from "./vscode.js" export * from "./kilocode.js" // kilocode_change +export * from "./kilocode-utils.js" // kilocode_change export * from "./usage-tracker.js" // kilocode_change export * from "./providers/index.js" diff --git a/packages/types/src/kilocode-utils.ts b/packages/types/src/kilocode-utils.ts new file mode 100644 index 00000000000..56d8e751264 --- /dev/null +++ b/packages/types/src/kilocode-utils.ts @@ -0,0 +1,17 @@ +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/shared/kilocode/token.ts b/src/shared/kilocode/token.ts index 5b6856f8779..dd765836580 100644 --- a/src/shared/kilocode/token.ts +++ b/src/shared/kilocode/token.ts @@ -1,15 +1 @@ -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" -} +export { getKiloBaseUriFromToken } from "@roo-code/types" From c209d1e181fc6dfd29fdc0b7070acf555af9b42b Mon Sep 17 00:00:00 2001 From: Mark IJbema Date: Thu, 16 Oct 2025 15:26:24 +0200 Subject: [PATCH 2/3] remove proxy file --- src/api/providers/fetchers/modelCache.ts | 2 +- src/api/providers/kilocode-openrouter.ts | 2 +- src/api/providers/kilocode/getKilocodeDefaultModel.ts | 2 +- src/core/config/CustomModesManager.ts | 2 +- .../kilocode/webview/webviewMessageHandlerUtils.ts | 2 +- src/core/tools/editFileTool.ts | 2 +- src/core/webview/webviewMessageHandler.ts | 2 +- src/services/marketplace/RemoteConfigLoader.ts | 2 +- .../marketplace/__tests__/RemoteConfigLoader.spec.ts | 10 +++++++--- src/shared/kilocode/token.ts | 1 - .../components/kilocode/settings/KiloModelInfoView.tsx | 2 +- 11 files changed, 16 insertions(+), 13 deletions(-) delete mode 100644 src/shared/kilocode/token.ts 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 dd765836580..00000000000 --- a/src/shared/kilocode/token.ts +++ /dev/null @@ -1 +0,0 @@ -export { getKiloBaseUriFromToken } from "@roo-code/types" 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" From f29a5cddc69fe77998932ddac37ca21b3ec4f77a Mon Sep 17 00:00:00 2001 From: Mark IJbema Date: Thu, 16 Oct 2025 15:41:13 +0200 Subject: [PATCH 3/3] merge files --- packages/types/src/index.ts | 1 - packages/types/src/kilocode-utils.ts | 17 ----------------- packages/types/src/kilocode.ts | 18 ++++++++++++++++++ 3 files changed, 18 insertions(+), 18 deletions(-) delete mode 100644 packages/types/src/kilocode-utils.ts diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index 2027fec4a4e..d369dcabcb8 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -23,7 +23,6 @@ export * from "./tool.js" export * from "./type-fu.js" export * from "./vscode.js" export * from "./kilocode.js" // kilocode_change -export * from "./kilocode-utils.js" // kilocode_change export * from "./usage-tracker.js" // kilocode_change export * from "./providers/index.js" diff --git a/packages/types/src/kilocode-utils.ts b/packages/types/src/kilocode-utils.ts deleted file mode 100644 index 56d8e751264..00000000000 --- a/packages/types/src/kilocode-utils.ts +++ /dev/null @@ -1,17 +0,0 @@ -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/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" +}