diff --git a/.changeset/smooth-poems-beam.md b/.changeset/smooth-poems-beam.md new file mode 100644 index 0000000000..3992a6565c --- /dev/null +++ b/.changeset/smooth-poems-beam.md @@ -0,0 +1,5 @@ +--- +"claude-dev": minor +--- + +Update the extension import paths to use aliasing diff --git a/esbuild.js b/esbuild.js index d93e871278..8e2d44cc93 100644 --- a/esbuild.js +++ b/esbuild.js @@ -26,11 +26,41 @@ const aliasResolverPlugin = { const aliasRegex = new RegExp(`^${alias}($|/.*)`) build.onResolve({ filter: aliasRegex }, (args) => { const importPath = args.path.replace(alias, aliasPath) + + // First, check if the path exists as is + if (fs.existsSync(importPath)) { + const stats = fs.statSync(importPath) + if (stats.isDirectory()) { + // If it's a directory, try to find index files + const extensions = [".ts", ".tsx", ".js", ".jsx"] + for (const ext of extensions) { + const indexFile = path.join(importPath, `index${ext}`) + if (fs.existsSync(indexFile)) { + return { path: indexFile } + } + } + } else { + // It's a file that exists, so return it + return { path: importPath } + } + } + + // If the path doesn't exist, try appending extensions + const extensions = [".ts", ".tsx", ".js", ".jsx"] + for (const ext of extensions) { + const pathWithExtension = `${importPath}${ext}` + if (fs.existsSync(pathWithExtension)) { + return { path: pathWithExtension } + } + } + + // If nothing worked, return the original path and let esbuild handle the error return { path: importPath } }) }) }, } + const esbuildProblemMatcherPlugin = { name: "esbuild-problem-matcher", diff --git a/package-lock.json b/package-lock.json index c6c994a62f..6e24a1cf85 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "claude-dev", - "version": "3.12.3", + "version": "3.13.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "claude-dev", - "version": "3.12.3", + "version": "3.13.1", "license": "Apache-2.0", "dependencies": { "@anthropic-ai/bedrock-sdk": "^0.12.4", @@ -95,6 +95,7 @@ "sinon": "^19.0.2", "ts-node": "^10.9.2", "ts-proto": "^2.6.1", + "tsconfig-paths": "^4.2.0", "typescript": "^5.4.5" }, "engines": { @@ -13542,6 +13543,19 @@ "dev": true, "license": "MIT" }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", @@ -17108,6 +17122,21 @@ "@bufbuild/protobuf": "^2.0.0" } }, + "node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", diff --git a/package.json b/package.json index 085a05ecd2..cbfd875aa1 100644 --- a/package.json +++ b/package.json @@ -350,6 +350,7 @@ "sinon": "^19.0.2", "ts-node": "^10.9.2", "ts-proto": "^2.6.1", + "tsconfig-paths": "^4.2.0", "typescript": "^5.4.5" }, "dependencies": { diff --git a/src/api/providers/__tests__/ollama.test.ts b/src/api/providers/__tests__/ollama.test.ts index fa44a0fcc3..2755ac5d3b 100644 --- a/src/api/providers/__tests__/ollama.test.ts +++ b/src/api/providers/__tests__/ollama.test.ts @@ -3,7 +3,7 @@ import "should" import sinon from "sinon" import { Anthropic } from "@anthropic-ai/sdk" import { OllamaHandler } from "../ollama" -import { ApiHandlerOptions } from "../../../shared/api" +import { ApiHandlerOptions } from "@shared/api" import axios from "axios" describe("OllamaHandler", () => { diff --git a/src/api/providers/anthropic.ts b/src/api/providers/anthropic.ts index 2c44d560c3..e46465a94b 100644 --- a/src/api/providers/anthropic.ts +++ b/src/api/providers/anthropic.ts @@ -1,7 +1,7 @@ import { Anthropic } from "@anthropic-ai/sdk" import { Stream as AnthropicStream } from "@anthropic-ai/sdk/streaming" import { withRetry } from "../retry" -import { anthropicDefaultModelId, AnthropicModelId, anthropicModels, ApiHandlerOptions, ModelInfo } from "../../shared/api" +import { anthropicDefaultModelId, AnthropicModelId, anthropicModels, ApiHandlerOptions, ModelInfo } from "@shared/api" import { ApiHandler } from "../index" import { ApiStream } from "../transform/stream" diff --git a/src/api/providers/asksage.ts b/src/api/providers/asksage.ts index 4e70151e18..0c512faeb8 100644 --- a/src/api/providers/asksage.ts +++ b/src/api/providers/asksage.ts @@ -7,7 +7,7 @@ import { askSageModels, askSageDefaultModelId, askSageDefaultURL, -} from "../../shared/api" +} from "@shared/api" import { ApiStream } from "../transform/stream" type AskSageRequest = { diff --git a/src/api/providers/bedrock.ts b/src/api/providers/bedrock.ts index cc316eefc2..df5a1dd3ab 100644 --- a/src/api/providers/bedrock.ts +++ b/src/api/providers/bedrock.ts @@ -3,7 +3,7 @@ import { Anthropic } from "@anthropic-ai/sdk" import { withRetry } from "../retry" import { ApiHandler } from "../" import { convertToR1Format } from "../transform/r1-format" -import { ApiHandlerOptions, bedrockDefaultModelId, BedrockModelId, bedrockModels, ModelInfo } from "../../shared/api" +import { ApiHandlerOptions, bedrockDefaultModelId, BedrockModelId, bedrockModels, ModelInfo } from "@shared/api" import { calculateApiCostOpenAI } from "../../utils/cost" import { ApiStream } from "../transform/stream" import { fromNodeProviderChain } from "@aws-sdk/credential-providers" diff --git a/src/api/providers/cline.ts b/src/api/providers/cline.ts index 23064eb1ce..22fc454351 100644 --- a/src/api/providers/cline.ts +++ b/src/api/providers/cline.ts @@ -1,7 +1,7 @@ import { Anthropic } from "@anthropic-ai/sdk" import OpenAI from "openai" import { ApiHandler } from "../" -import { ApiHandlerOptions, ModelInfo, openRouterDefaultModelId, openRouterDefaultModelInfo } from "../../shared/api" +import { ApiHandlerOptions, ModelInfo, openRouterDefaultModelId, openRouterDefaultModelInfo } from "@shared/api" import { createOpenRouterStream } from "../transform/openrouter-stream" import { ApiStream, ApiStreamUsageChunk } from "../transform/stream" import axios from "axios" diff --git a/src/api/providers/deepseek.ts b/src/api/providers/deepseek.ts index efc863b4c6..33e22ca90b 100644 --- a/src/api/providers/deepseek.ts +++ b/src/api/providers/deepseek.ts @@ -2,7 +2,7 @@ import { Anthropic } from "@anthropic-ai/sdk" import OpenAI from "openai" import { withRetry } from "../retry" import { ApiHandler } from "../" -import { ApiHandlerOptions, DeepSeekModelId, ModelInfo, deepSeekDefaultModelId, deepSeekModels } from "../../shared/api" +import { ApiHandlerOptions, DeepSeekModelId, ModelInfo, deepSeekDefaultModelId, deepSeekModels } from "@shared/api" import { calculateApiCostOpenAI } from "../../utils/cost" import { convertToOpenAiMessages } from "../transform/openai-format" import { ApiStream } from "../transform/stream" diff --git a/src/api/providers/doubao.ts b/src/api/providers/doubao.ts index c3498f2754..0c54e580d9 100644 --- a/src/api/providers/doubao.ts +++ b/src/api/providers/doubao.ts @@ -1,5 +1,5 @@ import { ApiHandler } from ".." -import { ApiHandlerOptions, doubaoDefaultModelId, DoubaoModelId, doubaoModels, ModelInfo } from "../../shared/api" +import { ApiHandlerOptions, doubaoDefaultModelId, DoubaoModelId, doubaoModels, ModelInfo } from "@shared/api" import { Anthropic } from "@anthropic-ai/sdk" import OpenAI from "openai" import { convertToOpenAiMessages } from "../transform/openai-format" diff --git a/src/api/providers/gemini.ts b/src/api/providers/gemini.ts index e391c9f845..21dad02a0b 100644 --- a/src/api/providers/gemini.ts +++ b/src/api/providers/gemini.ts @@ -2,7 +2,7 @@ import { Anthropic } from "@anthropic-ai/sdk" import { GoogleGenerativeAI } from "@google/generative-ai" import { withRetry } from "../retry" import { ApiHandler } from "../" -import { ApiHandlerOptions, geminiDefaultModelId, GeminiModelId, geminiModels, ModelInfo } from "../../shared/api" +import { ApiHandlerOptions, geminiDefaultModelId, GeminiModelId, geminiModels, ModelInfo } from "@shared/api" import { convertAnthropicMessageToGemini } from "../transform/gemini-format" import { ApiStream } from "../transform/stream" diff --git a/src/api/providers/litellm.ts b/src/api/providers/litellm.ts index 60d243ce94..239a2c5351 100644 --- a/src/api/providers/litellm.ts +++ b/src/api/providers/litellm.ts @@ -1,6 +1,6 @@ import { Anthropic } from "@anthropic-ai/sdk" import OpenAI from "openai" -import { ApiHandlerOptions, liteLlmDefaultModelId, liteLlmModelInfoSaneDefaults } from "../../shared/api" +import { ApiHandlerOptions, liteLlmDefaultModelId, liteLlmModelInfoSaneDefaults } from "@shared/api" import { ApiHandler } from ".." import { ApiStream } from "../transform/stream" import { convertToOpenAiMessages } from "../transform/openai-format" diff --git a/src/api/providers/lmstudio.ts b/src/api/providers/lmstudio.ts index 868ef7da13..db0aa39bab 100644 --- a/src/api/providers/lmstudio.ts +++ b/src/api/providers/lmstudio.ts @@ -1,7 +1,7 @@ import { Anthropic } from "@anthropic-ai/sdk" import OpenAI from "openai" import { ApiHandler } from "../" -import { ApiHandlerOptions, ModelInfo, openAiModelInfoSaneDefaults } from "../../shared/api" +import { ApiHandlerOptions, ModelInfo, openAiModelInfoSaneDefaults } from "@shared/api" import { convertToOpenAiMessages } from "../transform/openai-format" import { ApiStream } from "../transform/stream" diff --git a/src/api/providers/mistral.ts b/src/api/providers/mistral.ts index 4be68e2e5e..9bcd8c0674 100644 --- a/src/api/providers/mistral.ts +++ b/src/api/providers/mistral.ts @@ -2,16 +2,7 @@ import { Anthropic } from "@anthropic-ai/sdk" import { Mistral } from "@mistralai/mistralai" import { withRetry } from "../retry" import { ApiHandler } from "../" -import { - ApiHandlerOptions, - mistralDefaultModelId, - MistralModelId, - mistralModels, - ModelInfo, - openAiNativeDefaultModelId, - OpenAiNativeModelId, - openAiNativeModels, -} from "../../shared/api" +import { ApiHandlerOptions, mistralDefaultModelId, MistralModelId, mistralModels, ModelInfo } from "@shared/api" import { convertToMistralMessages } from "../transform/mistral-format" import { ApiStream } from "../transform/stream" diff --git a/src/api/providers/openai-native.ts b/src/api/providers/openai-native.ts index 2acc87934a..ff879c20da 100644 --- a/src/api/providers/openai-native.ts +++ b/src/api/providers/openai-native.ts @@ -2,13 +2,7 @@ import { Anthropic } from "@anthropic-ai/sdk" import OpenAI from "openai" import { withRetry } from "../retry" import { ApiHandler } from "../" -import { - ApiHandlerOptions, - ModelInfo, - openAiNativeDefaultModelId, - OpenAiNativeModelId, - openAiNativeModels, -} from "../../shared/api" +import { ApiHandlerOptions, ModelInfo, openAiNativeDefaultModelId, OpenAiNativeModelId, openAiNativeModels } from "@shared/api" import { convertToOpenAiMessages } from "../transform/openai-format" import { calculateApiCostOpenAI } from "../../utils/cost" import { ApiStream } from "../transform/stream" diff --git a/src/api/providers/openai.ts b/src/api/providers/openai.ts index eefd923efd..1477990461 100644 --- a/src/api/providers/openai.ts +++ b/src/api/providers/openai.ts @@ -1,7 +1,7 @@ import { Anthropic } from "@anthropic-ai/sdk" import OpenAI, { AzureOpenAI } from "openai" import { withRetry } from "../retry" -import { ApiHandlerOptions, azureOpenAiDefaultApiVersion, ModelInfo, openAiModelInfoSaneDefaults } from "../../shared/api" +import { ApiHandlerOptions, azureOpenAiDefaultApiVersion, ModelInfo, openAiModelInfoSaneDefaults } from "@shared/api" import { ApiHandler } from "../index" import { convertToOpenAiMessages } from "../transform/openai-format" import { ApiStream } from "../transform/stream" diff --git a/src/api/providers/openrouter.ts b/src/api/providers/openrouter.ts index 0100f0c83a..7136d36551 100644 --- a/src/api/providers/openrouter.ts +++ b/src/api/providers/openrouter.ts @@ -3,7 +3,7 @@ import axios from "axios" import { setTimeout as setTimeoutPromise } from "node:timers/promises" import OpenAI from "openai" import { ApiHandler } from "../" -import { ApiHandlerOptions, ModelInfo, openRouterDefaultModelId, openRouterDefaultModelInfo } from "../../shared/api" +import { ApiHandlerOptions, ModelInfo, openRouterDefaultModelId, openRouterDefaultModelInfo } from "@shared/api" import { withRetry } from "../retry" import { createOpenRouterStream } from "../transform/openrouter-stream" import { ApiStream, ApiStreamUsageChunk } from "../transform/stream" diff --git a/src/api/providers/qwen.ts b/src/api/providers/qwen.ts index a5b0e05c1d..4bb1cc4921 100644 --- a/src/api/providers/qwen.ts +++ b/src/api/providers/qwen.ts @@ -10,7 +10,7 @@ import { internationalQwenDefaultModelId, MainlandQwenModelId, InternationalQwenModelId, -} from "../../shared/api" +} from "@shared/api" import { convertToOpenAiMessages } from "../transform/openai-format" import { ApiStream } from "../transform/stream" import { convertToR1Format } from "../transform/r1-format" diff --git a/src/api/providers/requesty.ts b/src/api/providers/requesty.ts index 249e26e109..c7b2741840 100644 --- a/src/api/providers/requesty.ts +++ b/src/api/providers/requesty.ts @@ -1,11 +1,11 @@ import { Anthropic } from "@anthropic-ai/sdk" import OpenAI from "openai" -import { ApiHandlerOptions, ModelInfo, requestyDefaultModelId, requestyDefaultModelInfo } from "../../shared/api" +import { ApiHandlerOptions, ModelInfo, requestyDefaultModelId, requestyDefaultModelInfo } from "@shared/api" import { ApiHandler } from "../index" import { withRetry } from "../retry" -import { convertToOpenAiMessages } from "../transform/openai-format" -import { calculateApiCostOpenAI } from "../../utils/cost" -import { ApiStream } from "../transform/stream" +import { convertToOpenAiMessages } from "@api/transform/openai-format" +import { calculateApiCostOpenAI } from "@utils/cost" +import { ApiStream } from "@api/transform/stream" export class RequestyHandler implements ApiHandler { private options: ApiHandlerOptions diff --git a/src/api/providers/sambanova.ts b/src/api/providers/sambanova.ts index 1d7fa6edd7..8e172b8d30 100644 --- a/src/api/providers/sambanova.ts +++ b/src/api/providers/sambanova.ts @@ -1,11 +1,11 @@ import { Anthropic } from "@anthropic-ai/sdk" import OpenAI from "openai" import { withRetry } from "../retry" -import { ApiHandlerOptions, ModelInfo, SambanovaModelId, sambanovaDefaultModelId, sambanovaModels } from "../../shared/api" +import { ApiHandlerOptions, ModelInfo, SambanovaModelId, sambanovaDefaultModelId, sambanovaModels } from "@shared/api" import { ApiHandler } from "../index" -import { convertToOpenAiMessages } from "../transform/openai-format" -import { ApiStream } from "../transform/stream" -import { convertToR1Format } from "../transform/r1-format" +import { convertToOpenAiMessages } from "@/api/transform/openai-format" +import { ApiStream } from "@api/transform/stream" +import { convertToR1Format } from "@api/transform/r1-format" export class SambanovaHandler implements ApiHandler { private options: ApiHandlerOptions diff --git a/src/api/providers/together.ts b/src/api/providers/together.ts index 38ae26dd5b..8b4b5f27dd 100644 --- a/src/api/providers/together.ts +++ b/src/api/providers/together.ts @@ -1,11 +1,11 @@ import { Anthropic } from "@anthropic-ai/sdk" import OpenAI from "openai" import { withRetry } from "../retry" -import { ApiHandlerOptions, ModelInfo, openAiModelInfoSaneDefaults } from "../../shared/api" +import { ApiHandlerOptions, ModelInfo, openAiModelInfoSaneDefaults } from "@shared/api" import { ApiHandler } from "../index" -import { convertToOpenAiMessages } from "../transform/openai-format" -import { ApiStream } from "../transform/stream" -import { convertToR1Format } from "../transform/r1-format" +import { convertToOpenAiMessages } from "@api/transform/openai-format" +import { ApiStream } from "@api/transform/stream" +import { convertToR1Format } from "@api/transform/r1-format" export class TogetherHandler implements ApiHandler { private options: ApiHandlerOptions diff --git a/src/api/providers/vertex.ts b/src/api/providers/vertex.ts index 74de4da49a..b92dd8d0de 100644 --- a/src/api/providers/vertex.ts +++ b/src/api/providers/vertex.ts @@ -2,10 +2,10 @@ import { Anthropic } from "@anthropic-ai/sdk" import { AnthropicVertex } from "@anthropic-ai/vertex-sdk" import { withRetry } from "../retry" import { ApiHandler } from "../" -import { ApiHandlerOptions, ModelInfo, vertexDefaultModelId, VertexModelId, vertexModels } from "../../shared/api" -import { ApiStream } from "../transform/stream" +import { ApiHandlerOptions, ModelInfo, vertexDefaultModelId, VertexModelId, vertexModels } from "@shared/api" +import { ApiStream } from "@api/transform/stream" import { VertexAI } from "@google-cloud/vertexai" -import { calculateApiCostOpenAI } from "../../utils/cost" +import { calculateApiCostOpenAI } from "@utils/cost" // https://docs.anthropic.com/en/api/claude-on-vertex-ai export class VertexHandler implements ApiHandler { diff --git a/src/api/providers/vscode-lm.ts b/src/api/providers/vscode-lm.ts index db75197f21..a4e3b68cdd 100644 --- a/src/api/providers/vscode-lm.ts +++ b/src/api/providers/vscode-lm.ts @@ -1,11 +1,11 @@ import { Anthropic } from "@anthropic-ai/sdk" import * as vscode from "vscode" import { ApiHandler, SingleCompletionHandler } from "../" -import { calculateApiCostAnthropic } from "../../utils/cost" -import { ApiStream } from "../transform/stream" -import { convertToVsCodeLmMessages } from "../transform/vscode-lm-format" -import { SELECTOR_SEPARATOR, stringifyVsCodeLmModelSelector } from "../../shared/vsCodeSelectorUtils" -import { ApiHandlerOptions, ModelInfo, openAiModelInfoSaneDefaults } from "../../shared/api" +import { calculateApiCostAnthropic } from "@utils/cost" +import { ApiStream } from "@api/transform/stream" +import { convertToVsCodeLmMessages } from "@api/transform/vscode-lm-format" +import { SELECTOR_SEPARATOR, stringifyVsCodeLmModelSelector } from "@shared/vsCodeSelectorUtils" +import { ApiHandlerOptions, ModelInfo, openAiModelInfoSaneDefaults } from "@shared/api" import type { LanguageModelChatSelector as LanguageModelChatSelectorFromTypes } from "./types" // Cline does not update VSCode type definitions or engine requirements to maintain compatibility. diff --git a/src/api/providers/xai.ts b/src/api/providers/xai.ts index ed58cdda9a..f844c9af77 100644 --- a/src/api/providers/xai.ts +++ b/src/api/providers/xai.ts @@ -1,9 +1,9 @@ import { Anthropic } from "@anthropic-ai/sdk" import OpenAI from "openai" import { ApiHandler } from "../" -import { ApiHandlerOptions, XAIModelId, ModelInfo, xaiDefaultModelId, xaiModels } from "../../shared/api" -import { convertToOpenAiMessages } from "../transform/openai-format" -import { ApiStream } from "../transform/stream" +import { ApiHandlerOptions, XAIModelId, ModelInfo, xaiDefaultModelId, xaiModels } from "@shared/api" +import { convertToOpenAiMessages } from "@api/transform/openai-format" +import { ApiStream } from "@api/transform/stream" import { ChatCompletionReasoningEffort } from "openai/resources/chat/completions" export class XAIHandler implements ApiHandler { diff --git a/src/api/transform/openrouter-stream.ts b/src/api/transform/openrouter-stream.ts index 7f34795c0f..511df1c89c 100644 --- a/src/api/transform/openrouter-stream.ts +++ b/src/api/transform/openrouter-stream.ts @@ -1,10 +1,8 @@ -import { ModelInfo } from "../../shared/api" -import { convertToOpenAiMessages } from "./openai-format" -import { convertToR1Format } from "./r1-format" -import { ApiStream, ApiStreamChunk } from "./stream" +import { ModelInfo } from "@shared/api" +import { convertToOpenAiMessages } from "@api/transform/openai-format" +import { convertToR1Format } from "@api/transform/r1-format" import { Anthropic } from "@anthropic-ai/sdk" import OpenAI from "openai" -import { OpenRouterErrorResponse } from "../providers/types" export async function createOpenRouterStream( client: OpenAI, diff --git a/src/core/context/context-management/ContextManager-legacy.ts b/src/core/context/context-management/ContextManager-legacy.ts index 9fd10e4ece..055d6eb88e 100644 --- a/src/core/context/context-management/ContextManager-legacy.ts +++ b/src/core/context/context-management/ContextManager-legacy.ts @@ -1,6 +1,6 @@ import { Anthropic } from "@anthropic-ai/sdk" -import { ClineApiReqInfo, ClineMessage } from "../../../shared/ExtensionMessage" -import { ApiHandler } from "../../../api" +import { ClineApiReqInfo, ClineMessage } from "@shared/ExtensionMessage" +import { ApiHandler } from "@api/index" import { getContextWindowInfo } from "./context-window-utils" class ContextManager { diff --git a/src/core/context/context-management/ContextManager.ts b/src/core/context/context-management/ContextManager.ts index 5a22f2bf4e..adaddd00cf 100644 --- a/src/core/context/context-management/ContextManager.ts +++ b/src/core/context/context-management/ContextManager.ts @@ -1,12 +1,12 @@ import { getContextWindowInfo } from "./context-window-utils" -import { formatResponse } from "../../prompts/responses" -import { GlobalFileNames } from "../../storage/disk" -import { fileExistsAtPath } from "../../../utils/fs" +import { formatResponse } from "@core/prompts/responses" +import { GlobalFileNames } from "@core/storage/disk" +import { fileExistsAtPath } from "@utils/fs" import * as path from "path" import fs from "fs/promises" import cloneDeep from "clone-deep" -import { ClineApiReqInfo, ClineMessage } from "../../../shared/ExtensionMessage" -import { ApiHandler } from "../../../api" +import { ClineApiReqInfo, ClineMessage } from "@shared/ExtensionMessage" +import { ApiHandler } from "@api/index" import { Anthropic } from "@anthropic-ai/sdk" enum EditType { diff --git a/src/core/context/context-management/context-window-utils.ts b/src/core/context/context-management/context-window-utils.ts index 8a66050744..fc5cde06f3 100644 --- a/src/core/context/context-management/context-window-utils.ts +++ b/src/core/context/context-management/context-window-utils.ts @@ -1,5 +1,5 @@ -import { ApiHandler } from "../../../api" -import { OpenAiHandler } from "../../../api/providers/openai" +import { ApiHandler } from "@api/index" +import { OpenAiHandler } from "@api/providers/openai" /** * Gets context window information for the given API handler diff --git a/src/core/context/context-tracking/ContextTrackerTypes.ts b/src/core/context/context-tracking/ContextTrackerTypes.ts index d8c7e7849f..cad88d8109 100644 --- a/src/core/context/context-tracking/ContextTrackerTypes.ts +++ b/src/core/context/context-tracking/ContextTrackerTypes.ts @@ -1,5 +1,3 @@ -import * as vscode from "vscode" - // Type definitions for FileContextTracker export interface FileMetadataEntry { path: string diff --git a/src/core/context/context-tracking/FileContextTracker.test.ts b/src/core/context/context-tracking/FileContextTracker.test.ts index c479dec246..f5fe65879b 100644 --- a/src/core/context/context-tracking/FileContextTracker.test.ts +++ b/src/core/context/context-tracking/FileContextTracker.test.ts @@ -4,7 +4,7 @@ import * as sinon from "sinon" import * as vscode from "vscode" import * as path from "path" import { FileContextTracker } from "./FileContextTracker" -import * as diskModule from "../../storage/disk" +import * as diskModule from "@core/storage/disk" import type { TaskMetadata, FileMetadataEntry } from "./ContextTrackerTypes" describe("FileContextTracker", () => { diff --git a/src/core/context/context-tracking/FileContextTracker.ts b/src/core/context/context-tracking/FileContextTracker.ts index 7ec2784c2d..b49a95cc6a 100644 --- a/src/core/context/context-tracking/FileContextTracker.ts +++ b/src/core/context/context-tracking/FileContextTracker.ts @@ -1,6 +1,6 @@ import * as path from "path" import * as vscode from "vscode" -import { getTaskMetadata, saveTaskMetadata } from "../../storage/disk" +import { getTaskMetadata, saveTaskMetadata } from "@core/storage/disk" import type { FileMetadataEntry } from "./ContextTrackerTypes" // This class is responsible for tracking file operations that may result in stale context. diff --git a/src/core/context/context-tracking/ModelContextTracker.test.ts b/src/core/context/context-tracking/ModelContextTracker.test.ts index ea009f64ec..53ff8a4bfc 100644 --- a/src/core/context/context-tracking/ModelContextTracker.test.ts +++ b/src/core/context/context-tracking/ModelContextTracker.test.ts @@ -3,7 +3,7 @@ import { expect } from "chai" import * as sinon from "sinon" import * as vscode from "vscode" import { ModelContextTracker } from "./ModelContextTracker" -import * as diskModule from "../../storage/disk" +import * as diskModule from "@core/storage/disk" import type { TaskMetadata } from "./ContextTrackerTypes" describe("ModelContextTracker", () => { diff --git a/src/core/context/context-tracking/ModelContextTracker.ts b/src/core/context/context-tracking/ModelContextTracker.ts index e3e2637eec..84872eb3a7 100644 --- a/src/core/context/context-tracking/ModelContextTracker.ts +++ b/src/core/context/context-tracking/ModelContextTracker.ts @@ -1,5 +1,5 @@ import * as vscode from "vscode" -import { getTaskMetadata, saveTaskMetadata } from "../../storage/disk" +import { getTaskMetadata, saveTaskMetadata } from "@core/storage/disk" export class ModelContextTracker { readonly taskId: string diff --git a/src/core/context/instructions/user-instructions/cline-rules.ts b/src/core/context/instructions/user-instructions/cline-rules.ts index d636f346b4..f5ebbd1258 100644 --- a/src/core/context/instructions/user-instructions/cline-rules.ts +++ b/src/core/context/instructions/user-instructions/cline-rules.ts @@ -1,10 +1,10 @@ import path from "path" -import { ensureRulesDirectoryExists, GlobalFileNames } from "../../../storage/disk" -import { fileExistsAtPath, isDirectory, readDirectory } from "../../../../utils/fs" -import { formatResponse } from "../../../prompts/responses" +import { ensureRulesDirectoryExists, GlobalFileNames } from "@core/storage/disk" +import { fileExistsAtPath, isDirectory, readDirectory } from "@utils/fs" +import { formatResponse } from "@core/prompts/responses" import fs from "fs/promises" -import { ClineRulesToggles } from "../../../../shared/cline-rules" -import { getGlobalState, getWorkspaceState, updateGlobalState, updateWorkspaceState } from "../../../storage/state" +import { ClineRulesToggles } from "@shared/cline-rules" +import { getGlobalState, getWorkspaceState, updateGlobalState, updateWorkspaceState } from "@core/storage/state" import * as vscode from "vscode" export const getGlobalClineRules = async (globalClineRulesFilePath: string, toggles: ClineRulesToggles) => { diff --git a/src/core/controller/browser/discoverBrowser.ts b/src/core/controller/browser/discoverBrowser.ts index 552c7bdc1c..4c71a0f533 100644 --- a/src/core/controller/browser/discoverBrowser.ts +++ b/src/core/controller/browser/discoverBrowser.ts @@ -1,9 +1,9 @@ -import { BrowserConnection } from "../../../shared/proto/browser" -import { EmptyRequest } from "../../../shared/proto/common" +import { BrowserConnection } from "@shared/proto/browser" +import { EmptyRequest } from "@shared/proto/common" import { Controller } from "../index" -import { getAllExtensionState } from "../../storage/state" -import { BrowserSession } from "../../../services/browser/BrowserSession" -import { discoverChromeInstances } from "../../../services/browser/BrowserDiscovery" +import { getAllExtensionState } from "@core/storage/state" +import { BrowserSession } from "@services/browser/BrowserSession" +import { discoverChromeInstances } from "@services/browser/BrowserDiscovery" /** * Discover Chrome instances diff --git a/src/core/controller/browser/getBrowserConnectionInfo.ts b/src/core/controller/browser/getBrowserConnectionInfo.ts index 821bd5f6e7..d7a81710da 100644 --- a/src/core/controller/browser/getBrowserConnectionInfo.ts +++ b/src/core/controller/browser/getBrowserConnectionInfo.ts @@ -1,7 +1,7 @@ -import { BrowserConnectionInfo } from "../../../shared/proto/browser" -import { EmptyRequest } from "../../../shared/proto/common" +import { BrowserConnectionInfo } from "@shared/proto/browser" +import { EmptyRequest } from "@shared/proto/common" import { Controller } from "../index" -import { getAllExtensionState } from "../../storage/state" +import { getAllExtensionState } from "@core/storage/state" /** * Get information about the current browser connection diff --git a/src/core/controller/browser/testBrowserConnection.ts b/src/core/controller/browser/testBrowserConnection.ts index ee76262721..f4b196a3a5 100644 --- a/src/core/controller/browser/testBrowserConnection.ts +++ b/src/core/controller/browser/testBrowserConnection.ts @@ -1,9 +1,9 @@ -import { BrowserConnection } from "../../../shared/proto/browser" -import { StringRequest } from "../../../shared/proto/common" +import { BrowserConnection } from "@shared/proto/browser" +import { StringRequest } from "@shared/proto/common" import { Controller } from "../index" -import { getAllExtensionState } from "../../storage/state" -import { BrowserSession } from "../../../services/browser/BrowserSession" -import { discoverChromeInstances } from "../../../services/browser/BrowserDiscovery" +import { getAllExtensionState } from "@core/storage/state" +import { BrowserSession } from "@services/browser/BrowserSession" +import { discoverChromeInstances } from "@services/browser/BrowserDiscovery" /** * Test connection to a browser instance diff --git a/src/core/controller/checkpoints/checkpointDiff.ts b/src/core/controller/checkpoints/checkpointDiff.ts index dffb26cddd..a39ce64541 100644 --- a/src/core/controller/checkpoints/checkpointDiff.ts +++ b/src/core/controller/checkpoints/checkpointDiff.ts @@ -1,5 +1,5 @@ import { Controller } from ".." -import { Empty, Int64Request } from "../../../shared/proto/common" +import { Empty, Int64Request } from "@shared/proto/common" export async function checkpointDiff(controller: Controller, request: Int64Request): Promise { if (request.value) { diff --git a/src/core/controller/grpc-handler.ts b/src/core/controller/grpc-handler.ts index 00b569b604..74718c15e1 100644 --- a/src/core/controller/grpc-handler.ts +++ b/src/core/controller/grpc-handler.ts @@ -1,6 +1,5 @@ import { Controller } from "./index" import { handleBrowserServiceRequest } from "./browser/index" -import { ExtensionMessage } from "../../shared/ExtensionMessage" import { handleCheckpointsDiffServiceRequest } from "./checkpoints" /** diff --git a/src/core/controller/index.ts b/src/core/controller/index.ts index a25476423a..a9a034a722 100644 --- a/src/core/controller/index.ts +++ b/src/core/controller/index.ts @@ -8,32 +8,31 @@ import pWaitFor from "p-wait-for" import * as path from "path" import * as vscode from "vscode" import { handleGrpcRequest } from "./grpc-handler" -import { buildApiHandler } from "../../api" -import { cleanupLegacyCheckpoints } from "../../integrations/checkpoints/CheckpointMigration" -import { downloadTask } from "../../integrations/misc/export-markdown" -import { fetchOpenGraphData, isImageUrl } from "../../integrations/misc/link-preview" -import { openFile, openImage } from "../../integrations/misc/open-file" -import { selectImages } from "../../integrations/misc/process-images" -import { getTheme } from "../../integrations/theme/getTheme" -import WorkspaceTracker from "../../integrations/workspace/WorkspaceTracker" -import { ClineAccountService } from "../../services/account/ClineAccountService" -import { discoverChromeInstances } from "../../services/browser/BrowserDiscovery" -import { BrowserSession } from "../../services/browser/BrowserSession" -import { McpHub } from "../../services/mcp/McpHub" -import { searchWorkspaceFiles } from "../../services/search/file-search" -import { telemetryService } from "../../services/telemetry/TelemetryService" -import { ApiProvider, ModelInfo } from "../../shared/api" -import { ChatContent } from "../../shared/ChatContent" -import { ChatSettings } from "../../shared/ChatSettings" -import { ExtensionMessage, ExtensionState, Invoke, Platform } from "../../shared/ExtensionMessage" -import { HistoryItem } from "../../shared/HistoryItem" -import { McpDownloadResponse, McpMarketplaceCatalog, McpServer } from "../../shared/mcp" -import { TelemetrySetting } from "../../shared/TelemetrySetting" -import { ClineCheckpointRestore, WebviewMessage } from "../../shared/WebviewMessage" -import { fileExistsAtPath } from "../../utils/fs" -import { searchCommits } from "../../utils/git" -import { getWorkspacePath } from "../../utils/path" -import { getTotalTasksSize } from "../../utils/storage" +import { buildApiHandler } from "@api/index" +import { cleanupLegacyCheckpoints } from "@integrations/checkpoints/CheckpointMigration" +import { downloadTask } from "@integrations/misc/export-markdown" +import { fetchOpenGraphData, isImageUrl } from "@integrations/misc/link-preview" +import { openFile, openImage } from "@integrations/misc/open-file" +import { selectImages } from "@integrations/misc/process-images" +import { getTheme } from "@integrations/theme/getTheme" +import WorkspaceTracker from "@integrations/workspace/WorkspaceTracker" +import { ClineAccountService } from "@services/account/ClineAccountService" +import { BrowserSession } from "@services/browser/BrowserSession" +import { McpHub } from "@services/mcp/McpHub" +import { searchWorkspaceFiles } from "@services/search/file-search" +import { telemetryService } from "@services/telemetry/TelemetryService" +import { ApiProvider, ModelInfo } from "@shared/api" +import { ChatContent } from "@shared/ChatContent" +import { ChatSettings } from "@shared/ChatSettings" +import { ExtensionMessage, ExtensionState, Invoke, Platform } from "@shared/ExtensionMessage" +import { HistoryItem } from "@shared/HistoryItem" +import { McpDownloadResponse, McpMarketplaceCatalog, McpServer } from "@shared/mcp" +import { TelemetrySetting } from "@shared/TelemetrySetting" +import { ClineCheckpointRestore, WebviewMessage } from "@shared/WebviewMessage" +import { fileExistsAtPath } from "@utils/fs" +import { searchCommits } from "@utils/git" +import { getWorkspacePath } from "@utils/path" +import { getTotalTasksSize } from "@utils/storage" import { openMention } from "../mentions" import { ensureMcpServersDirectoryExists, ensureSettingsDirectoryExists, GlobalFileNames } from "../storage/disk" import { @@ -48,7 +47,7 @@ import { updateWorkspaceState, } from "../storage/state" import { Task, cwd } from "../task" -import { ClineRulesToggles } from "../../shared/cline-rules" +import { ClineRulesToggles } from "@shared/cline-rules" import { createRuleFile, deleteRuleFile, refreshClineRulesToggles } from "../context/instructions/user-instructions/cline-rules" /* diff --git a/src/core/ignore/ClineIgnoreController.ts b/src/core/ignore/ClineIgnoreController.ts index f643c7dc81..f9c452dee7 100644 --- a/src/core/ignore/ClineIgnoreController.ts +++ b/src/core/ignore/ClineIgnoreController.ts @@ -1,5 +1,5 @@ import path from "path" -import { fileExistsAtPath } from "../../utils/fs" +import { fileExistsAtPath } from "@utils/fs" import fs from "fs/promises" import ignore, { Ignore } from "ignore" import * as vscode from "vscode" diff --git a/src/core/mentions/index.ts b/src/core/mentions/index.ts index 53af8fddb4..611ed7b6be 100644 --- a/src/core/mentions/index.ts +++ b/src/core/mentions/index.ts @@ -1,15 +1,15 @@ import * as vscode from "vscode" import * as path from "path" -import { openFile } from "../../integrations/misc/open-file" -import { UrlContentFetcher } from "../../services/browser/UrlContentFetcher" -import { mentionRegexGlobal } from "../../shared/context-mentions" +import { openFile } from "@integrations/misc/open-file" +import { UrlContentFetcher } from "@services/browser/UrlContentFetcher" +import { mentionRegexGlobal } from "@shared/context-mentions" import fs from "fs/promises" -import { extractTextFromFile } from "../../integrations/misc/extract-text" +import { extractTextFromFile } from "@integrations/misc/extract-text" import { isBinaryFile } from "isbinaryfile" -import { diagnosticsToProblemsString } from "../../integrations/diagnostics" -import { getLatestTerminalOutput } from "../../integrations/terminal/get-latest-output" -import { getCommitInfo } from "../../utils/git" -import { getWorkingState } from "../../utils/git" +import { diagnosticsToProblemsString } from "@integrations/diagnostics" +import { getLatestTerminalOutput } from "@integrations/terminal/get-latest-output" +import { getCommitInfo } from "@utils/git" +import { getWorkingState } from "@utils/git" import { FileContextTracker } from "../context/context-tracking/FileContextTracker" export function openMention(mention?: string): void { diff --git a/src/core/prompts/loadMcpDocumentation.ts b/src/core/prompts/loadMcpDocumentation.ts index c76e8e443d..1349736d16 100644 --- a/src/core/prompts/loadMcpDocumentation.ts +++ b/src/core/prompts/loadMcpDocumentation.ts @@ -1,4 +1,4 @@ -import { McpHub } from "../../services/mcp/McpHub" +import { McpHub } from "@services/mcp/McpHub" export async function loadMcpDocumentation(mcpHub: McpHub) { return `## Creating an MCP Server diff --git a/src/core/prompts/responses.ts b/src/core/prompts/responses.ts index 520f52a893..6a4a9c21f3 100644 --- a/src/core/prompts/responses.ts +++ b/src/core/prompts/responses.ts @@ -2,7 +2,6 @@ import { Anthropic } from "@anthropic-ai/sdk" import * as diff from "diff" import * as path from "path" import { ClineIgnoreController, LOCK_TEXT_SYMBOL } from "../ignore/ClineIgnoreController" -import { McpToolCallResponse } from "../../shared/mcp" export const formatResponse = { duplicateFileReadNotice: () => diff --git a/src/core/prompts/system.ts b/src/core/prompts/system.ts index c9db816bcd..a074a9066c 100644 --- a/src/core/prompts/system.ts +++ b/src/core/prompts/system.ts @@ -1,8 +1,8 @@ -import { getShell } from "../../utils/shell" +import { getShell } from "@utils/shell" import os from "os" import osName from "os-name" -import { McpHub } from "../../services/mcp/McpHub" -import { BrowserSettings } from "../../shared/BrowserSettings" +import { McpHub } from "@services/mcp/McpHub" +import { BrowserSettings } from "@shared/BrowserSettings" export const SYSTEM_PROMPT = async ( cwd: string, diff --git a/src/core/storage/disk.ts b/src/core/storage/disk.ts index 5d68fa2ce9..ff0b932610 100644 --- a/src/core/storage/disk.ts +++ b/src/core/storage/disk.ts @@ -2,9 +2,9 @@ import * as path from "path" import * as vscode from "vscode" import fs from "fs/promises" import { Anthropic } from "@anthropic-ai/sdk" -import { fileExistsAtPath } from "../../utils/fs" -import { ClineMessage } from "../../shared/ExtensionMessage" -import { TaskMetadata } from "../context/context-tracking/ContextTrackerTypes" +import { fileExistsAtPath } from "@utils/fs" +import { ClineMessage } from "@shared/ExtensionMessage" +import { TaskMetadata } from "@core/context/context-tracking/ContextTrackerTypes" import os from "os" import { execa } from "execa" diff --git a/src/core/storage/state.ts b/src/core/storage/state.ts index 433c59469a..cbf607f535 100644 --- a/src/core/storage/state.ts +++ b/src/core/storage/state.ts @@ -1,16 +1,16 @@ import * as vscode from "vscode" -import { DEFAULT_CHAT_SETTINGS } from "../../shared/ChatSettings" -import { DEFAULT_BROWSER_SETTINGS } from "../../shared/BrowserSettings" -import { DEFAULT_AUTO_APPROVAL_SETTINGS } from "../../shared/AutoApprovalSettings" +import { DEFAULT_CHAT_SETTINGS } from "@shared/ChatSettings" +import { DEFAULT_BROWSER_SETTINGS } from "@shared/BrowserSettings" +import { DEFAULT_AUTO_APPROVAL_SETTINGS } from "@shared/AutoApprovalSettings" import { GlobalStateKey, SecretKey } from "./state-keys" -import { ApiConfiguration, ApiProvider, ModelInfo } from "../../shared/api" -import { HistoryItem } from "../../shared/HistoryItem" -import { AutoApprovalSettings } from "../../shared/AutoApprovalSettings" -import { BrowserSettings } from "../../shared/BrowserSettings" -import { ChatSettings } from "../../shared/ChatSettings" -import { TelemetrySetting } from "../../shared/TelemetrySetting" -import { UserInfo } from "../../shared/UserInfo" -import { ClineRulesToggles } from "../../shared/cline-rules" +import { ApiConfiguration, ApiProvider, ModelInfo } from "@shared/api" +import { HistoryItem } from "@shared/HistoryItem" +import { AutoApprovalSettings } from "@shared/AutoApprovalSettings" +import { BrowserSettings } from "@shared/BrowserSettings" +import { ChatSettings } from "@shared/ChatSettings" +import { TelemetrySetting } from "@shared/TelemetrySetting" +import { UserInfo } from "@shared/UserInfo" +import { ClineRulesToggles } from "@shared/cline-rules" /* Storage https://dev.to/kompotkot/how-to-use-secretstorage-in-your-vscode-extensions-2hco diff --git a/src/core/task/index.ts b/src/core/task/index.ts index 223868bd24..760873523d 100644 --- a/src/core/task/index.ts +++ b/src/core/task/index.ts @@ -9,31 +9,31 @@ import pWaitFor from "p-wait-for" import * as path from "path" import { serializeError } from "serialize-error" import * as vscode from "vscode" -import { Logger } from "../../services/logging/Logger" -import { ApiHandler, buildApiHandler } from "../../api" -import { AnthropicHandler } from "../../api/providers/anthropic" -import { ClineHandler } from "../../api/providers/cline" -import { OpenRouterHandler } from "../../api/providers/openrouter" -import { ApiStream } from "../../api/transform/stream" -import CheckpointTracker from "../../integrations/checkpoints/CheckpointTracker" -import { DIFF_VIEW_URI_SCHEME, DiffViewProvider } from "../../integrations/editor/DiffViewProvider" -import { formatContentBlockToMarkdown } from "../../integrations/misc/export-markdown" -import { extractTextFromFile } from "../../integrations/misc/extract-text" -import { showSystemNotification } from "../../integrations/notifications" -import { TerminalManager } from "../../integrations/terminal/TerminalManager" -import { BrowserSession } from "../../services/browser/BrowserSession" -import { UrlContentFetcher } from "../../services/browser/UrlContentFetcher" -import { listFiles } from "../../services/glob/list-files" -import { regexSearchFiles } from "../../services/ripgrep" -import { telemetryService } from "../../services/telemetry/TelemetryService" -import { parseSourceCodeForDefinitionsTopLevel } from "../../services/tree-sitter" -import { ApiConfiguration } from "../../shared/api" -import { findLast, findLastIndex, parsePartialArrayString } from "../../shared/array" -import { AutoApprovalSettings } from "../../shared/AutoApprovalSettings" -import { BrowserSettings } from "../../shared/BrowserSettings" -import { ChatSettings } from "../../shared/ChatSettings" -import { combineApiRequests } from "../../shared/combineApiRequests" -import { combineCommandSequences, COMMAND_REQ_APP_STRING } from "../../shared/combineCommandSequences" +import { Logger } from "@services/logging/Logger" +import { ApiHandler, buildApiHandler } from "@api/index" +import { AnthropicHandler } from "@api/providers/anthropic" +import { ClineHandler } from "@api/providers/cline" +import { OpenRouterHandler } from "@api/providers/openrouter" +import { ApiStream } from "@api/transform/stream" +import CheckpointTracker from "@integrations/checkpoints/CheckpointTracker" +import { DIFF_VIEW_URI_SCHEME, DiffViewProvider } from "@integrations/editor/DiffViewProvider" +import { formatContentBlockToMarkdown } from "@integrations/misc/export-markdown" +import { extractTextFromFile } from "@integrations/misc/extract-text" +import { showSystemNotification } from "@integrations/notifications" +import { TerminalManager } from "@integrations/terminal/TerminalManager" +import { BrowserSession } from "@services/browser/BrowserSession" +import { UrlContentFetcher } from "@services/browser/UrlContentFetcher" +import { listFiles } from "@services/glob/list-files" +import { regexSearchFiles } from "@services/ripgrep" +import { telemetryService } from "@services/telemetry/TelemetryService" +import { parseSourceCodeForDefinitionsTopLevel } from "@services/tree-sitter" +import { ApiConfiguration } from "@shared/api" +import { findLast, findLastIndex, parsePartialArrayString } from "@shared/array" +import { AutoApprovalSettings } from "@shared/AutoApprovalSettings" +import { BrowserSettings } from "@shared/BrowserSettings" +import { ChatSettings } from "@shared/ChatSettings" +import { combineApiRequests } from "@shared/combineApiRequests" +import { combineCommandSequences, COMMAND_REQ_APP_STRING } from "@shared/combineCommandSequences" import { BrowserAction, BrowserActionResult, @@ -50,30 +50,30 @@ import { ClineSayTool, COMPLETION_RESULT_CHANGES_FLAG, ExtensionMessage, -} from "../../shared/ExtensionMessage" -import { getApiMetrics } from "../../shared/getApiMetrics" -import { HistoryItem } from "../../shared/HistoryItem" -import { DEFAULT_LANGUAGE_SETTINGS, getLanguageKey, LanguageDisplay } from "../../shared/Languages" -import { ClineAskResponse, ClineCheckpointRestore } from "../../shared/WebviewMessage" -import { calculateApiCostAnthropic } from "../../utils/cost" -import { fileExistsAtPath } from "../../utils/fs" -import { arePathsEqual, getReadablePath, isLocatedInWorkspace } from "../../utils/path" -import { fixModelHtmlEscaping, removeInvalidChars } from "../../utils/string" -import { AssistantMessageContent, parseAssistantMessage, ToolParamName, ToolUseName } from ".././assistant-message" -import { constructNewFileContent } from ".././assistant-message/diff" -import { ClineIgnoreController } from ".././ignore/ClineIgnoreController" -import { parseMentions } from ".././mentions" -import { formatResponse } from ".././prompts/responses" -import { addUserInstructions, SYSTEM_PROMPT } from ".././prompts/system" -import { getContextWindowInfo } from "../context/context-management/context-window-utils" -import { FileContextTracker } from "../context/context-tracking/FileContextTracker" -import { ModelContextTracker } from "../context/context-tracking/ModelContextTracker" +} from "@shared/ExtensionMessage" +import { getApiMetrics } from "@shared/getApiMetrics" +import { HistoryItem } from "@shared/HistoryItem" +import { DEFAULT_LANGUAGE_SETTINGS, getLanguageKey, LanguageDisplay } from "@shared/Languages" +import { ClineAskResponse, ClineCheckpointRestore } from "@shared/WebviewMessage" +import { calculateApiCostAnthropic } from "@utils/cost" +import { fileExistsAtPath } from "@utils/fs" +import { arePathsEqual, getReadablePath, isLocatedInWorkspace } from "@utils/path" +import { fixModelHtmlEscaping, removeInvalidChars } from "@utils/string" +import { AssistantMessageContent, parseAssistantMessage, ToolParamName, ToolUseName } from "@core/assistant-message" +import { constructNewFileContent } from "@core/assistant-message/diff" +import { ClineIgnoreController } from "@core/ignore/ClineIgnoreController" +import { parseMentions } from "@core/mentions" +import { formatResponse } from "@core/prompts/responses" +import { addUserInstructions, SYSTEM_PROMPT } from "@core/prompts/system" +import { getContextWindowInfo } from "@core/context/context-management/context-window-utils" +import { FileContextTracker } from "@core/context/context-tracking/FileContextTracker" +import { ModelContextTracker } from "@core/context/context-tracking/ModelContextTracker" import { checkIsAnthropicContextWindowError, checkIsOpenRouterContextWindowError, -} from "../context/context-management/context-error-handling" -import { ContextManager } from "../context/context-management/ContextManager" -import { loadMcpDocumentation } from "../prompts/loadMcpDocumentation" +} from "@core/context/context-management/context-error-handling" +import { ContextManager } from "@core/context/context-management/ContextManager" +import { loadMcpDocumentation } from "@core/prompts/loadMcpDocumentation" import { ensureRulesDirectoryExists, ensureTaskDirectoryExists, @@ -81,15 +81,15 @@ import { getSavedClineMessages, saveApiConversationHistory, saveClineMessages, -} from "../storage/disk" +} from "@core/storage/disk" import { getGlobalClineRules, getLocalClineRules, refreshClineRulesToggles, -} from "../context/instructions/user-instructions/cline-rules" -import { getGlobalState } from "../storage/state" -import { parseSlashCommands } from ".././slash-commands" -import WorkspaceTracker from "../../integrations/workspace/WorkspaceTracker" +} from "@core/context/instructions/user-instructions/cline-rules" +import { getGlobalState } from "@core/storage/state" +import { parseSlashCommands } from "@core/slash-commands" +import WorkspaceTracker from "@integrations/workspace/WorkspaceTracker" import { McpHub } from "@services/mcp/McpHub" import { isInTestMode } from "../../services/test/TestMode" diff --git a/src/core/webview/index.ts b/src/core/webview/index.ts index 488d2ae78a..90ac2f0fd3 100644 --- a/src/core/webview/index.ts +++ b/src/core/webview/index.ts @@ -2,9 +2,9 @@ import axios from "axios" import * as vscode from "vscode" import { getNonce } from "./getNonce" import { getUri } from "./getUri" -import { getTheme } from "../../integrations/theme/getTheme" -import { Controller } from "../controller" -import { findLast } from "../../shared/array" +import { getTheme } from "@integrations/theme/getTheme" +import { Controller } from "@core/controller/index" +import { findLast } from "@shared/array" /* https://github.com/microsoft/vscode-webview-ui-toolkit-samples/blob/main/default/weather-webview/src/providers/WeatherViewProvider.ts https://github.com/KumarVariable/vscode-extension-sidebar-html/blob/master/src/customSidebarViewProvider.ts diff --git a/src/dev/commands/tasks.ts b/src/dev/commands/tasks.ts index 5ae7e0b2ca..946fa8a0b4 100644 --- a/src/dev/commands/tasks.ts +++ b/src/dev/commands/tasks.ts @@ -1,9 +1,9 @@ import * as vscode from "vscode" import * as fs from "fs/promises" import * as path from "path" -import { Controller } from "../../core/controller" -import { HistoryItem } from "../../shared/HistoryItem" -import { ClineMessage } from "../../shared/ExtensionMessage" +import { Controller } from "@core/controller" +import { HistoryItem } from "@shared/HistoryItem" +import { ClineMessage } from "@shared/ExtensionMessage" /** * Registers development-only commands for task manipulation. diff --git a/src/exports/index.ts b/src/exports/index.ts index 4e966dc1ec..6ea29b951e 100644 --- a/src/exports/index.ts +++ b/src/exports/index.ts @@ -1,7 +1,7 @@ import * as vscode from "vscode" -import { Controller } from "../core/controller" +import { Controller } from "@core/controller" import { ClineAPI } from "./cline" -import { getGlobalState } from "../core/storage/state" +import { getGlobalState } from "@core/storage/state" export function createClineAPI(outputChannel: vscode.OutputChannel, sidebarController: Controller): ClineAPI { const api: ClineAPI = { diff --git a/src/integrations/checkpoints/CheckpointExclusions.ts b/src/integrations/checkpoints/CheckpointExclusions.ts index e1536b5aed..b0255c1cc4 100644 --- a/src/integrations/checkpoints/CheckpointExclusions.ts +++ b/src/integrations/checkpoints/CheckpointExclusions.ts @@ -1,6 +1,6 @@ import fs from "fs/promises" import { join } from "path" -import { fileExistsAtPath } from "../../utils/fs" +import { fileExistsAtPath } from "@utils/fs" import { GIT_DISABLED_SUFFIX } from "./CheckpointGitOperations" /** diff --git a/src/integrations/checkpoints/CheckpointGitOperations.ts b/src/integrations/checkpoints/CheckpointGitOperations.ts index df0d52f31e..da00e76ed7 100644 --- a/src/integrations/checkpoints/CheckpointGitOperations.ts +++ b/src/integrations/checkpoints/CheckpointGitOperations.ts @@ -2,9 +2,9 @@ import fs from "fs/promises" import { globby } from "globby" import * as path from "path" import simpleGit, { SimpleGit } from "simple-git" -import { fileExistsAtPath } from "../../utils/fs" +import { fileExistsAtPath } from "@utils/fs" import { getLfsPatterns, writeExcludesFile } from "./CheckpointExclusions" -import { telemetryService } from "../../services/telemetry/TelemetryService" +import { telemetryService } from "@services/telemetry/TelemetryService" interface CheckpointAddResult { success: boolean diff --git a/src/integrations/checkpoints/CheckpointMigration.ts b/src/integrations/checkpoints/CheckpointMigration.ts index a67b95f2fc..ffae9deff6 100644 --- a/src/integrations/checkpoints/CheckpointMigration.ts +++ b/src/integrations/checkpoints/CheckpointMigration.ts @@ -1,7 +1,7 @@ import fs from "fs/promises" import * as path from "path" import * as vscode from "vscode" -import { fileExistsAtPath } from "../../utils/fs" +import { fileExistsAtPath } from "@utils/fs" /** * Cleans up legacy checkpoints from task folders. diff --git a/src/integrations/checkpoints/CheckpointTracker-old.ts b/src/integrations/checkpoints/CheckpointTracker-old.ts index 44a4eb1457..0c1ceaf9d7 100644 --- a/src/integrations/checkpoints/CheckpointTracker-old.ts +++ b/src/integrations/checkpoints/CheckpointTracker-old.ts @@ -3,8 +3,8 @@ import os from "os" import * as path from "path" import simpleGit, { SimpleGit } from "simple-git" import * as vscode from "vscode" -import { Controller as ClineProvider } from "../../core/controller" -import { fileExistsAtPath } from "../../utils/fs" +import { Controller as ClineProvider } from "@core/controller" +import { fileExistsAtPath } from "@utils/fs" import { globby } from "globby" class CheckpointTracker { diff --git a/src/integrations/checkpoints/CheckpointTracker.ts b/src/integrations/checkpoints/CheckpointTracker.ts index 86c1e5736a..1ff1f13349 100644 --- a/src/integrations/checkpoints/CheckpointTracker.ts +++ b/src/integrations/checkpoints/CheckpointTracker.ts @@ -2,7 +2,7 @@ import fs from "fs/promises" import * as path from "path" import simpleGit from "simple-git" import * as vscode from "vscode" -import { telemetryService } from "../../services/telemetry/TelemetryService" +import { telemetryService } from "@services/telemetry/TelemetryService" import { GitOperations } from "./CheckpointGitOperations" import { getShadowGitPath, getWorkingDirectory, hashWorkingDir } from "./CheckpointUtils" diff --git a/src/integrations/editor/DiffViewProvider.ts b/src/integrations/editor/DiffViewProvider.ts index 4f40511e8c..fe3d8de2e1 100644 --- a/src/integrations/editor/DiffViewProvider.ts +++ b/src/integrations/editor/DiffViewProvider.ts @@ -1,9 +1,9 @@ import * as vscode from "vscode" import * as path from "path" import * as fs from "fs/promises" -import { createDirectoriesForFile } from "../../utils/fs" -import { arePathsEqual } from "../../utils/path" -import { formatResponse } from "../../core/prompts/responses" +import { createDirectoriesForFile } from "@utils/fs" +import { arePathsEqual } from "@utils/path" +import { formatResponse } from "@core/prompts/responses" import { DecorationController } from "./DecorationController" import * as diff from "diff" import { diagnosticsToProblemsString, getNewDiagnostics } from "../diagnostics" diff --git a/src/integrations/misc/extract-text.ts b/src/integrations/misc/extract-text.ts index a0cbd2eb65..9148efda3a 100644 --- a/src/integrations/misc/extract-text.ts +++ b/src/integrations/misc/extract-text.ts @@ -4,7 +4,6 @@ import pdf from "pdf-parse/lib/pdf-parse" import mammoth from "mammoth" import fs from "fs/promises" import { isBinaryFile } from "isbinaryfile" -import { getFileSizeInKB } from "../../utils/fs" import * as chardet from "jschardet" import * as iconv from "iconv-lite" diff --git a/src/integrations/misc/open-file.ts b/src/integrations/misc/open-file.ts index 3c69a611e7..d46048416b 100644 --- a/src/integrations/misc/open-file.ts +++ b/src/integrations/misc/open-file.ts @@ -1,7 +1,7 @@ import * as path from "path" import * as os from "os" import * as vscode from "vscode" -import { arePathsEqual } from "../../utils/path" +import { arePathsEqual } from "@utils/path" export async function openImage(dataUri: string) { const matches = dataUri.match(/^data:image\/([a-zA-Z]+);base64,(.+)$/) diff --git a/src/integrations/terminal/TerminalManager.ts b/src/integrations/terminal/TerminalManager.ts index eb640b8c9a..30344ecb1b 100644 --- a/src/integrations/terminal/TerminalManager.ts +++ b/src/integrations/terminal/TerminalManager.ts @@ -1,6 +1,6 @@ import pWaitFor from "p-wait-for" import * as vscode from "vscode" -import { arePathsEqual } from "../../utils/path" +import { arePathsEqual } from "@utils/path" import { mergePromise, TerminalProcess, TerminalProcessResultPromise } from "./TerminalProcess" import { TerminalInfo, TerminalRegistry } from "./TerminalRegistry" diff --git a/src/integrations/terminal/TerminalProcess.test.ts b/src/integrations/terminal/TerminalProcess.test.ts index ed1b07c387..7be7d7323b 100644 --- a/src/integrations/terminal/TerminalProcess.test.ts +++ b/src/integrations/terminal/TerminalProcess.test.ts @@ -4,7 +4,6 @@ import * as sinon from "sinon" import { TerminalProcess } from "./TerminalProcess" import * as vscode from "vscode" import { TerminalRegistry } from "./TerminalRegistry" -import { EventEmitter } from "events" declare module "vscode" { // https://github.com/microsoft/vscode/blob/f0417069c62e20f3667506f4b7e53ca0004b4e3e/src/vscode-dts/vscode.d.ts#L7442 diff --git a/src/integrations/workspace/WorkspaceTracker.ts b/src/integrations/workspace/WorkspaceTracker.ts index a347ad7ede..2072f9115d 100644 --- a/src/integrations/workspace/WorkspaceTracker.ts +++ b/src/integrations/workspace/WorkspaceTracker.ts @@ -1,8 +1,7 @@ import * as vscode from "vscode" import * as path from "path" -import { listFiles } from "../../services/glob/list-files" -import { Controller } from "../../core/controller" -import { ExtensionMessage } from "../../shared/ExtensionMessage" +import { listFiles } from "@services/glob/list-files" +import { ExtensionMessage } from "@shared/ExtensionMessage" const cwd = vscode.workspace.workspaceFolders?.map((folder) => folder.uri.fsPath).at(0) diff --git a/src/services/account/ClineAccountService.ts b/src/services/account/ClineAccountService.ts index 4aaef41713..64e3b7f3d2 100644 --- a/src/services/account/ClineAccountService.ts +++ b/src/services/account/ClineAccountService.ts @@ -1,6 +1,6 @@ import axios, { AxiosRequestConfig, AxiosResponse } from "axios" -import type { BalanceResponse, PaymentTransaction, UsageTransaction } from "../../shared/ClineAccount" -import { ExtensionMessage } from "../../shared/ExtensionMessage" +import type { BalanceResponse, PaymentTransaction, UsageTransaction } from "@shared/ClineAccount" +import { ExtensionMessage } from "@shared/ExtensionMessage" export class ClineAccountService { private readonly baseUrl = "https://api.cline.bot/v1" diff --git a/src/services/browser/BrowserSession.ts b/src/services/browser/BrowserSession.ts index 25c83dd59a..62f42b2044 100644 --- a/src/services/browser/BrowserSession.ts +++ b/src/services/browser/BrowserSession.ts @@ -9,13 +9,13 @@ import PCR from "puppeteer-chromium-resolver" import pWaitFor from "p-wait-for" import { setTimeout as setTimeoutPromise } from "node:timers/promises" import axios from "axios" -import { fileExistsAtPath } from "../../utils/fs" -import { BrowserActionResult } from "../../shared/ExtensionMessage" -import { BrowserSettings } from "../../shared/BrowserSettings" +import { fileExistsAtPath } from "@utils/fs" +import { BrowserActionResult } from "@shared/ExtensionMessage" +import { BrowserSettings } from "@shared/BrowserSettings" import { discoverChromeInstances, testBrowserConnection, isPortOpen } from "./BrowserDiscovery" import * as chromeLauncher from "chrome-launcher" -import { Controller } from "../../core/controller" -import { telemetryService } from "../../services/telemetry/TelemetryService" +import { Controller } from "@core/controller" +import { telemetryService } from "@services/telemetry/TelemetryService" interface PCRStats { puppeteer: { launch: typeof launch } diff --git a/src/services/browser/UrlContentFetcher.ts b/src/services/browser/UrlContentFetcher.ts index 614338503e..ef23a04f6c 100644 --- a/src/services/browser/UrlContentFetcher.ts +++ b/src/services/browser/UrlContentFetcher.ts @@ -6,7 +6,7 @@ import * as cheerio from "cheerio" import TurndownService from "turndown" // @ts-ignore import PCR from "puppeteer-chromium-resolver" -import { fileExistsAtPath } from "../../utils/fs" +import { fileExistsAtPath } from "@utils/fs" interface PCRStats { puppeteer: { launch: typeof launch } diff --git a/src/services/error/ErrorService.ts b/src/services/error/ErrorService.ts index 57374f93d7..29b78a29d6 100644 --- a/src/services/error/ErrorService.ts +++ b/src/services/error/ErrorService.ts @@ -1,6 +1,6 @@ import * as Sentry from "@sentry/browser" import * as vscode from "vscode" -import { telemetryService } from "../telemetry/TelemetryService" +import { telemetryService } from "@services/telemetry/TelemetryService" import * as pkg from "../../../package.json" let telemetryLevel = vscode.workspace.getConfiguration("telemetry").get("telemetryLevel", "all") diff --git a/src/services/glob/list-files.ts b/src/services/glob/list-files.ts index b6fd0007df..4d564d6417 100644 --- a/src/services/glob/list-files.ts +++ b/src/services/glob/list-files.ts @@ -1,7 +1,7 @@ import { globby, Options } from "globby" import os from "os" import * as path from "path" -import { arePathsEqual } from "../../utils/path" +import { arePathsEqual } from "@utils/path" export async function listFiles(dirPath: string, recursive: boolean, limit: number): Promise<[string[], boolean]> { // First resolve the path normally - path.resolve doesn't care about glob special characters diff --git a/src/services/mcp/McpHub.ts b/src/services/mcp/McpHub.ts index 08b295753a..7a40c763e1 100644 --- a/src/services/mcp/McpHub.ts +++ b/src/services/mcp/McpHub.ts @@ -24,13 +24,13 @@ import { McpTool, McpToolCallResponse, MIN_MCP_TIMEOUT_SECONDS, -} from "../../shared/mcp" -import { fileExistsAtPath } from "../../utils/fs" -import { arePathsEqual } from "../../utils/path" -import { secondsToMs } from "../../utils/time" -import { GlobalFileNames } from "../../core/storage/disk" +} from "@shared/mcp" +import { fileExistsAtPath } from "@utils/fs" +import { arePathsEqual } from "@utils/path" +import { secondsToMs } from "@utils/time" +import { GlobalFileNames } from "@core/storage/disk" import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js" -import { ExtensionMessage } from "../../shared/ExtensionMessage" +import { ExtensionMessage } from "@shared/ExtensionMessage" // Default timeout for internal MCP data requests in milliseconds; is not the same as the user facing timeout stored as DEFAULT_MCP_TIMEOUT_SECONDS const DEFAULT_REQUEST_TIMEOUT_MS = 5000 diff --git a/src/services/ripgrep/index.ts b/src/services/ripgrep/index.ts index 9b1425e2bc..69aa727011 100644 --- a/src/services/ripgrep/index.ts +++ b/src/services/ripgrep/index.ts @@ -2,8 +2,8 @@ import * as vscode from "vscode" import * as childProcess from "child_process" import * as path from "path" import * as readline from "readline" -import { fileExistsAtPath } from "../../utils/fs" -import { ClineIgnoreController } from "../../core/ignore/ClineIgnoreController" +import { fileExistsAtPath } from "@utils/fs" +import { ClineIgnoreController } from "@core/ignore/ClineIgnoreController" /* This file provides functionality to perform regex searches on files using ripgrep. diff --git a/src/services/telemetry/TelemetryService.ts b/src/services/telemetry/TelemetryService.ts index 27fa2c4666..7d84c76fdb 100644 --- a/src/services/telemetry/TelemetryService.ts +++ b/src/services/telemetry/TelemetryService.ts @@ -2,8 +2,8 @@ import { PostHog } from "posthog-node" import * as vscode from "vscode" import { version as extensionVersion } from "../../../package.json" -import type { TaskFeedbackType } from "../../shared/WebviewMessage" -import type { BrowserSettings } from "../../shared/BrowserSettings" +import type { TaskFeedbackType } from "@shared/WebviewMessage" +import type { BrowserSettings } from "@shared/BrowserSettings" /** * PostHogClient handles telemetry event tracking for the Cline extension diff --git a/src/services/test/GitHelper.ts b/src/services/test/GitHelper.ts index 6f65ab62ea..44705b0662 100644 --- a/src/services/test/GitHelper.ts +++ b/src/services/test/GitHelper.ts @@ -1,8 +1,8 @@ import * as path from "path" import * as vscode from "vscode" import { execa } from "execa" -import { Logger } from "../../services/logging/Logger" -import { WebviewProvider } from "../../core/webview" +import { Logger } from "@services/logging/Logger" +import { WebviewProvider } from "@core/webview" /** * Gets a valid workspace path for Git operations diff --git a/src/services/test/TestServer.ts b/src/services/test/TestServer.ts index 0ac27f1ce6..80698f21cf 100644 --- a/src/services/test/TestServer.ts +++ b/src/services/test/TestServer.ts @@ -2,9 +2,9 @@ import * as http from "http" import * as vscode from "vscode" import * as path from "path" import { execa } from "execa" -import { Logger } from "../../services/logging/Logger" -import { WebviewProvider } from "../../core/webview" -import { AutoApprovalSettings } from "../../shared/AutoApprovalSettings" +import { Logger } from "@services/logging/Logger" +import { WebviewProvider } from "@core/webview" +import { AutoApprovalSettings } from "@shared/AutoApprovalSettings" import { getWorkspacePath, validateWorkspacePath, @@ -12,12 +12,12 @@ import { getFileChanges, calculateToolSuccessRate, } from "./GitHelper" -import { updateGlobalState, getAllExtensionState, updateApiConfiguration, storeSecret } from "../../core/storage/state" -import { ClineAsk, ExtensionMessage } from "../../shared/ExtensionMessage" -import { ApiProvider } from "../../shared/api" -import { WebviewMessage } from "../../shared/WebviewMessage" -import { HistoryItem } from "../../shared/HistoryItem" -import { getSavedClineMessages, getSavedApiConversationHistory } from "../../core/storage/disk" +import { updateGlobalState, getAllExtensionState, updateApiConfiguration, storeSecret } from "@core/storage/state" +import { ClineAsk, ExtensionMessage } from "@shared/ExtensionMessage" +import { ApiProvider } from "@shared/api" +import { WebviewMessage } from "@shared/WebviewMessage" +import { HistoryItem } from "@shared/HistoryItem" +import { getSavedClineMessages, getSavedApiConversationHistory } from "@core/storage/disk" /** * Creates a tracker to monitor tool calls and failures during task execution diff --git a/src/services/tree-sitter/index.ts b/src/services/tree-sitter/index.ts index 90ed28c9c6..cb4db6f956 100644 --- a/src/services/tree-sitter/index.ts +++ b/src/services/tree-sitter/index.ts @@ -1,9 +1,9 @@ import * as fs from "fs/promises" import * as path from "path" -import { listFiles } from "../glob/list-files" +import { listFiles } from "@services/glob/list-files" import { LanguageParser, loadRequiredLanguageParsers } from "./languageParser" -import { fileExistsAtPath } from "../../utils/fs" -import { ClineIgnoreController } from "../../core/ignore/ClineIgnoreController" +import { fileExistsAtPath } from "@utils/fs" +import { ClineIgnoreController } from "@core/ignore/ClineIgnoreController" // TODO: implement caching behavior to avoid having to keep analyzing project for new tasks. export async function parseSourceCodeForDefinitionsTopLevel( diff --git a/src/shared/ExtensionMessage.ts b/src/shared/ExtensionMessage.ts index 0638a2c3c2..19c36599e3 100644 --- a/src/shared/ExtensionMessage.ts +++ b/src/shared/ExtensionMessage.ts @@ -6,7 +6,7 @@ import { AutoApprovalSettings } from "./AutoApprovalSettings" import { BrowserSettings } from "./BrowserSettings" import { ChatSettings } from "./ChatSettings" import { HistoryItem } from "./HistoryItem" -import { McpServer, McpMarketplaceCatalog, McpMarketplaceItem, McpDownloadResponse, McpViewTab } from "./mcp" +import { McpServer, McpMarketplaceCatalog, McpDownloadResponse, McpViewTab } from "./mcp" import { TelemetrySetting } from "./TelemetrySetting" import type { BalanceResponse, UsageTransaction, PaymentTransaction } from "../shared/ClineAccount" import { ClineRulesToggles } from "./cline-rules" diff --git a/src/test/services/search/file-search.test.ts b/src/test/services/search/file-search.test.ts index 5520c51fe9..25defbf58c 100644 --- a/src/test/services/search/file-search.test.ts +++ b/src/test/services/search/file-search.test.ts @@ -6,9 +6,8 @@ import type { FzfResultItem } from "fzf" import * as childProcess from "child_process" import * as vscode from "vscode" import * as fs from "fs" -import * as path from "path" -import * as fileSearch from "../../../services/search/file-search" -import * as ripgrep from "../../../services/ripgrep" +import * as fileSearch from "@services/search/file-search" +import * as ripgrep from "@services/ripgrep" describe("File Search", function () { let sandbox: sinon.SinonSandbox diff --git a/src/test/shell.test.ts b/src/test/shell.test.ts index dbdf0db6fa..4a1b1bf3af 100644 --- a/src/test/shell.test.ts +++ b/src/test/shell.test.ts @@ -1,6 +1,6 @@ import { describe, it, beforeEach, afterEach } from "mocha" import { expect } from "chai" -import { getShell } from "../utils/shell" +import { getShell } from "@utils/shell" import * as vscode from "vscode" import { userInfo } from "os" diff --git a/src/test/webview/chat-native.test.ts b/src/test/webview/chat-native.test.ts index bb73703b6b..6ff265d9d3 100644 --- a/src/test/webview/chat-native.test.ts +++ b/src/test/webview/chat-native.test.ts @@ -1,7 +1,6 @@ import * as vscode from "vscode" import { describe, it, beforeEach, afterEach } from "mocha" import { strict as assert } from "assert" -import { join } from "path" describe("Chat Integration Tests", () => { let panel: vscode.WebviewPanel let disposables: vscode.Disposable[] = [] diff --git a/src/utils/cost.test.ts b/src/utils/cost.test.ts index d234c7acf1..eede24406b 100644 --- a/src/utils/cost.test.ts +++ b/src/utils/cost.test.ts @@ -1,7 +1,7 @@ import { describe, it } from "mocha" import "should" -import { calculateApiCostAnthropic, calculateApiCostOpenAI } from "./cost" -import { ModelInfo } from "../shared/api" +import { calculateApiCostAnthropic, calculateApiCostOpenAI } from "@utils/cost" +import { ModelInfo } from "@shared/api" describe("Cost Utilities", () => { describe("calculateApiCostAnthropic", () => { diff --git a/src/utils/cost.ts b/src/utils/cost.ts index 85a1c7b89a..d383575620 100644 --- a/src/utils/cost.ts +++ b/src/utils/cost.ts @@ -1,4 +1,4 @@ -import { ModelInfo } from "../shared/api" +import { ModelInfo } from "@shared/api" function calculateApiCostInternal( modelInfo: ModelInfo, diff --git a/src/utils/validation.ts b/src/utils/validation.ts index d285e20c0d..c96cb7a301 100644 --- a/src/utils/validation.ts +++ b/src/utils/validation.ts @@ -1,4 +1,4 @@ -import { anthropicModels } from "../shared/api" +import { anthropicModels } from "@shared/api" /** * Validates the thinking budget token value according to the specified rules: diff --git a/tsconfig.unit-test.json b/tsconfig.unit-test.json index f4de9918dd..349b36ac44 100644 --- a/tsconfig.unit-test.json +++ b/tsconfig.unit-test.json @@ -3,6 +3,9 @@ "compilerOptions": { "module": "commonjs" }, + "ts-node": { + "require": ["tsconfig-paths/register"] + }, "include": ["test/**/*.ts"], "exclude": ["node_modules"] }