@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,55 @@
1
+ import { BitbucketApiClient } from '../utils/api-client.js';
2
+ export declare class BranchHandlers {
3
+ private apiClient;
4
+ private baseUrl;
5
+ constructor(apiClient: BitbucketApiClient, baseUrl: string);
6
+ handleListBranches(args: any): Promise<{
7
+ content: {
8
+ type: string;
9
+ text: string;
10
+ }[];
11
+ isError: boolean;
12
+ } | {
13
+ content: {
14
+ type: string;
15
+ text: string;
16
+ }[];
17
+ }>;
18
+ handleDeleteBranch(args: any): Promise<{
19
+ content: {
20
+ type: string;
21
+ text: string;
22
+ }[];
23
+ isError: boolean;
24
+ } | {
25
+ content: {
26
+ type: string;
27
+ text: string;
28
+ }[];
29
+ }>;
30
+ handleGetBranch(args: any): Promise<{
31
+ content: {
32
+ type: string;
33
+ text: string;
34
+ }[];
35
+ isError: boolean;
36
+ } | {
37
+ content: {
38
+ type: string;
39
+ text: string;
40
+ }[];
41
+ }>;
42
+ handleListBranchCommits(args: any): Promise<{
43
+ content: {
44
+ type: string;
45
+ text: string;
46
+ }[];
47
+ isError: boolean;
48
+ } | {
49
+ content: {
50
+ type: string;
51
+ text: string;
52
+ }[];
53
+ }>;
54
+ }
55
+ //# sourceMappingURL=branch-handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branch-handlers.d.ts","sourceRoot":"","sources":["../../src/handlers/branch-handlers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAgB5D,qBAAa,cAAc;IAEvB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,OAAO;gBADP,SAAS,EAAE,kBAAkB,EAC7B,OAAO,EAAE,MAAM;IAGnB,kBAAkB,CAAC,IAAI,EAAE,GAAG;;;;;;;;;;;;IA0F5B,kBAAkB,CAAC,IAAI,EAAE,GAAG;;;;;;;;;;;;IA+E5B,eAAe,CAAC,IAAI,EAAE,GAAG;;;;;;;;;;;;IAmNzB,uBAAuB,CAAC,IAAI,EAAE,GAAG;;;;;;;;;;;;CAuLxC"}
@@ -0,0 +1,522 @@
1
+ import { ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js';
2
+ import { isListBranchesArgs, isDeleteBranchArgs, isGetBranchArgs, isListBranchCommitsArgs } from '../types/guards.js';
3
+ import { formatServerCommit, formatCloudCommit } from '../utils/formatters.js';
4
+ export class BranchHandlers {
5
+ apiClient;
6
+ baseUrl;
7
+ constructor(apiClient, baseUrl) {
8
+ this.apiClient = apiClient;
9
+ this.baseUrl = baseUrl;
10
+ }
11
+ async handleListBranches(args) {
12
+ if (!isListBranchesArgs(args)) {
13
+ throw new McpError(ErrorCode.InvalidParams, 'Invalid arguments for list_branches');
14
+ }
15
+ const { workspace, repository, filter, limit = 25, start = 0 } = args;
16
+ try {
17
+ let apiPath;
18
+ let params = {};
19
+ if (this.apiClient.getIsServer()) {
20
+ // Bitbucket Server API - using latest version for better filtering support
21
+ apiPath = `/rest/api/latest/projects/${workspace}/repos/${repository}/branches`;
22
+ params = {
23
+ limit,
24
+ start,
25
+ details: true,
26
+ orderBy: 'MODIFICATION'
27
+ };
28
+ if (filter) {
29
+ params.filterText = filter;
30
+ }
31
+ }
32
+ else {
33
+ // Bitbucket Cloud API
34
+ apiPath = `/repositories/${workspace}/${repository}/refs/branches`;
35
+ params = {
36
+ pagelen: limit,
37
+ page: Math.floor(start / limit) + 1,
38
+ };
39
+ if (filter) {
40
+ params.q = `name ~ "${filter}"`;
41
+ }
42
+ }
43
+ const response = await this.apiClient.makeRequest('get', apiPath, undefined, { params });
44
+ // Format the response
45
+ let branches = [];
46
+ let totalCount = 0;
47
+ let nextPageStart = null;
48
+ if (this.apiClient.getIsServer()) {
49
+ // Bitbucket Server response
50
+ branches = (response.values || []).map((branch) => ({
51
+ name: branch.displayId,
52
+ id: branch.id,
53
+ latest_commit: branch.latestCommit,
54
+ is_default: branch.isDefault || false
55
+ }));
56
+ totalCount = response.size || 0;
57
+ if (!response.isLastPage && response.nextPageStart !== undefined) {
58
+ nextPageStart = response.nextPageStart;
59
+ }
60
+ }
61
+ else {
62
+ // Bitbucket Cloud response
63
+ branches = (response.values || []).map((branch) => ({
64
+ name: branch.name,
65
+ target: branch.target.hash,
66
+ is_default: branch.name === 'main' || branch.name === 'master'
67
+ }));
68
+ totalCount = response.size || 0;
69
+ if (response.next) {
70
+ nextPageStart = start + limit;
71
+ }
72
+ }
73
+ return {
74
+ content: [
75
+ {
76
+ type: 'text',
77
+ text: JSON.stringify({
78
+ branches,
79
+ total_count: totalCount,
80
+ start,
81
+ limit,
82
+ has_more: nextPageStart !== null,
83
+ next_start: nextPageStart
84
+ }, null, 2),
85
+ },
86
+ ],
87
+ };
88
+ }
89
+ catch (error) {
90
+ return this.apiClient.handleApiError(error, `listing branches in ${workspace}/${repository}`);
91
+ }
92
+ }
93
+ async handleDeleteBranch(args) {
94
+ if (!isDeleteBranchArgs(args)) {
95
+ throw new McpError(ErrorCode.InvalidParams, 'Invalid arguments for delete_branch');
96
+ }
97
+ const { workspace, repository, branch_name, force } = args;
98
+ try {
99
+ let apiPath;
100
+ if (this.apiClient.getIsServer()) {
101
+ // First, we need to get the branch details to find the latest commit
102
+ const branchesPath = `/rest/api/latest/projects/${workspace}/repos/${repository}/branches`;
103
+ const branchesResponse = await this.apiClient.makeRequest('get', branchesPath, undefined, {
104
+ params: {
105
+ filterText: branch_name,
106
+ limit: 100
107
+ }
108
+ });
109
+ // Find the exact branch
110
+ const branch = branchesResponse.values?.find((b) => b.displayId === branch_name);
111
+ if (!branch) {
112
+ throw new Error(`Branch '${branch_name}' not found`);
113
+ }
114
+ // Now delete using branch-utils endpoint with correct format
115
+ apiPath = `/rest/branch-utils/latest/projects/${workspace}/repos/${repository}/branches`;
116
+ try {
117
+ await this.apiClient.makeRequest('delete', apiPath, {
118
+ name: branch_name,
119
+ endPoint: branch.latestCommit
120
+ });
121
+ }
122
+ catch (deleteError) {
123
+ // If the error is about empty response but status is 204 (No Content), it's successful
124
+ if (deleteError.originalError?.response?.status === 204 ||
125
+ deleteError.message?.includes('No content to map')) {
126
+ // Branch was deleted successfully
127
+ }
128
+ else {
129
+ throw deleteError;
130
+ }
131
+ }
132
+ }
133
+ else {
134
+ // Bitbucket Cloud API
135
+ apiPath = `/repositories/${workspace}/${repository}/refs/branches/${branch_name}`;
136
+ try {
137
+ await this.apiClient.makeRequest('delete', apiPath);
138
+ }
139
+ catch (deleteError) {
140
+ // If the error is about empty response but status is 204 (No Content), it's successful
141
+ if (deleteError.originalError?.response?.status === 204 ||
142
+ deleteError.message?.includes('No content to map')) {
143
+ // Branch was deleted successfully
144
+ }
145
+ else {
146
+ throw deleteError;
147
+ }
148
+ }
149
+ }
150
+ return {
151
+ content: [
152
+ {
153
+ type: 'text',
154
+ text: JSON.stringify({
155
+ message: `Branch '${branch_name}' deleted successfully`,
156
+ branch: branch_name,
157
+ repository: `${workspace}/${repository}`
158
+ }, null, 2),
159
+ },
160
+ ],
161
+ };
162
+ }
163
+ catch (error) {
164
+ return this.apiClient.handleApiError(error, `deleting branch '${branch_name}' in ${workspace}/${repository}`);
165
+ }
166
+ }
167
+ async handleGetBranch(args) {
168
+ if (!isGetBranchArgs(args)) {
169
+ throw new McpError(ErrorCode.InvalidParams, 'Invalid arguments for get_branch');
170
+ }
171
+ const { workspace, repository, branch_name, include_merged_prs = false } = args;
172
+ try {
173
+ // Step 1: Get branch details
174
+ let branchInfo;
175
+ let branchCommitInfo = {};
176
+ if (this.apiClient.getIsServer()) {
177
+ // Bitbucket Server - get branch details
178
+ const branchesPath = `/rest/api/latest/projects/${workspace}/repos/${repository}/branches`;
179
+ const branchesResponse = await this.apiClient.makeRequest('get', branchesPath, undefined, {
180
+ params: {
181
+ filterText: branch_name,
182
+ limit: 100,
183
+ details: true
184
+ }
185
+ });
186
+ // Find the exact branch
187
+ const branch = branchesResponse.values?.find((b) => b.displayId === branch_name);
188
+ if (!branch) {
189
+ throw new Error(`Branch '${branch_name}' not found`);
190
+ }
191
+ branchInfo = {
192
+ name: branch.displayId,
193
+ id: branch.id,
194
+ latest_commit: {
195
+ id: branch.latestCommit,
196
+ message: branch.metadata?.['com.atlassian.bitbucket.server.bitbucket-branch:latest-commit-metadata']?.message || null,
197
+ author: branch.metadata?.['com.atlassian.bitbucket.server.bitbucket-branch:latest-commit-metadata']?.author || null,
198
+ date: branch.metadata?.['com.atlassian.bitbucket.server.bitbucket-branch:latest-commit-metadata']?.authorTimestamp
199
+ ? new Date(branch.metadata['com.atlassian.bitbucket.server.bitbucket-branch:latest-commit-metadata'].authorTimestamp).toISOString()
200
+ : null
201
+ },
202
+ is_default: branch.isDefault || false
203
+ };
204
+ }
205
+ else {
206
+ // Bitbucket Cloud - get branch details
207
+ const branchPath = `/repositories/${workspace}/${repository}/refs/branches/${encodeURIComponent(branch_name)}`;
208
+ const branch = await this.apiClient.makeRequest('get', branchPath);
209
+ branchInfo = {
210
+ name: branch.name,
211
+ id: `refs/heads/${branch.name}`,
212
+ latest_commit: {
213
+ id: branch.target.hash,
214
+ message: branch.target.message,
215
+ author: branch.target.author.user?.display_name || branch.target.author.raw,
216
+ date: branch.target.date
217
+ },
218
+ is_default: false // Will check this with default branch info
219
+ };
220
+ // Check if this is the default branch
221
+ try {
222
+ const repoPath = `/repositories/${workspace}/${repository}`;
223
+ const repoInfo = await this.apiClient.makeRequest('get', repoPath);
224
+ branchInfo.is_default = branch.name === repoInfo.mainbranch?.name;
225
+ }
226
+ catch (e) {
227
+ // Ignore error, just assume not default
228
+ }
229
+ }
230
+ // Step 2: Get open PRs from this branch
231
+ let openPRs = [];
232
+ if (this.apiClient.getIsServer()) {
233
+ // Bitbucket Server
234
+ const prPath = `/rest/api/1.0/projects/${workspace}/repos/${repository}/pull-requests`;
235
+ const prResponse = await this.apiClient.makeRequest('get', prPath, undefined, {
236
+ params: {
237
+ state: 'OPEN',
238
+ direction: 'OUTGOING',
239
+ at: `refs/heads/${branch_name}`,
240
+ limit: 100
241
+ }
242
+ });
243
+ openPRs = (prResponse.values || []).map((pr) => ({
244
+ id: pr.id,
245
+ title: pr.title,
246
+ destination_branch: pr.toRef.displayId,
247
+ author: pr.author.user.displayName,
248
+ created_on: new Date(pr.createdDate).toISOString(),
249
+ reviewers: pr.reviewers.map((r) => r.user.displayName),
250
+ approval_status: {
251
+ approved_by: pr.reviewers.filter((r) => r.approved).map((r) => r.user.displayName),
252
+ changes_requested_by: pr.reviewers.filter((r) => r.status === 'NEEDS_WORK').map((r) => r.user.displayName),
253
+ pending: pr.reviewers.filter((r) => !r.approved && r.status !== 'NEEDS_WORK').map((r) => r.user.displayName)
254
+ },
255
+ url: `${this.baseUrl}/projects/${workspace}/repos/${repository}/pull-requests/${pr.id}`
256
+ }));
257
+ }
258
+ else {
259
+ // Bitbucket Cloud
260
+ const prPath = `/repositories/${workspace}/${repository}/pullrequests`;
261
+ const prResponse = await this.apiClient.makeRequest('get', prPath, undefined, {
262
+ params: {
263
+ state: 'OPEN',
264
+ q: `source.branch.name="${branch_name}"`,
265
+ pagelen: 50
266
+ }
267
+ });
268
+ openPRs = (prResponse.values || []).map((pr) => ({
269
+ id: pr.id,
270
+ title: pr.title,
271
+ destination_branch: pr.destination.branch.name,
272
+ author: pr.author.display_name,
273
+ created_on: pr.created_on,
274
+ reviewers: pr.reviewers.map((r) => r.display_name),
275
+ approval_status: {
276
+ approved_by: pr.participants.filter((p) => p.approved).map((p) => p.user.display_name),
277
+ changes_requested_by: [], // Cloud doesn't have explicit "changes requested" status
278
+ pending: pr.reviewers.filter((r) => !pr.participants.find((p) => p.user.account_id === r.account_id && p.approved))
279
+ .map((r) => r.display_name)
280
+ },
281
+ url: pr.links.html.href
282
+ }));
283
+ }
284
+ // Step 3: Optionally get merged PRs
285
+ let mergedPRs = [];
286
+ if (include_merged_prs) {
287
+ if (this.apiClient.getIsServer()) {
288
+ // Bitbucket Server
289
+ const mergedPrPath = `/rest/api/1.0/projects/${workspace}/repos/${repository}/pull-requests`;
290
+ const mergedPrResponse = await this.apiClient.makeRequest('get', mergedPrPath, undefined, {
291
+ params: {
292
+ state: 'MERGED',
293
+ direction: 'OUTGOING',
294
+ at: `refs/heads/${branch_name}`,
295
+ limit: 25
296
+ }
297
+ });
298
+ mergedPRs = (mergedPrResponse.values || []).map((pr) => ({
299
+ id: pr.id,
300
+ title: pr.title,
301
+ merged_at: new Date(pr.updatedDate).toISOString(), // Using updated date as merge date
302
+ merged_by: pr.participants.find((p) => p.role === 'PARTICIPANT' && p.approved)?.user.displayName || 'Unknown'
303
+ }));
304
+ }
305
+ else {
306
+ // Bitbucket Cloud
307
+ const mergedPrPath = `/repositories/${workspace}/${repository}/pullrequests`;
308
+ const mergedPrResponse = await this.apiClient.makeRequest('get', mergedPrPath, undefined, {
309
+ params: {
310
+ state: 'MERGED',
311
+ q: `source.branch.name="${branch_name}"`,
312
+ pagelen: 25
313
+ }
314
+ });
315
+ mergedPRs = (mergedPrResponse.values || []).map((pr) => ({
316
+ id: pr.id,
317
+ title: pr.title,
318
+ merged_at: pr.updated_on,
319
+ merged_by: pr.closed_by?.display_name || 'Unknown'
320
+ }));
321
+ }
322
+ }
323
+ // Step 4: Calculate statistics
324
+ const daysSinceLastCommit = branchInfo.latest_commit.date
325
+ ? Math.floor((Date.now() - new Date(branchInfo.latest_commit.date).getTime()) / (1000 * 60 * 60 * 24))
326
+ : null;
327
+ // Step 5: Format and return combined response
328
+ return {
329
+ content: [
330
+ {
331
+ type: 'text',
332
+ text: JSON.stringify({
333
+ branch: branchInfo,
334
+ open_pull_requests: openPRs,
335
+ merged_pull_requests: mergedPRs,
336
+ statistics: {
337
+ total_open_prs: openPRs.length,
338
+ total_merged_prs: mergedPRs.length,
339
+ days_since_last_commit: daysSinceLastCommit
340
+ }
341
+ }, null, 2),
342
+ },
343
+ ],
344
+ };
345
+ }
346
+ catch (error) {
347
+ // Handle specific not found error
348
+ if (error.message?.includes('not found')) {
349
+ return {
350
+ content: [
351
+ {
352
+ type: 'text',
353
+ text: `Branch '${branch_name}' not found in ${workspace}/${repository}`,
354
+ },
355
+ ],
356
+ isError: true,
357
+ };
358
+ }
359
+ return this.apiClient.handleApiError(error, `getting branch '${branch_name}' in ${workspace}/${repository}`);
360
+ }
361
+ }
362
+ async handleListBranchCommits(args) {
363
+ if (!isListBranchCommitsArgs(args)) {
364
+ throw new McpError(ErrorCode.InvalidParams, 'Invalid arguments for list_branch_commits');
365
+ }
366
+ const { workspace, repository, branch_name, limit = 25, start = 0, since, until, author, include_merge_commits = true, search } = args;
367
+ try {
368
+ let apiPath;
369
+ let params = {};
370
+ let commits = [];
371
+ let totalCount = 0;
372
+ let nextPageStart = null;
373
+ if (this.apiClient.getIsServer()) {
374
+ // Bitbucket Server API
375
+ apiPath = `/rest/api/1.0/projects/${workspace}/repos/${repository}/commits`;
376
+ params = {
377
+ until: `refs/heads/${branch_name}`,
378
+ limit,
379
+ start,
380
+ withCounts: true
381
+ };
382
+ // Add filters
383
+ if (since) {
384
+ params.since = since;
385
+ }
386
+ if (!include_merge_commits) {
387
+ params.merges = 'exclude';
388
+ }
389
+ const response = await this.apiClient.makeRequest('get', apiPath, undefined, { params });
390
+ // Format commits
391
+ commits = (response.values || []).map((commit) => formatServerCommit(commit));
392
+ // Apply client-side filters for Server API
393
+ if (author) {
394
+ // Filter by author email or name
395
+ commits = commits.filter(c => c.author.email === author ||
396
+ c.author.name === author ||
397
+ c.author.email.toLowerCase() === author.toLowerCase() ||
398
+ c.author.name.toLowerCase() === author.toLowerCase());
399
+ }
400
+ // Filter by date if 'until' is provided (Server API doesn't support 'until' param directly)
401
+ if (until) {
402
+ const untilDate = new Date(until).getTime();
403
+ commits = commits.filter(c => new Date(c.date).getTime() <= untilDate);
404
+ }
405
+ // Filter by message search if provided
406
+ if (search) {
407
+ const searchLower = search.toLowerCase();
408
+ commits = commits.filter(c => c.message.toLowerCase().includes(searchLower));
409
+ }
410
+ // If we applied client-side filters, update the total count
411
+ if (author || until || search) {
412
+ totalCount = commits.length;
413
+ // Can't determine if there are more results when filtering client-side
414
+ nextPageStart = null;
415
+ }
416
+ else {
417
+ totalCount = response.size || commits.length;
418
+ if (!response.isLastPage && response.nextPageStart !== undefined) {
419
+ nextPageStart = response.nextPageStart;
420
+ }
421
+ }
422
+ }
423
+ else {
424
+ // Bitbucket Cloud API
425
+ apiPath = `/repositories/${workspace}/${repository}/commits/${encodeURIComponent(branch_name)}`;
426
+ params = {
427
+ pagelen: limit,
428
+ page: Math.floor(start / limit) + 1
429
+ };
430
+ // Build query string for filters
431
+ const queryParts = [];
432
+ if (author) {
433
+ queryParts.push(`author.raw ~ "${author}"`);
434
+ }
435
+ if (!include_merge_commits) {
436
+ // Cloud API doesn't have direct merge exclusion, we'll filter client-side
437
+ }
438
+ if (queryParts.length > 0) {
439
+ params.q = queryParts.join(' AND ');
440
+ }
441
+ const response = await this.apiClient.makeRequest('get', apiPath, undefined, { params });
442
+ // Format commits
443
+ let cloudCommits = (response.values || []).map((commit) => formatCloudCommit(commit));
444
+ // Apply client-side filters
445
+ if (!include_merge_commits) {
446
+ cloudCommits = cloudCommits.filter((c) => !c.is_merge_commit);
447
+ }
448
+ if (since) {
449
+ const sinceDate = new Date(since).getTime();
450
+ cloudCommits = cloudCommits.filter((c) => new Date(c.date).getTime() >= sinceDate);
451
+ }
452
+ if (until) {
453
+ const untilDate = new Date(until).getTime();
454
+ cloudCommits = cloudCommits.filter((c) => new Date(c.date).getTime() <= untilDate);
455
+ }
456
+ if (search) {
457
+ const searchLower = search.toLowerCase();
458
+ cloudCommits = cloudCommits.filter((c) => c.message.toLowerCase().includes(searchLower));
459
+ }
460
+ commits = cloudCommits;
461
+ totalCount = response.size || commits.length;
462
+ if (response.next) {
463
+ nextPageStart = start + limit;
464
+ }
465
+ }
466
+ // Get branch head info
467
+ let branchHead = null;
468
+ try {
469
+ if (this.apiClient.getIsServer()) {
470
+ const branchesPath = `/rest/api/latest/projects/${workspace}/repos/${repository}/branches`;
471
+ const branchesResponse = await this.apiClient.makeRequest('get', branchesPath, undefined, {
472
+ params: { filterText: branch_name, limit: 1 }
473
+ });
474
+ const branch = branchesResponse.values?.find((b) => b.displayId === branch_name);
475
+ branchHead = branch?.latestCommit || null;
476
+ }
477
+ else {
478
+ const branchPath = `/repositories/${workspace}/${repository}/refs/branches/${encodeURIComponent(branch_name)}`;
479
+ const branch = await this.apiClient.makeRequest('get', branchPath);
480
+ branchHead = branch.target?.hash || null;
481
+ }
482
+ }
483
+ catch (e) {
484
+ // Ignore error, branch head is optional
485
+ }
486
+ // Build filters applied summary
487
+ const filtersApplied = {};
488
+ if (author)
489
+ filtersApplied.author = author;
490
+ if (since)
491
+ filtersApplied.since = since;
492
+ if (until)
493
+ filtersApplied.until = until;
494
+ if (include_merge_commits !== undefined)
495
+ filtersApplied.include_merge_commits = include_merge_commits;
496
+ if (search)
497
+ filtersApplied.search = search;
498
+ return {
499
+ content: [
500
+ {
501
+ type: 'text',
502
+ text: JSON.stringify({
503
+ branch_name,
504
+ branch_head: branchHead,
505
+ commits,
506
+ total_count: totalCount,
507
+ start,
508
+ limit,
509
+ has_more: nextPageStart !== null,
510
+ next_start: nextPageStart,
511
+ filters_applied: filtersApplied
512
+ }, null, 2),
513
+ },
514
+ ],
515
+ };
516
+ }
517
+ catch (error) {
518
+ return this.apiClient.handleApiError(error, `listing commits for branch '${branch_name}' in ${workspace}/${repository}`);
519
+ }
520
+ }
521
+ }
522
+ //# sourceMappingURL=branch-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branch-handlers.js","sourceRoot":"","sources":["../../src/handlers/branch-handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { BitbucketApiClient } from '../utils/api-client.js';
2
+ export declare class FileHandlers {
3
+ private apiClient;
4
+ private baseUrl;
5
+ private readonly DEFAULT_LINES_BY_EXT;
6
+ constructor(apiClient: BitbucketApiClient, baseUrl: string);
7
+ handleListDirectoryContent(args: any): Promise<{
8
+ content: {
9
+ type: string;
10
+ text: string;
11
+ }[];
12
+ isError: boolean;
13
+ } | {
14
+ content: {
15
+ type: string;
16
+ text: string;
17
+ }[];
18
+ }>;
19
+ handleGetFileContent(args: any): Promise<{
20
+ content: {
21
+ type: string;
22
+ text: string;
23
+ }[];
24
+ isError: boolean;
25
+ } | {
26
+ content: {
27
+ type: string;
28
+ text: string;
29
+ }[];
30
+ }>;
31
+ private getDefaultLines;
32
+ }
33
+ //# sourceMappingURL=file-handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-handlers.d.ts","sourceRoot":"","sources":["../../src/handlers/file-handlers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAY5D,qBAAa,YAAY;IAWrB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,OAAO;IAVjB,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAMnC;gBAGQ,SAAS,EAAE,kBAAkB,EAC7B,OAAO,EAAE,MAAM;IAGnB,0BAA0B,CAAC,IAAI,EAAE,GAAG;;;;;;;;;;;;IAwFpC,oBAAoB,CAAC,IAAI,EAAE,GAAG;;;;;;;;;;;;IA6NpC,OAAO,CAAC,eAAe;CAcxB"}