@ecubelabs/atlassian-mcp 1.2.0-next.4 → 1.2.0-next.5

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.
@@ -1,9 +1,9 @@
1
- import { markdownToAdf } from "marklassian";
2
- import { BaseApiService } from "./base-client.js";
3
- import { atlassianConfig } from "../config.js";
1
+ import { markdownToAdf } from 'marklassian';
2
+ import { atlassianConfig } from '../config.js';
3
+ import { BaseApiService } from './base-client.js';
4
4
  export class JiraService extends BaseApiService {
5
5
  constructor() {
6
- super(atlassianConfig.jira, "JiraService");
6
+ super(atlassianConfig.jira, 'JiraService');
7
7
  }
8
8
  /**
9
9
  * Issue 조회
@@ -11,7 +11,7 @@ export class JiraService extends BaseApiService {
11
11
  */
12
12
  async getIssue(issueKey, expand) {
13
13
  return this.makeRequest(() => this.client.get(`/issue/${issueKey}`, {
14
- params: expand ? { expand: expand.join(",") } : undefined,
14
+ params: expand ? { expand: expand.join(',') } : undefined,
15
15
  }));
16
16
  }
17
17
  /**
@@ -40,7 +40,7 @@ export class JiraService extends BaseApiService {
40
40
  body.failFast = failFast;
41
41
  if (reconcileIssues)
42
42
  body.reconcileIssues = reconcileIssues;
43
- const response = await this.makeRequest(() => this.client.post("/search/jql", body));
43
+ const response = await this.makeRequest(() => this.client.post('/search/jql', body));
44
44
  return {
45
45
  issues: response.issues || [],
46
46
  startAt: response.startAt,
@@ -65,9 +65,9 @@ export class JiraService extends BaseApiService {
65
65
  if (orderBy)
66
66
  params.orderBy = orderBy;
67
67
  if (id)
68
- params.id = id.join(",");
68
+ params.id = id.join(',');
69
69
  if (keys)
70
- params.keys = keys.join(",");
70
+ params.keys = keys.join(',');
71
71
  if (query)
72
72
  params.query = query;
73
73
  if (typeKey)
@@ -77,19 +77,19 @@ export class JiraService extends BaseApiService {
77
77
  if (action)
78
78
  params.action = action;
79
79
  if (expand)
80
- params.expand = expand.join(",");
80
+ params.expand = expand.join(',');
81
81
  if (status)
82
- params.status = status.join(",");
82
+ params.status = status.join(',');
83
83
  if (properties) {
84
84
  // Handle the nested StringList structure
85
85
  properties.forEach((prop, index) => {
86
- params[`properties[${index}]`] = prop.join(",");
86
+ params[`properties[${index}]`] = prop.join(',');
87
87
  });
88
88
  }
89
89
  if (propertyQuery)
90
90
  params.propertyQuery = propertyQuery;
91
91
  }
92
- return this.makeRequest(() => this.client.get("/project/search", { params }));
92
+ return this.makeRequest(() => this.client.get('/project/search', { params }));
93
93
  }
94
94
  /**
95
95
  * 이슈 댓글 목록 조회
@@ -107,7 +107,7 @@ export class JiraService extends BaseApiService {
107
107
  if (orderBy)
108
108
  params.orderBy = orderBy;
109
109
  if (expand)
110
- params.expand = expand.join(",");
110
+ params.expand = expand.join(',');
111
111
  }
112
112
  return this.makeRequest(() => this.client.get(`/issue/${issueKey}/comment`, { params }));
113
113
  }
@@ -144,16 +144,16 @@ export class JiraService extends BaseApiService {
144
144
  if (maxResults !== undefined)
145
145
  params.maxResults = maxResults;
146
146
  }
147
- return this.makeRequest(() => this.client.get("/field/search", { params }));
147
+ return this.makeRequest(() => this.client.get('/field/search', { params }));
148
148
  }
149
149
  /**
150
150
  * JQL 파싱 및 검증
151
151
  * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-jql/#api-rest-api-3-jql-parse-post
152
152
  */
153
153
  async parseJql(query, validation) {
154
- return this.makeRequest(() => this.client.post("/jql/parse", {
154
+ return this.makeRequest(() => this.client.post('/jql/parse', {
155
155
  query,
156
- validation: validation || "strict",
156
+ validation: validation || 'strict',
157
157
  }));
158
158
  }
159
159
  /**
@@ -192,7 +192,7 @@ export class JiraService extends BaseApiService {
192
192
  if (options.additionalFields) {
193
193
  Object.assign(fields, options.additionalFields);
194
194
  }
195
- return this.makeRequest(() => this.client.post("/issue", { fields }));
195
+ return this.makeRequest(() => this.client.post('/issue', { fields }));
196
196
  }
197
197
  /**
198
198
  * 이슈 담당자 변경
@@ -213,14 +213,14 @@ export class JiraService extends BaseApiService {
213
213
  }
214
214
  if (options.description) {
215
215
  fields.description = {
216
- type: "doc",
216
+ type: 'doc',
217
217
  version: 1,
218
218
  content: [
219
219
  {
220
- type: "paragraph",
220
+ type: 'paragraph',
221
221
  content: [
222
222
  {
223
- type: "text",
223
+ type: 'text',
224
224
  text: options.description,
225
225
  },
226
226
  ],
@@ -265,7 +265,7 @@ export class JiraService extends BaseApiService {
265
265
  if (property)
266
266
  params.property = property;
267
267
  }
268
- return this.makeRequest(() => this.client.get("/user/search", { params }));
268
+ return this.makeRequest(() => this.client.get('/user/search', { params }));
269
269
  }
270
270
  /**
271
271
  * 사용자 선택 자동완성
@@ -287,7 +287,7 @@ export class JiraService extends BaseApiService {
287
287
  params.avatarSize = options.avatarSize;
288
288
  if (options.excludeConnectUsers !== undefined)
289
289
  params.excludeConnectUsers = options.excludeConnectUsers;
290
- return this.makeRequest(() => this.client.get("/user/picker", { params }));
290
+ return this.makeRequest(() => this.client.get('/user/picker', { params }));
291
291
  }
292
292
  /**
293
293
  * 할당 가능한 사용자 검색
@@ -296,7 +296,7 @@ export class JiraService extends BaseApiService {
296
296
  async searchAssignableUsers(options) {
297
297
  const params = {};
298
298
  if (options.projectKeys)
299
- params.projectKeys = options.projectKeys.join(",");
299
+ params.projectKeys = options.projectKeys.join(',');
300
300
  if (options.query)
301
301
  params.query = options.query;
302
302
  if (options.username)
@@ -307,7 +307,7 @@ export class JiraService extends BaseApiService {
307
307
  params.startAt = options.startAt;
308
308
  if (options.maxResults !== undefined)
309
309
  params.maxResults = options.maxResults;
310
- return this.makeRequest(() => this.client.get("/user/assignable/search", { params }));
310
+ return this.makeRequest(() => this.client.get('/user/assignable/search', { params }));
311
311
  }
312
312
  /**
313
313
  * 권한별 사용자 검색
@@ -331,7 +331,7 @@ export class JiraService extends BaseApiService {
331
331
  params.startAt = options.startAt;
332
332
  if (options.maxResults !== undefined)
333
333
  params.maxResults = options.maxResults;
334
- return this.makeRequest(() => this.client.get("/user/permission/search", { params }));
334
+ return this.makeRequest(() => this.client.get('/user/permission/search', { params }));
335
335
  }
336
336
  /**
337
337
  * 현재 사용자 정보 조회
@@ -340,9 +340,9 @@ export class JiraService extends BaseApiService {
340
340
  async getMyself(expand) {
341
341
  const params = {};
342
342
  if (expand) {
343
- params.expand = expand.join(",");
343
+ params.expand = expand.join(',');
344
344
  }
345
- return this.makeRequest(() => this.client.get("/myself", { params }));
345
+ return this.makeRequest(() => this.client.get('/myself', { params }));
346
346
  }
347
347
  /**
348
348
  * 현재 사용자의 권한 조회
@@ -369,7 +369,7 @@ export class JiraService extends BaseApiService {
369
369
  if (commentId)
370
370
  params.commentId = commentId;
371
371
  }
372
- return this.makeRequest(() => this.client.get("/mypermissions", { params }));
372
+ return this.makeRequest(() => this.client.get('/mypermissions', { params }));
373
373
  }
374
374
  /**
375
375
  * 현재 사용자 설정 업데이트
@@ -385,7 +385,7 @@ export class JiraService extends BaseApiService {
385
385
  body.timeZone = options.timeZone;
386
386
  if (options.locale)
387
387
  body.locale = options.locale;
388
- return this.makeRequest(() => this.client.put("/myself", body));
388
+ return this.makeRequest(() => this.client.put('/myself', body));
389
389
  }
390
390
  /**
391
391
  * 현재 사용자의 설정 값 조회
@@ -396,7 +396,7 @@ export class JiraService extends BaseApiService {
396
396
  if (key) {
397
397
  params.key = key;
398
398
  }
399
- return this.makeRequest(() => this.client.get("/mypreferences", { params }));
399
+ return this.makeRequest(() => this.client.get('/mypreferences', { params }));
400
400
  }
401
401
  /**
402
402
  * 현재 사용자의 설정 값 업데이트
@@ -404,28 +404,28 @@ export class JiraService extends BaseApiService {
404
404
  */
405
405
  async updateMyPreferences(key, value) {
406
406
  const params = { key };
407
- return this.makeRequest(() => this.client.put("/mypreferences", value, { params }));
407
+ return this.makeRequest(() => this.client.put('/mypreferences', value, { params }));
408
408
  }
409
409
  /**
410
410
  * 현재 사용자의 로케일 조회
411
411
  * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-myself/#api-rest-api-3-mypreferences-locale-get
412
412
  */
413
413
  async getMyLocale() {
414
- return this.makeRequest(() => this.client.get("/mypreferences/locale"));
414
+ return this.makeRequest(() => this.client.get('/mypreferences/locale'));
415
415
  }
416
416
  /**
417
417
  * 현재 사용자의 로케일 업데이트
418
418
  * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-myself/#api-rest-api-3-mypreferences-locale-put
419
419
  */
420
420
  async updateMyLocale(locale) {
421
- return this.makeRequest(() => this.client.put("/mypreferences/locale", { locale }));
421
+ return this.makeRequest(() => this.client.put('/mypreferences/locale', { locale }));
422
422
  }
423
423
  /**
424
424
  * 모든 우선순위 조회
425
425
  * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-priorities/#api-rest-api-3-priority-get
426
426
  */
427
427
  async getPriorities() {
428
- return this.makeRequest(() => this.client.get("/priority"));
428
+ return this.makeRequest(() => this.client.get('/priority'));
429
429
  }
430
430
  /**
431
431
  * 특정 우선순위 조회
@@ -447,15 +447,15 @@ export class JiraService extends BaseApiService {
447
447
  if (maxResults !== undefined)
448
448
  params.maxResults = maxResults;
449
449
  if (id)
450
- params.id = id.join(",");
450
+ params.id = id.join(',');
451
451
  if (projectId)
452
- params.projectId = projectId.join(",");
452
+ params.projectId = projectId.join(',');
453
453
  if (priorityName)
454
454
  params.priorityName = priorityName;
455
455
  if (onlyDefault !== undefined)
456
456
  params.onlyDefault = onlyDefault;
457
457
  }
458
- return this.makeRequest(() => this.client.get("/priority/search", { params }));
458
+ return this.makeRequest(() => this.client.get('/priority/search', { params }));
459
459
  }
460
460
  /**
461
461
  * 이슈의 가능한 전환 조회
@@ -464,7 +464,7 @@ export class JiraService extends BaseApiService {
464
464
  async getIssueTransitions(issueKey, expand) {
465
465
  const params = {};
466
466
  if (expand) {
467
- params.expand = expand.join(",");
467
+ params.expand = expand.join(',');
468
468
  }
469
469
  return this.makeRequest(() => this.client.get(`/issue/${issueKey}/transitions`, { params }));
470
470
  }
@@ -482,14 +482,14 @@ export class JiraService extends BaseApiService {
482
482
  {
483
483
  add: {
484
484
  body: {
485
- type: "doc",
485
+ type: 'doc',
486
486
  version: 1,
487
487
  content: [
488
488
  {
489
- type: "paragraph",
489
+ type: 'paragraph',
490
490
  content: [
491
491
  {
492
- type: "text",
492
+ type: 'text',
493
493
  text: options.comment.body,
494
494
  },
495
495
  ],
@@ -522,7 +522,7 @@ export class JiraService extends BaseApiService {
522
522
  * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-workflow-statuses/#api-rest-api-3-status-get
523
523
  */
524
524
  async getStatuses() {
525
- return this.makeRequest(() => this.client.get("/status"));
525
+ return this.makeRequest(() => this.client.get('/status'));
526
526
  }
527
527
  /**
528
528
  * 특정 상태 조회
@@ -550,7 +550,7 @@ export class JiraService extends BaseApiService {
550
550
  if (expand)
551
551
  params.expand = expand;
552
552
  }
553
- return this.makeRequest(() => this.client.get("/statuses/search", { params }));
553
+ return this.makeRequest(() => this.client.get('/statuses/search', { params }));
554
554
  }
555
555
  /**
556
556
  * 이슈에 댓글 추가
@@ -575,14 +575,14 @@ export class JiraService extends BaseApiService {
575
575
  async updateComment(issueKey, commentId, options) {
576
576
  const body = {
577
577
  body: {
578
- type: "doc",
578
+ type: 'doc',
579
579
  version: 1,
580
580
  content: [
581
581
  {
582
- type: "paragraph",
582
+ type: 'paragraph',
583
583
  content: [
584
584
  {
585
- type: "text",
585
+ type: 'text',
586
586
  text: options.body,
587
587
  },
588
588
  ],
@@ -621,7 +621,7 @@ export class JiraService extends BaseApiService {
621
621
  * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-link-types/#api-rest-api-3-issuelinktype-get
622
622
  */
623
623
  async getIssueLinkTypes() {
624
- return this.makeRequest(() => this.client.get("/issueLinkType"));
624
+ return this.makeRequest(() => this.client.get('/issueLinkType'));
625
625
  }
626
626
  /**
627
627
  * 특정 이슈 링크 타입 조회
@@ -643,14 +643,14 @@ export class JiraService extends BaseApiService {
643
643
  if (options.comment) {
644
644
  body.comment = {
645
645
  body: {
646
- type: "doc",
646
+ type: 'doc',
647
647
  version: 1,
648
648
  content: [
649
649
  {
650
- type: "paragraph",
650
+ type: 'paragraph',
651
651
  content: [
652
652
  {
653
- type: "text",
653
+ type: 'text',
654
654
  text: options.comment.body,
655
655
  },
656
656
  ],
@@ -662,7 +662,7 @@ export class JiraService extends BaseApiService {
662
662
  }),
663
663
  };
664
664
  }
665
- return this.makeRequest(() => this.client.post("/issueLink", body));
665
+ return this.makeRequest(() => this.client.post('/issueLink', body));
666
666
  }
667
667
  /**
668
668
  * 이슈 링크 조회
@@ -683,7 +683,7 @@ export class JiraService extends BaseApiService {
683
683
  */
684
684
  async getIssueWithLinks(issueKey) {
685
685
  return this.makeRequest(() => this.client.get(`/issue/${issueKey}`, {
686
- params: { fields: "*all", expand: "issuelinks" },
686
+ params: { fields: '*all', expand: 'issuelinks' },
687
687
  }));
688
688
  }
689
689
  /**
@@ -700,7 +700,7 @@ export class JiraService extends BaseApiService {
700
700
  async addWatcher(issueKey, accountId) {
701
701
  return this.makeRequest(() => this.client.post(`/issue/${issueKey}/watchers`, `"${accountId}"`, {
702
702
  headers: {
703
- "Content-Type": "application/json",
703
+ 'Content-Type': 'application/json',
704
704
  },
705
705
  }));
706
706
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ecubelabs/atlassian-mcp",
3
- "version": "1.2.0-next.4",
3
+ "version": "1.2.0-next.5",
4
4
  "bin": "./dist/index.js",
5
5
  "repository": {
6
6
  "url": "https://github.com/Ecube-Labs/skynet.git"