@geeveeh/atlassian-tools 0.2.0 → 0.4.0

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/README.md +156 -26
  2. package/dist/cli/confluence.d.ts.map +1 -1
  3. package/dist/cli/confluence.js +424 -9
  4. package/dist/cli/confluence.js.map +1 -1
  5. package/dist/cli/jira.d.ts.map +1 -1
  6. package/dist/cli/jira.js +518 -2
  7. package/dist/cli/jira.js.map +1 -1
  8. package/dist/confluence/client.d.ts +15 -1
  9. package/dist/confluence/client.d.ts.map +1 -1
  10. package/dist/confluence/client.js +114 -0
  11. package/dist/confluence/client.js.map +1 -1
  12. package/dist/confluence/index.d.ts +1 -0
  13. package/dist/confluence/index.d.ts.map +1 -1
  14. package/dist/confluence/index.js +1 -0
  15. package/dist/confluence/index.js.map +1 -1
  16. package/dist/confluence/markdown.d.ts +15 -0
  17. package/dist/confluence/markdown.d.ts.map +1 -0
  18. package/dist/confluence/markdown.js +83 -0
  19. package/dist/confluence/markdown.js.map +1 -0
  20. package/dist/confluence/types.d.ts +91 -0
  21. package/dist/confluence/types.d.ts.map +1 -1
  22. package/dist/core/auth.d.ts.map +1 -1
  23. package/dist/core/auth.js +54 -10
  24. package/dist/core/auth.js.map +1 -1
  25. package/dist/core/client.d.ts.map +1 -1
  26. package/dist/core/client.js +57 -18
  27. package/dist/core/client.js.map +1 -1
  28. package/dist/core/index.d.ts +1 -1
  29. package/dist/core/index.d.ts.map +1 -1
  30. package/dist/core/index.js +1 -1
  31. package/dist/core/index.js.map +1 -1
  32. package/dist/core/mime.d.ts +2 -0
  33. package/dist/core/mime.d.ts.map +1 -0
  34. package/dist/core/mime.js +21 -0
  35. package/dist/core/mime.js.map +1 -0
  36. package/dist/jira/client.d.ts +20 -1
  37. package/dist/jira/client.d.ts.map +1 -1
  38. package/dist/jira/client.js +127 -0
  39. package/dist/jira/client.js.map +1 -1
  40. package/dist/jira/types.d.ts +115 -0
  41. package/dist/jira/types.d.ts.map +1 -1
  42. package/dist/mcp/confluence.d.ts +3 -0
  43. package/dist/mcp/confluence.d.ts.map +1 -0
  44. package/dist/mcp/confluence.js +405 -0
  45. package/dist/mcp/confluence.js.map +1 -0
  46. package/dist/mcp/helpers.d.ts +3 -0
  47. package/dist/mcp/helpers.d.ts.map +1 -0
  48. package/dist/mcp/helpers.js +15 -0
  49. package/dist/mcp/helpers.js.map +1 -0
  50. package/dist/mcp/index.js +8 -354
  51. package/dist/mcp/index.js.map +1 -1
  52. package/dist/mcp/jira.d.ts +3 -0
  53. package/dist/mcp/jira.d.ts.map +1 -0
  54. package/dist/mcp/jira.js +479 -0
  55. package/dist/mcp/jira.js.map +1 -0
  56. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/core/auth.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iBAAiB;IAC/B,MAAM,OAAO,GACX,OAAO,CAAC,GAAG,CAAC,aAAa;QACzB,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC1E,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAE1E,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO;QAAE,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC5C,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC5C,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAE5C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,6CAA6C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;YAClE,qCAAqC;YACrC,gEAAgE;YAChE,8CAA8C;YAC9C,2CAA2C,CAC9C,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,OAAQ,EAAE,KAAK,EAAE,KAAM,EAAE,KAAK,EAAE,KAAM,EAAE,CAAC;AAC7D,CAAC"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/core/auth.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAqB,MAAM,YAAY,CAAC;AAEhE,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,MAAM,EAAE,eAAe,EAAE,UAAU,SAAK;IAO9C,OAAO,CAAC,CAAC,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,CAAC,CAAC;CA6Bd"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAqB,MAAM,YAAY,CAAC;AAUhE,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,MAAM,EAAE,eAAe,EAAE,UAAU,SAAK;IAO9C,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,CAAC,CAAC;CA4DtE"}
