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

61 lines (60 loc) 3.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const atlassian_pullrequests_base_controller_js_1 = require("./atlassian.pullrequests.base.controller.js"); /** * Update an existing pull request in Bitbucket * @param options - Options including workspace slug, repo slug, pull request ID, title, and description * @returns Promise with formatted updated pull request details as Markdown content */ async function update(options) { const methodLogger = atlassian_pullrequests_base_controller_js_1.Logger.forContext('controllers/atlassian.pullrequests.update.controller.ts', 'update'); try { // Apply defaults if needed (none for this operation) const mergedOptions = (0, atlassian_pullrequests_base_controller_js_1.applyDefaults)(options, {}); // Handle optional workspaceSlug - get default if not provided if (!mergedOptions.workspaceSlug) { methodLogger.debug('No workspace provided, fetching default workspace'); const defaultWorkspace = await (0, atlassian_pullrequests_base_controller_js_1.getDefaultWorkspace)(); if (!defaultWorkspace) { throw new Error('Could not determine a default workspace. Please provide a workspaceSlug.'); } mergedOptions.workspaceSlug = defaultWorkspace; methodLogger.debug(`Using default workspace: ${mergedOptions.workspaceSlug}`); } // Validate that at least one field to update is provided if (!mergedOptions.title && !mergedOptions.description) { throw new Error('At least one field to update (title or description) must be provided'); } methodLogger.debug(`Updating pull request ${mergedOptions.pullRequestId} in ${mergedOptions.workspaceSlug}/${mergedOptions.repoSlug}`); // Prepare service parameters const serviceParams = { workspace: mergedOptions.workspaceSlug, repo_slug: mergedOptions.repoSlug, pull_request_id: mergedOptions.pullRequestId, }; // Add optional fields if provided if (mergedOptions.title !== undefined) { serviceParams.title = mergedOptions.title; } if (mergedOptions.description !== undefined) { serviceParams.description = (0, atlassian_pullrequests_base_controller_js_1.optimizeBitbucketMarkdown)(mergedOptions.description); } // Call service to update the pull request const pullRequest = await atlassian_pullrequests_base_controller_js_1.atlassianPullRequestsService.update(serviceParams); methodLogger.debug(`Successfully updated pull request ${pullRequest.id}`); // Format the response const content = await (0, atlassian_pullrequests_base_controller_js_1.formatPullRequestDetails)(pullRequest); return { content: `## Pull Request Updated Successfully\n\n${content}`, }; } catch (error) { throw (0, atlassian_pullrequests_base_controller_js_1.handleControllerError)(error, { entityType: 'Pull Request', operation: 'updating', source: 'controllers/atlassian.pullrequests.update.controller.ts@update', additionalInfo: { options }, }); } } exports.default = { update };