@zhanglc77/bitbucket-mcp-server 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/CHANGELOG.md +280 -0
  2. package/LICENSE +21 -0
  3. package/README.md +1090 -0
  4. package/build/handlers/branch-handlers.d.ts +55 -0
  5. package/build/handlers/branch-handlers.d.ts.map +1 -0
  6. package/build/handlers/branch-handlers.js +522 -0
  7. package/build/handlers/branch-handlers.js.map +1 -0
  8. package/build/handlers/file-handlers.d.ts +33 -0
  9. package/build/handlers/file-handlers.d.ts.map +1 -0
  10. package/build/handlers/file-handlers.js +308 -0
  11. package/build/handlers/file-handlers.js.map +1 -0
  12. package/build/handlers/pull-request-handlers.d.ts +101 -0
  13. package/build/handlers/pull-request-handlers.d.ts.map +1 -0
  14. package/build/handlers/pull-request-handlers.js +955 -0
  15. package/build/handlers/pull-request-handlers.js.map +1 -0
  16. package/build/handlers/review-handlers.d.ts +67 -0
  17. package/build/handlers/review-handlers.d.ts.map +1 -0
  18. package/build/handlers/review-handlers.js +252 -0
  19. package/build/handlers/review-handlers.js.map +1 -0
  20. package/build/handlers/search-handlers.d.ts +20 -0
  21. package/build/handlers/search-handlers.d.ts.map +1 -0
  22. package/build/handlers/search-handlers.js +151 -0
  23. package/build/handlers/search-handlers.js.map +1 -0
  24. package/build/index.d.ts +3 -0
  25. package/build/index.d.ts.map +1 -0
  26. package/build/index.js +120 -0
  27. package/build/index.js.map +1 -0
  28. package/build/tools/definitions.d.ts +1191 -0
  29. package/build/tools/definitions.d.ts.map +1 -0
  30. package/build/tools/definitions.js +655 -0
  31. package/build/tools/definitions.js.map +1 -0
  32. package/build/types/bitbucket.d.ts +483 -0
  33. package/build/types/bitbucket.d.ts.map +1 -0
  34. package/build/types/bitbucket.js +2 -0
  35. package/build/types/bitbucket.js.map +1 -0
  36. package/build/types/guards.d.ts +140 -0
  37. package/build/types/guards.d.ts.map +1 -0
  38. package/build/types/guards.js +140 -0
  39. package/build/types/guards.js.map +1 -0
  40. package/build/utils/api-client.d.ts +22 -0
  41. package/build/utils/api-client.d.ts.map +1 -0
  42. package/build/utils/api-client.js +111 -0
  43. package/build/utils/api-client.js.map +1 -0
  44. package/build/utils/diff-parser.d.ts +42 -0
  45. package/build/utils/diff-parser.d.ts.map +1 -0
  46. package/build/utils/diff-parser.js +165 -0
  47. package/build/utils/diff-parser.js.map +1 -0
  48. package/build/utils/formatters.d.ts +8 -0
  49. package/build/utils/formatters.d.ts.map +1 -0
  50. package/build/utils/formatters.js +207 -0
  51. package/build/utils/formatters.js.map +1 -0
  52. package/build/utils/suggestion-formatter.d.ts +6 -0
  53. package/build/utils/suggestion-formatter.d.ts.map +1 -0
  54. package/build/utils/suggestion-formatter.js +17 -0
  55. package/build/utils/suggestion-formatter.js.map +1 -0
  56. package/package.json +55 -0
