What's yer path? (#3047)

* update extension imports to use aliasing

* changeset
This commit is contained in:
Evan 2025-04-21 16:49:44 -07:00 committed by GitHub
parent b3b7b9da5f
commit 99bbe17df9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
82 changed files with 311 additions and 270 deletions

View File

@ -0,0 +1,5 @@
---
"claude-dev": minor
---
Update the extension import paths to use aliasing

View File

@ -26,11 +26,41 @@ const aliasResolverPlugin = {
const aliasRegex = new RegExp(`^${alias}($|/.*)`) const aliasRegex = new RegExp(`^${alias}($|/.*)`)
build.onResolve({ filter: aliasRegex }, (args) => { build.onResolve({ filter: aliasRegex }, (args) => {
const importPath = args.path.replace(alias, aliasPath) 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 } return { path: importPath }
}) })
}) })
}, },
} }
const esbuildProblemMatcherPlugin = { const esbuildProblemMatcherPlugin = {
name: "esbuild-problem-matcher", name: "esbuild-problem-matcher",

33
package-lock.json generated
View File

@ -1,12 +1,12 @@
{ {
"name": "claude-dev", "name": "claude-dev",
"version": "3.12.3", "version": "3.13.1",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "claude-dev", "name": "claude-dev",
"version": "3.12.3", "version": "3.13.1",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@anthropic-ai/bedrock-sdk": "^0.12.4", "@anthropic-ai/bedrock-sdk": "^0.12.4",
@ -95,6 +95,7 @@
"sinon": "^19.0.2", "sinon": "^19.0.2",
"ts-node": "^10.9.2", "ts-node": "^10.9.2",
"ts-proto": "^2.6.1", "ts-proto": "^2.6.1",
"tsconfig-paths": "^4.2.0",
"typescript": "^5.4.5" "typescript": "^5.4.5"
}, },
"engines": { "engines": {
@ -13542,6 +13543,19 @@
"dev": true, "dev": true,
"license": "MIT" "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": { "node_modules/jsonfile": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
@ -17108,6 +17122,21 @@
"@bufbuild/protobuf": "^2.0.0" "@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": { "node_modules/tslib": {
"version": "1.14.1", "version": "1.14.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",

View File

@ -350,6 +350,7 @@
"sinon": "^19.0.2", "sinon": "^19.0.2",
"ts-node": "^10.9.2", "ts-node": "^10.9.2",
"ts-proto": "^2.6.1", "ts-proto": "^2.6.1",
"tsconfig-paths": "^4.2.0",
"typescript": "^5.4.5" "typescript": "^5.4.5"
}, },
"dependencies": { "dependencies": {

View File

@ -3,7 +3,7 @@ import "should"
import sinon from "sinon" import sinon from "sinon"
import { Anthropic } from "@anthropic-ai/sdk" import { Anthropic } from "@anthropic-ai/sdk"
import { OllamaHandler } from "../ollama" import { OllamaHandler } from "../ollama"
import { ApiHandlerOptions } from "../../../shared/api" import { ApiHandlerOptions } from "@shared/api"
import axios from "axios" import axios from "axios"
describe("OllamaHandler", () => { describe("OllamaHandler", () => {

View File

@ -1,7 +1,7 @@
import { Anthropic } from "@anthropic-ai/sdk" import { Anthropic } from "@anthropic-ai/sdk"
import { Stream as AnthropicStream } from "@anthropic-ai/sdk/streaming" import { Stream as AnthropicStream } from "@anthropic-ai/sdk/streaming"
import { withRetry } from "../retry" 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 { ApiHandler } from "../index"
import { ApiStream } from "../transform/stream" import { ApiStream } from "../transform/stream"

View File

@ -7,7 +7,7 @@ import {
askSageModels, askSageModels,
askSageDefaultModelId, askSageDefaultModelId,
askSageDefaultURL, askSageDefaultURL,
} from "../../shared/api" } from "@shared/api"
import { ApiStream } from "../transform/stream" import { ApiStream } from "../transform/stream"
type AskSageRequest = { type AskSageRequest = {

View File

@ -3,7 +3,7 @@ import { Anthropic } from "@anthropic-ai/sdk"
import { withRetry } from "../retry" import { withRetry } from "../retry"
import { ApiHandler } from "../" import { ApiHandler } from "../"
import { convertToR1Format } from "../transform/r1-format" 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 { calculateApiCostOpenAI } from "../../utils/cost"
import { ApiStream } from "../transform/stream" import { ApiStream } from "../transform/stream"
import { fromNodeProviderChain } from "@aws-sdk/credential-providers" import { fromNodeProviderChain } from "@aws-sdk/credential-providers"

View File

@ -1,7 +1,7 @@
import { Anthropic } from "@anthropic-ai/sdk" import { Anthropic } from "@anthropic-ai/sdk"
import OpenAI from "openai" import OpenAI from "openai"
import { ApiHandler } from "../" 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 { createOpenRouterStream } from "../transform/openrouter-stream"
import { ApiStream, ApiStreamUsageChunk } from "../transform/stream" import { ApiStream, ApiStreamUsageChunk } from "../transform/stream"
import axios from "axios" import axios from "axios"

View File

@ -2,7 +2,7 @@ import { Anthropic } from "@anthropic-ai/sdk"
import OpenAI from "openai" import OpenAI from "openai"
import { withRetry } from "../retry" import { withRetry } from "../retry"
import { ApiHandler } from "../" 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 { calculateApiCostOpenAI } from "../../utils/cost"
import { convertToOpenAiMessages } from "../transform/openai-format" import { convertToOpenAiMessages } from "../transform/openai-format"
import { ApiStream } from "../transform/stream" import { ApiStream } from "../transform/stream"

View File

@ -1,5 +1,5 @@
import { ApiHandler } from ".." 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 { Anthropic } from "@anthropic-ai/sdk"
import OpenAI from "openai" import OpenAI from "openai"
import { convertToOpenAiMessages } from "../transform/openai-format" import { convertToOpenAiMessages } from "../transform/openai-format"

View File

@ -2,7 +2,7 @@ import { Anthropic } from "@anthropic-ai/sdk"
import { GoogleGenerativeAI } from "@google/generative-ai" import { GoogleGenerativeAI } from "@google/generative-ai"
import { withRetry } from "../retry" import { withRetry } from "../retry"
import { ApiHandler } from "../" 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 { convertAnthropicMessageToGemini } from "../transform/gemini-format"
import { ApiStream } from "../transform/stream" import { ApiStream } from "../transform/stream"

View File

@ -1,6 +1,6 @@
import { Anthropic } from "@anthropic-ai/sdk" import { Anthropic } from "@anthropic-ai/sdk"
import OpenAI from "openai" import OpenAI from "openai"
import { ApiHandlerOptions, liteLlmDefaultModelId, liteLlmModelInfoSaneDefaults } from "../../shared/api" import { ApiHandlerOptions, liteLlmDefaultModelId, liteLlmModelInfoSaneDefaults } from "@shared/api"
import { ApiHandler } from ".." import { ApiHandler } from ".."
import { ApiStream } from "../transform/stream" import { ApiStream } from "../transform/stream"
import { convertToOpenAiMessages } from "../transform/openai-format" import { convertToOpenAiMessages } from "../transform/openai-format"

View File

@ -1,7 +1,7 @@
import { Anthropic } from "@anthropic-ai/sdk" import { Anthropic } from "@anthropic-ai/sdk"
import OpenAI from "openai" import OpenAI from "openai"
import { ApiHandler } from "../" import { ApiHandler } from "../"
import { ApiHandlerOptions, ModelInfo, openAiModelInfoSaneDefaults } from "../../shared/api" import { ApiHandlerOptions, ModelInfo, openAiModelInfoSaneDefaults } from "@shared/api"
import { convertToOpenAiMessages } from "../transform/openai-format" import { convertToOpenAiMessages } from "../transform/openai-format"
import { ApiStream } from "../transform/stream" import { ApiStream } from "../transform/stream"

View File

@ -2,16 +2,7 @@ import { Anthropic } from "@anthropic-ai/sdk"
import { Mistral } from "@mistralai/mistralai" import { Mistral } from "@mistralai/mistralai"
import { withRetry } from "../retry" import { withRetry } from "../retry"
import { ApiHandler } from "../" import { ApiHandler } from "../"
import { import { ApiHandlerOptions, mistralDefaultModelId, MistralModelId, mistralModels, ModelInfo } from "@shared/api"
ApiHandlerOptions,
mistralDefaultModelId,
MistralModelId,
mistralModels,
ModelInfo,
openAiNativeDefaultModelId,
OpenAiNativeModelId,
openAiNativeModels,
} from "../../shared/api"
import { convertToMistralMessages } from "../transform/mistral-format" import { convertToMistralMessages } from "../transform/mistral-format"
import { ApiStream } from "../transform/stream" import { ApiStream } from "../transform/stream"

View File

@ -2,13 +2,7 @@ import { Anthropic } from "@anthropic-ai/sdk"
import OpenAI from "openai" import OpenAI from "openai"
import { withRetry } from "../retry" import { withRetry } from "../retry"
import { ApiHandler } from "../" import { ApiHandler } from "../"
import { import { ApiHandlerOptions, ModelInfo, openAiNativeDefaultModelId, OpenAiNativeModelId, openAiNativeModels } from "@shared/api"
ApiHandlerOptions,
ModelInfo,
openAiNativeDefaultModelId,
OpenAiNativeModelId,
openAiNativeModels,
} from "../../shared/api"
import { convertToOpenAiMessages } from "../transform/openai-format" import { convertToOpenAiMessages } from "../transform/openai-format"
import { calculateApiCostOpenAI } from "../../utils/cost" import { calculateApiCostOpenAI } from "../../utils/cost"
import { ApiStream } from "../transform/stream" import { ApiStream } from "../transform/stream"

View File

@ -1,7 +1,7 @@
import { Anthropic } from "@anthropic-ai/sdk" import { Anthropic } from "@anthropic-ai/sdk"
import OpenAI, { AzureOpenAI } from "openai" import OpenAI, { AzureOpenAI } from "openai"
import { withRetry } from "../retry" 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 { ApiHandler } from "../index"
import { convertToOpenAiMessages } from "../transform/openai-format" import { convertToOpenAiMessages } from "../transform/openai-format"
import { ApiStream } from "../transform/stream" import { ApiStream } from "../transform/stream"

View File

@ -3,7 +3,7 @@ import axios from "axios"
import { setTimeout as setTimeoutPromise } from "node:timers/promises" import { setTimeout as setTimeoutPromise } from "node:timers/promises"
import OpenAI from "openai" import OpenAI from "openai"
import { ApiHandler } from "../" import { ApiHandler } from "../"
import { ApiHandlerOptions, ModelInfo, openRouterDefaultModelId, openRouterDefaultModelInfo } from "../../shared/api" import { ApiHandlerOptions, ModelInfo, openRouterDefaultModelId, openRouterDefaultModelInfo } from "@shared/api"
import { withRetry } from "../retry" import { withRetry } from "../retry"
import { createOpenRouterStream } from "../transform/openrouter-stream" import { createOpenRouterStream } from "../transform/openrouter-stream"
import { ApiStream, ApiStreamUsageChunk } from "../transform/stream" import { ApiStream, ApiStreamUsageChunk } from "../transform/stream"

View File

@ -10,7 +10,7 @@ import {
internationalQwenDefaultModelId, internationalQwenDefaultModelId,
MainlandQwenModelId, MainlandQwenModelId,
InternationalQwenModelId, InternationalQwenModelId,
} from "../../shared/api" } from "@shared/api"
import { convertToOpenAiMessages } from "../transform/openai-format" import { convertToOpenAiMessages } from "../transform/openai-format"
import { ApiStream } from "../transform/stream" import { ApiStream } from "../transform/stream"
import { convertToR1Format } from "../transform/r1-format" import { convertToR1Format } from "../transform/r1-format"

View File

@ -1,11 +1,11 @@
import { Anthropic } from "@anthropic-ai/sdk" import { Anthropic } from "@anthropic-ai/sdk"
import OpenAI from "openai" 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 { ApiHandler } from "../index"
import { withRetry } from "../retry" import { withRetry } from "../retry"
import { convertToOpenAiMessages } from "../transform/openai-format" import { convertToOpenAiMessages } from "@api/transform/openai-format"
import { calculateApiCostOpenAI } from "../../utils/cost" import { calculateApiCostOpenAI } from "@utils/cost"
import { ApiStream } from "../transform/stream" import { ApiStream } from "@api/transform/stream"
export class RequestyHandler implements ApiHandler { export class RequestyHandler implements ApiHandler {
private options: ApiHandlerOptions private options: ApiHandlerOptions

View File

@ -1,11 +1,11 @@
import { Anthropic } from "@anthropic-ai/sdk" import { Anthropic } from "@anthropic-ai/sdk"
import OpenAI from "openai" import OpenAI from "openai"
import { withRetry } from "../retry" 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 { ApiHandler } from "../index"
import { convertToOpenAiMessages } from "../transform/openai-format" import { convertToOpenAiMessages } from "@/api/transform/openai-format"
import { ApiStream } from "../transform/stream" import { ApiStream } from "@api/transform/stream"
import { convertToR1Format } from "../transform/r1-format" import { convertToR1Format } from "@api/transform/r1-format"
export class SambanovaHandler implements ApiHandler { export class SambanovaHandler implements ApiHandler {
private options: ApiHandlerOptions private options: ApiHandlerOptions

View File

@ -1,11 +1,11 @@
import { Anthropic } from "@anthropic-ai/sdk" import { Anthropic } from "@anthropic-ai/sdk"
import OpenAI from "openai" import OpenAI from "openai"
import { withRetry } from "../retry" import { withRetry } from "../retry"
import { ApiHandlerOptions, ModelInfo, openAiModelInfoSaneDefaults } from "../../shared/api" import { ApiHandlerOptions, ModelInfo, openAiModelInfoSaneDefaults } from "@shared/api"
import { ApiHandler } from "../index" import { ApiHandler } from "../index"
import { convertToOpenAiMessages } from "../transform/openai-format" import { convertToOpenAiMessages } from "@api/transform/openai-format"
import { ApiStream } from "../transform/stream" import { ApiStream } from "@api/transform/stream"
import { convertToR1Format } from "../transform/r1-format" import { convertToR1Format } from "@api/transform/r1-format"
export class TogetherHandler implements ApiHandler { export class TogetherHandler implements ApiHandler {
private options: ApiHandlerOptions private options: ApiHandlerOptions

View File

@ -2,10 +2,10 @@ import { Anthropic } from "@anthropic-ai/sdk"
import { AnthropicVertex } from "@anthropic-ai/vertex-sdk" import { AnthropicVertex } from "@anthropic-ai/vertex-sdk"
import { withRetry } from "../retry" import { withRetry } from "../retry"
import { ApiHandler } from "../" import { ApiHandler } from "../"
import { ApiHandlerOptions, ModelInfo, vertexDefaultModelId, VertexModelId, vertexModels } from "../../shared/api" import { ApiHandlerOptions, ModelInfo, vertexDefaultModelId, VertexModelId, vertexModels } from "@shared/api"
import { ApiStream } from "../transform/stream" import { ApiStream } from "@api/transform/stream"
import { VertexAI } from "@google-cloud/vertexai" 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 // https://docs.anthropic.com/en/api/claude-on-vertex-ai
export class VertexHandler implements ApiHandler { export class VertexHandler implements ApiHandler {

View File

@ -1,11 +1,11 @@
import { Anthropic } from "@anthropic-ai/sdk" import { Anthropic } from "@anthropic-ai/sdk"
import * as vscode from "vscode" import * as vscode from "vscode"
import { ApiHandler, SingleCompletionHandler } from "../" import { ApiHandler, SingleCompletionHandler } from "../"
import { calculateApiCostAnthropic } from "../../utils/cost" import { calculateApiCostAnthropic } from "@utils/cost"
import { ApiStream } from "../transform/stream" import { ApiStream } from "@api/transform/stream"
import { convertToVsCodeLmMessages } from "../transform/vscode-lm-format" import { convertToVsCodeLmMessages } from "@api/transform/vscode-lm-format"
import { SELECTOR_SEPARATOR, stringifyVsCodeLmModelSelector } from "../../shared/vsCodeSelectorUtils" import { SELECTOR_SEPARATOR, stringifyVsCodeLmModelSelector } from "@shared/vsCodeSelectorUtils"
import { ApiHandlerOptions, ModelInfo, openAiModelInfoSaneDefaults } from "../../shared/api" import { ApiHandlerOptions, ModelInfo, openAiModelInfoSaneDefaults } from "@shared/api"
import type { LanguageModelChatSelector as LanguageModelChatSelectorFromTypes } from "./types" import type { LanguageModelChatSelector as LanguageModelChatSelectorFromTypes } from "./types"
// Cline does not update VSCode type definitions or engine requirements to maintain compatibility. // Cline does not update VSCode type definitions or engine requirements to maintain compatibility.

View File

@ -1,9 +1,9 @@
import { Anthropic } from "@anthropic-ai/sdk" import { Anthropic } from "@anthropic-ai/sdk"
import OpenAI from "openai" import OpenAI from "openai"
import { ApiHandler } from "../" import { ApiHandler } from "../"
import { ApiHandlerOptions, XAIModelId, ModelInfo, xaiDefaultModelId, xaiModels } from "../../shared/api" import { ApiHandlerOptions, XAIModelId, ModelInfo, xaiDefaultModelId, xaiModels } from "@shared/api"
import { convertToOpenAiMessages } from "../transform/openai-format" import { convertToOpenAiMessages } from "@api/transform/openai-format"
import { ApiStream } from "../transform/stream" import { ApiStream } from "@api/transform/stream"
import { ChatCompletionReasoningEffort } from "openai/resources/chat/completions" import { ChatCompletionReasoningEffort } from "openai/resources/chat/completions"
export class XAIHandler implements ApiHandler { export class XAIHandler implements ApiHandler {

View File

@ -1,10 +1,8 @@
import { ModelInfo } from "../../shared/api" import { ModelInfo } from "@shared/api"
import { convertToOpenAiMessages } from "./openai-format" import { convertToOpenAiMessages } from "@api/transform/openai-format"
import { convertToR1Format } from "./r1-format" import { convertToR1Format } from "@api/transform/r1-format"
import { ApiStream, ApiStreamChunk } from "./stream"
import { Anthropic } from "@anthropic-ai/sdk" import { Anthropic } from "@anthropic-ai/sdk"
import OpenAI from "openai" import OpenAI from "openai"
import { OpenRouterErrorResponse } from "../providers/types"
export async function createOpenRouterStream( export async function createOpenRouterStream(
client: OpenAI, client: OpenAI,

View File

@ -1,6 +1,6 @@
import { Anthropic } from "@anthropic-ai/sdk" import { Anthropic } from "@anthropic-ai/sdk"
import { ClineApiReqInfo, ClineMessage } from "../../../shared/ExtensionMessage" import { ClineApiReqInfo, ClineMessage } from "@shared/ExtensionMessage"
import { ApiHandler } from "../../../api" import { ApiHandler } from "@api/index"
import { getContextWindowInfo } from "./context-window-utils" import { getContextWindowInfo } from "./context-window-utils"
class ContextManager { class ContextManager {

View File

@ -1,12 +1,12 @@
import { getContextWindowInfo } from "./context-window-utils" import { getContextWindowInfo } from "./context-window-utils"
import { formatResponse } from "../../prompts/responses" import { formatResponse } from "@core/prompts/responses"
import { GlobalFileNames } from "../../storage/disk" import { GlobalFileNames } from "@core/storage/disk"
import { fileExistsAtPath } from "../../../utils/fs" import { fileExistsAtPath } from "@utils/fs"
import * as path from "path" import * as path from "path"
import fs from "fs/promises" import fs from "fs/promises"
import cloneDeep from "clone-deep" import cloneDeep from "clone-deep"
import { ClineApiReqInfo, ClineMessage } from "../../../shared/ExtensionMessage" import { ClineApiReqInfo, ClineMessage } from "@shared/ExtensionMessage"
import { ApiHandler } from "../../../api" import { ApiHandler } from "@api/index"
import { Anthropic } from "@anthropic-ai/sdk" import { Anthropic } from "@anthropic-ai/sdk"
enum EditType { enum EditType {

View File

@ -1,5 +1,5 @@
import { ApiHandler } from "../../../api" import { ApiHandler } from "@api/index"
import { OpenAiHandler } from "../../../api/providers/openai" import { OpenAiHandler } from "@api/providers/openai"
/** /**
* Gets context window information for the given API handler * Gets context window information for the given API handler

View File

@ -1,5 +1,3 @@
import * as vscode from "vscode"
// Type definitions for FileContextTracker // Type definitions for FileContextTracker
export interface FileMetadataEntry { export interface FileMetadataEntry {
path: string path: string

View File

@ -4,7 +4,7 @@ import * as sinon from "sinon"
import * as vscode from "vscode" import * as vscode from "vscode"
import * as path from "path" import * as path from "path"
import { FileContextTracker } from "./FileContextTracker" import { FileContextTracker } from "./FileContextTracker"
import * as diskModule from "../../storage/disk" import * as diskModule from "@core/storage/disk"
import type { TaskMetadata, FileMetadataEntry } from "./ContextTrackerTypes" import type { TaskMetadata, FileMetadataEntry } from "./ContextTrackerTypes"
describe("FileContextTracker", () => { describe("FileContextTracker", () => {

View File

@ -1,6 +1,6 @@
import * as path from "path" import * as path from "path"
import * as vscode from "vscode" import * as vscode from "vscode"
import { getTaskMetadata, saveTaskMetadata } from "../../storage/disk" import { getTaskMetadata, saveTaskMetadata } from "@core/storage/disk"
import type { FileMetadataEntry } from "./ContextTrackerTypes" import type { FileMetadataEntry } from "./ContextTrackerTypes"
// This class is responsible for tracking file operations that may result in stale context. // This class is responsible for tracking file operations that may result in stale context.

View File

@ -3,7 +3,7 @@ import { expect } from "chai"
import * as sinon from "sinon" import * as sinon from "sinon"
import * as vscode from "vscode" import * as vscode from "vscode"
import { ModelContextTracker } from "./ModelContextTracker" import { ModelContextTracker } from "./ModelContextTracker"
import * as diskModule from "../../storage/disk" import * as diskModule from "@core/storage/disk"
import type { TaskMetadata } from "./ContextTrackerTypes" import type { TaskMetadata } from "./ContextTrackerTypes"
describe("ModelContextTracker", () => { describe("ModelContextTracker", () => {

View File

@ -1,5 +1,5 @@
import * as vscode from "vscode" import * as vscode from "vscode"
import { getTaskMetadata, saveTaskMetadata } from "../../storage/disk" import { getTaskMetadata, saveTaskMetadata } from "@core/storage/disk"
export class ModelContextTracker { export class ModelContextTracker {
readonly taskId: string readonly taskId: string

View File

@ -1,10 +1,10 @@
import path from "path" import path from "path"
import { ensureRulesDirectoryExists, GlobalFileNames } from "../../../storage/disk" import { ensureRulesDirectoryExists, GlobalFileNames } from "@core/storage/disk"
import { fileExistsAtPath, isDirectory, readDirectory } from "../../../../utils/fs" import { fileExistsAtPath, isDirectory, readDirectory } from "@utils/fs"
import { formatResponse } from "../../../prompts/responses" import { formatResponse } from "@core/prompts/responses"
import fs from "fs/promises" import fs from "fs/promises"
import { ClineRulesToggles } from "../../../../shared/cline-rules" import { ClineRulesToggles } from "@shared/cline-rules"
import { getGlobalState, getWorkspaceState, updateGlobalState, updateWorkspaceState } from "../../../storage/state" import { getGlobalState, getWorkspaceState, updateGlobalState, updateWorkspaceState } from "@core/storage/state"
import * as vscode from "vscode" import * as vscode from "vscode"
export const getGlobalClineRules = async (globalClineRulesFilePath: string, toggles: ClineRulesToggles) => { export const getGlobalClineRules = async (globalClineRulesFilePath: string, toggles: ClineRulesToggles) => {

View File

@ -1,9 +1,9 @@
import { BrowserConnection } from "../../../shared/proto/browser" import { BrowserConnection } from "@shared/proto/browser"
import { EmptyRequest } from "../../../shared/proto/common" import { EmptyRequest } from "@shared/proto/common"
import { Controller } from "../index" import { Controller } from "../index"
import { getAllExtensionState } from "../../storage/state" import { getAllExtensionState } from "@core/storage/state"
import { BrowserSession } from "../../../services/browser/BrowserSession" import { BrowserSession } from "@services/browser/BrowserSession"
import { discoverChromeInstances } from "../../../services/browser/BrowserDiscovery" import { discoverChromeInstances } from "@services/browser/BrowserDiscovery"
/** /**
* Discover Chrome instances * Discover Chrome instances

View File

@ -1,7 +1,7 @@
import { BrowserConnectionInfo } from "../../../shared/proto/browser" import { BrowserConnectionInfo } from "@shared/proto/browser"
import { EmptyRequest } from "../../../shared/proto/common" import { EmptyRequest } from "@shared/proto/common"
import { Controller } from "../index" import { Controller } from "../index"
import { getAllExtensionState } from "../../storage/state" import { getAllExtensionState } from "@core/storage/state"
/** /**
* Get information about the current browser connection * Get information about the current browser connection

View File

@ -1,9 +1,9 @@
import { BrowserConnection } from "../../../shared/proto/browser" import { BrowserConnection } from "@shared/proto/browser"
import { StringRequest } from "../../../shared/proto/common" import { StringRequest } from "@shared/proto/common"
import { Controller } from "../index" import { Controller } from "../index"
import { getAllExtensionState } from "../../storage/state" import { getAllExtensionState } from "@core/storage/state"
import { BrowserSession } from "../../../services/browser/BrowserSession" import { BrowserSession } from "@services/browser/BrowserSession"
import { discoverChromeInstances } from "../../../services/browser/BrowserDiscovery" import { discoverChromeInstances } from "@services/browser/BrowserDiscovery"
/** /**
* Test connection to a browser instance * Test connection to a browser instance

View File

@ -1,5 +1,5 @@
import { Controller } from ".." 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<Empty> { export async function checkpointDiff(controller: Controller, request: Int64Request): Promise<Empty> {
if (request.value) { if (request.value) {

View File

@ -1,6 +1,5 @@
import { Controller } from "./index" import { Controller } from "./index"
import { handleBrowserServiceRequest } from "./browser/index" import { handleBrowserServiceRequest } from "./browser/index"
import { ExtensionMessage } from "../../shared/ExtensionMessage"
import { handleCheckpointsDiffServiceRequest } from "./checkpoints" import { handleCheckpointsDiffServiceRequest } from "./checkpoints"
/** /**

View File

@ -8,32 +8,31 @@ import pWaitFor from "p-wait-for"
import * as path from "path" import * as path from "path"
import * as vscode from "vscode" import * as vscode from "vscode"
import { handleGrpcRequest } from "./grpc-handler" import { handleGrpcRequest } from "./grpc-handler"
import { buildApiHandler } from "../../api" import { buildApiHandler } from "@api/index"
import { cleanupLegacyCheckpoints } from "../../integrations/checkpoints/CheckpointMigration" import { cleanupLegacyCheckpoints } from "@integrations/checkpoints/CheckpointMigration"
import { downloadTask } from "../../integrations/misc/export-markdown" import { downloadTask } from "@integrations/misc/export-markdown"
import { fetchOpenGraphData, isImageUrl } from "../../integrations/misc/link-preview" import { fetchOpenGraphData, isImageUrl } from "@integrations/misc/link-preview"
import { openFile, openImage } from "../../integrations/misc/open-file" import { openFile, openImage } from "@integrations/misc/open-file"
import { selectImages } from "../../integrations/misc/process-images" import { selectImages } from "@integrations/misc/process-images"
import { getTheme } from "../../integrations/theme/getTheme" import { getTheme } from "@integrations/theme/getTheme"
import WorkspaceTracker from "../../integrations/workspace/WorkspaceTracker" import WorkspaceTracker from "@integrations/workspace/WorkspaceTracker"
import { ClineAccountService } from "../../services/account/ClineAccountService" import { ClineAccountService } from "@services/account/ClineAccountService"
import { discoverChromeInstances } from "../../services/browser/BrowserDiscovery" import { BrowserSession } from "@services/browser/BrowserSession"
import { BrowserSession } from "../../services/browser/BrowserSession" import { McpHub } from "@services/mcp/McpHub"
import { McpHub } from "../../services/mcp/McpHub" import { searchWorkspaceFiles } from "@services/search/file-search"
import { searchWorkspaceFiles } from "../../services/search/file-search" import { telemetryService } from "@services/telemetry/TelemetryService"
import { telemetryService } from "../../services/telemetry/TelemetryService" import { ApiProvider, ModelInfo } from "@shared/api"
import { ApiProvider, ModelInfo } from "../../shared/api" import { ChatContent } from "@shared/ChatContent"
import { ChatContent } from "../../shared/ChatContent" import { ChatSettings } from "@shared/ChatSettings"
import { ChatSettings } from "../../shared/ChatSettings" import { ExtensionMessage, ExtensionState, Invoke, Platform } from "@shared/ExtensionMessage"
import { ExtensionMessage, ExtensionState, Invoke, Platform } from "../../shared/ExtensionMessage" import { HistoryItem } from "@shared/HistoryItem"
import { HistoryItem } from "../../shared/HistoryItem" import { McpDownloadResponse, McpMarketplaceCatalog, McpServer } from "@shared/mcp"
import { McpDownloadResponse, McpMarketplaceCatalog, McpServer } from "../../shared/mcp" import { TelemetrySetting } from "@shared/TelemetrySetting"
import { TelemetrySetting } from "../../shared/TelemetrySetting" import { ClineCheckpointRestore, WebviewMessage } from "@shared/WebviewMessage"
import { ClineCheckpointRestore, WebviewMessage } from "../../shared/WebviewMessage" import { fileExistsAtPath } from "@utils/fs"
import { fileExistsAtPath } from "../../utils/fs" import { searchCommits } from "@utils/git"
import { searchCommits } from "../../utils/git" import { getWorkspacePath } from "@utils/path"
import { getWorkspacePath } from "../../utils/path" import { getTotalTasksSize } from "@utils/storage"
import { getTotalTasksSize } from "../../utils/storage"
import { openMention } from "../mentions" import { openMention } from "../mentions"
import { ensureMcpServersDirectoryExists, ensureSettingsDirectoryExists, GlobalFileNames } from "../storage/disk" import { ensureMcpServersDirectoryExists, ensureSettingsDirectoryExists, GlobalFileNames } from "../storage/disk"
import { import {
@ -48,7 +47,7 @@ import {
updateWorkspaceState, updateWorkspaceState,
} from "../storage/state" } from "../storage/state"
import { Task, cwd } from "../task" 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" import { createRuleFile, deleteRuleFile, refreshClineRulesToggles } from "../context/instructions/user-instructions/cline-rules"
/* /*

View File

@ -1,5 +1,5 @@
import path from "path" import path from "path"
import { fileExistsAtPath } from "../../utils/fs" import { fileExistsAtPath } from "@utils/fs"
import fs from "fs/promises" import fs from "fs/promises"
import ignore, { Ignore } from "ignore" import ignore, { Ignore } from "ignore"
import * as vscode from "vscode" import * as vscode from "vscode"

View File

@ -1,15 +1,15 @@
import * as vscode from "vscode" import * as vscode from "vscode"
import * as path from "path" import * as path from "path"
import { openFile } from "../../integrations/misc/open-file" import { openFile } from "@integrations/misc/open-file"
import { UrlContentFetcher } from "../../services/browser/UrlContentFetcher" import { UrlContentFetcher } from "@services/browser/UrlContentFetcher"
import { mentionRegexGlobal } from "../../shared/context-mentions" import { mentionRegexGlobal } from "@shared/context-mentions"
import fs from "fs/promises" import fs from "fs/promises"
import { extractTextFromFile } from "../../integrations/misc/extract-text" import { extractTextFromFile } from "@integrations/misc/extract-text"
import { isBinaryFile } from "isbinaryfile" import { isBinaryFile } from "isbinaryfile"
import { diagnosticsToProblemsString } from "../../integrations/diagnostics" import { diagnosticsToProblemsString } from "@integrations/diagnostics"
import { getLatestTerminalOutput } from "../../integrations/terminal/get-latest-output" import { getLatestTerminalOutput } from "@integrations/terminal/get-latest-output"
import { getCommitInfo } from "../../utils/git" import { getCommitInfo } from "@utils/git"
import { getWorkingState } from "../../utils/git" import { getWorkingState } from "@utils/git"
import { FileContextTracker } from "../context/context-tracking/FileContextTracker" import { FileContextTracker } from "../context/context-tracking/FileContextTracker"
export function openMention(mention?: string): void { export function openMention(mention?: string): void {

View File

@ -1,4 +1,4 @@
import { McpHub } from "../../services/mcp/McpHub" import { McpHub } from "@services/mcp/McpHub"
export async function loadMcpDocumentation(mcpHub: McpHub) { export async function loadMcpDocumentation(mcpHub: McpHub) {
return `## Creating an MCP Server return `## Creating an MCP Server

View File

@ -2,7 +2,6 @@ import { Anthropic } from "@anthropic-ai/sdk"
import * as diff from "diff" import * as diff from "diff"
import * as path from "path" import * as path from "path"
import { ClineIgnoreController, LOCK_TEXT_SYMBOL } from "../ignore/ClineIgnoreController" import { ClineIgnoreController, LOCK_TEXT_SYMBOL } from "../ignore/ClineIgnoreController"
import { McpToolCallResponse } from "../../shared/mcp"
export const formatResponse = { export const formatResponse = {
duplicateFileReadNotice: () => duplicateFileReadNotice: () =>

View File

@ -1,8 +1,8 @@
import { getShell } from "../../utils/shell" import { getShell } from "@utils/shell"
import os from "os" import os from "os"
import osName from "os-name" import osName from "os-name"
import { McpHub } from "../../services/mcp/McpHub" import { McpHub } from "@services/mcp/McpHub"
import { BrowserSettings } from "../../shared/BrowserSettings" import { BrowserSettings } from "@shared/BrowserSettings"
export const SYSTEM_PROMPT = async ( export const SYSTEM_PROMPT = async (
cwd: string, cwd: string,

View File

@ -2,9 +2,9 @@ import * as path from "path"
import * as vscode from "vscode" import * as vscode from "vscode"
import fs from "fs/promises" import fs from "fs/promises"
import { Anthropic } from "@anthropic-ai/sdk" import { Anthropic } from "@anthropic-ai/sdk"
import { fileExistsAtPath } from "../../utils/fs" import { fileExistsAtPath } from "@utils/fs"
import { ClineMessage } from "../../shared/ExtensionMessage" import { ClineMessage } from "@shared/ExtensionMessage"
import { TaskMetadata } from "../context/context-tracking/ContextTrackerTypes" import { TaskMetadata } from "@core/context/context-tracking/ContextTrackerTypes"
import os from "os" import os from "os"
import { execa } from "execa" import { execa } from "execa"

View File

@ -1,16 +1,16 @@
import * as vscode from "vscode" import * as vscode from "vscode"
import { DEFAULT_CHAT_SETTINGS } from "../../shared/ChatSettings" import { DEFAULT_CHAT_SETTINGS } from "@shared/ChatSettings"
import { DEFAULT_BROWSER_SETTINGS } from "../../shared/BrowserSettings" import { DEFAULT_BROWSER_SETTINGS } from "@shared/BrowserSettings"
import { DEFAULT_AUTO_APPROVAL_SETTINGS } from "../../shared/AutoApprovalSettings" import { DEFAULT_AUTO_APPROVAL_SETTINGS } from "@shared/AutoApprovalSettings"
import { GlobalStateKey, SecretKey } from "./state-keys" import { GlobalStateKey, SecretKey } from "./state-keys"
import { ApiConfiguration, ApiProvider, ModelInfo } from "../../shared/api" import { ApiConfiguration, ApiProvider, ModelInfo } from "@shared/api"
import { HistoryItem } from "../../shared/HistoryItem" import { HistoryItem } from "@shared/HistoryItem"
import { AutoApprovalSettings } from "../../shared/AutoApprovalSettings" import { AutoApprovalSettings } from "@shared/AutoApprovalSettings"
import { BrowserSettings } from "../../shared/BrowserSettings" import { BrowserSettings } from "@shared/BrowserSettings"
import { ChatSettings } from "../../shared/ChatSettings" import { ChatSettings } from "@shared/ChatSettings"
import { TelemetrySetting } from "../../shared/TelemetrySetting" import { TelemetrySetting } from "@shared/TelemetrySetting"
import { UserInfo } from "../../shared/UserInfo" import { UserInfo } from "@shared/UserInfo"
import { ClineRulesToggles } from "../../shared/cline-rules" import { ClineRulesToggles } from "@shared/cline-rules"
/* /*
Storage Storage
https://dev.to/kompotkot/how-to-use-secretstorage-in-your-vscode-extensions-2hco https://dev.to/kompotkot/how-to-use-secretstorage-in-your-vscode-extensions-2hco

View File

@ -9,31 +9,31 @@ import pWaitFor from "p-wait-for"
import * as path from "path" import * as path from "path"
import { serializeError } from "serialize-error" import { serializeError } from "serialize-error"
import * as vscode from "vscode" import * as vscode from "vscode"
import { Logger } from "../../services/logging/Logger" import { Logger } from "@services/logging/Logger"
import { ApiHandler, buildApiHandler } from "../../api" import { ApiHandler, buildApiHandler } from "@api/index"
import { AnthropicHandler } from "../../api/providers/anthropic" import { AnthropicHandler } from "@api/providers/anthropic"
import { ClineHandler } from "../../api/providers/cline" import { ClineHandler } from "@api/providers/cline"
import { OpenRouterHandler } from "../../api/providers/openrouter" import { OpenRouterHandler } from "@api/providers/openrouter"
import { ApiStream } from "../../api/transform/stream" import { ApiStream } from "@api/transform/stream"
import CheckpointTracker from "../../integrations/checkpoints/CheckpointTracker" import CheckpointTracker from "@integrations/checkpoints/CheckpointTracker"
import { DIFF_VIEW_URI_SCHEME, DiffViewProvider } from "../../integrations/editor/DiffViewProvider" import { DIFF_VIEW_URI_SCHEME, DiffViewProvider } from "@integrations/editor/DiffViewProvider"
import { formatContentBlockToMarkdown } from "../../integrations/misc/export-markdown" import { formatContentBlockToMarkdown } from "@integrations/misc/export-markdown"
import { extractTextFromFile } from "../../integrations/misc/extract-text" import { extractTextFromFile } from "@integrations/misc/extract-text"
import { showSystemNotification } from "../../integrations/notifications" import { showSystemNotification } from "@integrations/notifications"
import { TerminalManager } from "../../integrations/terminal/TerminalManager" import { TerminalManager } from "@integrations/terminal/TerminalManager"
import { BrowserSession } from "../../services/browser/BrowserSession" import { BrowserSession } from "@services/browser/BrowserSession"
import { UrlContentFetcher } from "../../services/browser/UrlContentFetcher" import { UrlContentFetcher } from "@services/browser/UrlContentFetcher"
import { listFiles } from "../../services/glob/list-files" import { listFiles } from "@services/glob/list-files"
import { regexSearchFiles } from "../../services/ripgrep" import { regexSearchFiles } from "@services/ripgrep"
import { telemetryService } from "../../services/telemetry/TelemetryService" import { telemetryService } from "@services/telemetry/TelemetryService"
import { parseSourceCodeForDefinitionsTopLevel } from "../../services/tree-sitter" import { parseSourceCodeForDefinitionsTopLevel } from "@services/tree-sitter"
import { ApiConfiguration } from "../../shared/api" import { ApiConfiguration } from "@shared/api"
import { findLast, findLastIndex, parsePartialArrayString } from "../../shared/array" import { findLast, findLastIndex, parsePartialArrayString } from "@shared/array"
import { AutoApprovalSettings } from "../../shared/AutoApprovalSettings" import { AutoApprovalSettings } from "@shared/AutoApprovalSettings"
import { BrowserSettings } from "../../shared/BrowserSettings" import { BrowserSettings } from "@shared/BrowserSettings"
import { ChatSettings } from "../../shared/ChatSettings" import { ChatSettings } from "@shared/ChatSettings"
import { combineApiRequests } from "../../shared/combineApiRequests" import { combineApiRequests } from "@shared/combineApiRequests"
import { combineCommandSequences, COMMAND_REQ_APP_STRING } from "../../shared/combineCommandSequences" import { combineCommandSequences, COMMAND_REQ_APP_STRING } from "@shared/combineCommandSequences"
import { import {
BrowserAction, BrowserAction,
BrowserActionResult, BrowserActionResult,
@ -50,30 +50,30 @@ import {
ClineSayTool, ClineSayTool,
COMPLETION_RESULT_CHANGES_FLAG, COMPLETION_RESULT_CHANGES_FLAG,
ExtensionMessage, ExtensionMessage,
} from "../../shared/ExtensionMessage" } from "@shared/ExtensionMessage"
import { getApiMetrics } from "../../shared/getApiMetrics" import { getApiMetrics } from "@shared/getApiMetrics"
import { HistoryItem } from "../../shared/HistoryItem" import { HistoryItem } from "@shared/HistoryItem"
import { DEFAULT_LANGUAGE_SETTINGS, getLanguageKey, LanguageDisplay } from "../../shared/Languages" import { DEFAULT_LANGUAGE_SETTINGS, getLanguageKey, LanguageDisplay } from "@shared/Languages"
import { ClineAskResponse, ClineCheckpointRestore } from "../../shared/WebviewMessage" import { ClineAskResponse, ClineCheckpointRestore } from "@shared/WebviewMessage"
import { calculateApiCostAnthropic } from "../../utils/cost" import { calculateApiCostAnthropic } from "@utils/cost"
import { fileExistsAtPath } from "../../utils/fs" import { fileExistsAtPath } from "@utils/fs"
import { arePathsEqual, getReadablePath, isLocatedInWorkspace } from "../../utils/path" import { arePathsEqual, getReadablePath, isLocatedInWorkspace } from "@utils/path"
import { fixModelHtmlEscaping, removeInvalidChars } from "../../utils/string" import { fixModelHtmlEscaping, removeInvalidChars } from "@utils/string"
import { AssistantMessageContent, parseAssistantMessage, ToolParamName, ToolUseName } from ".././assistant-message" import { AssistantMessageContent, parseAssistantMessage, ToolParamName, ToolUseName } from "@core/assistant-message"
import { constructNewFileContent } from ".././assistant-message/diff" import { constructNewFileContent } from "@core/assistant-message/diff"
import { ClineIgnoreController } from ".././ignore/ClineIgnoreController" import { ClineIgnoreController } from "@core/ignore/ClineIgnoreController"
import { parseMentions } from ".././mentions" import { parseMentions } from "@core/mentions"
import { formatResponse } from ".././prompts/responses" import { formatResponse } from "@core/prompts/responses"
import { addUserInstructions, SYSTEM_PROMPT } from ".././prompts/system" import { addUserInstructions, SYSTEM_PROMPT } from "@core/prompts/system"
import { getContextWindowInfo } from "../context/context-management/context-window-utils" import { getContextWindowInfo } from "@core/context/context-management/context-window-utils"
import { FileContextTracker } from "../context/context-tracking/FileContextTracker" import { FileContextTracker } from "@core/context/context-tracking/FileContextTracker"
import { ModelContextTracker } from "../context/context-tracking/ModelContextTracker" import { ModelContextTracker } from "@core/context/context-tracking/ModelContextTracker"
import { import {
checkIsAnthropicContextWindowError, checkIsAnthropicContextWindowError,
checkIsOpenRouterContextWindowError, checkIsOpenRouterContextWindowError,
} from "../context/context-management/context-error-handling" } from "@core/context/context-management/context-error-handling"
import { ContextManager } from "../context/context-management/ContextManager" import { ContextManager } from "@core/context/context-management/ContextManager"
import { loadMcpDocumentation } from "../prompts/loadMcpDocumentation" import { loadMcpDocumentation } from "@core/prompts/loadMcpDocumentation"
import { import {
ensureRulesDirectoryExists, ensureRulesDirectoryExists,
ensureTaskDirectoryExists, ensureTaskDirectoryExists,
@ -81,15 +81,15 @@ import {
getSavedClineMessages, getSavedClineMessages,
saveApiConversationHistory, saveApiConversationHistory,
saveClineMessages, saveClineMessages,
} from "../storage/disk" } from "@core/storage/disk"
import { import {
getGlobalClineRules, getGlobalClineRules,
getLocalClineRules, getLocalClineRules,
refreshClineRulesToggles, refreshClineRulesToggles,
} from "../context/instructions/user-instructions/cline-rules" } from "@core/context/instructions/user-instructions/cline-rules"
import { getGlobalState } from "../storage/state" import { getGlobalState } from "@core/storage/state"
import { parseSlashCommands } from ".././slash-commands" import { parseSlashCommands } from "@core/slash-commands"
import WorkspaceTracker from "../../integrations/workspace/WorkspaceTracker" import WorkspaceTracker from "@integrations/workspace/WorkspaceTracker"
import { McpHub } from "@services/mcp/McpHub" import { McpHub } from "@services/mcp/McpHub"
import { isInTestMode } from "../../services/test/TestMode" import { isInTestMode } from "../../services/test/TestMode"

View File

@ -2,9 +2,9 @@ import axios from "axios"
import * as vscode from "vscode" import * as vscode from "vscode"
import { getNonce } from "./getNonce" import { getNonce } from "./getNonce"
import { getUri } from "./getUri" import { getUri } from "./getUri"
import { getTheme } from "../../integrations/theme/getTheme" import { getTheme } from "@integrations/theme/getTheme"
import { Controller } from "../controller" import { Controller } from "@core/controller/index"
import { findLast } from "../../shared/array" 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/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 https://github.com/KumarVariable/vscode-extension-sidebar-html/blob/master/src/customSidebarViewProvider.ts

View File

@ -1,9 +1,9 @@
import * as vscode from "vscode" import * as vscode from "vscode"
import * as fs from "fs/promises" import * as fs from "fs/promises"
import * as path from "path" import * as path from "path"
import { Controller } from "../../core/controller" import { Controller } from "@core/controller"
import { HistoryItem } from "../../shared/HistoryItem" import { HistoryItem } from "@shared/HistoryItem"
import { ClineMessage } from "../../shared/ExtensionMessage" import { ClineMessage } from "@shared/ExtensionMessage"
/** /**
* Registers development-only commands for task manipulation. * Registers development-only commands for task manipulation.

View File

@ -1,7 +1,7 @@
import * as vscode from "vscode" import * as vscode from "vscode"
import { Controller } from "../core/controller" import { Controller } from "@core/controller"
import { ClineAPI } from "./cline" 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 { export function createClineAPI(outputChannel: vscode.OutputChannel, sidebarController: Controller): ClineAPI {
const api: ClineAPI = { const api: ClineAPI = {

View File

@ -1,6 +1,6 @@
import fs from "fs/promises" import fs from "fs/promises"
import { join } from "path" import { join } from "path"
import { fileExistsAtPath } from "../../utils/fs" import { fileExistsAtPath } from "@utils/fs"
import { GIT_DISABLED_SUFFIX } from "./CheckpointGitOperations" import { GIT_DISABLED_SUFFIX } from "./CheckpointGitOperations"
/** /**

View File

@ -2,9 +2,9 @@ import fs from "fs/promises"
import { globby } from "globby" import { globby } from "globby"
import * as path from "path" import * as path from "path"
import simpleGit, { SimpleGit } from "simple-git" import simpleGit, { SimpleGit } from "simple-git"
import { fileExistsAtPath } from "../../utils/fs" import { fileExistsAtPath } from "@utils/fs"
import { getLfsPatterns, writeExcludesFile } from "./CheckpointExclusions" import { getLfsPatterns, writeExcludesFile } from "./CheckpointExclusions"
import { telemetryService } from "../../services/telemetry/TelemetryService" import { telemetryService } from "@services/telemetry/TelemetryService"
interface CheckpointAddResult { interface CheckpointAddResult {
success: boolean success: boolean

View File

@ -1,7 +1,7 @@
import fs from "fs/promises" import fs from "fs/promises"
import * as path from "path" import * as path from "path"
import * as vscode from "vscode" import * as vscode from "vscode"
import { fileExistsAtPath } from "../../utils/fs" import { fileExistsAtPath } from "@utils/fs"
/** /**
* Cleans up legacy checkpoints from task folders. * Cleans up legacy checkpoints from task folders.

View File

@ -3,8 +3,8 @@ import os from "os"
import * as path from "path" import * as path from "path"
import simpleGit, { SimpleGit } from "simple-git" import simpleGit, { SimpleGit } from "simple-git"
import * as vscode from "vscode" import * as vscode from "vscode"
import { Controller as ClineProvider } from "../../core/controller" import { Controller as ClineProvider } from "@core/controller"
import { fileExistsAtPath } from "../../utils/fs" import { fileExistsAtPath } from "@utils/fs"
import { globby } from "globby" import { globby } from "globby"
class CheckpointTracker { class CheckpointTracker {

View File

@ -2,7 +2,7 @@ import fs from "fs/promises"
import * as path from "path" import * as path from "path"
import simpleGit from "simple-git" import simpleGit from "simple-git"
import * as vscode from "vscode" import * as vscode from "vscode"
import { telemetryService } from "../../services/telemetry/TelemetryService" import { telemetryService } from "@services/telemetry/TelemetryService"
import { GitOperations } from "./CheckpointGitOperations" import { GitOperations } from "./CheckpointGitOperations"
import { getShadowGitPath, getWorkingDirectory, hashWorkingDir } from "./CheckpointUtils" import { getShadowGitPath, getWorkingDirectory, hashWorkingDir } from "./CheckpointUtils"

View File

@ -1,9 +1,9 @@
import * as vscode from "vscode" import * as vscode from "vscode"
import * as path from "path" import * as path from "path"
import * as fs from "fs/promises" import * as fs from "fs/promises"
import { createDirectoriesForFile } from "../../utils/fs" import { createDirectoriesForFile } from "@utils/fs"
import { arePathsEqual } from "../../utils/path" import { arePathsEqual } from "@utils/path"
import { formatResponse } from "../../core/prompts/responses" import { formatResponse } from "@core/prompts/responses"
import { DecorationController } from "./DecorationController" import { DecorationController } from "./DecorationController"
import * as diff from "diff" import * as diff from "diff"
import { diagnosticsToProblemsString, getNewDiagnostics } from "../diagnostics" import { diagnosticsToProblemsString, getNewDiagnostics } from "../diagnostics"

View File

@ -4,7 +4,6 @@ import pdf from "pdf-parse/lib/pdf-parse"
import mammoth from "mammoth" import mammoth from "mammoth"
import fs from "fs/promises" import fs from "fs/promises"
import { isBinaryFile } from "isbinaryfile" import { isBinaryFile } from "isbinaryfile"
import { getFileSizeInKB } from "../../utils/fs"
import * as chardet from "jschardet" import * as chardet from "jschardet"
import * as iconv from "iconv-lite" import * as iconv from "iconv-lite"

View File

@ -1,7 +1,7 @@
import * as path from "path" import * as path from "path"
import * as os from "os" import * as os from "os"
import * as vscode from "vscode" import * as vscode from "vscode"
import { arePathsEqual } from "../../utils/path" import { arePathsEqual } from "@utils/path"
export async function openImage(dataUri: string) { export async function openImage(dataUri: string) {
const matches = dataUri.match(/^data:image\/([a-zA-Z]+);base64,(.+)$/) const matches = dataUri.match(/^data:image\/([a-zA-Z]+);base64,(.+)$/)

View File

@ -1,6 +1,6 @@
import pWaitFor from "p-wait-for" import pWaitFor from "p-wait-for"
import * as vscode from "vscode" import * as vscode from "vscode"
import { arePathsEqual } from "../../utils/path" import { arePathsEqual } from "@utils/path"
import { mergePromise, TerminalProcess, TerminalProcessResultPromise } from "./TerminalProcess" import { mergePromise, TerminalProcess, TerminalProcessResultPromise } from "./TerminalProcess"
import { TerminalInfo, TerminalRegistry } from "./TerminalRegistry" import { TerminalInfo, TerminalRegistry } from "./TerminalRegistry"

View File

@ -4,7 +4,6 @@ import * as sinon from "sinon"
import { TerminalProcess } from "./TerminalProcess" import { TerminalProcess } from "./TerminalProcess"
import * as vscode from "vscode" import * as vscode from "vscode"
import { TerminalRegistry } from "./TerminalRegistry" import { TerminalRegistry } from "./TerminalRegistry"
import { EventEmitter } from "events"
declare module "vscode" { declare module "vscode" {
// https://github.com/microsoft/vscode/blob/f0417069c62e20f3667506f4b7e53ca0004b4e3e/src/vscode-dts/vscode.d.ts#L7442 // https://github.com/microsoft/vscode/blob/f0417069c62e20f3667506f4b7e53ca0004b4e3e/src/vscode-dts/vscode.d.ts#L7442

View File

@ -1,8 +1,7 @@
import * as vscode from "vscode" import * as vscode from "vscode"
import * as path from "path" import * as path from "path"
import { listFiles } from "../../services/glob/list-files" import { listFiles } from "@services/glob/list-files"
import { Controller } from "../../core/controller" import { ExtensionMessage } from "@shared/ExtensionMessage"
import { ExtensionMessage } from "../../shared/ExtensionMessage"
const cwd = vscode.workspace.workspaceFolders?.map((folder) => folder.uri.fsPath).at(0) const cwd = vscode.workspace.workspaceFolders?.map((folder) => folder.uri.fsPath).at(0)

View File

@ -1,6 +1,6 @@
import axios, { AxiosRequestConfig, AxiosResponse } from "axios" import axios, { AxiosRequestConfig, AxiosResponse } from "axios"
import type { BalanceResponse, PaymentTransaction, UsageTransaction } from "../../shared/ClineAccount" import type { BalanceResponse, PaymentTransaction, UsageTransaction } from "@shared/ClineAccount"
import { ExtensionMessage } from "../../shared/ExtensionMessage" import { ExtensionMessage } from "@shared/ExtensionMessage"
export class ClineAccountService { export class ClineAccountService {
private readonly baseUrl = "https://api.cline.bot/v1" private readonly baseUrl = "https://api.cline.bot/v1"

View File

@ -9,13 +9,13 @@ import PCR from "puppeteer-chromium-resolver"
import pWaitFor from "p-wait-for" import pWaitFor from "p-wait-for"
import { setTimeout as setTimeoutPromise } from "node:timers/promises" import { setTimeout as setTimeoutPromise } from "node:timers/promises"
import axios from "axios" import axios from "axios"
import { fileExistsAtPath } from "../../utils/fs" import { fileExistsAtPath } from "@utils/fs"
import { BrowserActionResult } from "../../shared/ExtensionMessage" import { BrowserActionResult } from "@shared/ExtensionMessage"
import { BrowserSettings } from "../../shared/BrowserSettings" import { BrowserSettings } from "@shared/BrowserSettings"
import { discoverChromeInstances, testBrowserConnection, isPortOpen } from "./BrowserDiscovery" import { discoverChromeInstances, testBrowserConnection, isPortOpen } from "./BrowserDiscovery"
import * as chromeLauncher from "chrome-launcher" import * as chromeLauncher from "chrome-launcher"
import { Controller } from "../../core/controller" import { Controller } from "@core/controller"
import { telemetryService } from "../../services/telemetry/TelemetryService" import { telemetryService } from "@services/telemetry/TelemetryService"
interface PCRStats { interface PCRStats {
puppeteer: { launch: typeof launch } puppeteer: { launch: typeof launch }

View File

@ -6,7 +6,7 @@ import * as cheerio from "cheerio"
import TurndownService from "turndown" import TurndownService from "turndown"
// @ts-ignore // @ts-ignore
import PCR from "puppeteer-chromium-resolver" import PCR from "puppeteer-chromium-resolver"
import { fileExistsAtPath } from "../../utils/fs" import { fileExistsAtPath } from "@utils/fs"
interface PCRStats { interface PCRStats {
puppeteer: { launch: typeof launch } puppeteer: { launch: typeof launch }

View File

@ -1,6 +1,6 @@
import * as Sentry from "@sentry/browser" import * as Sentry from "@sentry/browser"
import * as vscode from "vscode" import * as vscode from "vscode"
import { telemetryService } from "../telemetry/TelemetryService" import { telemetryService } from "@services/telemetry/TelemetryService"
import * as pkg from "../../../package.json" import * as pkg from "../../../package.json"
let telemetryLevel = vscode.workspace.getConfiguration("telemetry").get<string>("telemetryLevel", "all") let telemetryLevel = vscode.workspace.getConfiguration("telemetry").get<string>("telemetryLevel", "all")

View File

@ -1,7 +1,7 @@
import { globby, Options } from "globby" import { globby, Options } from "globby"
import os from "os" import os from "os"
import * as path from "path" 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]> { 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 // First resolve the path normally - path.resolve doesn't care about glob special characters

View File

@ -24,13 +24,13 @@ import {
McpTool, McpTool,
McpToolCallResponse, McpToolCallResponse,
MIN_MCP_TIMEOUT_SECONDS, MIN_MCP_TIMEOUT_SECONDS,
} from "../../shared/mcp" } from "@shared/mcp"
import { fileExistsAtPath } from "../../utils/fs" import { fileExistsAtPath } from "@utils/fs"
import { arePathsEqual } from "../../utils/path" import { arePathsEqual } from "@utils/path"
import { secondsToMs } from "../../utils/time" import { secondsToMs } from "@utils/time"
import { GlobalFileNames } from "../../core/storage/disk" import { GlobalFileNames } from "@core/storage/disk"
import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js" 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 // 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 const DEFAULT_REQUEST_TIMEOUT_MS = 5000

View File

@ -2,8 +2,8 @@ import * as vscode from "vscode"
import * as childProcess from "child_process" import * as childProcess from "child_process"
import * as path from "path" import * as path from "path"
import * as readline from "readline" import * as readline from "readline"
import { fileExistsAtPath } from "../../utils/fs" import { fileExistsAtPath } from "@utils/fs"
import { ClineIgnoreController } from "../../core/ignore/ClineIgnoreController" import { ClineIgnoreController } from "@core/ignore/ClineIgnoreController"
/* /*
This file provides functionality to perform regex searches on files using ripgrep. This file provides functionality to perform regex searches on files using ripgrep.

View File

@ -2,8 +2,8 @@ import { PostHog } from "posthog-node"
import * as vscode from "vscode" import * as vscode from "vscode"
import { version as extensionVersion } from "../../../package.json" import { version as extensionVersion } from "../../../package.json"
import type { TaskFeedbackType } from "../../shared/WebviewMessage" import type { TaskFeedbackType } from "@shared/WebviewMessage"
import type { BrowserSettings } from "../../shared/BrowserSettings" import type { BrowserSettings } from "@shared/BrowserSettings"
/** /**
* PostHogClient handles telemetry event tracking for the Cline extension * PostHogClient handles telemetry event tracking for the Cline extension

View File

@ -1,8 +1,8 @@
import * as path from "path" import * as path from "path"
import * as vscode from "vscode" import * as vscode from "vscode"
import { execa } from "execa" import { execa } from "execa"
import { Logger } from "../../services/logging/Logger" import { Logger } from "@services/logging/Logger"
import { WebviewProvider } from "../../core/webview" import { WebviewProvider } from "@core/webview"
/** /**
* Gets a valid workspace path for Git operations * Gets a valid workspace path for Git operations

View File

@ -2,9 +2,9 @@ import * as http from "http"
import * as vscode from "vscode" import * as vscode from "vscode"
import * as path from "path" import * as path from "path"
import { execa } from "execa" import { execa } from "execa"
import { Logger } from "../../services/logging/Logger" import { Logger } from "@services/logging/Logger"
import { WebviewProvider } from "../../core/webview" import { WebviewProvider } from "@core/webview"
import { AutoApprovalSettings } from "../../shared/AutoApprovalSettings" import { AutoApprovalSettings } from "@shared/AutoApprovalSettings"
import { import {
getWorkspacePath, getWorkspacePath,
validateWorkspacePath, validateWorkspacePath,
@ -12,12 +12,12 @@ import {
getFileChanges, getFileChanges,
calculateToolSuccessRate, calculateToolSuccessRate,
} from "./GitHelper" } from "./GitHelper"
import { updateGlobalState, getAllExtensionState, updateApiConfiguration, storeSecret } from "../../core/storage/state" import { updateGlobalState, getAllExtensionState, updateApiConfiguration, storeSecret } from "@core/storage/state"
import { ClineAsk, ExtensionMessage } from "../../shared/ExtensionMessage" import { ClineAsk, ExtensionMessage } from "@shared/ExtensionMessage"
import { ApiProvider } from "../../shared/api" import { ApiProvider } from "@shared/api"
import { WebviewMessage } from "../../shared/WebviewMessage" import { WebviewMessage } from "@shared/WebviewMessage"
import { HistoryItem } from "../../shared/HistoryItem" import { HistoryItem } from "@shared/HistoryItem"
import { getSavedClineMessages, getSavedApiConversationHistory } from "../../core/storage/disk" import { getSavedClineMessages, getSavedApiConversationHistory } from "@core/storage/disk"
/** /**
* Creates a tracker to monitor tool calls and failures during task execution * Creates a tracker to monitor tool calls and failures during task execution

View File

@ -1,9 +1,9 @@
import * as fs from "fs/promises" import * as fs from "fs/promises"
import * as path from "path" import * as path from "path"
import { listFiles } from "../glob/list-files" import { listFiles } from "@services/glob/list-files"
import { LanguageParser, loadRequiredLanguageParsers } from "./languageParser" import { LanguageParser, loadRequiredLanguageParsers } from "./languageParser"
import { fileExistsAtPath } from "../../utils/fs" import { fileExistsAtPath } from "@utils/fs"
import { ClineIgnoreController } from "../../core/ignore/ClineIgnoreController" import { ClineIgnoreController } from "@core/ignore/ClineIgnoreController"
// TODO: implement caching behavior to avoid having to keep analyzing project for new tasks. // TODO: implement caching behavior to avoid having to keep analyzing project for new tasks.
export async function parseSourceCodeForDefinitionsTopLevel( export async function parseSourceCodeForDefinitionsTopLevel(

View File

@ -6,7 +6,7 @@ import { AutoApprovalSettings } from "./AutoApprovalSettings"
import { BrowserSettings } from "./BrowserSettings" import { BrowserSettings } from "./BrowserSettings"
import { ChatSettings } from "./ChatSettings" import { ChatSettings } from "./ChatSettings"
import { HistoryItem } from "./HistoryItem" import { HistoryItem } from "./HistoryItem"
import { McpServer, McpMarketplaceCatalog, McpMarketplaceItem, McpDownloadResponse, McpViewTab } from "./mcp" import { McpServer, McpMarketplaceCatalog, McpDownloadResponse, McpViewTab } from "./mcp"
import { TelemetrySetting } from "./TelemetrySetting" import { TelemetrySetting } from "./TelemetrySetting"
import type { BalanceResponse, UsageTransaction, PaymentTransaction } from "../shared/ClineAccount" import type { BalanceResponse, UsageTransaction, PaymentTransaction } from "../shared/ClineAccount"
import { ClineRulesToggles } from "./cline-rules" import { ClineRulesToggles } from "./cline-rules"

View File

@ -6,9 +6,8 @@ import type { FzfResultItem } from "fzf"
import * as childProcess from "child_process" import * as childProcess from "child_process"
import * as vscode from "vscode" import * as vscode from "vscode"
import * as fs from "fs" import * as fs from "fs"
import * as path from "path" import * as fileSearch from "@services/search/file-search"
import * as fileSearch from "../../../services/search/file-search" import * as ripgrep from "@services/ripgrep"
import * as ripgrep from "../../../services/ripgrep"
describe("File Search", function () { describe("File Search", function () {
let sandbox: sinon.SinonSandbox let sandbox: sinon.SinonSandbox

View File

@ -1,6 +1,6 @@
import { describe, it, beforeEach, afterEach } from "mocha" import { describe, it, beforeEach, afterEach } from "mocha"
import { expect } from "chai" import { expect } from "chai"
import { getShell } from "../utils/shell" import { getShell } from "@utils/shell"
import * as vscode from "vscode" import * as vscode from "vscode"
import { userInfo } from "os" import { userInfo } from "os"

View File

@ -1,7 +1,6 @@
import * as vscode from "vscode" import * as vscode from "vscode"
import { describe, it, beforeEach, afterEach } from "mocha" import { describe, it, beforeEach, afterEach } from "mocha"
import { strict as assert } from "assert" import { strict as assert } from "assert"
import { join } from "path"
describe("Chat Integration Tests", () => { describe("Chat Integration Tests", () => {
let panel: vscode.WebviewPanel let panel: vscode.WebviewPanel
let disposables: vscode.Disposable[] = [] let disposables: vscode.Disposable[] = []

View File

@ -1,7 +1,7 @@
import { describe, it } from "mocha" import { describe, it } from "mocha"
import "should" import "should"
import { calculateApiCostAnthropic, calculateApiCostOpenAI } from "./cost" import { calculateApiCostAnthropic, calculateApiCostOpenAI } from "@utils/cost"
import { ModelInfo } from "../shared/api" import { ModelInfo } from "@shared/api"
describe("Cost Utilities", () => { describe("Cost Utilities", () => {
describe("calculateApiCostAnthropic", () => { describe("calculateApiCostAnthropic", () => {

View File

@ -1,4 +1,4 @@
import { ModelInfo } from "../shared/api" import { ModelInfo } from "@shared/api"
function calculateApiCostInternal( function calculateApiCostInternal(
modelInfo: ModelInfo, modelInfo: ModelInfo,

View File

@ -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: * Validates the thinking budget token value according to the specified rules:

View File

@ -3,6 +3,9 @@
"compilerOptions": { "compilerOptions": {
"module": "commonjs" "module": "commonjs"
}, },
"ts-node": {
"require": ["tsconfig-paths/register"]
},
"include": ["test/**/*.ts"], "include": ["test/**/*.ts"],
"exclude": ["node_modules"] "exclude": ["node_modules"]
} }