@@ -1,4 +1,10 @@
1
1
  import { AtlassianApiError } from "./types.js";
2
+ const RETRYABLE_STATUS = new Set([429, 502, 503, 504]);
3
+ const MAX_RETRIES = 3;
4
+ const TIMEOUT_MS = 30_000;
5
+ function sleep(ms) {
6
+ return new Promise((resolve) => setTimeout(resolve, ms));
7
+ }
2
8
  export class AtlassianClient {
3
9
  baseUrl;
4
10
  authHeader;
@@ -13,28 +19,61 @@ export class AtlassianClient {
13
19
  const url = path.startsWith("http")
14
20
  ? path
15
21
  : `${this.baseUrl}${this.pathPrefix}${path}`;
16
- const response = await fetch(url, {
17
- ...options,
18
- headers: {
19
- Authorization: this.authHeader,
20
- "Content-Type": "application/json",
21
- Accept: "application/json",
22
- ...options.headers,
23
- },
24
- });
25
- if (!response.ok) {
26
- let errorData;
22
+ const isFormData = typeof FormData !== "undefined" && options.body instanceof FormData;
23
+ const headers = {
24
+ Authorization: this.authHeader,
25
+ Accept: "application/json",
26
+ ...(isFormData ? {} : { "Content-Type": "application/json" }),
27
+ ...(options.headers ?? {}),
28
+ };
29
+ for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {
30
+ const controller = new AbortController();
31
+ const timer = setTimeout(() => controller.abort(), TIMEOUT_MS);
32
+ let response;
27
33
  try {
28
- errorData = await response.json();
34
+ response = await fetch(url, { ...options, headers, signal: controller.signal });
35
+ clearTimeout(timer);
36
+ }
37
+ catch (err) {
38
+ clearTimeout(timer);
39
+ if (err instanceof Error && err.name === "AbortError") {
40
+ throw new Error(`Request timed out after ${TIMEOUT_MS / 1000}s: ${url}`);
41
+ }
42
+ // Network error — retry with backoff
43
+ if (attempt < MAX_RETRIES - 1) {
44
+ await sleep(1000 * 2 ** attempt);
45
+ continue;
46
+ }
47
+ throw err;
48
+ }
49
+ if (RETRYABLE_STATUS.has(response.status) && attempt < MAX_RETRIES - 1) {
50
+ const retryAfter = response.headers.get("Retry-After");
51
+ const delay = retryAfter ? Number(retryAfter) * 1000 : 1000 * 2 ** attempt;
52
+ await sleep(delay);
53
+ continue;
29
54
  }
30
- catch {
31
- errorData = await response.text();
55
+ if (!response.ok) {
56
+ let errorData;
57
+ try {
58
+ const text = await response.text();
59
+ try {
60
+ errorData = JSON.parse(text);
61
+ }
62
+ catch {
63
+ errorData = text;
64
+ }
65
+ }
66
+ catch {
67
+ errorData = response.statusText;
68
+ }
69
+ throw new AtlassianApiError(response.status, response.statusText, errorData);
32
70
  }
33
- throw new AtlassianApiError(response.status, response.statusText, errorData);
71
+ if (response.status === 204)
72
+ return undefined;
73
+ return response.json();
34
74
  }
35
- if (response.status === 204)
36
- return undefined;
37
- return response.json();
75
+ // Unreachable loop always returns or throws before exhausting retries on success
76
+ throw new Error(`Request failed after ${MAX_RETRIES} attempts: ${url}`);
38
77
  }
39
78
  }
40
79
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEhE,MAAM,OAAO,eAAe;IACT,OAAO,CAAS;IAChB,UAAU,CAAS;IACnB,UAAU,CAAS;IAEpC,YAAY,MAAuB,EAAE,UAAU,GAAG,EAAE;QAClD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAClF,IAAI,CAAC,UAAU,GAAG,SAAS,OAAO,EAAE,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,OAAO,CACX,IAAY,EACZ,UAAuB,EAAE;QAEzB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YACjC,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,EAAE,CAAC;QAE/C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,GAAG,OAAO;YACV,OAAO,EAAE;gBACP,aAAa,EAAE,IAAI,CAAC,UAAU;gBAC9B,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,kBAAkB;gBAC1B,GAAG,OAAO,CAAC,OAAO;aACnB;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,IAAI,SAAkB,CAAC;YACvB,IAAI,CAAC;gBACH,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACpC,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACpC,CAAC;YACD,MAAM,IAAI,iBAAiB,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC/E,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,SAAc,CAAC;QAEnD,OAAO,QAAQ,CAAC,IAAI,EAAgB,CAAC;IACvC,CAAC;CACF"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  export { AtlassianClient } from "./client.js";
2
2
  export { loadConfigFromEnv } from "./auth.js";
3
- export { markdownToStorage, resolveBody } from "./markdown.js";
3
+ export { attachmentMimeType } from "./mime.js";
4
4
  export * from "./types.js";
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC/D,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,cAAc,YAAY,CAAC"}
@@ -1,5 +1,5 @@
1
1
  export { AtlassianClient } from "./client.js";
2
2
  export { loadConfigFromEnv } from "./auth.js";
3
- export { markdownToStorage, resolveBody } from "./markdown.js";
3
+ export { attachmentMimeType } from "./mime.js";
4
4
  export * from "./types.js";
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC/D,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,cAAc,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function attachmentMimeType(filePath: string): string;
2
+ //# sourceMappingURL=mime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mime.d.ts","sourceRoot":"","sources":["../../src/core/mime.ts"],"names":[],"mappings":"AAEA,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAkB3D"}
@@ -0,0 +1,21 @@
1
+ import { extname } from "path";
2
+ export function attachmentMimeType(filePath) {
3
+ const map = {
4
+ ".png": "image/png",
5
+ ".jpg": "image/jpeg",
6
+ ".jpeg": "image/jpeg",
7
+ ".gif": "image/gif",
8
+ ".webp": "image/webp",
9
+ ".svg": "image/svg+xml",
10
+ ".pdf": "application/pdf",
11
+ ".zip": "application/zip",
12
+ ".txt": "text/plain",
13
+ ".csv": "text/csv",
14
+ ".json": "application/json",
15
+ ".xml": "application/xml",
16
+ ".html": "text/html",
17
+ ".md": "text/markdown",
18
+ };
19
+ return map[extname(filePath).toLowerCase()] ?? "application/octet-stream";
20
+ }
21
+ //# sourceMappingURL=mime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mime.js","sourceRoot":"","sources":["../../src/core/mime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,MAAM,GAAG,GAA2B;QAClC,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,YAAY;QACrB,MAAM,EAAE,WAAW;QACnB,OAAO,EAAE,YAAY;QACrB,MAAM,EAAE,eAAe;QACvB,MAAM,EAAE,iBAAiB;QACzB,MAAM,EAAE,iBAAiB;QACzB,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,UAAU;QAClB,OAAO,EAAE,kBAAkB;QAC3B,MAAM,EAAE,iBAAiB;QACzB,OAAO,EAAE,WAAW;QACpB,KAAK,EAAE,eAAe;KACvB,CAAC;IACF,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,0BAA0B,CAAC;AAC5E,CAAC"}
@@ -1,10 +1,19 @@
1
1
  import { AtlassianConfig } from "../core/types.js";
2
- import { JiraProject, JiraIssue, JiraTransition, IssueCreateInput, IssueUpdateInput, IssueSearchOptions } from "./types.js";
2
+ import { JiraProject, JiraIssue, JiraUser, JiraBoard, JiraSprint, JiraSprintInput, JiraSprintUpdateInput, JiraAttachment, JiraAttachmentUploadInput, JiraComment, JiraLinkType, JiraIssueLink, JiraWorklog, WorklogInput, JiraTransition, IssueCreateInput, IssueUpdateInput, IssueSearchOptions } from "./types.js";
3
3
  export declare class JiraClient {
4
4
  private readonly http;
5
5
  constructor(config: AtlassianConfig);
6
6
  verifyConnection(): Promise<JiraProject[]>;
7
7
  listProjects(limit?: number): Promise<JiraProject[]>;
8
+ listEpicIssues(epicKey: string, limit?: number): Promise<JiraIssue[]>;
9
+ listBoards(limit?: number): Promise<JiraBoard[]>;
10
+ listSprints(boardId: number, state?: "active" | "future" | "closed"): Promise<JiraSprint[]>;
11
+ moveToSprint(sprintId: number, issueKeys: string[]): Promise<void>;
12
+ createSprint(input: JiraSprintInput): Promise<JiraSprint>;
13
+ updateSprint(sprintId: number, input: JiraSprintUpdateInput): Promise<JiraSprint>;
14
+ closeSprint(sprintId: number): Promise<JiraSprint>;
15
+ listSubtasks(issueKey: string, limit?: number): Promise<JiraIssue[]>;
16
+ searchUsers(query: string, limit?: number): Promise<JiraUser[]>;
8
17
  getIssue(issueKey: string): Promise<JiraIssue>;
9
18
  searchIssues(options: IssueSearchOptions): Promise<JiraIssue[]>;
10
19
  createIssue(input: IssueCreateInput): Promise<JiraIssue>;
@@ -12,6 +21,16 @@ export declare class JiraClient {
12
21
  getTransitions(issueKey: string): Promise<JiraTransition[]>;
13
22
  transitionIssue(issueKey: string, transitionId: string): Promise<void>;
14
23
  deleteIssue(issueKey: string): Promise<void>;
24
+ listWorklogs(issueKey: string): Promise<JiraWorklog[]>;
25
+ addWorklog(input: WorklogInput): Promise<JiraWorklog>;
26
+ listIssueLinkTypes(): Promise<JiraLinkType[]>;
27
+ listIssueLinks(issueKey: string): Promise<JiraIssueLink[]>;
28
+ linkIssues(outwardIssueKey: string, linkTypeName: string, inwardIssueKey: string): Promise<void>;
29
+ removeIssueLink(linkId: string): Promise<void>;
30
+ listComments(issueKey: string): Promise<JiraComment[]>;
31
+ addComment(issueKey: string, text: string): Promise<JiraComment>;
32
+ uploadAttachment(input: JiraAttachmentUploadInput): Promise<JiraAttachment>;
33
+ listAttachments(issueKey: string): Promise<JiraAttachment[]>;
15
34
  descriptionToText(issue: JiraIssue): string;
16
35
  issueUrl(issueKey: string, baseUrl: string): string;
17
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/jira/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EACL,WAAW,EACX,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAiBpB,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAkB;gBAE3B,MAAM,EAAE,eAAe;IAM7B,gBAAgB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAS1C,YAAY,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAShD,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAM9C,YAAY,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAgB/D,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC;IAqBxD,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC;IAkBxD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAO3D,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAStE,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASlD,iBAAiB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM;IAI3C,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;CAGpD"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/jira/client.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,7 @@
1
+ import { readFile } from "fs/promises";
2
+ import { basename } from "path";
1
3
  import { AtlassianClient } from "../core/client.js";
4
+ import { attachmentMimeType } from "../core/mime.js";
2
5
  import { textToAdf, adfToText, buildJql } from "./helpers.js";
3
6
  export class JiraClient {
4
7
  http;
@@ -15,6 +18,63 @@ export class JiraClient {
15
18
  const result = await this.http.request(`/rest/api/3/project/search?maxResults=${limit}`);
16
19
  return result.values;
17
20
  }
21
+ // ── Epics ────────────────────────────────────────────────────────
22
+ async listEpicIssues(epicKey, limit = 50) {
23
+ const result = await this.http.request(`/rest/agile/1.0/epic/${encodeURIComponent(epicKey)}/issue?maxResults=${limit}`);
24
+ return result.issues;
25
+ }
26
+ // ── Boards & sprints ─────────────────────────────────────────────
27
+ async listBoards(limit = 25) {
28
+ const result = await this.http.request(`/rest/agile/1.0/board?maxResults=${limit}`);
29
+ return result.values;
30
+ }
31
+ async listSprints(boardId, state) {
32
+ const params = new URLSearchParams({ maxResults: "50" });
33
+ if (state)
34
+ params.set("state", state);
35
+ const result = await this.http.request(`/rest/agile/1.0/board/${boardId}/sprint?${params.toString()}`);
36
+ return result.values;
37
+ }
38
+ async moveToSprint(sprintId, issueKeys) {
39
+ await this.http.request(`/rest/agile/1.0/sprint/${sprintId}/issue`, {
40
+ method: "POST",
41
+ body: JSON.stringify({ issues: issueKeys }),
42
+ });
43
+ }
44
+ async createSprint(input) {
45
+ const payload = {
46
+ name: input.name,
47
+ originBoardId: input.boardId,
48
+ };
49
+ if (input.goal)
50
+ payload.goal = input.goal;
51
+ if (input.startDate)
52
+ payload.startDate = input.startDate;
53
+ if (input.endDate)
54
+ payload.endDate = input.endDate;
55
+ return this.http.request("/rest/agile/1.0/sprint", {
56
+ method: "POST",
57
+ body: JSON.stringify(payload),
58
+ });
59
+ }
60
+ async updateSprint(sprintId, input) {
61
+ return this.http.request(`/rest/agile/1.0/sprint/${sprintId}`, {
62
+ method: "POST",
63
+ body: JSON.stringify(input),
64
+ });
65
+ }
66
+ async closeSprint(sprintId) {
67
+ return this.updateSprint(sprintId, { state: "closed" });
68
+ }
69
+ // ── Subtasks ─────────────────────────────────────────────────────
70
+ async listSubtasks(issueKey, limit = 50) {
71
+ return this.searchIssues({ jql: `parent = "${issueKey}"`, limit });
72
+ }
73
+ // ── Users ────────────────────────────────────────────────────────
74
+ async searchUsers(query, limit = 10) {
75
+ const params = new URLSearchParams({ query, maxResults: String(limit) });
76
+ return this.http.request(`/rest/api/3/user/search?${params.toString()}`);
77
+ }
18
78
  // ── Issues ───────────────────────────────────────────────────────
19
79
  async getIssue(issueKey) {
20
80
  return this.http.request(`/rest/api/3/issue/${encodeURIComponent(issueKey)}`);
@@ -44,6 +104,8 @@ export class JiraClient {
44
104
  fields.labels = input.labels;
45
105
  if (input.assigneeId)
46
106
  fields.assignee = { accountId: input.assigneeId };
107
+ if (input.parentKey)
108
+ fields.parent = { key: input.parentKey };
47
109
  const created = await this.http.request("/rest/api/3/issue", { method: "POST", body: JSON.stringify({ fields }) });
48
110
  return this.getIssue(created.key);
49
111
  }
@@ -75,6 +137,71 @@ export class JiraClient {
75
137
  async deleteIssue(issueKey) {
76
138
  await this.http.request(`/rest/api/3/issue/${encodeURIComponent(issueKey)}`, { method: "DELETE" });
77
139
  }
140
+ // ── Worklogs ─────────────────────────────────────────────────────
141
+ async listWorklogs(issueKey) {
142
+ const result = await this.http.request(`/rest/api/3/issue/${encodeURIComponent(issueKey)}/worklog`);
143
+ return result.worklogs;
144
+ }
145
+ async addWorklog(input) {
146
+ const payload = {
147
+ timeSpent: input.timeSpent,
148
+ started: input.started ?? new Date().toISOString().replace("Z", "+0000"),
149
+ };
150
+ if (input.comment)
151
+ payload.comment = textToAdf(input.comment);
152
+ return this.http.request(`/rest/api/3/issue/${encodeURIComponent(input.issueKey)}/worklog`, { method: "POST", body: JSON.stringify(payload) });
153
+ }
154
+ // ── Issue links ──────────────────────────────────────────────────
155
+ async listIssueLinkTypes() {
156
+ const result = await this.http.request("/rest/api/3/issueLinkType");
157
+ return result.issueLinkTypes;
158
+ }
159
+ async listIssueLinks(issueKey) {
160
+ const result = await this.http.request(`/rest/api/3/issue/${encodeURIComponent(issueKey)}?fields=issuelinks`);
161
+ return result.fields.issuelinks ?? [];
162
+ }
163
+ async linkIssues(outwardIssueKey, linkTypeName, inwardIssueKey) {
164
+ await this.http.request("/rest/api/3/issueLink", {
165
+ method: "POST",
166
+ body: JSON.stringify({
167
+ type: { name: linkTypeName },
168
+ outwardIssue: { key: outwardIssueKey },
169
+ inwardIssue: { key: inwardIssueKey },
170
+ }),
171
+ });
172
+ }
173
+ async removeIssueLink(linkId) {
174
+ await this.http.request(`/rest/api/3/issueLink/${encodeURIComponent(linkId)}`, {
175
+ method: "DELETE",
176
+ });
177
+ }
178
+ // ── Comments ─────────────────────────────────────────────────────
179
+ async listComments(issueKey) {
180
+ const result = await this.http.request(`/rest/api/3/issue/${encodeURIComponent(issueKey)}/comment`);
181
+ return result.comments;
182
+ }
183
+ async addComment(issueKey, text) {
184
+ return this.http.request(`/rest/api/3/issue/${encodeURIComponent(issueKey)}/comment`, { method: "POST", body: JSON.stringify({ body: textToAdf(text) }) });
185
+ }
186
+ // ── Attachments ──────────────────────────────────────────────────
187
+ async uploadAttachment(input) {
188
+ const { issueKey, filePath } = input;
189
+ const fileBuffer = await readFile(filePath);
190
+ const fileName = basename(filePath);
191
+ const blob = new Blob([fileBuffer], { type: attachmentMimeType(filePath) });
192
+ const formData = new FormData();
193
+ formData.append("file", blob, fileName);
194
+ const results = await this.http.request(`/rest/api/3/issue/${encodeURIComponent(issueKey)}/attachments`, {
195
+ method: "POST",
196
+ body: formData,
197
+ headers: { "X-Atlassian-Token": "no-check" },
198
+ });
199
+ return results[0];
200
+ }
201
+ async listAttachments(issueKey) {
202
+ const result = await this.http.request(`/rest/api/3/issue/${encodeURIComponent(issueKey)}?fields=attachment`);
203
+ return result.fields.attachment ?? [];
204
+ }
78
205
  // ── Helpers ──────────────────────────────────────────────────────
79
206
  descriptionToText(issue) {
80
207
  return adfToText(issue.fields.description);
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/jira/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/jira/client.ts"],"names":[],"mappings":"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"}
@@ -48,6 +48,7 @@ export interface IssueCreateInput {
48
48
  priority?: string;
49
49
  labels?: string[];
50
50
  assigneeId?: string;
51
+ parentKey?: string;
51
52
  }
52
53
  export interface IssueUpdateInput {
53
54
  issueKey: string;
@@ -65,4 +66,118 @@ export interface IssueSearchOptions {
65
66
  type?: string;
66
67
  limit?: number;
67
68
  }
69
+ export interface JiraAttachment {
70
+ id: string;
71
+ filename: string;
72
+ mimeType: string;
73
+ size: number;
74
+ content: string;
75
+ created?: string;
76
+ author?: {
77
+ displayName: string;
78
+ };
79
+ }
80
+ export interface JiraAttachmentUploadInput {
81
+ issueKey: string;
82
+ filePath: string;
83
+ }
84
+ export interface JiraComment {
85
+ id: string;
86
+ author?: {
87
+ displayName: string;
88
+ accountId: string;
89
+ };
90
+ body?: unknown;
91
+ created: string;
92
+ updated?: string;
93
+ }
94
+ export interface JiraLinkType {
95
+ id: string;
96
+ name: string;
97
+ inward: string;
98
+ outward: string;
99
+ }
100
+ export interface JiraIssueLink {
101
+ id: string;
102
+ type: {
103
+ id: string;
104
+ name: string;
105
+ inward: string;
106
+ outward: string;
107
+ };
108
+ inwardIssue?: {
109
+ id: string;
110
+ key: string;
111
+ fields: {
112
+ summary: string;
113
+ status: {
114
+ name: string;
115
+ };
116
+ };
117
+ };
118
+ outwardIssue?: {
119
+ id: string;
120
+ key: string;
121
+ fields: {
122
+ summary: string;
123
+ status: {
124
+ name: string;
125
+ };
126
+ };
127
+ };
128
+ }
129
+ export interface JiraWorklog {
130
+ id: string;
131
+ author?: {
132
+ displayName: string;
133
+ };
134
+ timeSpent: string;
135
+ timeSpentSeconds: number;
136
+ started: string;
137
+ comment?: unknown;
138
+ }
139
+ export interface WorklogInput {
140
+ issueKey: string;
141
+ timeSpent: string;
142
+ started?: string;
143
+ comment?: string;
144
+ }
145
+ export interface JiraUser {
146
+ accountId: string;
147
+ displayName: string;
148
+ emailAddress?: string;
149
+ active: boolean;
150
+ accountType: string;
151
+ }
152
+ export interface JiraBoard {
153
+ id: number;
154
+ name: string;
155
+ type: string;
156
+ location?: {
157
+ projectKey: string;
158
+ projectName: string;
159
+ };
160
+ }
161
+ export interface JiraSprint {
162
+ id: number;
163
+ name: string;
164
+ state: string;
165
+ startDate?: string;
166
+ endDate?: string;
167
+ goal?: string;
168
+ }
169
+ export interface JiraSprintInput {
170
+ boardId: number;
171
+ name: string;
172
+ goal?: string;
173
+ startDate?: string;
174
+ endDate?: string;
175
+ }
176
+ export interface JiraSprintUpdateInput {
177
+ name?: string;
178
+ goal?: string;
179
+ startDate?: string;
180
+ endDate?: string;
181
+ state?: "active" | "closed";
182
+ }
68
183
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/jira/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,MAAM,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;QACzB,SAAS,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;QAC5B,QAAQ,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;QAC5B,QAAQ,CAAC,EAAE;YAAE,WAAW,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAC;QACtD,QAAQ,CAAC,EAAE;YAAE,WAAW,EAAE,MAAM,CAAA;SAAE,CAAC;QACnC,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/jira/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerConfluenceTools(server: McpServer): void;
3
+ //# sourceMappingURL=confluence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"confluence.d.ts","sourceRoot":"","sources":["../../src/mcp/confluence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAcpE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA6e/D"}