@@ -0,0 +1,140 @@
1
+ // Type guards for tool arguments
2
+ export const isGetPullRequestArgs = (args) => typeof args === 'object' &&
3
+ args !== null &&
4
+ typeof args.workspace === 'string' &&
5
+ typeof args.repository === 'string' &&
6
+ typeof args.pull_request_id === 'number';
7
+ export const isListPullRequestsArgs = (args) => typeof args === 'object' &&
8
+ args !== null &&
9
+ typeof args.workspace === 'string' &&
10
+ typeof args.repository === 'string' &&
11
+ (args.state === undefined || typeof args.state === 'string') &&
12
+ (args.author === undefined || typeof args.author === 'string') &&
13
+ (args.limit === undefined || typeof args.limit === 'number') &&
14
+ (args.start === undefined || typeof args.start === 'number');
15
+ export const isCreatePullRequestArgs = (args) => typeof args === 'object' &&
16
+ args !== null &&
17
+ typeof args.workspace === 'string' &&
18
+ typeof args.repository === 'string' &&
19
+ typeof args.title === 'string' &&
20
+ typeof args.source_branch === 'string' &&
21
+ typeof args.destination_branch === 'string' &&
22
+ (args.description === undefined || typeof args.description === 'string') &&
23
+ (args.reviewers === undefined || Array.isArray(args.reviewers)) &&
24
+ (args.close_source_branch === undefined || typeof args.close_source_branch === 'boolean');
25
+ export const isUpdatePullRequestArgs = (args) => typeof args === 'object' &&
26
+ args !== null &&
27
+ typeof args.workspace === 'string' &&
28
+ typeof args.repository === 'string' &&
29
+ typeof args.pull_request_id === 'number' &&
30
+ (args.title === undefined || typeof args.title === 'string') &&
31
+ (args.description === undefined || typeof args.description === 'string') &&
32
+ (args.destination_branch === undefined || typeof args.destination_branch === 'string') &&
33
+ (args.reviewers === undefined || Array.isArray(args.reviewers));
34
+ export const isAddCommentArgs = (args) => typeof args === 'object' &&
35
+ args !== null &&
36
+ typeof args.workspace === 'string' &&
37
+ typeof args.repository === 'string' &&
38
+ typeof args.pull_request_id === 'number' &&
39
+ typeof args.comment_text === 'string' &&
40
+ (args.parent_comment_id === undefined || typeof args.parent_comment_id === 'number') &&
41
+ (args.file_path === undefined || typeof args.file_path === 'string') &&
42
+ (args.line_number === undefined || typeof args.line_number === 'number') &&
43
+ (args.line_type === undefined || ['ADDED', 'REMOVED', 'CONTEXT'].includes(args.line_type)) &&
44
+ (args.suggestion === undefined || typeof args.suggestion === 'string') &&
45
+ (args.suggestion_end_line === undefined || typeof args.suggestion_end_line === 'number') &&
46
+ (args.code_snippet === undefined || typeof args.code_snippet === 'string') &&
47
+ (args.search_context === undefined || (typeof args.search_context === 'object' &&
48
+ (args.search_context.before === undefined || Array.isArray(args.search_context.before)) &&
49
+ (args.search_context.after === undefined || Array.isArray(args.search_context.after)))) &&
50
+ (args.match_strategy === undefined || ['strict', 'best'].includes(args.match_strategy));
51
+ export const isMergePullRequestArgs = (args) => typeof args === 'object' &&
52
+ args !== null &&
53
+ typeof args.workspace === 'string' &&
54
+ typeof args.repository === 'string' &&
55
+ typeof args.pull_request_id === 'number' &&
56
+ (args.merge_strategy === undefined || typeof args.merge_strategy === 'string') &&
57
+ (args.close_source_branch === undefined || typeof args.close_source_branch === 'boolean') &&
58
+ (args.commit_message === undefined || typeof args.commit_message === 'string');
59
+ export const isDeleteBranchArgs = (args) => typeof args === 'object' &&
60
+ args !== null &&
61
+ typeof args.workspace === 'string' &&
62
+ typeof args.repository === 'string' &&
63
+ typeof args.branch_name === 'string' &&
64
+ (args.force === undefined || typeof args.force === 'boolean');
65
+ export const isListBranchesArgs = (args) => typeof args === 'object' &&
66
+ args !== null &&
67
+ typeof args.workspace === 'string' &&
68
+ typeof args.repository === 'string' &&
69
+ (args.filter === undefined || typeof args.filter === 'string') &&
70
+ (args.limit === undefined || typeof args.limit === 'number') &&
71
+ (args.start === undefined || typeof args.start === 'number');
72
+ export const isGetPullRequestDiffArgs = (args) => typeof args === 'object' &&
73
+ args !== null &&
74
+ typeof args.workspace === 'string' &&
75
+ typeof args.repository === 'string' &&
76
+ typeof args.pull_request_id === 'number' &&
77
+ (args.context_lines === undefined || typeof args.context_lines === 'number') &&
78
+ (args.include_patterns === undefined || (Array.isArray(args.include_patterns) && args.include_patterns.every((p) => typeof p === 'string'))) &&
79
+ (args.exclude_patterns === undefined || (Array.isArray(args.exclude_patterns) && args.exclude_patterns.every((p) => typeof p === 'string'))) &&
80
+ (args.file_path === undefined || typeof args.file_path === 'string');
81
+ export const isApprovePullRequestArgs = (args) => typeof args === 'object' &&
82
+ args !== null &&
83
+ typeof args.workspace === 'string' &&
84
+ typeof args.repository === 'string' &&
85
+ typeof args.pull_request_id === 'number';
86
+ export const isRequestChangesArgs = (args) => typeof args === 'object' &&
87
+ args !== null &&
88
+ typeof args.workspace === 'string' &&
89
+ typeof args.repository === 'string' &&
90
+ typeof args.pull_request_id === 'number' &&
91
+ (args.comment === undefined || typeof args.comment === 'string');
92
+ export const isGetBranchArgs = (args) => typeof args === 'object' &&
93
+ args !== null &&
94
+ typeof args.workspace === 'string' &&
95
+ typeof args.repository === 'string' &&
96
+ typeof args.branch_name === 'string' &&
97
+ (args.include_merged_prs === undefined || typeof args.include_merged_prs === 'boolean');
98
+ export const isListDirectoryContentArgs = (args) => typeof args === 'object' &&
99
+ args !== null &&
100
+ typeof args.workspace === 'string' &&
101
+ typeof args.repository === 'string' &&
102
+ (args.path === undefined || typeof args.path === 'string') &&
103
+ (args.branch === undefined || typeof args.branch === 'string');
104
+ export const isGetFileContentArgs = (args) => typeof args === 'object' &&
105
+ args !== null &&
106
+ typeof args.workspace === 'string' &&
107
+ typeof args.repository === 'string' &&
108
+ typeof args.file_path === 'string' &&
109
+ (args.branch === undefined || typeof args.branch === 'string') &&
110
+ (args.start_line === undefined || typeof args.start_line === 'number') &&
111
+ (args.line_count === undefined || typeof args.line_count === 'number') &&
112
+ (args.full_content === undefined || typeof args.full_content === 'boolean');
113
+ export const isListBranchCommitsArgs = (args) => typeof args === 'object' &&
114
+ args !== null &&
115
+ typeof args.workspace === 'string' &&
116
+ typeof args.repository === 'string' &&
117
+ typeof args.branch_name === 'string' &&
118
+ (args.limit === undefined || typeof args.limit === 'number') &&
119
+ (args.start === undefined || typeof args.start === 'number') &&
120
+ (args.since === undefined || typeof args.since === 'string') &&
121
+ (args.until === undefined || typeof args.until === 'string') &&
122
+ (args.author === undefined || typeof args.author === 'string') &&
123
+ (args.include_merge_commits === undefined || typeof args.include_merge_commits === 'boolean') &&
124
+ (args.search === undefined || typeof args.search === 'string');
125
+ export const isListPrCommitsArgs = (args) => typeof args === 'object' &&
126
+ args !== null &&
127
+ typeof args.workspace === 'string' &&
128
+ typeof args.repository === 'string' &&
129
+ typeof args.pull_request_id === 'number' &&
130
+ (args.limit === undefined || typeof args.limit === 'number') &&
131
+ (args.start === undefined || typeof args.start === 'number');
132
+ export const isSearchCodeArgs = (args) => typeof args === 'object' &&
133
+ args !== null &&
134
+ typeof args.workspace === 'string' &&
135
+ typeof args.search_query === 'string' &&
136
+ (args.repository === undefined || typeof args.repository === 'string') &&
137
+ (args.file_pattern === undefined || typeof args.file_pattern === 'string') &&
138
+ (args.limit === undefined || typeof args.limit === 'number') &&
139
+ (args.start === undefined || typeof args.start === 'number');
140
+ //# sourceMappingURL=guards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guards.js","sourceRoot":"","sources":["../../src/types/guards.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { AxiosError } from 'axios';
2
+ export interface ApiError {
3
+ status?: number;
4
+ message: string;
5
+ isAxiosError: boolean;
6
+ originalError?: AxiosError;
7
+ }
8
+ export declare class BitbucketApiClient {
9
+ private axiosInstance;
10
+ private isServer;
11
+ constructor(baseURL: string, username: string, password?: string, token?: string);
12
+ makeRequest<T>(method: 'get' | 'post' | 'put' | 'delete', path: string, data?: any, config?: any): Promise<T>;
13
+ handleApiError(error: any, context: string): {
14
+ content: {
15
+ type: string;
16
+ text: string;
17
+ }[];
18
+ isError: boolean;
19
+ };
20
+ getIsServer(): boolean;
21
+ }
22
+ //# sourceMappingURL=api-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/utils/api-client.ts"],"names":[],"mappings":"AAAA,OAAc,EAAiB,UAAU,EAAE,MAAM,OAAO,CAAC;AAEzD,MAAM,WAAW,QAAQ;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,UAAU,CAAC;CAC5B;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,QAAQ,CAAU;gBAGxB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM;IAoBV,WAAW,CAAC,CAAC,EACjB,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,EACzC,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,GAAG,EACV,MAAM,CAAC,EAAE,GAAG,GACX,OAAO,CAAC,CAAC,CAAC;IAqCb,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM;;;;;;;IAiD1C,WAAW,IAAI,OAAO;CAGvB"}
@@ -0,0 +1,111 @@
1
+ import axios from 'axios';
2
+ export class BitbucketApiClient {
3
+ axiosInstance;
4
+ isServer;
5
+ constructor(baseURL, username, password, token) {
6
+ this.isServer = !!token;
7
+ const axiosConfig = {
8
+ baseURL,
9
+ headers: {
10
+ 'Content-Type': 'application/json',
11
+ },
12
+ };
13
+ // Use basic auth for Bitbucket Server and Cloud
14
+ axiosConfig.auth = {
15
+ username,
16
+ password,
17
+ };
18
+ this.axiosInstance = axios.create(axiosConfig);
19
+ }
20
+ async makeRequest(method, path, data, config) {
21
+ try {
22
+ let response;
23
+ if (method === 'get') {
24
+ // For GET, config is the second parameter
25
+ response = await this.axiosInstance[method](path, config || {});
26
+ }
27
+ else if (method === 'delete') {
28
+ // For DELETE, we might need to pass data in config
29
+ if (data) {
30
+ response = await this.axiosInstance[method](path, { ...config, data });
31
+ }
32
+ else {
33
+ response = await this.axiosInstance[method](path, config || {});
34
+ }
35
+ }
36
+ else {
37
+ // For POST and PUT, data is second, config is third
38
+ response = await this.axiosInstance[method](path, data, config);
39
+ }
40
+ return response.data;
41
+ }
42
+ catch (error) {
43
+ if (axios.isAxiosError(error)) {
44
+ const status = error.response?.status;
45
+ const message = error.response?.data?.errors?.[0]?.message ||
46
+ error.response?.data?.error?.message ||
47
+ error.response?.data?.message ||
48
+ error.message;
49
+ throw {
50
+ status,
51
+ message,
52
+ isAxiosError: true,
53
+ originalError: error
54
+ };
55
+ }
56
+ throw error;
57
+ }
58
+ }
59
+ handleApiError(error, context) {
60
+ if (error.isAxiosError) {
61
+ const { status, message } = error;
62
+ if (status === 404) {
63
+ return {
64
+ content: [
65
+ {
66
+ type: 'text',
67
+ text: `Not found: ${context}`,
68
+ },
69
+ ],
70
+ isError: true,
71
+ };
72
+ }
73
+ else if (status === 401) {
74
+ return {
75
+ content: [
76
+ {
77
+ type: 'text',
78
+ text: `Authentication failed. Please check your ${this.isServer ? 'BITBUCKET_TOKEN' : 'BITBUCKET_USERNAME and BITBUCKET_APP_PASSWORD'}`,
79
+ },
80
+ ],
81
+ isError: true,
82
+ };
83
+ }
84
+ else if (status === 403) {
85
+ return {
86
+ content: [
87
+ {
88
+ type: 'text',
89
+ text: `Permission denied: ${context}. Ensure your credentials have the necessary permissions.`,
90
+ },
91
+ ],
92
+ isError: true,
93
+ };
94
+ }
95
+ return {
96
+ content: [
97
+ {
98
+ type: 'text',
99
+ text: `Bitbucket API error: ${message}`,
100
+ },
101
+ ],
102
+ isError: true,
103
+ };
104
+ }
105
+ throw error;
106
+ }
107
+ getIsServer() {
108
+ return this.isServer;
109
+ }
110
+ }
111
+ //# sourceMappingURL=api-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/utils/api-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ export interface DiffSection {
2
+ filePath: string;
3
+ oldPath?: string;
4
+ content: string;
5
+ isNew: boolean;
6
+ isDeleted: boolean;
7
+ isRenamed: boolean;
8
+ isBinary: boolean;
9
+ }
10
+ export interface FilterOptions {
11
+ includePatterns?: string[];
12
+ excludePatterns?: string[];
13
+ filePath?: string;
14
+ }
15
+ export interface FilteredResult {
16
+ sections: DiffSection[];
17
+ metadata: {
18
+ totalFiles: number;
19
+ includedFiles: number;
20
+ excludedFiles: number;
21
+ excludedFileList: string[];
22
+ };
23
+ }
24
+ export declare class DiffParser {
25
+ /**
26
+ * Parse a unified diff into file sections
27
+ */
28
+ parseDiffIntoSections(diff: string): DiffSection[];
29
+ /**
30
+ * Parse a single file section from the diff
31
+ */
32
+ private parseFileSection;
33
+ /**
34
+ * Apply filters to diff sections
35
+ */
36
+ filterSections(sections: DiffSection[], options: FilterOptions): FilteredResult;
37
+ /**
38
+ * Reconstruct a unified diff from filtered sections
39
+ */
40
+ reconstructDiff(sections: DiffSection[]): string;
41
+ }
42
+ //# sourceMappingURL=diff-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-parser.d.ts","sourceRoot":"","sources":["../../src/utils/diff-parser.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,QAAQ,EAAE;QACR,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;QACtB,gBAAgB,EAAE,MAAM,EAAE,CAAC;KAC5B,CAAC;CACH;AAED,qBAAa,UAAU;IACrB;;OAEG;IACH,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE;IAgBlD;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAiFxB;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,aAAa,GAAG,cAAc;IA6D/E;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM;CAQjD"}
@@ -0,0 +1,165 @@
1
+ import { minimatch } from 'minimatch';
2
+ export class DiffParser {
3
+ /**
4
+ * Parse a unified diff into file sections
5
+ */
6
+ parseDiffIntoSections(diff) {
7
+ const sections = [];
8
+ // Split by file boundaries - handle both formats
9
+ const fileChunks = diff.split(/(?=^diff --git)/gm).filter(chunk => chunk.trim());
10
+ for (const chunk of fileChunks) {
11
+ const section = this.parseFileSection(chunk);
12
+ if (section) {
13
+ sections.push(section);
14
+ }
15
+ }
16
+ return sections;
17
+ }
18
+ /**
19
+ * Parse a single file section from the diff
20
+ */
21
+ parseFileSection(chunk) {
22
+ const lines = chunk.split('\n');
23
+ if (lines.length === 0)
24
+ return null;
25
+ // Extract file paths from the diff header
26
+ let filePath = '';
27
+ let oldPath;
28
+ let isNew = false;
29
+ let isDeleted = false;
30
+ let isRenamed = false;
31
+ let isBinary = false;
32
+ // Look for diff --git line - handle both standard and Bitbucket Server formats
33
+ const gitDiffMatch = lines[0].match(/^diff --git (?:a\/|src:\/\/)(.+?) (?:b\/|dst:\/\/)(.+?)$/);
34
+ if (gitDiffMatch) {
35
+ const [, aPath, bPath] = gitDiffMatch;
36
+ filePath = bPath;
37
+ // Check subsequent lines for file status
38
+ for (let i = 1; i < Math.min(lines.length, 10); i++) {
39
+ const line = lines[i];
40
+ if (line.startsWith('new file mode')) {
41
+ isNew = true;
42
+ }
43
+ else if (line.startsWith('deleted file mode')) {
44
+ isDeleted = true;
45
+ filePath = aPath; // Use the original path for deleted files
46
+ }
47
+ else if (line.startsWith('rename from')) {
48
+ isRenamed = true;
49
+ oldPath = line.replace('rename from ', '');
50
+ }
51
+ else if (line.includes('Binary files') && line.includes('differ')) {
52
+ isBinary = true;
53
+ }
54
+ else if (line.startsWith('--- ')) {
55
+ // Alternative way to detect new/deleted
56
+ if (line.includes('/dev/null')) {
57
+ isNew = true;
58
+ }
59
+ }
60
+ else if (line.startsWith('+++ ')) {
61
+ if (line.includes('/dev/null')) {
62
+ isDeleted = true;
63
+ }
64
+ // Extract path from +++ line if needed - handle both formats
65
+ const match = line.match(/^\+\+\+ (?:b\/|dst:\/\/)(.+)$/);
66
+ if (match && !filePath) {
67
+ filePath = match[1];
68
+ }
69
+ }
70
+ }
71
+ }
72
+ // Fallback: try to extract from --- and +++ lines
73
+ if (!filePath) {
74
+ for (const line of lines) {
75
+ if (line.startsWith('+++ ')) {
76
+ const match = line.match(/^\+\+\+ (?:b\/|dst:\/\/)(.+)$/);
77
+ if (match) {
78
+ filePath = match[1];
79
+ break;
80
+ }
81
+ }
82
+ else if (line.startsWith('--- ')) {
83
+ const match = line.match(/^--- (?:a\/|src:\/\/)(.+)$/);
84
+ if (match) {
85
+ filePath = match[1];
86
+ }
87
+ }
88
+ }
89
+ }
90
+ if (!filePath)
91
+ return null;
92
+ return {
93
+ filePath,
94
+ oldPath,
95
+ content: chunk,
96
+ isNew,
97
+ isDeleted,
98
+ isRenamed,
99
+ isBinary
100
+ };
101
+ }
102
+ /**
103
+ * Apply filters to diff sections
104
+ */
105
+ filterSections(sections, options) {
106
+ const excludedFileList = [];
107
+ let filteredSections = sections;
108
+ // If specific file path is requested, only keep that file
109
+ if (options.filePath) {
110
+ filteredSections = sections.filter(section => section.filePath === options.filePath ||
111
+ section.oldPath === options.filePath);
112
+ // Track excluded files
113
+ sections.forEach(section => {
114
+ if (section.filePath !== options.filePath &&
115
+ section.oldPath !== options.filePath) {
116
+ excludedFileList.push(section.filePath);
117
+ }
118
+ });
119
+ }
120
+ else {
121
+ // Apply exclude patterns first (blacklist)
122
+ if (options.excludePatterns && options.excludePatterns.length > 0) {
123
+ filteredSections = filteredSections.filter(section => {
124
+ const shouldExclude = options.excludePatterns.some(pattern => minimatch(section.filePath, pattern, { matchBase: true }));
125
+ if (shouldExclude) {
126
+ excludedFileList.push(section.filePath);
127
+ return false;
128
+ }
129
+ return true;
130
+ });
131
+ }
132
+ // Apply include patterns if specified (whitelist)
133
+ if (options.includePatterns && options.includePatterns.length > 0) {
134
+ filteredSections = filteredSections.filter(section => {
135
+ const shouldInclude = options.includePatterns.some(pattern => minimatch(section.filePath, pattern, { matchBase: true }));
136
+ if (!shouldInclude) {
137
+ excludedFileList.push(section.filePath);
138
+ return false;
139
+ }
140
+ return true;
141
+ });
142
+ }
143
+ }
144
+ return {
145
+ sections: filteredSections,
146
+ metadata: {
147
+ totalFiles: sections.length,
148
+ includedFiles: filteredSections.length,
149
+ excludedFiles: sections.length - filteredSections.length,
150
+ excludedFileList
151
+ }
152
+ };
153
+ }
154
+ /**
155
+ * Reconstruct a unified diff from filtered sections
156
+ */
157
+ reconstructDiff(sections) {
158
+ if (sections.length === 0) {
159
+ return '';
160
+ }
161
+ // Join all sections with proper spacing
162
+ return sections.map(section => section.content).join('\n');
163
+ }
164
+ }
165
+ //# sourceMappingURL=diff-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-parser.js","sourceRoot":"","sources":["../../src/utils/diff-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { BitbucketServerPullRequest, BitbucketCloudPullRequest, MergeInfo, BitbucketServerCommit, BitbucketCloudCommit, FormattedCommit, BitbucketServerSearchResult, FormattedSearchResult } from '../types/bitbucket.js';
2
+ export declare function formatServerResponse(pr: BitbucketServerPullRequest, mergeInfo?: MergeInfo, baseUrl?: string): any;
3
+ export declare function formatCloudResponse(pr: BitbucketCloudPullRequest): any;
4
+ export declare function formatServerCommit(commit: BitbucketServerCommit): FormattedCommit;
5
+ export declare function formatCloudCommit(commit: BitbucketCloudCommit): FormattedCommit;
6
+ export declare function formatSearchResults(searchResult: BitbucketServerSearchResult): FormattedSearchResult[];
7
+ export declare function formatCodeSearchOutput(searchResult: BitbucketServerSearchResult): string;
8
+ //# sourceMappingURL=formatters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../src/utils/formatters.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,SAAS,EACT,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,2BAA2B,EAC3B,qBAAqB,EACtB,MAAM,uBAAuB,CAAC;AAE/B,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,0BAA0B,EAC9B,SAAS,CAAC,EAAE,SAAS,EACrB,OAAO,CAAC,EAAE,MAAM,GACf,GAAG,CAwCL;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,yBAAyB,GAAG,GAAG,CA2BtE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,qBAAqB,GAAG,eAAe,CAajF;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,oBAAoB,GAAG,eAAe,CAkB/E;AAED,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,2BAA2B,GAAG,qBAAqB,EAAE,CAuCtG;AA0DD,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,2BAA2B,GAAG,MAAM,CAkCxF"}