cli / mcp for bitbucket
at main 39 lines 1.2 kB view raw
1import type { Result } from '@bitbucket-tool/core'; 2 3type ToolResponse = { content: { type: 'text'; text: string }[]; isError?: boolean }; 4 5export const resolveWorkspace = (workspace: string): string => { 6 const resolved = workspace || process.env.BITBUCKET_WORKSPACE; 7 8 if (!resolved) { 9 throw new Error( 10 'workspace is required. Provide it as a parameter or set BITBUCKET_WORKSPACE env var.' 11 ); 12 } 13 14 return resolved; 15}; 16 17export const jsonResponse = (data: unknown): ToolResponse => ({ 18 content: [{ type: 'text' as const, text: JSON.stringify(data ?? null, null, 2) }], 19}); 20 21export const textResponse = (text: string): ToolResponse => ({ 22 content: [{ type: 'text' as const, text }], 23}); 24 25export const errorResponse = (message: string): ToolResponse => ({ 26 content: [{ type: 'text' as const, text: message }], 27 isError: true, 28}); 29 30export const resultToResponse = <T>( 31 result: Result<T>, 32 formatter?: (data: T) => string 33): ToolResponse => { 34 if (!result.ok) { 35 return errorResponse(`${result.error.message} (${result.error.status})`); 36 } 37 38 return formatter ? textResponse(formatter(result.data)) : jsonResponse(result.data); 39};