Skip to main content
Glama
link-formatters.ts1.96 kB
/** * @fileoverview Terminal link formatters for clickable URLs * Uses OSC 8 protocol for terminals that support it, with graceful fallback */ import chalk from 'chalk'; import terminalLink from 'terminal-link'; /** * Creates a clickable terminal link if supported, otherwise returns styled text * @param text - The visible text to display * @param url - The URL to link to * @param options - Optional styling options */ export function createLink( text: string, url: string, options?: { color?: 'cyan' | 'blue' | 'gray' | 'green' | 'yellow' } ): string { const colorFn = options?.color ? chalk[options.color] : chalk.cyan; // terminal-link automatically falls back to plain text if unsupported const link = terminalLink(text, url, { fallback: (displayText, linkUrl) => `${displayText} (${linkUrl})` }); return colorFn(link); } /** * Creates a clickable URL that displays the full URL as the text * @param url - The URL to display and link to * @param options - Optional styling options */ export function createUrlLink( url: string, options?: { color?: 'cyan' | 'blue' | 'gray' | 'green' | 'yellow' } ): string { return createLink(url, url, options); } /** * Creates a clickable brief ID link * @param briefId - The brief ID (e.g., "HAM-123") * @param briefUrl - The full URL to the brief */ export function createBriefLink(briefId: string, briefUrl: string): string { return createLink(briefId, briefUrl, { color: 'cyan' }); } /** * Creates a clickable task ID link * @param taskId - The task ID (e.g., "TAS-67") * @param taskUrl - The full URL to the task */ export function createTaskLink(taskId: string, taskUrl: string): string { return createLink(taskId, taskUrl, { color: 'cyan' }); } /** * Checks if the terminal supports clickable links * Note: terminal-link handles this internally, but exposed for conditional logic */ export function supportsLinks(): boolean { return terminalLink.isSupported; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/eyaltoledano/claude-task-master'

If you have feedback or need assistance with the MCP directory API, please join our Discord server