cli / mcp for bitbucket
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};