@generacy-ai/generacy-plugin-jira 0.0.0-preview-20260304013206

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 (102) hide show
  1. package/LICENSE +191 -0
  2. package/dist/client.d.ts +81 -0
  3. package/dist/client.d.ts.map +1 -0
  4. package/dist/client.js +163 -0
  5. package/dist/client.js.map +1 -0
  6. package/dist/index.d.ts +19 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +26 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/operations/comments.d.ts +35 -0
  11. package/dist/operations/comments.d.ts.map +1 -0
  12. package/dist/operations/comments.js +128 -0
  13. package/dist/operations/comments.js.map +1 -0
  14. package/dist/operations/custom-fields.d.ts +48 -0
  15. package/dist/operations/custom-fields.d.ts.map +1 -0
  16. package/dist/operations/custom-fields.js +184 -0
  17. package/dist/operations/custom-fields.js.map +1 -0
  18. package/dist/operations/issues.d.ts +34 -0
  19. package/dist/operations/issues.d.ts.map +1 -0
  20. package/dist/operations/issues.js +215 -0
  21. package/dist/operations/issues.js.map +1 -0
  22. package/dist/operations/search.d.ts +47 -0
  23. package/dist/operations/search.d.ts.map +1 -0
  24. package/dist/operations/search.js +174 -0
  25. package/dist/operations/search.js.map +1 -0
  26. package/dist/operations/sprints.d.ts +54 -0
  27. package/dist/operations/sprints.d.ts.map +1 -0
  28. package/dist/operations/sprints.js +196 -0
  29. package/dist/operations/sprints.js.map +1 -0
  30. package/dist/operations/transitions.d.ts +41 -0
  31. package/dist/operations/transitions.d.ts.map +1 -0
  32. package/dist/operations/transitions.js +135 -0
  33. package/dist/operations/transitions.js.map +1 -0
  34. package/dist/plugin.d.ts +221 -0
  35. package/dist/plugin.d.ts.map +1 -0
  36. package/dist/plugin.js +403 -0
  37. package/dist/plugin.js.map +1 -0
  38. package/dist/types/config.d.ts +149 -0
  39. package/dist/types/config.d.ts.map +1 -0
  40. package/dist/types/config.js +33 -0
  41. package/dist/types/config.js.map +1 -0
  42. package/dist/types/custom-fields.d.ts +48 -0
  43. package/dist/types/custom-fields.d.ts.map +1 -0
  44. package/dist/types/custom-fields.js +2 -0
  45. package/dist/types/custom-fields.js.map +1 -0
  46. package/dist/types/events.d.ts +250 -0
  47. package/dist/types/events.d.ts.map +1 -0
  48. package/dist/types/events.js +2 -0
  49. package/dist/types/events.js.map +1 -0
  50. package/dist/types/index.d.ts +9 -0
  51. package/dist/types/index.d.ts.map +1 -0
  52. package/dist/types/index.js +2 -0
  53. package/dist/types/index.js.map +1 -0
  54. package/dist/types/issues.d.ts +139 -0
  55. package/dist/types/issues.d.ts.map +1 -0
  56. package/dist/types/issues.js +2 -0
  57. package/dist/types/issues.js.map +1 -0
  58. package/dist/types/projects.d.ts +48 -0
  59. package/dist/types/projects.d.ts.map +1 -0
  60. package/dist/types/projects.js +2 -0
  61. package/dist/types/projects.js.map +1 -0
  62. package/dist/types/sprints.d.ts +26 -0
  63. package/dist/types/sprints.d.ts.map +1 -0
  64. package/dist/types/sprints.js +2 -0
  65. package/dist/types/sprints.js.map +1 -0
  66. package/dist/types/workflows.d.ts +60 -0
  67. package/dist/types/workflows.d.ts.map +1 -0
  68. package/dist/types/workflows.js +2 -0
  69. package/dist/types/workflows.js.map +1 -0
  70. package/dist/utils/adf.d.ts +26 -0
  71. package/dist/utils/adf.d.ts.map +1 -0
  72. package/dist/utils/adf.js +104 -0
  73. package/dist/utils/adf.js.map +1 -0
  74. package/dist/utils/errors.d.ts +60 -0
  75. package/dist/utils/errors.d.ts.map +1 -0
  76. package/dist/utils/errors.js +117 -0
  77. package/dist/utils/errors.js.map +1 -0
  78. package/dist/utils/jql-builder.d.ts +148 -0
  79. package/dist/utils/jql-builder.d.ts.map +1 -0
  80. package/dist/utils/jql-builder.js +264 -0
  81. package/dist/utils/jql-builder.js.map +1 -0
  82. package/dist/utils/validation.d.ts +31 -0
  83. package/dist/utils/validation.d.ts.map +1 -0
  84. package/dist/utils/validation.js +75 -0
  85. package/dist/utils/validation.js.map +1 -0
  86. package/dist/webhooks/handler.d.ts +80 -0
  87. package/dist/webhooks/handler.d.ts.map +1 -0
  88. package/dist/webhooks/handler.js +130 -0
  89. package/dist/webhooks/handler.js.map +1 -0
  90. package/dist/webhooks/parser.d.ts +34 -0
  91. package/dist/webhooks/parser.d.ts.map +1 -0
  92. package/dist/webhooks/parser.js +155 -0
  93. package/dist/webhooks/parser.js.map +1 -0
  94. package/dist/webhooks/types.d.ts +94 -0
  95. package/dist/webhooks/types.d.ts.map +1 -0
  96. package/dist/webhooks/types.js +2 -0
  97. package/dist/webhooks/types.js.map +1 -0
  98. package/dist/webhooks/verify.d.ts +53 -0
  99. package/dist/webhooks/verify.d.ts.map +1 -0
  100. package/dist/webhooks/verify.js +140 -0
  101. package/dist/webhooks/verify.js.map +1 -0
  102. package/package.json +58 -0
