UNPKG

@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

80 lines (79 loc) 3.99 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.handleCommitHistory = handleCommitHistory; const vendor_atlassian_repositories_service_js_1 = __importDefault(require("../services/vendor.atlassian.repositories.service.js")); const logger_util_js_1 = require("../utils/logger.util.js"); const error_handler_util_js_1 = require("../utils/error-handler.util.js"); const defaults_util_js_1 = require("../utils/defaults.util.js"); const pagination_util_js_1 = require("../utils/pagination.util.js"); const formatter_util_js_1 = require("../utils/formatter.util.js"); const atlassian_repositories_formatter_js_1 = require("./atlassian.repositories.formatter.js"); const workspace_util_js_1 = require("../utils/workspace.util.js"); // Logger instance for this module const logger = logger_util_js_1.Logger.forContext('controllers/atlassian.repositories.commit.controller.ts'); /** * Get commit history for a repository * * @param options - Options containing repository identifiers and filters * @returns Promise with formatted commit history content and pagination info */ async function handleCommitHistory(options) { const methodLogger = logger.forMethod('handleCommitHistory'); try { methodLogger.debug('Getting commit history', options); // Apply defaults const defaults = { limit: defaults_util_js_1.DEFAULT_PAGE_SIZE, }; const params = (0, defaults_util_js_1.applyDefaults)(options, defaults); // Handle optional workspaceSlug if (!params.workspaceSlug) { methodLogger.debug('No workspace provided, fetching default workspace'); const defaultWorkspace = await (0, workspace_util_js_1.getDefaultWorkspace)(); if (!defaultWorkspace) { throw new Error('No default workspace found. Please provide a workspace slug.'); } params.workspaceSlug = defaultWorkspace; methodLogger.debug(`Using default workspace: ${defaultWorkspace}`); } const serviceParams = { workspace: params.workspaceSlug, repo_slug: params.repoSlug, include: params.revision, path: params.path, pagelen: params.limit, page: params.cursor ? parseInt(params.cursor, 10) : undefined, }; methodLogger.debug('Fetching commits with params:', serviceParams); const commitsData = await vendor_atlassian_repositories_service_js_1.default.listCommits(serviceParams); methodLogger.debug(`Retrieved ${commitsData.values?.length || 0} commits`); // Extract pagination info before formatting const pagination = (0, pagination_util_js_1.extractPaginationInfo)(commitsData, pagination_util_js_1.PaginationType.PAGE); const formattedHistory = (0, atlassian_repositories_formatter_js_1.formatCommitHistory)(commitsData, { revision: params.revision, path: params.path, }); // Create the final content by combining the formatted commit history with pagination information let finalContent = formattedHistory; // Add pagination information if available if (pagination && (pagination.hasMore || pagination.count !== undefined)) { const paginationString = (0, formatter_util_js_1.formatPagination)(pagination); finalContent += '\n\n' + paginationString; } return { content: finalContent, }; } catch (error) { throw (0, error_handler_util_js_1.handleControllerError)(error, { entityType: 'Commit History', operation: 'retrieving', source: 'controllers/atlassian.repositories.commit.controller.ts@handleCommitHistory', additionalInfo: { options }, }); } }