Something went wrong. Try again.
source dump of claude code forked from oppi.li/claude-code
Something went wrong. Try again.
1.5 kB · 39 lines
TypeScript
at main
12345678910111213141516171819202122232425262728293031323334353637383940import chalk from 'chalk'import { supportsHyperlinks } from '../ink/supports-hyperlinks.js'
// OSC 8 hyperlink escape sequences// Format: \e]8;;URL\e\\TEXT\e]8;;\e\\// Using \x07 (BEL) as terminator which is more widely supportedexport const OSC8_START = '\x1b]8;;'export const OSC8_END = '\x07'
type HyperlinkOptions = { supportsHyperlinks?: boolean}
/** * Create a clickable hyperlink using OSC 8 escape sequences. * Falls back to plain text if the terminal doesn't support hyperlinks. * * @param url - The URL to link to * @param content - Optional content to display as the link text (only when hyperlinks are supported). * If provided and hyperlinks are supported, this text is shown as a clickable link. * If hyperlinks are not supported, content is ignored and only the URL is shown. * @param options - Optional overrides for testing (supportsHyperlinks) */export function createHyperlink( url: string, content?: string, options?: HyperlinkOptions,): string { const hasSupport = options?.supportsHyperlinks ?? supportsHyperlinks() if (!hasSupport) { return url }
// Apply basic ANSI blue color - wrap-ansi preserves this across line breaks // RGB colors (like theme colors) are NOT preserved by wrap-ansi with OSC 8 const displayText = content ?? url const coloredText = chalk.blue(displayText) return `${OSC8_START}${url}${OSC8_END}${coloredText}${OSC8_START}${OSC8_END}`}