@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,135 @@
1
+ import { ensureIssueKey } from '../utils/validation.js';
2
+ import { wrapJiraError, JiraTransitionError, JiraNotFoundError } from '../utils/errors.js';
3
+ import { ensureAdf } from '../utils/adf.js';
4
+ /**
5
+ * Map API response to Transition
6
+ */
7
+ function mapTransition(raw) {
8
+ return {
9
+ id: raw.id,
10
+ name: raw.name,
11
+ to: raw.to,
12
+ hasScreen: raw.hasScreen ?? false,
13
+ isGlobal: raw.isGlobal ?? false,
14
+ isInitial: raw.isInitial ?? false,
15
+ isConditional: raw.isConditional ?? false,
16
+ fields: raw.fields,
17
+ };
18
+ }
19
+ /**
20
+ * Transition (workflow) operations
21
+ */
22
+ export class TransitionOperations {
23
+ client;
24
+ constructor(client) {
25
+ this.client = client;
26
+ }
27
+ /**
28
+ * Get available transitions for an issue
29
+ */
30
+ async getTransitions(issueKey) {
31
+ const key = ensureIssueKey(issueKey);
32
+ try {
33
+ const response = await this.client.v3.issues.getTransitions({
34
+ issueIdOrKey: key,
35
+ expand: 'transitions.fields',
36
+ });
37
+ return (response.transitions ?? []).map((t) => mapTransition(t));
38
+ }
39
+ catch (error) {
40
+ throw wrapJiraError(error, `Failed to get transitions for ${key}`);
41
+ }
42
+ }
43
+ async transition(issueKey, transitionIdOrParams, options) {
44
+ const key = ensureIssueKey(issueKey);
45
+ let transitionId;
46
+ let fields;
47
+ let comment;
48
+ if (typeof transitionIdOrParams === 'string') {
49
+ transitionId = transitionIdOrParams;
50
+ fields = options?.fields;
51
+ comment = options?.comment;
52
+ }
53
+ else {
54
+ transitionId = transitionIdOrParams.transitionId;
55
+ fields = transitionIdOrParams.fields;
56
+ comment = transitionIdOrParams.comment;
57
+ }
58
+ try {
59
+ const requestBody = {
60
+ transition: { id: transitionId },
61
+ };
62
+ if (fields) {
63
+ requestBody.fields = fields;
64
+ }
65
+ if (comment) {
66
+ requestBody.update = {
67
+ comment: [{ add: { body: ensureAdf(comment) } }],
68
+ };
69
+ }
70
+ await this.client.v3.issues.doTransition({
71
+ issueIdOrKey: key,
72
+ ...requestBody,
73
+ });
74
+ }
75
+ catch (error) {
76
+ // If transition failed, provide helpful error with available transitions
77
+ if (typeof error === 'object' && error !== null && 'status' in error) {
78
+ const status = error.status;
79
+ if (status === 400 || status === 422) {
80
+ const available = await this.getTransitions(key);
81
+ throw new JiraTransitionError(`Transition '${transitionId}' is not available for issue ${key}`, available, error);
82
+ }
83
+ }
84
+ throw wrapJiraError(error, `Failed to transition ${key}`);
85
+ }
86
+ }
87
+ /**
88
+ * Transition an issue by target status name
89
+ */
90
+ async transitionToStatus(issueKey, targetStatusName, options) {
91
+ const key = ensureIssueKey(issueKey);
92
+ const transitions = await this.getTransitions(key);
93
+ // Find transition that leads to the target status
94
+ const transition = transitions.find((t) => t.to.name.toLowerCase() === targetStatusName.toLowerCase());
95
+ if (!transition) {
96
+ throw new JiraTransitionError(`No transition available to status '${targetStatusName}' for issue ${key}`, transitions);
97
+ }
98
+ await this.transition(key, transition.id, options);
99
+ }
100
+ /**
101
+ * Get the current status of an issue
102
+ */
103
+ async getStatus(issueKey) {
104
+ const key = ensureIssueKey(issueKey);
105
+ try {
106
+ const response = await this.client.v3.issues.getIssue({
107
+ issueIdOrKey: key,
108
+ fields: ['status'],
109
+ });
110
+ const fields = response.fields;
111
+ return fields.status;
112
+ }
113
+ catch (error) {
114
+ if (typeof error === 'object' && error !== null && 'status' in error && error.status === 404) {
115
+ throw new JiraNotFoundError('Issue', key, error);
116
+ }
117
+ throw wrapJiraError(error, `Failed to get status for ${key}`);
118
+ }
119
+ }
120
+ /**
121
+ * Check if a transition is available for an issue
122
+ */
123
+ async isTransitionAvailable(issueKey, transitionName) {
124
+ const transitions = await this.getTransitions(issueKey);
125
+ return transitions.some((t) => t.name.toLowerCase() === transitionName.toLowerCase() ||
126
+ t.to.name.toLowerCase() === transitionName.toLowerCase());
127
+ }
128
+ }
129
+ /**
130
+ * Create transition operations instance
131
+ */
132
+ export function createTransitionOperations(client) {
133
+ return new TransitionOperations(client);
134
+ }
135
+ //# sourceMappingURL=transitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transitions.js","sourceRoot":"","sources":["../../src/operations/transitions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,221 @@
1
+ import type { Issue as LatencyIssue, IssueSpec as LatencyIssueSpec, IssueUpdate as LatencyIssueUpdate, IssueQuery as LatencyIssueQuery, Comment as LatencyComment, PaginatedResult } from '@generacy-ai/latency';
2
+ import { AbstractIssueTrackerPlugin } from '@generacy-ai/latency-plugin-issue-tracker';
3
+ import type { JiraConfig, JiraIssue, CreateJiraIssueParams, UpdateJiraIssueParams, SearchOptions, JiraComment, AddCommentParams, Transition, TransitionParams, CustomField, Sprint, Board, AdfDocument } from './types/index.js';
4
+ import { IssueOperations } from './operations/issues.js';
5
+ import { SearchOperations } from './operations/search.js';
6
+ import { CommentOperations } from './operations/comments.js';
7
+ import { TransitionOperations } from './operations/transitions.js';
8
+ import { CustomFieldOperations } from './operations/custom-fields.js';
9
+ import { SprintOperations } from './operations/sprints.js';
10
+ import { JiraWebhookHandler } from './webhooks/handler.js';
11
+ import type { JiraWebhookEvent, WebhookAction } from './webhooks/types.js';
12
+ /**
13
+ * Jira Plugin for Generacy
14
+ *
15
+ * Extends AbstractIssueTrackerPlugin to provide the standard IssueTracker interface
16
+ * while also exposing Jira-specific functionality.
17
+ *
18
+ * Provides programmatic access to Jira functionality including:
19
+ * - Issue CRUD operations (via IssueTracker interface)
20
+ * - JQL search with async iteration
21
+ * - Workflow transitions
22
+ * - Custom field management
23
+ * - Sprint operations
24
+ * - Webhook event processing
25
+ */
26
+ export declare class JiraPlugin extends AbstractIssueTrackerPlugin {
27
+ private readonly client;
28
+ private readonly issueOps;
29
+ private readonly searchOps;
30
+ private readonly commentOps;
31
+ private readonly transitionOps;
32
+ private readonly customFieldOps;
33
+ private readonly sprintOps;
34
+ private readonly webhookHandler;
35
+ private readonly defaultProjectKey?;
36
+ constructor(config: JiraConfig);
37
+ /**
38
+ * Fetch a single issue from Jira (implements abstract method)
39
+ */
40
+ protected fetchIssue(id: string): Promise<LatencyIssue>;
41
+ /**
42
+ * Create a new issue in Jira (implements abstract method)
43
+ */
44
+ protected doCreateIssue(spec: LatencyIssueSpec): Promise<LatencyIssue>;
45
+ /**
46
+ * Update an existing issue (implements abstract method)
47
+ */
48
+ protected doUpdateIssue(id: string, update: LatencyIssueUpdate): Promise<LatencyIssue>;
49
+ /**
50
+ * List issues matching the query (implements abstract method)
51
+ */
52
+ protected doListIssues(query: LatencyIssueQuery): Promise<PaginatedResult<LatencyIssue>>;
53
+ /**
54
+ * Add a comment to an issue (implements abstract method)
55
+ */
56
+ protected doAddComment(issueId: string, comment: string): Promise<LatencyComment>;
57
+ /**
58
+ * List comments for an issue (implements abstract method)
59
+ */
60
+ protected doListComments(issueId: string): Promise<LatencyComment[]>;
61
+ /**
62
+ * Create a new issue (Jira-specific version with full return type)
63
+ */
64
+ createJiraIssue(params: CreateJiraIssueParams): Promise<JiraIssue>;
65
+ /**
66
+ * Get an issue by key or ID (Jira-specific version with full return type)
67
+ */
68
+ getJiraIssue(keyOrId: string): Promise<JiraIssue>;
69
+ /**
70
+ * Update an issue (Jira-specific version)
71
+ */
72
+ updateJiraIssue(keyOrId: string, params: UpdateJiraIssueParams): Promise<JiraIssue>;
73
+ /**
74
+ * Delete an issue
75
+ */
76
+ deleteIssue(keyOrId: string, deleteSubtasks?: boolean): Promise<void>;
77
+ /**
78
+ * Assign an issue to a user
79
+ */
80
+ assignIssue(keyOrId: string, accountId: string | null): Promise<void>;
81
+ /**
82
+ * Search issues using JQL (returns async iterator)
83
+ */
84
+ searchJiraIssues(jql: string, options?: SearchOptions): AsyncGenerator<JiraIssue>;
85
+ /**
86
+ * Search issues and return all results as array
87
+ */
88
+ searchJiraIssuesAll(jql: string, options?: SearchOptions): Promise<JiraIssue[]>;
89
+ /**
90
+ * Count issues matching a JQL query
91
+ */
92
+ countIssues(jql: string): Promise<number>;
93
+ /**
94
+ * Add a comment to an issue (Jira-specific version with full return type)
95
+ */
96
+ addJiraComment(issueKey: string, body: string | AdfDocument): Promise<JiraComment>;
97
+ addJiraComment(issueKey: string, params: AddCommentParams): Promise<JiraComment>;
98
+ /**
99
+ * Get all comments for an issue
100
+ */
101
+ getComments(issueKey: string): Promise<JiraComment[]>;
102
+ /**
103
+ * Update a comment
104
+ */
105
+ updateComment(issueKey: string, commentId: string, body: string | AdfDocument): Promise<JiraComment>;
106
+ /**
107
+ * Delete a comment
108
+ */
109
+ deleteComment(issueKey: string, commentId: string): Promise<void>;
110
+ /**
111
+ * Get available transitions for an issue
112
+ */
113
+ getTransitions(issueKey: string): Promise<Transition[]>;
114
+ /**
115
+ * Transition an issue
116
+ */
117
+ transitionIssue(issueKey: string, transitionId: string, options?: {
118
+ fields?: Record<string, unknown>;
119
+ comment?: string;
120
+ }): Promise<void>;
121
+ transitionIssue(issueKey: string, params: TransitionParams): Promise<void>;
122
+ /**
123
+ * Transition an issue to a specific status by name
124
+ */
125
+ transitionToStatus(issueKey: string, statusName: string, options?: {
126
+ fields?: Record<string, unknown>;
127
+ comment?: string;
128
+ }): Promise<void>;
129
+ /**
130
+ * Get all custom fields
131
+ */
132
+ getCustomFields(): Promise<CustomField[]>;
133
+ /**
134
+ * Get a custom field by ID
135
+ */
136
+ getCustomField(fieldId: string): Promise<CustomField>;
137
+ /**
138
+ * Set a custom field value
139
+ */
140
+ setCustomField(issueKey: string, fieldId: string, value: unknown): Promise<void>;
141
+ /**
142
+ * Get the active sprint for a board
143
+ */
144
+ getActiveSprint(boardId: number): Promise<Sprint | null>;
145
+ /**
146
+ * Get all sprints for a board
147
+ */
148
+ getSprintsForBoard(boardId: number): Promise<Sprint[]>;
149
+ /**
150
+ * Add an issue to a sprint
151
+ */
152
+ addToSprint(issueKey: string, sprintId: number): Promise<void>;
153
+ /**
154
+ * Get boards for a project
155
+ */
156
+ getBoardsForProject(projectKey: string): Promise<Board[]>;
157
+ /**
158
+ * Handle a webhook event
159
+ * Returns the parsed action from the event
160
+ */
161
+ handleWebhook(event: JiraWebhookEvent): Promise<WebhookAction>;
162
+ /**
163
+ * Handle a raw webhook payload
164
+ */
165
+ handleRawWebhook(payload: unknown): Promise<WebhookAction>;
166
+ /**
167
+ * Verify authentication
168
+ */
169
+ verifyAuth(): Promise<{
170
+ accountId: string;
171
+ displayName: string;
172
+ email: string;
173
+ }>;
174
+ /**
175
+ * Check connectivity
176
+ */
177
+ checkConnection(): Promise<{
178
+ version: string;
179
+ baseUrl: string;
180
+ }>;
181
+ /**
182
+ * Get the Jira host URL
183
+ */
184
+ get host(): string;
185
+ /**
186
+ * Get the default project key
187
+ */
188
+ get projectKey(): string | undefined;
189
+ /**
190
+ * Access to underlying operations for advanced usage
191
+ */
192
+ get operations(): {
193
+ issues: IssueOperations;
194
+ search: SearchOperations;
195
+ comments: CommentOperations;
196
+ transitions: TransitionOperations;
197
+ customFields: CustomFieldOperations;
198
+ sprints: SprintOperations;
199
+ };
200
+ /**
201
+ * Access to webhook handler for advanced usage
202
+ */
203
+ get webhook(): JiraWebhookHandler;
204
+ /**
205
+ * Map a Jira Issue to the Latency Issue type
206
+ */
207
+ private mapToLatencyIssue;
208
+ /**
209
+ * Map a Jira Comment to the Latency Comment type
210
+ */
211
+ private mapToLatencyComment;
212
+ /**
213
+ * Convert ADF document to plain string
214
+ */
215
+ private adfToString;
216
+ }
217
+ /**
218
+ * Create a new Jira plugin instance
219
+ */
220
+ export declare function createPlugin(config: JiraConfig): JiraPlugin;
221
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}