fix(core): strip leading underscores from error types in telemetry (#23824)

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
This commit is contained in:
Yuna Seol
2026-03-25 19:34:18 -04:00
committed by GitHub
parent a86935b6de
commit ae3dbab38a
2 changed files with 15 additions and 3 deletions

View File

@@ -354,4 +354,13 @@ describe('getErrorType', () => {
expect(getErrorType(null)).toBe('unknown');
expect(getErrorType(undefined)).toBe('unknown');
});
it('should strip leading underscores from error names', () => {
class _GaxiosError extends Error {}
expect(getErrorType(new _GaxiosError('test'))).toBe('GaxiosError');
const errorWithUnderscoreName = new Error('test');
errorWithUnderscoreName.name = '_CodeBuddyError';
expect(getErrorType(errorWithUnderscoreName)).toBe('CodeBuddyError');
});
});

View File

@@ -58,9 +58,12 @@ export function getErrorType(error: unknown): string {
if (!(error instanceof Error)) return 'unknown';
// Return constructor name if the generic 'Error' name is used (for custom errors)
return error.name === 'Error'
? (error.constructor?.name ?? 'Error')
: error.name;
const name =
error.name === 'Error' ? (error.constructor?.name ?? 'Error') : error.name;
// Strip leading underscore from error names. Bundlers like esbuild sometimes
// rename classes to avoid scope collisions.
return name.replace(/^_+/, '');
}
export class FatalError extends Error {