@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
package/dist/plugin.js ADDED
@@ -0,0 +1,403 @@
1
+ import { AbstractIssueTrackerPlugin } from '@generacy-ai/latency-plugin-issue-tracker';
2
+ import { createClient } from './client.js';
3
+ import { createIssueOperations } from './operations/issues.js';
4
+ import { createSearchOperations } from './operations/search.js';
5
+ import { createCommentOperations } from './operations/comments.js';
6
+ import { createTransitionOperations } from './operations/transitions.js';
7
+ import { createCustomFieldOperations } from './operations/custom-fields.js';
8
+ import { createSprintOperations } from './operations/sprints.js';
9
+ import { createWebhookHandler, } from './webhooks/handler.js';
10
+ /**
11
+ * Jira Plugin for Generacy
12
+ *
13
+ * Extends AbstractIssueTrackerPlugin to provide the standard IssueTracker interface
14
+ * while also exposing Jira-specific functionality.
15
+ *
16
+ * Provides programmatic access to Jira functionality including:
17
+ * - Issue CRUD operations (via IssueTracker interface)
18
+ * - JQL search with async iteration
19
+ * - Workflow transitions
20
+ * - Custom field management
21
+ * - Sprint operations
22
+ * - Webhook event processing
23
+ */
24
+ export class JiraPlugin extends AbstractIssueTrackerPlugin {
25
+ client;
26
+ issueOps;
27
+ searchOps;
28
+ commentOps;
29
+ transitionOps;
30
+ customFieldOps;
31
+ sprintOps;
32
+ webhookHandler;
33
+ defaultProjectKey;
34
+ constructor(config) {
35
+ super({ cacheTimeout: config.cacheTimeout ?? 60000 });
36
+ this.client = createClient(config);
37
+ this.defaultProjectKey = config.projectKey;
38
+ this.issueOps = createIssueOperations(this.client);
39
+ this.searchOps = createSearchOperations(this.client);
40
+ this.commentOps = createCommentOperations(this.client);
41
+ this.transitionOps = createTransitionOperations(this.client);
42
+ this.customFieldOps = createCustomFieldOperations(this.client);
43
+ this.sprintOps = createSprintOperations(this.client);
44
+ const webhookConfig = {
45
+ webhookSecret: config.webhookSecret,
46
+ };
47
+ this.webhookHandler = createWebhookHandler(webhookConfig);
48
+ }
49
+ // ==========================================================================
50
+ // AbstractIssueTrackerPlugin abstract method implementations
51
+ // ==========================================================================
52
+ /**
53
+ * Fetch a single issue from Jira (implements abstract method)
54
+ */
55
+ async fetchIssue(id) {
56
+ const issue = await this.issueOps.get(id);
57
+ return this.mapToLatencyIssue(issue);
58
+ }
59
+ /**
60
+ * Create a new issue in Jira (implements abstract method)
61
+ */
62
+ async doCreateIssue(spec) {
63
+ if (!this.defaultProjectKey) {
64
+ throw new Error('projectKey is required to create issues');
65
+ }
66
+ const params = {
67
+ projectKey: this.defaultProjectKey,
68
+ summary: spec.title,
69
+ description: spec.body,
70
+ issueType: 'Task', // Default issue type
71
+ labels: spec.labels,
72
+ assignee: spec.assignees?.[0],
73
+ };
74
+ const issue = await this.issueOps.create(params);
75
+ return this.mapToLatencyIssue(issue);
76
+ }
77
+ /**
78
+ * Update an existing issue (implements abstract method)
79
+ */
80
+ async doUpdateIssue(id, update) {
81
+ const params = {
82
+ summary: update.title,
83
+ description: update.body,
84
+ labels: update.labels,
85
+ assignee: update.assignees?.[0] ?? null,
86
+ };
87
+ // Handle state changes via transitions
88
+ if (update.state) {
89
+ const targetStatus = update.state === 'closed' ? 'Done' : 'To Do';
90
+ try {
91
+ await this.transitionOps.transitionToStatus(id, targetStatus);
92
+ }
93
+ catch {
94
+ // Transition may not be available - continue with other updates
95
+ }
96
+ }
97
+ const issue = await this.issueOps.update(id, params);
98
+ return this.mapToLatencyIssue(issue);
99
+ }
100
+ /**
101
+ * List issues matching the query (implements abstract method)
102
+ */
103
+ async doListIssues(query) {
104
+ const jqlParts = [];
105
+ if (query.state && query.state !== 'all') {
106
+ jqlParts.push(query.state === 'closed'
107
+ ? 'statusCategory = Done'
108
+ : 'statusCategory != Done');
109
+ }
110
+ if (query.labels && query.labels.length > 0) {
111
+ const labelClauses = query.labels.map((l) => `labels = "${l}"`);
112
+ jqlParts.push(`(${labelClauses.join(' AND ')})`);
113
+ }
114
+ if (query.assignee) {
115
+ jqlParts.push(`assignee = "${query.assignee}"`);
116
+ }
117
+ const jql = jqlParts.length > 0 ? jqlParts.join(' AND ') : 'ORDER BY created DESC';
118
+ const options = {
119
+ pageSize: query.limit ?? 30,
120
+ startAt: query.offset ?? 0,
121
+ };
122
+ const issues = await this.searchOps.searchAll(jql, options);
123
+ const latencyIssues = issues.map((issue) => this.mapToLatencyIssue(issue));
124
+ return {
125
+ items: latencyIssues,
126
+ total: latencyIssues.length,
127
+ hasMore: issues.length === (query.limit ?? 30),
128
+ };
129
+ }
130
+ /**
131
+ * Add a comment to an issue (implements abstract method)
132
+ */
133
+ async doAddComment(issueId, comment) {
134
+ const jiraComment = await this.commentOps.add(issueId, comment);
135
+ return this.mapToLatencyComment(jiraComment);
136
+ }
137
+ /**
138
+ * List comments for an issue (implements abstract method)
139
+ */
140
+ async doListComments(issueId) {
141
+ const comments = await this.commentOps.list(issueId);
142
+ return comments.map((c) => this.mapToLatencyComment(c));
143
+ }
144
+ // ==========================================================================
145
+ // Jira-specific public API (for backwards compatibility)
146
+ // ==========================================================================
147
+ /**
148
+ * Create a new issue (Jira-specific version with full return type)
149
+ */
150
+ async createJiraIssue(params) {
151
+ return this.issueOps.create(params);
152
+ }
153
+ /**
154
+ * Get an issue by key or ID (Jira-specific version with full return type)
155
+ */
156
+ async getJiraIssue(keyOrId) {
157
+ return this.issueOps.get(keyOrId);
158
+ }
159
+ /**
160
+ * Update an issue (Jira-specific version)
161
+ */
162
+ async updateJiraIssue(keyOrId, params) {
163
+ return this.issueOps.update(keyOrId, params);
164
+ }
165
+ /**
166
+ * Delete an issue
167
+ */
168
+ async deleteIssue(keyOrId, deleteSubtasks = false) {
169
+ return this.issueOps.delete(keyOrId, deleteSubtasks);
170
+ }
171
+ /**
172
+ * Assign an issue to a user
173
+ */
174
+ async assignIssue(keyOrId, accountId) {
175
+ return this.issueOps.assign(keyOrId, accountId);
176
+ }
177
+ // ==================== Search Operations ====================
178
+ /**
179
+ * Search issues using JQL (returns async iterator)
180
+ */
181
+ searchJiraIssues(jql, options) {
182
+ return this.searchOps.search(jql, options);
183
+ }
184
+ /**
185
+ * Search issues and return all results as array
186
+ */
187
+ async searchJiraIssuesAll(jql, options) {
188
+ return this.searchOps.searchAll(jql, options);
189
+ }
190
+ /**
191
+ * Count issues matching a JQL query
192
+ */
193
+ async countIssues(jql) {
194
+ return this.searchOps.count(jql);
195
+ }
196
+ async addJiraComment(issueKey, bodyOrParams) {
197
+ if (typeof bodyOrParams === 'string' || ('version' in bodyOrParams && bodyOrParams.version === 1)) {
198
+ return this.commentOps.add(issueKey, bodyOrParams);
199
+ }
200
+ return this.commentOps.add(issueKey, bodyOrParams);
201
+ }
202
+ /**
203
+ * Get all comments for an issue
204
+ */
205
+ async getComments(issueKey) {
206
+ return this.commentOps.list(issueKey);
207
+ }
208
+ /**
209
+ * Update a comment
210
+ */
211
+ async updateComment(issueKey, commentId, body) {
212
+ return this.commentOps.update(issueKey, commentId, body);
213
+ }
214
+ /**
215
+ * Delete a comment
216
+ */
217
+ async deleteComment(issueKey, commentId) {
218
+ return this.commentOps.delete(issueKey, commentId);
219
+ }
220
+ // ==================== Transition Operations ====================
221
+ /**
222
+ * Get available transitions for an issue
223
+ */
224
+ async getTransitions(issueKey) {
225
+ return this.transitionOps.getTransitions(issueKey);
226
+ }
227
+ async transitionIssue(issueKey, transitionIdOrParams, options) {
228
+ if (typeof transitionIdOrParams === 'string') {
229
+ return this.transitionOps.transition(issueKey, transitionIdOrParams, options);
230
+ }
231
+ return this.transitionOps.transition(issueKey, transitionIdOrParams);
232
+ }
233
+ /**
234
+ * Transition an issue to a specific status by name
235
+ */
236
+ async transitionToStatus(issueKey, statusName, options) {
237
+ return this.transitionOps.transitionToStatus(issueKey, statusName, options);
238
+ }
239
+ // ==================== Custom Field Operations ====================
240
+ /**
241
+ * Get all custom fields
242
+ */
243
+ async getCustomFields() {
244
+ return this.customFieldOps.getAll();
245
+ }
246
+ /**
247
+ * Get a custom field by ID
248
+ */
249
+ async getCustomField(fieldId) {
250
+ return this.customFieldOps.get(fieldId);
251
+ }
252
+ /**
253
+ * Set a custom field value
254
+ */
255
+ async setCustomField(issueKey, fieldId, value) {
256
+ return this.customFieldOps.setValue(issueKey, fieldId, value);
257
+ }
258
+ // ==================== Sprint Operations ====================
259
+ /**
260
+ * Get the active sprint for a board
261
+ */
262
+ async getActiveSprint(boardId) {
263
+ return this.sprintOps.getActiveSprint(boardId);
264
+ }
265
+ /**
266
+ * Get all sprints for a board
267
+ */
268
+ async getSprintsForBoard(boardId) {
269
+ return this.sprintOps.getSprintsForBoard(boardId);
270
+ }
271
+ /**
272
+ * Add an issue to a sprint
273
+ */
274
+ async addToSprint(issueKey, sprintId) {
275
+ return this.sprintOps.addIssueToSprint(issueKey, sprintId);
276
+ }
277
+ /**
278
+ * Get boards for a project
279
+ */
280
+ async getBoardsForProject(projectKey) {
281
+ return this.sprintOps.getBoardsForProject(projectKey);
282
+ }
283
+ // ==================== Webhook Operations ====================
284
+ /**
285
+ * Handle a webhook event
286
+ * Returns the parsed action from the event
287
+ */
288
+ async handleWebhook(event) {
289
+ const result = await this.webhookHandler.processEvent(event);
290
+ return result.action;
291
+ }
292
+ /**
293
+ * Handle a raw webhook payload
294
+ */
295
+ async handleRawWebhook(payload) {
296
+ const result = await this.webhookHandler.handle(payload);
297
+ return result.action;
298
+ }
299
+ // ==================== Utility Methods ====================
300
+ /**
301
+ * Verify authentication
302
+ */
303
+ async verifyAuth() {
304
+ return this.client.verifyAuth();
305
+ }
306
+ /**
307
+ * Check connectivity
308
+ */
309
+ async checkConnection() {
310
+ return this.client.checkConnection();
311
+ }
312
+ /**
313
+ * Get the Jira host URL
314
+ */
315
+ get host() {
316
+ return this.client.host;
317
+ }
318
+ /**
319
+ * Get the default project key
320
+ */
321
+ get projectKey() {
322
+ return this.client.projectKey;
323
+ }
324
+ /**
325
+ * Access to underlying operations for advanced usage
326
+ */
327
+ get operations() {
328
+ return {
329
+ issues: this.issueOps,
330
+ search: this.searchOps,
331
+ comments: this.commentOps,
332
+ transitions: this.transitionOps,
333
+ customFields: this.customFieldOps,
334
+ sprints: this.sprintOps,
335
+ };
336
+ }
337
+ /**
338
+ * Access to webhook handler for advanced usage
339
+ */
340
+ get webhook() {
341
+ return this.webhookHandler;
342
+ }
343
+ // ==========================================================================
344
+ // Private helper methods
345
+ // ==========================================================================
346
+ /**
347
+ * Map a Jira Issue to the Latency Issue type
348
+ */
349
+ mapToLatencyIssue(issue) {
350
+ const isClosed = issue.status.statusCategory.key === 'done';
351
+ return {
352
+ id: issue.key,
353
+ title: issue.summary,
354
+ body: this.adfToString(issue.description),
355
+ state: isClosed ? 'closed' : 'open',
356
+ labels: issue.labels,
357
+ assignees: issue.assignee ? [issue.assignee.displayName] : [],
358
+ createdAt: new Date(issue.created),
359
+ updatedAt: new Date(issue.updated),
360
+ };
361
+ }
362
+ /**
363
+ * Map a Jira Comment to the Latency Comment type
364
+ */
365
+ mapToLatencyComment(comment) {
366
+ return {
367
+ id: comment.id,
368
+ body: this.adfToString(comment.body),
369
+ author: comment.author.displayName,
370
+ createdAt: new Date(comment.created),
371
+ };
372
+ }
373
+ /**
374
+ * Convert ADF document to plain string
375
+ */
376
+ adfToString(adf) {
377
+ if (!adf)
378
+ return '';
379
+ if (typeof adf === 'string')
380
+ return adf;
381
+ // Simple ADF to string conversion - extract text content
382
+ const extractText = (nodes) => {
383
+ return nodes.map((node) => {
384
+ const n = node;
385
+ if (n.type === 'text' && n.text) {
386
+ return n.text;
387
+ }
388
+ if (n.content && Array.isArray(n.content)) {
389
+ return extractText(n.content);
390
+ }
391
+ return '';
392
+ }).join('');
393
+ };
394
+ return extractText(adf.content);
395
+ }
396
+ }
397
+ /**
398
+ * Create a new Jira plugin instance
399
+ */
400
+ export function createPlugin(config) {
401
+ return new JiraPlugin(config);
402
+ }
403
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,149 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Jira plugin configuration
4
+ */
5
+ export interface JiraConfig {
6
+ /** Jira Cloud host URL (e.g., "https://company.atlassian.net") */
7
+ host: string;
8
+ /** Atlassian account email */
9
+ email: string;
10
+ /** Jira API token */
11
+ apiToken: string;
12
+ /** Default project key for operations */
13
+ projectKey?: string;
14
+ /** Map Generacy issue types to Jira issue types */
15
+ issueTypeMapping?: {
16
+ feature: string;
17
+ bug: string;
18
+ task: string;
19
+ epic: string;
20
+ };
21
+ /** Map workflow states to Jira status IDs */
22
+ workflowMapping?: {
23
+ todo: string;
24
+ inProgress: string;
25
+ done: string;
26
+ };
27
+ /** Webhook secret for signature verification */
28
+ webhookSecret?: string;
29
+ /** Timeout for API requests (ms) */
30
+ timeout?: number;
31
+ /** Cache TTL in milliseconds for issue caching (default: 60000) */
32
+ cacheTimeout?: number;
33
+ }
34
+ /**
35
+ * Issue type mapping configuration schema
36
+ */
37
+ export declare const IssueTypeMappingSchema: z.ZodObject<{
38
+ feature: z.ZodDefault<z.ZodString>;
39
+ bug: z.ZodDefault<z.ZodString>;
40
+ task: z.ZodDefault<z.ZodString>;
41
+ epic: z.ZodDefault<z.ZodString>;
42
+ }, "strip", z.ZodTypeAny, {
43
+ feature: string;
44
+ bug: string;
45
+ task: string;
46
+ epic: string;
47
+ }, {
48
+ feature?: string | undefined;
49
+ bug?: string | undefined;
50
+ task?: string | undefined;
51
+ epic?: string | undefined;
52
+ }>;
53
+ /**
54
+ * Workflow mapping configuration schema
55
+ */
56
+ export declare const WorkflowMappingSchema: z.ZodObject<{
57
+ todo: z.ZodString;
58
+ inProgress: z.ZodString;
59
+ done: z.ZodString;
60
+ }, "strip", z.ZodTypeAny, {
61
+ todo: string;
62
+ inProgress: string;
63
+ done: string;
64
+ }, {
65
+ todo: string;
66
+ inProgress: string;
67
+ done: string;
68
+ }>;
69
+ /**
70
+ * Zod schema for configuration validation
71
+ */
72
+ export declare const JiraConfigSchema: z.ZodObject<{
73
+ host: z.ZodString;
74
+ email: z.ZodString;
75
+ apiToken: z.ZodString;
76
+ projectKey: z.ZodOptional<z.ZodString>;
77
+ issueTypeMapping: z.ZodOptional<z.ZodObject<{
78
+ feature: z.ZodDefault<z.ZodString>;
79
+ bug: z.ZodDefault<z.ZodString>;
80
+ task: z.ZodDefault<z.ZodString>;
81
+ epic: z.ZodDefault<z.ZodString>;
82
+ }, "strip", z.ZodTypeAny, {
83
+ feature: string;
84
+ bug: string;
85
+ task: string;
86
+ epic: string;
87
+ }, {
88
+ feature?: string | undefined;
89
+ bug?: string | undefined;
90
+ task?: string | undefined;
91
+ epic?: string | undefined;
92
+ }>>;
93
+ workflowMapping: z.ZodOptional<z.ZodObject<{
94
+ todo: z.ZodString;
95
+ inProgress: z.ZodString;
96
+ done: z.ZodString;
97
+ }, "strip", z.ZodTypeAny, {
98
+ todo: string;
99
+ inProgress: string;
100
+ done: string;
101
+ }, {
102
+ todo: string;
103
+ inProgress: string;
104
+ done: string;
105
+ }>>;
106
+ webhookSecret: z.ZodOptional<z.ZodString>;
107
+ timeout: z.ZodOptional<z.ZodNumber>;
108
+ cacheTimeout: z.ZodOptional<z.ZodNumber>;
109
+ }, "strip", z.ZodTypeAny, {
110
+ host: string;
111
+ email: string;
112
+ apiToken: string;
113
+ projectKey?: string | undefined;
114
+ issueTypeMapping?: {
115
+ feature: string;
116
+ bug: string;
117
+ task: string;
118
+ epic: string;
119
+ } | undefined;
120
+ workflowMapping?: {
121
+ todo: string;
122
+ inProgress: string;
123
+ done: string;
124
+ } | undefined;
125
+ webhookSecret?: string | undefined;
126
+ timeout?: number | undefined;
127
+ cacheTimeout?: number | undefined;
128
+ }, {
129
+ host: string;
130
+ email: string;
131
+ apiToken: string;
132
+ projectKey?: string | undefined;
133
+ issueTypeMapping?: {
134
+ feature?: string | undefined;
135
+ bug?: string | undefined;
136
+ task?: string | undefined;
137
+ epic?: string | undefined;
138
+ } | undefined;
139
+ workflowMapping?: {
140
+ todo: string;
141
+ inProgress: string;
142
+ done: string;
143
+ } | undefined;
144
+ webhookSecret?: string | undefined;
145
+ timeout?: number | undefined;
146
+ cacheTimeout?: number | undefined;
147
+ }>;
148
+ export type ValidatedJiraConfig = z.infer<typeof JiraConfigSchema>;
149
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IAEb,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;IAEd,qBAAqB;IACrB,QAAQ,EAAE,MAAM,CAAC;IAEjB,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,mDAAmD;IACnD,gBAAgB,CAAC,EAAE;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IAEF,6CAA6C;IAC7C,eAAe,CAAC,EAAE;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IAEF,gDAAgD;IAChD,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;EAKjC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;EAIhC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU3B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Issue type mapping configuration schema
4
+ */
5
+ export const IssueTypeMappingSchema = z.object({
6
+ feature: z.string().default('Story'),
7
+ bug: z.string().default('Bug'),
8
+ task: z.string().default('Task'),
9
+ epic: z.string().default('Epic'),
10
+ });
11
+ /**
12
+ * Workflow mapping configuration schema
13
+ */
14
+ export const WorkflowMappingSchema = z.object({
15
+ todo: z.string(),
16
+ inProgress: z.string(),
17
+ done: z.string(),
18
+ });
19
+ /**
20
+ * Zod schema for configuration validation
21
+ */
22
+ export const JiraConfigSchema = z.object({
23
+ host: z.string().url('Host must be a valid URL'),
24
+ email: z.string().email('Valid email required'),
25
+ apiToken: z.string().min(1, 'API token is required'),
26
+ projectKey: z.string().regex(/^[A-Z][A-Z0-9_]*$/, 'Project key must start with uppercase letter').optional(),
27
+ issueTypeMapping: IssueTypeMappingSchema.optional(),
28
+ workflowMapping: WorkflowMappingSchema.optional(),
29
+ webhookSecret: z.string().optional(),
30
+ timeout: z.number().positive().optional(),
31
+ cacheTimeout: z.number().positive().optional(),
32
+ });
33
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA2CxB;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;IACpC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAC9B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;IAChC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;CACjC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;CACjB,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,0BAA0B,CAAC;IAChD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,sBAAsB,CAAC;IAC/C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,uBAAuB,CAAC;IACpD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,mBAAmB,EAAE,8CAA8C,CAAC,CAAC,QAAQ,EAAE;IAC5G,gBAAgB,EAAE,sBAAsB,CAAC,QAAQ,EAAE;IACnD,eAAe,EAAE,qBAAqB,CAAC,QAAQ,EAAE;IACjD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACzC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAC/C,CAAC,CAAC"}
@@ -0,0 +1,48 @@
1
+ import type { FieldSchema } from './workflows.js';
2
+ /**
3
+ * Custom field type identifiers
4
+ */
5
+ export type CustomFieldType = 'string' | 'number' | 'date' | 'datetime' | 'user' | 'select' | 'multiselect' | 'labels' | 'cascadingselect' | 'array';
6
+ /**
7
+ * Custom field definition
8
+ */
9
+ export interface CustomField {
10
+ /** Field ID (e.g., "customfield_10001") */
11
+ id: string;
12
+ /** Field key (e.g., "com.atlassian.jira.plugin.system.customfieldtypes:textfield") */
13
+ key: string;
14
+ /** Human-readable name */
15
+ name: string;
16
+ /** Field description */
17
+ description: string | null;
18
+ /** Semantic type */
19
+ type: CustomFieldType;
20
+ /** Schema definition */
21
+ schema: FieldSchema;
22
+ }
23
+ /**
24
+ * Custom field option (for select fields)
25
+ */
26
+ export interface CustomFieldOption {
27
+ id: string;
28
+ value: string;
29
+ disabled?: boolean;
30
+ }
31
+ /**
32
+ * Custom field context (where the field is available)
33
+ */
34
+ export interface CustomFieldContext {
35
+ id: string;
36
+ name: string;
37
+ projectIds?: string[];
38
+ issueTypeIds?: string[];
39
+ }
40
+ /**
41
+ * Parameters for setting a custom field value
42
+ */
43
+ export interface SetCustomFieldParams {
44
+ issueKey: string;
45
+ fieldId: string;
46
+ value: unknown;
47
+ }
48
+ //# sourceMappingURL=custom-fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-fields.d.ts","sourceRoot":"","sources":["../../src/types/custom-fields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,UAAU,GACV,MAAM,GACN,QAAQ,GACR,aAAa,GACb,QAAQ,GACR,iBAAiB,GACjB,OAAO,CAAC;AAEZ;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,2CAA2C;IAC3C,EAAE,EAAE,MAAM,CAAC;IAEX,sFAAsF;IACtF,GAAG,EAAE,MAAM,CAAC;IAEZ,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IAEb,wBAAwB;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B,oBAAoB;IACpB,IAAI,EAAE,eAAe,CAAC;IAEtB,wBAAwB;IACxB,MAAM,EAAE,WAAW,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;CAChB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=custom-fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-fields.js","sourceRoot":"","sources":["../../src/types/custom-fields.ts"],"names":[],"mappings":""}