diff options
| author | christine betts <[email protected]> | 2025-08-11 21:01:37 +0000 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-08-11 21:01:37 +0000 |
| commit | 0e98641b51270f2f63ffb30902b44903d8e88383 (patch) | |
| tree | b6a96a2475115d7bc7f6dfa12a66c1d2ead7d244 /packages/core/src/ide/detect-ide.ts | |
| parent | 4656f17524ce4f580ceb9a9a2599728739d40fdc (diff) | |
Add support for VSCode-like editors (#5699)
Co-authored-by: Jacob Richman <[email protected]>
Diffstat (limited to 'packages/core/src/ide/detect-ide.ts')
| -rw-r--r-- | packages/core/src/ide/detect-ide.ts | 43 |
1 files changed, 40 insertions, 3 deletions
diff --git a/packages/core/src/ide/detect-ide.ts b/packages/core/src/ide/detect-ide.ts index f3d8cc63..759c4103 100644 --- a/packages/core/src/ide/detect-ide.ts +++ b/packages/core/src/ide/detect-ide.ts @@ -6,12 +6,33 @@ export enum DetectedIde { VSCode = 'vscode', + VSCodium = 'vscodium', + Cursor = 'cursor', + CloudShell = 'cloudshell', + Codespaces = 'codespaces', + Windsurf = 'windsurf', + FirebaseStudio = 'firebasestudio', + Trae = 'trae', } export function getIdeDisplayName(ide: DetectedIde): string { switch (ide) { case DetectedIde.VSCode: return 'VS Code'; + case DetectedIde.VSCodium: + return 'VSCodium'; + case DetectedIde.Cursor: + return 'Cursor'; + case DetectedIde.CloudShell: + return 'Cloud Shell'; + case DetectedIde.Codespaces: + return 'GitHub Codespaces'; + case DetectedIde.Windsurf: + return 'Windsurf'; + case DetectedIde.FirebaseStudio: + return 'Firebase Studio'; + case DetectedIde.Trae: + return 'Trae'; default: { // This ensures that if a new IDE is added to the enum, we get a compile-time error. const exhaustiveCheck: never = ide; @@ -21,8 +42,24 @@ export function getIdeDisplayName(ide: DetectedIde): string { } export function detectIde(): DetectedIde | undefined { - if (process.env.TERM_PROGRAM === 'vscode') { - return DetectedIde.VSCode; + // Only VSCode-based integrations are currently supported. + if (process.env.TERM_PROGRAM !== 'vscode') { + return undefined; } - return undefined; + if (process.env.CURSOR_TRACE_ID) { + return DetectedIde.Cursor; + } + if (process.env.CODESPACES) { + return DetectedIde.Codespaces; + } + if (process.env.EDITOR_IN_CLOUD_SHELL) { + return DetectedIde.CloudShell; + } + if (process.env.TERM_PRODUCT === 'Trae') { + return DetectedIde.Trae; + } + if (process.env.FIREBASE_DEPLOY_AGENT) { + return DetectedIde.FirebaseStudio; + } + return DetectedIde.VSCode; } |
