@gongrzhe/server-jira 0.1.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 (66) hide show
  1. package/README.md +374 -0
  2. package/dist/common/context.d.ts +15 -0
  3. package/dist/common/context.d.ts.map +1 -0
  4. package/dist/common/context.js +33 -0
  5. package/dist/common/context.js.map +1 -0
  6. package/dist/common/errors.d.ts +26 -0
  7. package/dist/common/errors.d.ts.map +1 -0
  8. package/dist/common/errors.js +71 -0
  9. package/dist/common/errors.js.map +1 -0
  10. package/dist/common/token-parser.d.ts +53 -0
  11. package/dist/common/token-parser.d.ts.map +1 -0
  12. package/dist/common/token-parser.js +117 -0
  13. package/dist/common/token-parser.js.map +1 -0
  14. package/dist/common/types.d.ts +151 -0
  15. package/dist/common/types.d.ts.map +1 -0
  16. package/dist/common/types.js +2 -0
  17. package/dist/common/types.js.map +1 -0
  18. package/dist/common/utils.d.ts +9 -0
  19. package/dist/common/utils.d.ts.map +1 -0
  20. package/dist/common/utils.js +116 -0
  21. package/dist/common/utils.js.map +1 -0
  22. package/dist/common/version.d.ts +2 -0
  23. package/dist/common/version.d.ts.map +1 -0
  24. package/dist/common/version.js +3 -0
  25. package/dist/common/version.js.map +1 -0
  26. package/dist/index.d.ts +3 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +505 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/operations/atlassian.d.ts +27 -0
  31. package/dist/operations/atlassian.d.ts.map +1 -0
  32. package/dist/operations/atlassian.js +27 -0
  33. package/dist/operations/atlassian.js.map +1 -0
  34. package/dist/operations/comments.d.ts +117 -0
  35. package/dist/operations/comments.d.ts.map +1 -0
  36. package/dist/operations/comments.js +153 -0
  37. package/dist/operations/comments.js.map +1 -0
  38. package/dist/operations/issues.d.ts +146 -0
  39. package/dist/operations/issues.d.ts.map +1 -0
  40. package/dist/operations/issues.js +250 -0
  41. package/dist/operations/issues.js.map +1 -0
  42. package/dist/operations/metadata.d.ts +176 -0
  43. package/dist/operations/metadata.d.ts.map +1 -0
  44. package/dist/operations/metadata.js +143 -0
  45. package/dist/operations/metadata.js.map +1 -0
  46. package/dist/operations/projects.d.ts +159 -0
  47. package/dist/operations/projects.d.ts.map +1 -0
  48. package/dist/operations/projects.js +175 -0
  49. package/dist/operations/projects.js.map +1 -0
  50. package/dist/operations/users.d.ts +130 -0
  51. package/dist/operations/users.d.ts.map +1 -0
  52. package/dist/operations/users.js +214 -0
  53. package/dist/operations/users.js.map +1 -0
  54. package/dist/operations/workflow.d.ts +110 -0
  55. package/dist/operations/workflow.d.ts.map +1 -0
  56. package/dist/operations/workflow.js +203 -0
  57. package/dist/operations/workflow.js.map +1 -0
  58. package/dist/operations/worklog.d.ts +175 -0
  59. package/dist/operations/worklog.d.ts.map +1 -0
  60. package/dist/operations/worklog.js +322 -0
  61. package/dist/operations/worklog.js.map +1 -0
  62. package/dist/test-token-discovery.d.ts +6 -0
  63. package/dist/test-token-discovery.d.ts.map +1 -0
  64. package/dist/test-token-discovery.js +26 -0
  65. package/dist/test-token-discovery.js.map +1 -0
  66. package/package.json +54 -0