@@ -0,0 +1,47 @@
1
+ import type { JiraClient } from '../client.js';
2
+ import type { JiraIssue, SearchOptions } from '../types/issues.js';
3
+ /**
4
+ * Search operations for JQL queries
5
+ */
6
+ export declare class SearchOperations {
7
+ private readonly client;
8
+ constructor(client: JiraClient);
9
+ /**
10
+ * Search issues using JQL with async iterator for memory-efficient pagination
11
+ */
12
+ search(jql: string, options?: SearchOptions): AsyncGenerator<JiraIssue>;
13
+ /**
14
+ * Search and return all results as an array
15
+ * Note: Use search() generator for large result sets to avoid memory issues
16
+ */
17
+ searchAll(jql: string, options?: SearchOptions): Promise<JiraIssue[]>;
18
+ /**
19
+ * Count issues matching a JQL query
20
+ */
21
+ count(jql: string): Promise<number>;
22
+ /**
23
+ * Search issues by project
24
+ */
25
+ byProject(projectKey: string, options?: SearchOptions): AsyncGenerator<JiraIssue>;
26
+ /**
27
+ * Search issues by assignee
28
+ */
29
+ byAssignee(accountId: string, options?: SearchOptions): AsyncGenerator<JiraIssue>;
30
+ /**
31
+ * Search issues by status
32
+ */
33
+ byStatus(statusName: string, projectKey?: string, options?: SearchOptions): AsyncGenerator<JiraIssue>;
34
+ /**
35
+ * Search issues by sprint
36
+ */
37
+ bySprint(sprintId: number, options?: SearchOptions): AsyncGenerator<JiraIssue>;
38
+ /**
39
+ * Search issues updated since a date
40
+ */
41
+ updatedSince(date: Date, projectKey?: string, options?: SearchOptions): AsyncGenerator<JiraIssue>;
42
+ }
43
+ /**
44
+ * Create search operations instance
45
+ */
46
+ export declare function createSearchOperations(client: JiraClient): SearchOperations;
47
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/operations/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EACV,SAAS,EACT,aAAa,EAOd,MAAM,oBAAoB,CAAC;AAkE5B;;GAEG;AACH,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,UAAU;IAE/C;;OAEG;IACI,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,cAAc,CAAC,SAAS,CAAC;IAsC9E;;;OAGG;IACG,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAQ3E;;OAEG;IACG,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAczC;;OAEG;IACH,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,cAAc,CAAC,SAAS,CAAC;IAIjF;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,cAAc,CAAC,SAAS,CAAC;IAIjF;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,cAAc,CAAC,SAAS,CAAC;IAQrG;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,cAAc,CAAC,SAAS,CAAC;IAI9E;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,cAAc,CAAC,SAAS,CAAC;CAQlG;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,UAAU,GAAG,gBAAgB,CAE3E"}
@@ -0,0 +1,174 @@
1
+ import { wrapJiraError } from '../utils/errors.js';
2
+ /**
3
+ * Map Jira API response to JiraIssue (simplified for search results)
4
+ */
5
+ function mapSearchIssue(raw) {
6
+ const fields = raw.fields;
7
+ return {
8
+ id: raw.id,
9
+ key: raw.key,
10
+ self: raw.self,
11
+ summary: fields.summary ?? '',
12
+ description: fields.description ?? null,
13
+ status: fields.status ?? { id: '', name: '', description: null, statusCategory: { id: 0, key: 'new', name: '', colorName: '' } },
14
+ issueType: fields.issuetype ?? { id: '', name: '', description: '', iconUrl: '', subtask: false, hierarchyLevel: 0 },
15
+ priority: fields.priority ?? { id: '', name: '', iconUrl: '' },
16
+ reporter: fields.reporter ?? { accountId: '', displayName: '', emailAddress: null, avatarUrls: { '16x16': '', '24x24': '', '32x32': '', '48x48': '' }, active: true },
17
+ assignee: fields.assignee ?? null,
18
+ project: fields.project ?? { id: '', key: '', name: '', self: '' },
19
+ parent: fields.parent ?? null,
20
+ subtasks: fields.subtasks ?? [],
21
+ linkedIssues: fields.issuelinks ?? [],
22
+ created: fields.created ?? '',
23
+ updated: fields.updated ?? '',
24
+ dueDate: fields.duedate ?? null,
25
+ sprint: extractSprint(fields),
26
+ labels: fields.labels ?? [],
27
+ components: fields.components ?? [],
28
+ customFields: extractCustomFields(fields),
29
+ };
30
+ }
31
+ /**
32
+ * Extract sprint from issue fields
33
+ */
34
+ function extractSprint(fields) {
35
+ for (const [key, value] of Object.entries(fields)) {
36
+ if (key.startsWith('customfield_') && Array.isArray(value) && value.length > 0) {
37
+ const first = value[0];
38
+ if (first && typeof first === 'object' && 'state' in first && 'name' in first) {
39
+ return first;
40
+ }
41
+ }
42
+ }
43
+ return null;
44
+ }
45
+ /**
46
+ * Extract custom fields from issue fields
47
+ */
48
+ function extractCustomFields(fields) {
49
+ const customFields = {};
50
+ for (const [key, value] of Object.entries(fields)) {
51
+ if (key.startsWith('customfield_')) {
52
+ customFields[key] = value;
53
+ }
54
+ }
55
+ return customFields;
56
+ }
57
+ /**
58
+ * Search operations for JQL queries
59
+ */
60
+ export class SearchOperations {
61
+ client;
62
+ constructor(client) {
63
+ this.client = client;
64
+ }
65
+ /**
66
+ * Search issues using JQL with async iterator for memory-efficient pagination
67
+ */
68
+ async *search(jql, options) {
69
+ const pageSize = options?.pageSize ?? 50;
70
+ const fields = options?.fields ?? ['*all'];
71
+ const expand = options?.expand ?? [];
72
+ const validateQuery = options?.validateQuery ?? true;
73
+ let startAt = options?.startAt ?? 0;
74
+ try {
75
+ while (true) {
76
+ const response = await this.client.v3.issueSearch.searchForIssuesUsingJql({
77
+ jql,
78
+ startAt,
79
+ maxResults: pageSize,
80
+ fields,
81
+ expand: expand.join(',') || undefined,
82
+ validateQuery: validateQuery ? 'strict' : 'none',
83
+ });
84
+ const issues = response.issues ?? [];
85
+ for (const issue of issues) {
86
+ yield mapSearchIssue(issue);
87
+ }
88
+ // Check if we've fetched all items
89
+ const total = response.total ?? 0;
90
+ startAt += issues.length;
91
+ if (issues.length < pageSize || startAt >= total) {
92
+ break;
93
+ }
94
+ }
95
+ }
96
+ catch (error) {
97
+ throw wrapJiraError(error, `JQL search failed: ${jql}`);
98
+ }
99
+ }
100
+ /**
101
+ * Search and return all results as an array
102
+ * Note: Use search() generator for large result sets to avoid memory issues
103
+ */
104
+ async searchAll(jql, options) {
105
+ const results = [];
106
+ for await (const issue of this.search(jql, options)) {
107
+ results.push(issue);
108
+ }
109
+ return results;
110
+ }
111
+ /**
112
+ * Count issues matching a JQL query
113
+ */
114
+ async count(jql) {
115
+ try {
116
+ const response = await this.client.v3.issueSearch.searchForIssuesUsingJql({
117
+ jql,
118
+ startAt: 0,
119
+ maxResults: 0,
120
+ fields: ['key'],
121
+ });
122
+ return response.total ?? 0;
123
+ }
124
+ catch (error) {
125
+ throw wrapJiraError(error, `JQL count failed: ${jql}`);
126
+ }
127
+ }
128
+ /**
129
+ * Search issues by project
130
+ */
131
+ byProject(projectKey, options) {
132
+ return this.search(`project = "${projectKey}"`, options);
133
+ }
134
+ /**
135
+ * Search issues by assignee
136
+ */
137
+ byAssignee(accountId, options) {
138
+ return this.search(`assignee = "${accountId}"`, options);
139
+ }
140
+ /**
141
+ * Search issues by status
142
+ */
143
+ byStatus(statusName, projectKey, options) {
144
+ let jql = `status = "${statusName}"`;
145
+ if (projectKey) {
146
+ jql += ` AND project = "${projectKey}"`;
147
+ }
148
+ return this.search(jql, options);
149
+ }
150
+ /**
151
+ * Search issues by sprint
152
+ */
153
+ bySprint(sprintId, options) {
154
+ return this.search(`sprint = ${sprintId}`, options);
155
+ }
156
+ /**
157
+ * Search issues updated since a date
158
+ */
159
+ updatedSince(date, projectKey, options) {
160
+ const dateStr = date.toISOString().split('T')[0];
161
+ let jql = `updated >= "${dateStr}"`;
162
+ if (projectKey) {
163
+ jql += ` AND project = "${projectKey}"`;
164
+ }
165
+ return this.search(jql, options);
166
+ }
167
+ }
168
+ /**
169
+ * Create search operations instance
170
+ */
171
+ export function createSearchOperations(client) {
172
+ return new SearchOperations(client);
173
+ }
174
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/operations/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import type { JiraClient } from '../client.js';
2
+ import type { Sprint, SprintState, AddToSprintParams } from '../types/sprints.js';
3
+ import type { Board } from '../types/projects.js';
4
+ /**
5
+ * Sprint operations (requires Agile API)
6
+ */
7
+ export declare class SprintOperations {
8
+ private readonly client;
9
+ constructor(client: JiraClient);
10
+ /**
11
+ * Get the active sprint for a board
12
+ */
13
+ getActiveSprint(boardId: number): Promise<Sprint | null>;
14
+ /**
15
+ * Get all sprints for a board
16
+ */
17
+ getSprintsForBoard(boardId: number, state?: SprintState): Promise<Sprint[]>;
18
+ /**
19
+ * Get a sprint by ID
20
+ */
21
+ getSprint(sprintId: number): Promise<Sprint>;
22
+ /**
23
+ * Add an issue to a sprint
24
+ */
25
+ addIssueToSprint(issueKey: string, sprintId: number): Promise<void>;
26
+ addIssueToSprint(params: AddToSprintParams): Promise<void>;
27
+ /**
28
+ * Add multiple issues to a sprint
29
+ */
30
+ addIssuesToSprint(issueKeys: string[], sprintId: number): Promise<void>;
31
+ /**
32
+ * Remove an issue from its current sprint (move to backlog)
33
+ */
34
+ removeFromSprint(issueKey: string): Promise<void>;
35
+ /**
36
+ * Get issues in a sprint
37
+ */
38
+ getIssuesInSprint(sprintId: number, options?: {
39
+ fields?: string[];
40
+ }): Promise<string[]>;
41
+ /**
42
+ * Get all boards for a project
43
+ */
44
+ getBoardsForProject(projectKey: string): Promise<Board[]>;
45
+ /**
46
+ * Get a board by ID
47
+ */
48
+ getBoard(boardId: number): Promise<Board>;
49
+ }
50
+ /**
51
+ * Create sprint operations instance
52
+ */
53
+ export declare function createSprintOperations(client: JiraClient): SprintOperations;
54
+ //# sourceMappingURL=sprints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sprints.d.ts","sourceRoot":"","sources":["../../src/operations/sprints.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAkClD;;GAEG;AACH,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,UAAU;IAE/C;;OAEG;IACG,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAgB9D;;OAEG;IACG,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAajF;;OAEG;IACG,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAclD;;OAEG;IACG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACnE,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBhE;;OAEG;IACG,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa7E;;OAEG;IACG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYvD;;OAEG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAa7F;;OAEG;IACG,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAY/D;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;CAahD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,UAAU,GAAG,gBAAgB,CAE3E"}
@@ -0,0 +1,196 @@
1
+ import { ensureIssueKey } from '../utils/validation.js';
2
+ import { wrapJiraError, JiraNotFoundError } from '../utils/errors.js';
3
+ /**
4
+ * Map API response to Sprint
5
+ */
6
+ function mapSprint(raw) {
7
+ return {
8
+ id: raw.id,
9
+ self: raw.self,
10
+ state: raw.state,
11
+ name: raw.name,
12
+ startDate: raw.startDate ?? null,
13
+ endDate: raw.endDate ?? null,
14
+ completeDate: raw.completeDate ?? null,
15
+ originBoardId: raw.originBoardId,
16
+ goal: raw.goal ?? null,
17
+ };
18
+ }
19
+ /**
20
+ * Map API response to Board
21
+ */
22
+ function mapBoard(raw) {
23
+ return {
24
+ id: raw.id,
25
+ self: raw.self,
26
+ name: raw.name,
27
+ type: raw.type,
28
+ location: raw.location,
29
+ };
30
+ }
31
+ /**
32
+ * Sprint operations (requires Agile API)
33
+ */
34
+ export class SprintOperations {
35
+ client;
36
+ constructor(client) {
37
+ this.client = client;
38
+ }
39
+ /**
40
+ * Get the active sprint for a board
41
+ */
42
+ async getActiveSprint(boardId) {
43
+ try {
44
+ const response = await this.client.agile.board.getAllSprints({
45
+ boardId,
46
+ state: 'active',
47
+ });
48
+ const sprints = response.values ?? [];
49
+ if (sprints.length === 0) {
50
+ return null;
51
+ }
52
+ return mapSprint(sprints[0]);
53
+ }
54
+ catch (error) {
55
+ throw wrapJiraError(error, `Failed to get active sprint for board ${boardId}`);
56
+ }
57
+ }
58
+ /**
59
+ * Get all sprints for a board
60
+ */
61
+ async getSprintsForBoard(boardId, state) {
62
+ try {
63
+ const response = await this.client.agile.board.getAllSprints({
64
+ boardId,
65
+ state,
66
+ });
67
+ const sprints = response.values ?? [];
68
+ return sprints.map((s) => mapSprint(s));
69
+ }
70
+ catch (error) {
71
+ throw wrapJiraError(error, `Failed to get sprints for board ${boardId}`);
72
+ }
73
+ }
74
+ /**
75
+ * Get a sprint by ID
76
+ */
77
+ async getSprint(sprintId) {
78
+ try {
79
+ const response = await this.client.agile.sprint.getSprint({
80
+ sprintId,
81
+ });
82
+ return mapSprint(response);
83
+ }
84
+ catch (error) {
85
+ if (typeof error === 'object' && error !== null && 'status' in error && error.status === 404) {
86
+ throw new JiraNotFoundError('Sprint', sprintId.toString(), error);
87
+ }
88
+ throw wrapJiraError(error, `Failed to get sprint ${sprintId}`);
89
+ }
90
+ }
91
+ async addIssueToSprint(issueKeyOrParams, sprintId) {
92
+ let key;
93
+ let sprint;
94
+ if (typeof issueKeyOrParams === 'string') {
95
+ key = ensureIssueKey(issueKeyOrParams);
96
+ sprint = sprintId;
97
+ }
98
+ else {
99
+ key = ensureIssueKey(issueKeyOrParams.issueKey);
100
+ sprint = issueKeyOrParams.sprintId;
101
+ }
102
+ try {
103
+ await this.client.agile.sprint.moveIssuesToSprintAndRank({
104
+ sprintId: sprint,
105
+ issues: [key],
106
+ });
107
+ }
108
+ catch (error) {
109
+ throw wrapJiraError(error, `Failed to add ${key} to sprint ${sprint}`);
110
+ }
111
+ }
112
+ /**
113
+ * Add multiple issues to a sprint
114
+ */
115
+ async addIssuesToSprint(issueKeys, sprintId) {
116
+ const keys = issueKeys.map(ensureIssueKey);
117
+ try {
118
+ await this.client.agile.sprint.moveIssuesToSprintAndRank({
119
+ sprintId,
120
+ issues: keys,
121
+ });
122
+ }
123
+ catch (error) {
124
+ throw wrapJiraError(error, `Failed to add issues to sprint ${sprintId}`);
125
+ }
126
+ }
127
+ /**
128
+ * Remove an issue from its current sprint (move to backlog)
129
+ */
130
+ async removeFromSprint(issueKey) {
131
+ const key = ensureIssueKey(issueKey);
132
+ try {
133
+ await this.client.agile.backlog.moveIssuesToBacklog({
134
+ issues: [key],
135
+ });
136
+ }
137
+ catch (error) {
138
+ throw wrapJiraError(error, `Failed to remove ${key} from sprint`);
139
+ }
140
+ }
141
+ /**
142
+ * Get issues in a sprint
143
+ */
144
+ async getIssuesInSprint(sprintId, options) {
145
+ try {
146
+ const response = await this.client.agile.sprint.getIssuesForSprint({
147
+ sprintId,
148
+ fields: options?.fields ?? ['key'],
149
+ });
150
+ const issues = (response.issues ?? []);
151
+ return issues.map((i) => i.key);
152
+ }
153
+ catch (error) {
154
+ throw wrapJiraError(error, `Failed to get issues for sprint ${sprintId}`);
155
+ }
156
+ }
157
+ /**
158
+ * Get all boards for a project
159
+ */
160
+ async getBoardsForProject(projectKey) {
161
+ try {
162
+ const response = await this.client.agile.board.getAllBoards({
163
+ projectKeyOrId: projectKey,
164
+ });
165
+ const boards = (response.values ?? []);
166
+ return boards.map(mapBoard);
167
+ }
168
+ catch (error) {
169
+ throw wrapJiraError(error, `Failed to get boards for project ${projectKey}`);
170
+ }
171
+ }
172
+ /**
173
+ * Get a board by ID
174
+ */
175
+ async getBoard(boardId) {
176
+ try {
177
+ const response = await this.client.agile.board.getBoard({
178
+ boardId,
179
+ });
180
+ return mapBoard(response);
181
+ }
182
+ catch (error) {
183
+ if (typeof error === 'object' && error !== null && 'status' in error && error.status === 404) {
184
+ throw new JiraNotFoundError('Board', boardId.toString(), error);
185
+ }
186
+ throw wrapJiraError(error, `Failed to get board ${boardId}`);
187
+ }
188
+ }
189
+ }
190
+ /**
191
+ * Create sprint operations instance
192
+ */
193
+ export function createSprintOperations(client) {
194
+ return new SprintOperations(client);
195
+ }
196
+ //# sourceMappingURL=sprints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sprints.js","sourceRoot":"","sources":["../../src/operations/sprints.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import type { JiraClient } from '../client.js';
2
+ import type { Transition, TransitionParams, JiraStatus } from '../types/workflows.js';
3
+ /**
4
+ * Transition (workflow) operations
5
+ */
6
+ export declare class TransitionOperations {
7
+ private readonly client;
8
+ constructor(client: JiraClient);
9
+ /**
10
+ * Get available transitions for an issue
11
+ */
12
+ getTransitions(issueKey: string): Promise<Transition[]>;
13
+ /**
14
+ * Execute a transition on an issue
15
+ */
16
+ transition(issueKey: string, transitionId: string, options?: {
17
+ fields?: Record<string, unknown>;
18
+ comment?: string;
19
+ }): Promise<void>;
20
+ transition(issueKey: string, params: TransitionParams): Promise<void>;
21
+ /**
22
+ * Transition an issue by target status name
23
+ */
24
+ transitionToStatus(issueKey: string, targetStatusName: string, options?: {
25
+ fields?: Record<string, unknown>;
26
+ comment?: string;
27
+ }): Promise<void>;
28
+ /**
29
+ * Get the current status of an issue
30
+ */
31
+ getStatus(issueKey: string): Promise<JiraStatus>;
32
+ /**
33
+ * Check if a transition is available for an issue
34
+ */
35
+ isTransitionAvailable(issueKey: string, transitionName: string): Promise<boolean>;
36
+ }
37
+ /**
38
+ * Create transition operations instance
39
+ */
40
+ export declare function createTransitionOperations(client: JiraClient): TransitionOperations;
41
+ //# sourceMappingURL=transitions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transitions.d.ts","sourceRoot":"","sources":["../../src/operations/transitions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAmB,MAAM,uBAAuB,CAAC;AAqBvG;;GAEG;AACH,qBAAa,oBAAoB;IACnB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,UAAU;IAE/C;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAc7D;;OAEG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IACnI,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IA0D3E;;OAEG;IACG,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBrJ;;OAEG;IACG,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAkBtD;;OAEG;IACG,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAOxF;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,UAAU,GAAG,oBAAoB,CAEnF"}