summaryrefslogtreecommitdiff
path: root/packages/core/src/ide/detect-ide.ts
diff options
context:
space:
mode:
authorchristine betts <[email protected]>2025-08-11 21:01:37 +0000
committerGitHub <[email protected]>2025-08-11 21:01:37 +0000
commit0e98641b51270f2f63ffb30902b44903d8e88383 (patch)
treeb6a96a2475115d7bc7f6dfa12a66c1d2ead7d244 /packages/core/src/ide/detect-ide.ts
parent4656f17524ce4f580ceb9a9a2599728739d40fdc (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.ts43
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;
}