@@ -0,0 +1,214 @@
1
+ import { z } from 'zod';
2
+ import { jiraRequest, validateIssueKey } from '../common/utils.js';
3
+ import { JiraValidationError, JiraResourceNotFoundError } from '../common/errors.js';
4
+ // Schema definitions
5
+ export const GetCurrentUserSchema = z.object({
6
+ expand: z.array(z.string()).optional().describe("Fields to expand (e.g., ['groups', 'applicationRoles'])"),
7
+ });
8
+ export const SearchUsersSchema = z.object({
9
+ query: z.string().describe("Query string to search for users (name, email, etc.)"),
10
+ username: z.string().optional().describe("Exact username to search for"),
11
+ accountId: z.string().optional().describe("Exact account ID to search for"),
12
+ startAt: z.number().default(0).describe("Starting index for pagination"),
13
+ maxResults: z.number().default(50).describe("Maximum number of users to return"),
14
+ includeActive: z.boolean().default(true).describe("Include active users"),
15
+ includeInactive: z.boolean().default(false).describe("Include inactive users"),
16
+ });
17
+ export const GetUserSchema = z.object({
18
+ accountId: z.string().optional().describe("User's account ID"),
19
+ username: z.string().optional().describe("Username (deprecated, use accountId)"),
20
+ expand: z.array(z.string()).optional().describe("Fields to expand"),
21
+ });
22
+ export const GetWatchersSchema = z.object({
23
+ issueKey: z.string().describe("The issue key to get watchers from"),
24
+ });
25
+ export const AddWatcherSchema = z.object({
26
+ issueKey: z.string().describe("The issue key to add watcher to"),
27
+ accountId: z.string().describe("Account ID of the user to add as watcher"),
28
+ });
29
+ export const RemoveWatcherSchema = z.object({
30
+ issueKey: z.string().describe("The issue key to remove watcher from"),
31
+ accountId: z.string().describe("Account ID of the user to remove as watcher"),
32
+ });
33
+ export const GetUserGroupsSchema = z.object({
34
+ accountId: z.string().describe("User's account ID"),
35
+ });
36
+ export const GetUserPermissionsSchema = z.object({
37
+ accountId: z.string().describe("User's account ID"),
38
+ projectKey: z.string().optional().describe("Project key to check permissions in specific project"),
39
+ });
40
+ // Implementation functions
41
+ export async function getCurrentUser(params) {
42
+ const { expand } = params;
43
+ const query = expand && expand.length > 0 ? `?expand=${expand.join(',')}` : '';
44
+ const user = await jiraRequest(`myself${query}`);
45
+ return user;
46
+ }
47
+ export async function searchUsers(params) {
48
+ // Parse params to ensure defaults are applied
49
+ const validated = SearchUsersSchema.parse(params);
50
+ const { query: searchQuery, username, accountId, startAt, maxResults, includeActive, includeInactive } = validated;
51
+ const query = new URLSearchParams({
52
+ startAt: startAt.toString(),
53
+ maxResults: Math.min(maxResults, 1000).toString(),
54
+ });
55
+ if (searchQuery) {
56
+ query.set('query', searchQuery);
57
+ }
58
+ if (username) {
59
+ query.set('username', username);
60
+ }
61
+ if (accountId) {
62
+ query.set('accountId', accountId);
63
+ }
64
+ if (includeActive) {
65
+ query.set('includeActive', 'true');
66
+ }
67
+ if (includeInactive) {
68
+ query.set('includeInactive', 'true');
69
+ }
70
+ const users = await jiraRequest(`user/search?${query.toString()}`);
71
+ return users;
72
+ }
73
+ export async function getUser(params) {
74
+ const { accountId, username, expand } = params;
75
+ if (!accountId && !username) {
76
+ throw new JiraValidationError('Either accountId or username must be provided');
77
+ }
78
+ const query = new URLSearchParams();
79
+ if (accountId) {
80
+ query.set('accountId', accountId);
81
+ }
82
+ else if (username) {
83
+ query.set('username', username);
84
+ }
85
+ if (expand && expand.length > 0) {
86
+ query.set('expand', expand.join(','));
87
+ }
88
+ try {
89
+ const user = await jiraRequest(`user?${query.toString()}`);
90
+ return user;
91
+ }
92
+ catch (error) {
93
+ if (error.statusCode === 404) {
94
+ throw new JiraResourceNotFoundError('User', accountId || username || 'Unknown');
95
+ }
96
+ throw error;
97
+ }
98
+ }
99
+ export async function getWatchers(params) {
100
+ const { issueKey } = params;
101
+ if (!validateIssueKey(issueKey)) {
102
+ throw new JiraValidationError(`Invalid issue key format: ${issueKey}`);
103
+ }
104
+ try {
105
+ const watchers = await jiraRequest(`issue/${issueKey}/watchers`);
106
+ return watchers;
107
+ }
108
+ catch (error) {
109
+ if (error.statusCode === 404) {
110
+ throw new JiraResourceNotFoundError('Issue', issueKey);
111
+ }
112
+ throw error;
113
+ }
114
+ }
115
+ export async function addWatcher(params) {
116
+ const { issueKey, accountId } = params;
117
+ if (!validateIssueKey(issueKey)) {
118
+ throw new JiraValidationError(`Invalid issue key format: ${issueKey}`);
119
+ }
120
+ try {
121
+ await jiraRequest(`issue/${issueKey}/watchers`, {
122
+ method: 'POST',
123
+ body: JSON.stringify(accountId), // JIRA expects just the accountId as a string
124
+ });
125
+ return {
126
+ success: true,
127
+ message: `Successfully added watcher to issue ${issueKey}`,
128
+ };
129
+ }
130
+ catch (error) {
131
+ if (error.statusCode === 404) {
132
+ throw new JiraResourceNotFoundError('Issue or User', `${issueKey}/${accountId}`);
133
+ }
134
+ if (error.statusCode === 400) {
135
+ throw new JiraValidationError('Invalid account ID or user cannot be added as watcher');
136
+ }
137
+ throw error;
138
+ }
139
+ }
140
+ export async function removeWatcher(params) {
141
+ const { issueKey, accountId } = params;
142
+ if (!validateIssueKey(issueKey)) {
143
+ throw new JiraValidationError(`Invalid issue key format: ${issueKey}`);
144
+ }
145
+ try {
146
+ await jiraRequest(`issue/${issueKey}/watchers?accountId=${encodeURIComponent(accountId)}`, {
147
+ method: 'DELETE',
148
+ });
149
+ return {
150
+ success: true,
151
+ message: `Successfully removed watcher from issue ${issueKey}`,
152
+ };
153
+ }
154
+ catch (error) {
155
+ if (error.statusCode === 404) {
156
+ throw new JiraResourceNotFoundError('Issue or Watcher', `${issueKey}/${accountId}`);
157
+ }
158
+ throw error;
159
+ }
160
+ }
161
+ export async function getUserGroups(params) {
162
+ const { accountId } = params;
163
+ try {
164
+ const result = await jiraRequest(`user/groups?accountId=${encodeURIComponent(accountId)}`);
165
+ return result;
166
+ }
167
+ catch (error) {
168
+ if (error.statusCode === 404) {
169
+ throw new JiraResourceNotFoundError('User', accountId);
170
+ }
171
+ throw error;
172
+ }
173
+ }
174
+ export async function getUserPermissions(params) {
175
+ const { accountId, projectKey } = params;
176
+ const query = new URLSearchParams({
177
+ accountId,
178
+ });
179
+ if (projectKey) {
180
+ query.set('projectKey', projectKey);
181
+ }
182
+ try {
183
+ const permissions = await jiraRequest(`mypermissions?${query.toString()}`);
184
+ return permissions;
185
+ }
186
+ catch (error) {
187
+ if (error.statusCode === 404) {
188
+ throw new JiraResourceNotFoundError('User or Project', accountId + (projectKey ? `/${projectKey}` : ''));
189
+ }
190
+ throw error;
191
+ }
192
+ }
193
+ export async function bulkGetUsers(params) {
194
+ const { accountIds } = params;
195
+ if (!accountIds || accountIds.length === 0) {
196
+ return [];
197
+ }
198
+ if (accountIds.length > 1000) {
199
+ throw new JiraValidationError('Maximum 1000 account IDs allowed per request');
200
+ }
201
+ const query = new URLSearchParams();
202
+ accountIds.forEach(id => query.append('accountId', id));
203
+ try {
204
+ const users = await jiraRequest(`user/bulk?${query.toString()}`);
205
+ return users;
206
+ }
207
+ catch (error) {
208
+ if (error.statusCode === 400) {
209
+ throw new JiraValidationError('Invalid account IDs provided');
210
+ }
211
+ throw error;
212
+ }
213
+ }
214
+ //# sourceMappingURL=users.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"users.js","sourceRoot":"","sources":["../../operations/users.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,110 @@
1
+ import { z } from 'zod';
2
+ import { JiraTransition, JiraIssue } from '../common/types.js';
3
+ export declare const GetTransitionsSchema: z.ZodObject<{
4
+ issueKey: z.ZodString;
5
+ expand: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
6
+ skipRemoteOnlyCondition: z.ZodDefault<z.ZodBoolean>;
7
+ }, "strip", z.ZodTypeAny, {
8
+ issueKey: string;
9
+ skipRemoteOnlyCondition: boolean;
10
+ expand?: string[] | undefined;
11
+ }, {
12
+ issueKey: string;
13
+ expand?: string[] | undefined;
14
+ skipRemoteOnlyCondition?: boolean | undefined;
15
+ }>;
16
+ export declare const TransitionIssueSchema: z.ZodObject<{
17
+ issueKey: z.ZodString;
18
+ transitionId: z.ZodString;
19
+ comment: z.ZodOptional<z.ZodString>;
20
+ fields: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
21
+ resolution: z.ZodOptional<z.ZodString>;
22
+ assignee: z.ZodOptional<z.ZodString>;
23
+ }, "strip", z.ZodTypeAny, {
24
+ issueKey: string;
25
+ transitionId: string;
26
+ assignee?: string | undefined;
27
+ fields?: Record<string, any> | undefined;
28
+ comment?: string | undefined;
29
+ resolution?: string | undefined;
30
+ }, {
31
+ issueKey: string;
32
+ transitionId: string;
33
+ assignee?: string | undefined;
34
+ fields?: Record<string, any> | undefined;
35
+ comment?: string | undefined;
36
+ resolution?: string | undefined;
37
+ }>;
38
+ export declare const GetWorkflowsSchema: z.ZodObject<{
39
+ projectKey: z.ZodOptional<z.ZodString>;
40
+ workflowName: z.ZodOptional<z.ZodString>;
41
+ }, "strip", z.ZodTypeAny, {
42
+ projectKey?: string | undefined;
43
+ workflowName?: string | undefined;
44
+ }, {
45
+ projectKey?: string | undefined;
46
+ workflowName?: string | undefined;
47
+ }>;
48
+ export declare const GetWorkflowSchemeSchema: z.ZodObject<{
49
+ projectKey: z.ZodString;
50
+ }, "strip", z.ZodTypeAny, {
51
+ projectKey: string;
52
+ }, {
53
+ projectKey: string;
54
+ }>;
55
+ export declare function getTransitions(params: z.infer<typeof GetTransitionsSchema>): Promise<{
56
+ expand: string;
57
+ transitions: JiraTransition[];
58
+ }>;
59
+ export declare function transitionIssue(params: z.infer<typeof TransitionIssueSchema>): Promise<JiraIssue>;
60
+ export declare function getWorkflows(params: z.infer<typeof GetWorkflowsSchema>): Promise<Array<{
61
+ id: string;
62
+ name: string;
63
+ description?: string;
64
+ transitions: Array<{
65
+ id: string;
66
+ name: string;
67
+ from: string[];
68
+ to: string;
69
+ }>;
70
+ statuses: Array<{
71
+ id: string;
72
+ name: string;
73
+ properties?: any;
74
+ }>;
75
+ }>>;
76
+ export declare function getWorkflowScheme(params: z.infer<typeof GetWorkflowSchemeSchema>): Promise<{
77
+ id: string;
78
+ name: string;
79
+ description?: string;
80
+ defaultWorkflow: string;
81
+ issueTypeMappings: {
82
+ [issueTypeId: string]: string;
83
+ };
84
+ draft: boolean;
85
+ lastModified?: string;
86
+ lastModifiedUser?: {
87
+ displayName: string;
88
+ accountId: string;
89
+ };
90
+ self: string;
91
+ }>;
92
+ export declare function getWorkflowTransitionRules(params: {
93
+ transitionId: string;
94
+ workflowName: string;
95
+ }): Promise<{
96
+ conditions?: any[];
97
+ validators?: any[];
98
+ postFunctions?: any[];
99
+ }>;
100
+ export declare function validateTransition(params: {
101
+ jiraUrl: string;
102
+ issueKey: string;
103
+ transitionId: string;
104
+ fields?: Record<string, any>;
105
+ }): Promise<{
106
+ valid: boolean;
107
+ errors: string[];
108
+ warnings: string[];
109
+ }>;
110
+ //# sourceMappingURL=workflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../operations/workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAK/D,eAAO,MAAM,oBAAoB;;;;;;;;;;;;EAI/B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;EAOhC,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;EAG7B,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;EAElC,CAAC;AAGH,wBAAsB,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,GAAG,OAAO,CAAC;IAC1F,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,cAAc,EAAE,CAAC;CAC/B,CAAC,CAiCD;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CA8DvG;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5F,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,KAAK,CAAC;QACjB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC,CAAC;IACH,QAAQ,EAAE,KAAK,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,CAAC,EAAE,GAAG,CAAC;KAClB,CAAC,CAAC;CACJ,CAAC,CAAC,CA0BF;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,GAAG,OAAO,CAAC;IAChG,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE;QACjB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;KAC/B,CAAC;IACF,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,IAAI,EAAE,MAAM,CAAC;CACd,CAAC,CAuBD;AAED,wBAAsB,0BAA0B,CAAC,MAAM,EAAE;IACvD,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC;IACV,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC;CACvB,CAAC,CAcD;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B,GAAG,OAAO,CAAC;IACV,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC,CA8CD"}
@@ -0,0 +1,203 @@
1
+ import { z } from 'zod';
2
+ import { jiraRequest, validateIssueKey, parseJiraErrors } from '../common/utils.js';
3
+ import { JiraValidationError, JiraResourceNotFoundError } from '../common/errors.js';
4
+ // Schema definitions
5
+ export const GetTransitionsSchema = z.object({
6
+ issueKey: z.string().describe("The issue key to get transitions for"),
7
+ expand: z.array(z.string()).optional().describe("Fields to expand (e.g., ['fields'])"),
8
+ skipRemoteOnlyCondition: z.boolean().default(false).describe("Skip remote only condition"),
9
+ });
10
+ export const TransitionIssueSchema = z.object({
11
+ issueKey: z.string().describe("The issue key to transition"),
12
+ transitionId: z.string().describe("The transition ID to execute"),
13
+ comment: z.string().optional().describe("Optional comment for the transition"),
14
+ fields: z.record(z.any()).optional().describe("Field values to update during transition"),
15
+ resolution: z.string().optional().describe("Resolution name (if transitioning to resolved status)"),
16
+ assignee: z.string().optional().describe("New assignee account ID"),
17
+ });
18
+ export const GetWorkflowsSchema = z.object({
19
+ projectKey: z.string().optional().describe("Filter workflows by project key"),
20
+ workflowName: z.string().optional().describe("Specific workflow name to retrieve"),
21
+ });
22
+ export const GetWorkflowSchemeSchema = z.object({
23
+ projectKey: z.string().describe("Project key to get workflow scheme for"),
24
+ });
25
+ // Implementation functions
26
+ export async function getTransitions(params) {
27
+ const { issueKey, expand, skipRemoteOnlyCondition } = params;
28
+ if (!validateIssueKey(issueKey)) {
29
+ throw new JiraValidationError(`Invalid issue key format: ${issueKey}`);
30
+ }
31
+ const query = new URLSearchParams();
32
+ if (expand && expand.length > 0) {
33
+ query.set('expand', expand.join(','));
34
+ }
35
+ if (skipRemoteOnlyCondition) {
36
+ query.set('skipRemoteOnlyCondition', 'true');
37
+ }
38
+ const queryString = query.toString();
39
+ const endpoint = queryString ? `issue/${issueKey}/transitions?${queryString}` : `issue/${issueKey}/transitions`;
40
+ try {
41
+ const result = await jiraRequest(endpoint);
42
+ return result;
43
+ }
44
+ catch (error) {
45
+ if (error.statusCode === 404) {
46
+ throw new JiraResourceNotFoundError('Issue', issueKey);
47
+ }
48
+ throw error;
49
+ }
50
+ }
51
+ export async function transitionIssue(params) {
52
+ const { issueKey, transitionId, comment, fields, resolution, assignee } = params;
53
+ if (!validateIssueKey(issueKey)) {
54
+ throw new JiraValidationError(`Invalid issue key format: ${issueKey}`);
55
+ }
56
+ const transitionData = {
57
+ transition: { id: transitionId },
58
+ };
59
+ // Add fields to update during transition
60
+ const updateFields = {};
61
+ if (fields) {
62
+ Object.assign(updateFields, fields);
63
+ }
64
+ if (resolution) {
65
+ updateFields.resolution = { name: resolution };
66
+ }
67
+ if (assignee) {
68
+ updateFields.assignee = { accountId: assignee };
69
+ }
70
+ if (Object.keys(updateFields).length > 0) {
71
+ transitionData.fields = updateFields;
72
+ }
73
+ // Add comment if provided
74
+ if (comment) {
75
+ transitionData.update = {
76
+ comment: [
77
+ {
78
+ add: {
79
+ body: comment,
80
+ },
81
+ },
82
+ ],
83
+ };
84
+ }
85
+ try {
86
+ await jiraRequest(`issue/${issueKey}/transitions`, {
87
+ method: 'POST',
88
+ body: JSON.stringify(transitionData),
89
+ });
90
+ // Return the updated issue
91
+ const updatedIssue = await jiraRequest(`issue/${issueKey}`);
92
+ return updatedIssue;
93
+ }
94
+ catch (error) {
95
+ if (error.statusCode === 404) {
96
+ throw new JiraResourceNotFoundError('Issue or Transition', `${issueKey}/${transitionId}`);
97
+ }
98
+ if (error.statusCode === 400) {
99
+ const errors = parseJiraErrors(error.responseBody || {});
100
+ throw new JiraValidationError(`Failed to transition issue: ${errors.join(', ')}`);
101
+ }
102
+ throw error;
103
+ }
104
+ }
105
+ export async function getWorkflows(params) {
106
+ const { projectKey, workflowName } = params;
107
+ let endpoint = 'workflow';
108
+ const query = new URLSearchParams();
109
+ if (workflowName) {
110
+ endpoint = `workflow/${encodeURIComponent(workflowName)}`;
111
+ }
112
+ if (projectKey) {
113
+ query.set('projectKeys', projectKey);
114
+ }
115
+ const queryString = query.toString();
116
+ const finalEndpoint = queryString ? `${endpoint}?${queryString}` : endpoint;
117
+ try {
118
+ const workflows = await jiraRequest(finalEndpoint);
119
+ return workflows;
120
+ }
121
+ catch (error) {
122
+ if (error.statusCode === 404 && workflowName) {
123
+ throw new JiraResourceNotFoundError('Workflow', workflowName);
124
+ }
125
+ throw error;
126
+ }
127
+ }
128
+ export async function getWorkflowScheme(params) {
129
+ const { projectKey } = params;
130
+ try {
131
+ // First get the project to find its workflow scheme
132
+ const project = await jiraRequest(`project/${projectKey}`);
133
+ // Extract workflow scheme ID from project (this might vary based on JIRA version)
134
+ // For newer JIRA versions, we might need to use a different approach
135
+ const schemeId = project.workflowScheme?.id;
136
+ if (!schemeId) {
137
+ throw new JiraResourceNotFoundError('Workflow Scheme', `for project ${projectKey}`);
138
+ }
139
+ const scheme = await jiraRequest(`workflowscheme/${schemeId}`);
140
+ return scheme;
141
+ }
142
+ catch (error) {
143
+ if (error.statusCode === 404) {
144
+ throw new JiraResourceNotFoundError('Project or Workflow Scheme', projectKey);
145
+ }
146
+ throw error;
147
+ }
148
+ }
149
+ export async function getWorkflowTransitionRules(params) {
150
+ const { transitionId, workflowName } = params;
151
+ try {
152
+ const rules = await jiraRequest(`workflow/${encodeURIComponent(workflowName)}/transitions/${transitionId}/properties`);
153
+ return rules;
154
+ }
155
+ catch (error) {
156
+ if (error.statusCode === 404) {
157
+ throw new JiraResourceNotFoundError('Workflow Transition', `${workflowName}/${transitionId}`);
158
+ }
159
+ throw error;
160
+ }
161
+ }
162
+ export async function validateTransition(params) {
163
+ const { jiraUrl, issueKey, transitionId, fields } = params;
164
+ if (!validateIssueKey(issueKey)) {
165
+ throw new JiraValidationError(`Invalid issue key format: ${issueKey}`);
166
+ }
167
+ // This is a simulation of validation - in practice, you might call a specific validation endpoint
168
+ try {
169
+ // Get available transitions to check if the transition is valid
170
+ const { transitions } = await getTransitions({ issueKey, skipRemoteOnlyCondition: false });
171
+ const targetTransition = transitions.find(t => t.id === transitionId);
172
+ if (!targetTransition) {
173
+ return {
174
+ valid: false,
175
+ errors: [`Transition ${transitionId} is not available for issue ${issueKey}`],
176
+ warnings: [],
177
+ };
178
+ }
179
+ // Check required fields
180
+ const errors = [];
181
+ const warnings = [];
182
+ if (targetTransition.fields) {
183
+ for (const [fieldKey, fieldMeta] of Object.entries(targetTransition.fields)) {
184
+ if (fieldMeta.required && (!fields || !fields[fieldKey])) {
185
+ errors.push(`Field ${fieldMeta.name || fieldKey} is required for this transition`);
186
+ }
187
+ }
188
+ }
189
+ return {
190
+ valid: errors.length === 0,
191
+ errors,
192
+ warnings,
193
+ };
194
+ }
195
+ catch (error) {
196
+ return {
197
+ valid: false,
198
+ errors: [`Failed to validate transition: ${error instanceof Error ? error.message : 'Unknown error'}`],
199
+ warnings: [],
200
+ };
201
+ }
202
+ }
203
+ //# sourceMappingURL=workflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../operations/workflow.ts"],"names":[],"mappings":"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"}