From 10313ae3d84904ed7f1653d5bdb1cf7650120424 Mon Sep 17 00:00:00 2001 From: code-crusher Date: Sat, 20 Dec 2025 08:26:45 +0530 Subject: [PATCH 1/3] UI refactors + axon-code-2-preview model support --- apps/vscode-nightly/esbuild.mjs | 6 +- packages/cloud/src/utils.ts | 2 +- src/api/providers/constants.ts | 2 +- src/api/providers/kilocode-models.ts | 69 +++++------ src/extension.ts | 2 +- src/package.json | 2 +- .../__tests__/qdrant-client.spec.ts | 52 ++++----- .../code-index/vector-store/qdrant-client.ts | 4 +- .../src/components/chat/QueuedMessages.tsx | 4 +- .../chat/kilocode/AcceptRejectButtons.tsx | 109 +++++++++--------- .../ui/hooks/useOpenRouterModelProviders.ts | 69 +++++------ webview-ui/src/utils/prettyModelName.ts | 2 +- webview-ui/vite.config.ts | 4 +- 13 files changed, 162 insertions(+), 165 deletions(-) diff --git a/apps/vscode-nightly/esbuild.mjs b/apps/vscode-nightly/esbuild.mjs index 0e95fc2259..d10f37119d 100644 --- a/apps/vscode-nightly/esbuild.mjs +++ b/apps/vscode-nightly/esbuild.mjs @@ -33,9 +33,9 @@ async function main() { sourcesContent: false, platform: "node", define: { - "process.env.PKG_NAME": '"kilo-code-nightly"', + "process.env.PKG_NAME": '"axon-code-nightly"', "process.env.PKG_VERSION": `"${overrideJson.version}"`, - "process.env.PKG_OUTPUT_CHANNEL": '"Kilo-Code-Nightly"', + "process.env.PKG_OUTPUT_CHANNEL": '"Axon-Code-Nightly"', ...(gitSha ? { "process.env.PKG_SHA": `"${gitSha}"` } : {}), }, } @@ -88,7 +88,7 @@ async function main() { const generatedPackageJson = generatePackageJson({ packageJson, overrideJson, - substitution: ["kilo-code", "kilo-code-nightly"], + substitution: ["axon-code", "axon-code-nightly"], }) fs.writeFileSync(path.join(buildDir, "package.json"), JSON.stringify(generatedPackageJson, null, 2)) diff --git a/packages/cloud/src/utils.ts b/packages/cloud/src/utils.ts index 6326561c03..36e566f9e0 100644 --- a/packages/cloud/src/utils.ts +++ b/packages/cloud/src/utils.ts @@ -1,5 +1,5 @@ import type { ExtensionContext } from "vscode" export function getUserAgent(context?: ExtensionContext): string { - return `Kilo-Code ${context?.extension?.packageJSON?.version || "unknown"}` + return `Axon-Code ${context?.extension?.packageJSON?.version || "unknown"}` } diff --git a/src/api/providers/constants.ts b/src/api/providers/constants.ts index 04ab2704c0..c515bcc81d 100644 --- a/src/api/providers/constants.ts +++ b/src/api/providers/constants.ts @@ -6,5 +6,5 @@ export const DEFAULT_HEADERS = { "HTTP-Referer": getAppUrl(), "X-Title": "Axon Code", [X_KILOCODE_VERSION]: Package.version, - "User-Agent": `Kilo-Code/${Package.version}`, + "User-Agent": `Axon-Code/${Package.version}`, } diff --git a/src/api/providers/kilocode-models.ts b/src/api/providers/kilocode-models.ts index 9a27185f1f..e1a14a7278 100644 --- a/src/api/providers/kilocode-models.ts +++ b/src/api/providers/kilocode-models.ts @@ -96,40 +96,41 @@ export const KILO_CODE_MODELS: Record = { input_cache_writes: "0", }, }, - // "axon-code-exp": { - // id: "axon-code-exp", - // name: "Axon Code Exp", - // description: "Axon Code is super intelligent LLM model for coding tasks", - // input_modalities: ["text"], - // context_length: 256000, - // max_output_length: 32768, - // output_modalities: ["text"], - // supported_sampling_parameters: [ - // "temperature", - // "top_p", - // "top_k", - // "repetition_penalty", - // "frequency_penalty", - // "presence_penalty", - // "seed", - // "stop", - // ], - // supported_features: ["tools", "structured_outputs", "web_search"], - // openrouter: { - // slug: "matterai/axon", - // }, - // datacenters: [{ country_code: "US" }], - // created: 1750426201, - // owned_by: "matterai", - // pricing: { - // prompt: "0.000001", - // completion: "0.000004", - // image: "0", - // request: "0", - // input_cache_reads: "0", - // input_cache_writes: "0", - // }, - // }, + "axon-code-2-preview": { + id: "axon-code-2-preview", + name: "Axon Code 2 (Preview)", + description: + "Axon Code 2 is the next-generation of Axon Code for coding tasks, currently in experimental stage.", + input_modalities: ["text"], + context_length: 256000, + max_output_length: 32768, + output_modalities: ["text"], + supported_sampling_parameters: [ + "temperature", + "top_p", + "top_k", + "repetition_penalty", + "frequency_penalty", + "presence_penalty", + "seed", + "stop", + ], + supported_features: ["tools", "structured_outputs", "web_search"], + openrouter: { + slug: "matterai/axon", + }, + datacenters: [{ country_code: "US" }], + created: 1750426201, + owned_by: "matterai", + pricing: { + prompt: "0.000001", + completion: "0.000004", + image: "0", + request: "0", + input_cache_reads: "0", + input_cache_writes: "0", + }, + }, // "gemini-3-flash-preview": { // id: "gemini-3-flash-preview", // name: "Gemini 3 Flash Preview", diff --git a/src/extension.ts b/src/extension.ts index 11c929fd83..dbbc13b687 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -67,7 +67,7 @@ let userInfoHandler: ((data: { userInfo: CloudUserInfo }) => Promise) | un // Your extension is activated the very first time the command is executed. export async function activate(context: vscode.ExtensionContext) { extensionContext = context - outputChannel = vscode.window.createOutputChannel("Kilo-Code") + outputChannel = vscode.window.createOutputChannel("Axon-Code") context.subscriptions.push(outputChannel) outputChannel.appendLine(`${Package.name} extension activated - ${JSON.stringify(Package)}`) diff --git a/src/package.json b/src/package.json index d20dbad7dd..3558bb0466 100644 --- a/src/package.json +++ b/src/package.json @@ -3,7 +3,7 @@ "displayName": "%extension.displayName%", "description": "%extension.description%", "publisher": "matterai", - "version": "4.202.0", + "version": "4.204.0", "icon": "assets/icons/matterai-ic.png", "galleryBanner": { "color": "#FFFFFF", diff --git a/src/services/code-index/vector-store/__tests__/qdrant-client.spec.ts b/src/services/code-index/vector-store/__tests__/qdrant-client.spec.ts index bd74bb63b8..6ae01b9be3 100644 --- a/src/services/code-index/vector-store/__tests__/qdrant-client.spec.ts +++ b/src/services/code-index/vector-store/__tests__/qdrant-client.spec.ts @@ -79,7 +79,7 @@ describe("QdrantVectorStore", () => { port: 6333, apiKey: mockApiKey, headers: { - "User-Agent": "Kilo-Code", + "User-Agent": "Axon-Code", }, }) expect(createHash).toHaveBeenCalledWith("sha256") @@ -98,7 +98,7 @@ describe("QdrantVectorStore", () => { port: 6333, apiKey: undefined, headers: { - "User-Agent": "Kilo-Code", + "User-Agent": "Axon-Code", }, }) }) @@ -112,7 +112,7 @@ describe("QdrantVectorStore", () => { port: 6333, apiKey: undefined, headers: { - "User-Agent": "Kilo-Code", + "User-Agent": "Axon-Code", }, }) }) @@ -132,7 +132,7 @@ describe("QdrantVectorStore", () => { prefix: undefined, // No prefix for root path apiKey: undefined, headers: { - "User-Agent": "Kilo-Code", + "User-Agent": "Axon-Code", }, }) expect((vectorStore as any).qdrantUrl).toBe("https://qdrant.ashbyfam.com") @@ -147,7 +147,7 @@ describe("QdrantVectorStore", () => { prefix: undefined, // No prefix for root path apiKey: undefined, headers: { - "User-Agent": "Kilo-Code", + "User-Agent": "Axon-Code", }, }) expect((vectorStore as any).qdrantUrl).toBe("https://example.com:9000") @@ -166,7 +166,7 @@ describe("QdrantVectorStore", () => { prefix: "/api/v1", // Should have prefix apiKey: undefined, headers: { - "User-Agent": "Kilo-Code", + "User-Agent": "Axon-Code", }, }) expect((vectorStore as any).qdrantUrl).toBe("https://example.com/api/v1?key=value") @@ -183,7 +183,7 @@ describe("QdrantVectorStore", () => { prefix: undefined, // No prefix for root path apiKey: undefined, headers: { - "User-Agent": "Kilo-Code", + "User-Agent": "Axon-Code", }, }) expect((vectorStore as any).qdrantUrl).toBe("http://example.com") @@ -198,7 +198,7 @@ describe("QdrantVectorStore", () => { prefix: undefined, // No prefix for root path apiKey: undefined, headers: { - "User-Agent": "Kilo-Code", + "User-Agent": "Axon-Code", }, }) expect((vectorStore as any).qdrantUrl).toBe("http://localhost:8080") @@ -217,7 +217,7 @@ describe("QdrantVectorStore", () => { prefix: "/api/v1", // Should have prefix apiKey: undefined, headers: { - "User-Agent": "Kilo-Code", + "User-Agent": "Axon-Code", }, }) expect((vectorStore as any).qdrantUrl).toBe("http://example.com/api/v1?key=value") @@ -233,7 +233,7 @@ describe("QdrantVectorStore", () => { port: 80, apiKey: undefined, headers: { - "User-Agent": "Kilo-Code", + "User-Agent": "Axon-Code", }, }) expect((vectorStore as any).qdrantUrl).toBe("http://qdrant.example.com") @@ -247,7 +247,7 @@ describe("QdrantVectorStore", () => { port: 6333, apiKey: undefined, headers: { - "User-Agent": "Kilo-Code", + "User-Agent": "Axon-Code", }, }) expect((vectorStore as any).qdrantUrl).toBe("http://localhost:6333") @@ -261,7 +261,7 @@ describe("QdrantVectorStore", () => { port: 9000, apiKey: undefined, headers: { - "User-Agent": "Kilo-Code", + "User-Agent": "Axon-Code", }, }) expect((vectorStore as any).qdrantUrl).toBe("http://localhost:9000") @@ -277,7 +277,7 @@ describe("QdrantVectorStore", () => { port: 80, apiKey: undefined, headers: { - "User-Agent": "Kilo-Code", + "User-Agent": "Axon-Code", }, }) expect((vectorStore as any).qdrantUrl).toBe("http://192.168.1.100") @@ -291,7 +291,7 @@ describe("QdrantVectorStore", () => { port: 6333, apiKey: undefined, headers: { - "User-Agent": "Kilo-Code", + "User-Agent": "Axon-Code", }, }) expect((vectorStore as any).qdrantUrl).toBe("http://192.168.1.100:6333") @@ -307,7 +307,7 @@ describe("QdrantVectorStore", () => { port: 6333, apiKey: undefined, headers: { - "User-Agent": "Kilo-Code", + "User-Agent": "Axon-Code", }, }) expect((vectorStore as any).qdrantUrl).toBe("http://localhost:6333") @@ -321,7 +321,7 @@ describe("QdrantVectorStore", () => { port: 6333, apiKey: undefined, headers: { - "User-Agent": "Kilo-Code", + "User-Agent": "Axon-Code", }, }) expect((vectorStore as any).qdrantUrl).toBe("http://localhost:6333") @@ -335,7 +335,7 @@ describe("QdrantVectorStore", () => { port: 6333, apiKey: undefined, headers: { - "User-Agent": "Kilo-Code", + "User-Agent": "Axon-Code", }, }) expect((vectorStore as any).qdrantUrl).toBe("http://localhost:6333") @@ -351,7 +351,7 @@ describe("QdrantVectorStore", () => { port: 80, apiKey: undefined, headers: { - "User-Agent": "Kilo-Code", + "User-Agent": "Axon-Code", }, }) expect((vectorStore as any).qdrantUrl).toBe("http://invalid-url-format") @@ -373,7 +373,7 @@ describe("QdrantVectorStore", () => { prefix: "/some/path", apiKey: undefined, headers: { - "User-Agent": "Kilo-Code", + "User-Agent": "Axon-Code", }, }) expect((vectorStoreWithPrefix as any).qdrantUrl).toBe("http://localhost:6333/some/path") @@ -392,7 +392,7 @@ describe("QdrantVectorStore", () => { prefix: undefined, apiKey: undefined, headers: { - "User-Agent": "Kilo-Code", + "User-Agent": "Axon-Code", }, }) expect((vectorStoreWithoutPrefix as any).qdrantUrl).toBe("http://localhost:6333/") @@ -411,7 +411,7 @@ describe("QdrantVectorStore", () => { prefix: "/api", apiKey: undefined, headers: { - "User-Agent": "Kilo-Code", + "User-Agent": "Axon-Code", }, }) expect((vectorStoreWithHttpsPrefix as any).qdrantUrl).toBe("https://qdrant.ashbyfam.com/api") @@ -430,7 +430,7 @@ describe("QdrantVectorStore", () => { prefix: "/api", // Trailing slash should be removed apiKey: undefined, headers: { - "User-Agent": "Kilo-Code", + "User-Agent": "Axon-Code", }, }) expect((vectorStoreWithTrailingSlash as any).qdrantUrl).toBe("http://localhost:6333/api/") @@ -449,7 +449,7 @@ describe("QdrantVectorStore", () => { prefix: "/api", // All trailing slashes should be removed apiKey: undefined, headers: { - "User-Agent": "Kilo-Code", + "User-Agent": "Axon-Code", }, }) expect((vectorStoreWithMultipleTrailingSlashes as any).qdrantUrl).toBe("http://localhost:6333/api///") @@ -468,7 +468,7 @@ describe("QdrantVectorStore", () => { prefix: "/api/v1/qdrant", apiKey: undefined, headers: { - "User-Agent": "Kilo-Code", + "User-Agent": "Axon-Code", }, }) expect((vectorStoreWithMultiSegment as any).qdrantUrl).toBe("http://localhost:6333/api/v1/qdrant") @@ -484,7 +484,7 @@ describe("QdrantVectorStore", () => { prefix: "/ollama/api/v1", // Trailing slash removed, query/fragment ignored apiKey: undefined, headers: { - "User-Agent": "Kilo-Code", + "User-Agent": "Axon-Code", }, }) expect((vectorStoreComplex as any).qdrantUrl).toBe(complexUrl) @@ -503,7 +503,7 @@ describe("QdrantVectorStore", () => { prefix: "/api/path", // Query params and fragment should be ignored apiKey: undefined, headers: { - "User-Agent": "Kilo-Code", + "User-Agent": "Axon-Code", }, }) expect((vectorStoreWithQueryParams as any).qdrantUrl).toBe( diff --git a/src/services/code-index/vector-store/qdrant-client.ts b/src/services/code-index/vector-store/qdrant-client.ts index e561c71ee6..c586719aca 100644 --- a/src/services/code-index/vector-store/qdrant-client.ts +++ b/src/services/code-index/vector-store/qdrant-client.ts @@ -62,7 +62,7 @@ export class QdrantVectorStore implements IVectorStore { prefix: urlObj.pathname === "/" ? undefined : urlObj.pathname.replace(/\/+$/, ""), apiKey, headers: { - "User-Agent": "Kilo-Code", + "User-Agent": "Axon-Code", }, }) } catch (urlError) { @@ -72,7 +72,7 @@ export class QdrantVectorStore implements IVectorStore { url: parsedUrl, apiKey, headers: { - "User-Agent": "Kilo-Code", + "User-Agent": "Axon-Code", }, }) } diff --git a/webview-ui/src/components/chat/QueuedMessages.tsx b/webview-ui/src/components/chat/QueuedMessages.tsx index 223bd1b020..5c17234e90 100644 --- a/webview-ui/src/components/chat/QueuedMessages.tsx +++ b/webview-ui/src/components/chat/QueuedMessages.tsx @@ -50,7 +50,7 @@ export const QueuedMessages = ({ queue, onRemove, onUpdate }: QueuedMessagesProp
-
+
{editState.isEditing ? (