@aashari/mcp-server-atlassian-bitbucket
Version:
Node.js/TypeScript MCP server for Atlassian Bitbucket. Enables AI systems (LLMs) to interact with workspaces, repositories, and pull requests via tools (list, get, comment, search). Connects AI directly to version control workflows through the standard MC
58 lines (57 loc) • 4.8 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getDefaultWorkspace = exports.optimizeBitbucketMarkdown = exports.applyDefaults = exports.DEFAULT_PAGE_SIZE = exports.formatPullRequestComments = exports.formatPullRequestDetails = exports.formatPullRequestsList = exports.formatPagination = exports.PaginationType = exports.extractPaginationInfo = exports.handleControllerError = exports.Logger = exports.atlassianPullRequestsService = void 0;
exports.enhanceCommentsWithSnippets = enhanceCommentsWithSnippets;
const vendor_atlassian_pullrequests_service_js_1 = __importDefault(require("../services/vendor.atlassian.pullrequests.service.js"));
exports.atlassianPullRequestsService = vendor_atlassian_pullrequests_service_js_1.default;
const logger_util_js_1 = require("../utils/logger.util.js");
Object.defineProperty(exports, "Logger", { enumerable: true, get: function () { return logger_util_js_1.Logger; } });
const error_handler_util_js_1 = require("../utils/error-handler.util.js");
Object.defineProperty(exports, "handleControllerError", { enumerable: true, get: function () { return error_handler_util_js_1.handleControllerError; } });
const pagination_util_js_1 = require("../utils/pagination.util.js");
Object.defineProperty(exports, "extractPaginationInfo", { enumerable: true, get: function () { return pagination_util_js_1.extractPaginationInfo; } });
Object.defineProperty(exports, "PaginationType", { enumerable: true, get: function () { return pagination_util_js_1.PaginationType; } });
const formatter_util_js_1 = require("../utils/formatter.util.js");
Object.defineProperty(exports, "formatPagination", { enumerable: true, get: function () { return formatter_util_js_1.formatPagination; } });
const atlassian_pullrequests_formatter_js_1 = require("./atlassian.pullrequests.formatter.js");
Object.defineProperty(exports, "formatPullRequestsList", { enumerable: true, get: function () { return atlassian_pullrequests_formatter_js_1.formatPullRequestsList; } });
Object.defineProperty(exports, "formatPullRequestDetails", { enumerable: true, get: function () { return atlassian_pullrequests_formatter_js_1.formatPullRequestDetails; } });
Object.defineProperty(exports, "formatPullRequestComments", { enumerable: true, get: function () { return atlassian_pullrequests_formatter_js_1.formatPullRequestComments; } });
const defaults_util_js_1 = require("../utils/defaults.util.js");
Object.defineProperty(exports, "DEFAULT_PAGE_SIZE", { enumerable: true, get: function () { return defaults_util_js_1.DEFAULT_PAGE_SIZE; } });
Object.defineProperty(exports, "applyDefaults", { enumerable: true, get: function () { return defaults_util_js_1.applyDefaults; } });
const diff_util_js_1 = require("../utils/diff.util.js");
const formatter_util_js_2 = require("../utils/formatter.util.js");
Object.defineProperty(exports, "optimizeBitbucketMarkdown", { enumerable: true, get: function () { return formatter_util_js_2.optimizeBitbucketMarkdown; } });
const workspace_util_js_1 = require("../utils/workspace.util.js");
Object.defineProperty(exports, "getDefaultWorkspace", { enumerable: true, get: function () { return workspace_util_js_1.getDefaultWorkspace; } });
// Helper function to enhance comments with code snippets
async function enhanceCommentsWithSnippets(commentsData, controllerMethodName) {
const methodLogger = logger_util_js_1.Logger.forContext(`controllers/atlassian.pullrequests.base.controller.ts`, controllerMethodName);
const commentsWithSnippets = [];
if (!commentsData.values || commentsData.values.length === 0) {
return [];
}
for (const comment of commentsData.values) {
let snippet = undefined;
if (comment.inline &&
comment.links?.code?.href &&
comment.inline.to !== undefined) {
try {
methodLogger.debug(`Fetching diff for inline comment ${comment.id} from ${comment.links.code.href}`);
const diffContent = await vendor_atlassian_pullrequests_service_js_1.default.getDiffForUrl(comment.links.code.href);
snippet = (0, diff_util_js_1.extractDiffSnippet)(diffContent, comment.inline.to);
methodLogger.debug(`Extracted snippet for comment ${comment.id} (length: ${snippet?.length})`);
}
catch (snippetError) {
methodLogger.warn(`Failed to fetch or parse snippet for comment ${comment.id}:`, snippetError);
// Continue without snippet if fetching/parsing fails
}
}
commentsWithSnippets.push({ ...comment, codeSnippet: snippet });
}
return commentsWithSnippets;
}