jira-pilot 2.1.0 → 2.1.2

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 (87) hide show
  1. package/dist/bin/jira.d.ts +2 -0
  2. package/dist/bin/jira.js.map +1 -0
  3. package/dist/src/commands/ai-actions/plan.d.ts +1 -0
  4. package/dist/src/commands/ai-actions/plan.js +108 -0
  5. package/dist/src/commands/ai-actions/plan.js.map +1 -0
  6. package/dist/src/commands/ai-actions/review.d.ts +1 -0
  7. package/dist/src/commands/ai-actions/review.js +92 -0
  8. package/dist/src/commands/ai-actions/review.js.map +1 -0
  9. package/dist/src/commands/ai-actions/standup.d.ts +1 -0
  10. package/dist/src/commands/ai-actions/standup.js +33 -0
  11. package/dist/src/commands/ai-actions/standup.js.map +1 -0
  12. package/dist/src/commands/ai.d.ts +2 -0
  13. package/dist/src/commands/ai.js +196 -0
  14. package/dist/src/commands/ai.js.map +1 -0
  15. package/dist/src/commands/board.d.ts +2 -0
  16. package/dist/src/commands/board.js +66 -0
  17. package/dist/src/commands/board.js.map +1 -0
  18. package/dist/src/commands/bulk.d.ts +2 -0
  19. package/dist/src/commands/bulk.js +205 -0
  20. package/dist/src/commands/bulk.js.map +1 -0
  21. package/dist/src/commands/config.d.ts +2 -0
  22. package/dist/src/commands/config.js +248 -0
  23. package/dist/src/commands/config.js.map +1 -0
  24. package/dist/src/commands/dashboard.d.ts +2 -0
  25. package/dist/src/commands/dashboard.js +209 -0
  26. package/dist/src/commands/dashboard.js.map +1 -0
  27. package/dist/src/commands/filter.d.ts +2 -0
  28. package/dist/src/commands/filter.js +71 -0
  29. package/dist/src/commands/filter.js.map +1 -0
  30. package/dist/src/commands/git.d.ts +2 -0
  31. package/dist/src/commands/git.js +56 -0
  32. package/dist/src/commands/git.js.map +1 -0
  33. package/dist/src/commands/issue-attach.d.ts +2 -0
  34. package/dist/src/commands/issue-attach.js +41 -0
  35. package/dist/src/commands/issue-attach.js.map +1 -0
  36. package/dist/src/commands/issue-pr.d.ts +2 -0
  37. package/dist/src/commands/issue-pr.js +76 -0
  38. package/dist/src/commands/issue-pr.js.map +1 -0
  39. package/dist/src/commands/issue-worklog.d.ts +2 -0
  40. package/dist/src/commands/issue-worklog.js +83 -0
  41. package/dist/src/commands/issue-worklog.js.map +1 -0
  42. package/dist/src/commands/issue.d.ts +2 -0
  43. package/dist/src/commands/issue.js +1148 -0
  44. package/dist/src/commands/issue.js.map +1 -0
  45. package/dist/src/commands/mcp.d.ts +2 -0
  46. package/dist/src/commands/mcp.js +26 -0
  47. package/dist/src/commands/mcp.js.map +1 -0
  48. package/dist/src/commands/project.d.ts +2 -0
  49. package/dist/src/commands/project.js +53 -0
  50. package/dist/src/commands/project.js.map +1 -0
  51. package/dist/src/commands/sprint.d.ts +2 -0
  52. package/dist/src/commands/sprint.js +240 -0
  53. package/dist/src/commands/sprint.js.map +1 -0
  54. package/dist/src/server/mcp-server.d.ts +1 -0
  55. package/dist/src/server/mcp-server.js +505 -0
  56. package/dist/src/server/mcp-server.js.map +1 -0
  57. package/dist/src/services/ai-service.d.ts +12 -0
  58. package/dist/src/services/ai-service.js +151 -0
  59. package/dist/src/services/ai-service.js.map +1 -0
  60. package/dist/src/services/api-service.d.ts +18 -0
  61. package/dist/src/services/api-service.js +115 -0
  62. package/dist/src/services/api-service.js.map +1 -0
  63. package/dist/src/services/config-service.d.ts +6 -0
  64. package/dist/src/services/config-service.js +17 -0
  65. package/dist/src/services/config-service.js.map +1 -0
  66. package/dist/src/types.d.ts +90 -0
  67. package/dist/src/types.js +2 -0
  68. package/dist/src/types.js.map +1 -0
  69. package/dist/src/utils/adf-parser.d.ts +1 -0
  70. package/dist/src/utils/adf-parser.js +49 -0
  71. package/dist/src/utils/adf-parser.js.map +1 -0
  72. package/dist/src/utils/config-store.d.ts +15 -0
  73. package/dist/src/utils/config-store.js +98 -0
  74. package/dist/src/utils/config-store.js.map +1 -0
  75. package/dist/src/utils/config.d.ts +10 -0
  76. package/dist/src/utils/config.js +67 -0
  77. package/dist/src/utils/config.js.map +1 -0
  78. package/dist/src/utils/error-handler.d.ts +10 -0
  79. package/dist/src/utils/error-handler.js +44 -0
  80. package/dist/src/utils/error-handler.js.map +1 -0
  81. package/dist/src/utils/text-to-adf.d.ts +18 -0
  82. package/dist/src/utils/text-to-adf.js +33 -0
  83. package/dist/src/utils/text-to-adf.js.map +1 -0
  84. package/dist/src/utils/validators.d.ts +38 -0
  85. package/dist/src/utils/validators.js +77 -0
  86. package/dist/src/utils/validators.js.map +1 -0
  87. package/package.json +6 -2
@@ -0,0 +1,505 @@
1
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
2
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
+ import { CallToolRequestSchema, ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";
4
+ import { api } from "../services/api-service.js";
5
+ import { textToADF } from "../utils/text-to-adf.js";
6
+ // Initialize MCP Server
7
+ const server = new Server({
8
+ name: "jira-pilot",
9
+ version: "1.0.0",
10
+ }, {
11
+ capabilities: {
12
+ tools: {},
13
+ },
14
+ });
15
+ // ── Tool Definitions ─────────────────────────────────────────────────
16
+ server.setRequestHandler(ListToolsRequestSchema, async () => {
17
+ return {
18
+ tools: [
19
+ // ── Issues ──────────────────────────────────────
20
+ {
21
+ name: "jira_list_issues",
22
+ description: "List Jira issues using JQL. Returns key, summary, status, and assignee for each issue.",
23
+ inputSchema: {
24
+ type: "object",
25
+ properties: {
26
+ jql: { type: "string", description: "JQL query string (e.g., 'project = PROJ AND status = \"In Progress\"')" },
27
+ limit: { type: "number", description: "Max results (default: 10)", default: 10 }
28
+ }
29
+ }
30
+ },
31
+ {
32
+ name: "jira_get_issue",
33
+ description: "Get full details of a specific Jira issue including summary, description, status, assignee, priority, and comments.",
34
+ inputSchema: {
35
+ type: "object",
36
+ properties: {
37
+ issueKey: { type: "string", description: "Issue Key (e.g., PROJ-123)" }
38
+ },
39
+ required: ["issueKey"]
40
+ }
41
+ },
42
+ {
43
+ name: "jira_create_issue",
44
+ description: "Create a new Jira issue in a project. Returns the created issue key.",
45
+ inputSchema: {
46
+ type: "object",
47
+ properties: {
48
+ projectKey: { type: "string", description: "Project Key (e.g., PROJ)" },
49
+ summary: { type: "string", description: "Issue summary/title" },
50
+ description: { type: "string", description: "Issue description (plain text, will be converted to ADF)" },
51
+ issueType: { type: "string", description: "Issue Type (Bug, Story, Task, Epic)", default: "Task" },
52
+ priority: { type: "string", description: "Priority name (e.g., High, Medium, Low)" },
53
+ assigneeId: { type: "string", description: "Assignee account ID" }
54
+ },
55
+ required: ["projectKey", "summary"]
56
+ }
57
+ },
58
+ {
59
+ name: "jira_update_issue",
60
+ description: "Update an existing Jira issue. Supports updating summary, description, priority, and assignee.",
61
+ inputSchema: {
62
+ type: "object",
63
+ properties: {
64
+ issueKey: { type: "string", description: "Issue Key (e.g., PROJ-123)" },
65
+ summary: { type: "string", description: "New summary" },
66
+ description: { type: "string", description: "New description (plain text)" },
67
+ priority: { type: "string", description: "New priority name" },
68
+ assigneeId: { type: "string", description: "New assignee account ID (or 'me', 'none')" }
69
+ },
70
+ required: ["issueKey"]
71
+ }
72
+ },
73
+ {
74
+ name: "jira_transition_issue",
75
+ description: "Transition a Jira issue to a new status. First call with only issueKey to see available transitions, then call again with the transitionId.",
76
+ inputSchema: {
77
+ type: "object",
78
+ properties: {
79
+ issueKey: { type: "string", description: "Issue Key (e.g., PROJ-123)" },
80
+ transitionId: { type: "string", description: "Transition ID to execute. Omit to list available transitions." }
81
+ },
82
+ required: ["issueKey"]
83
+ }
84
+ },
85
+ {
86
+ name: "jira_assign_issue",
87
+ description: "Assign or unassign a Jira issue. Use accountId to assign, or null to unassign.",
88
+ inputSchema: {
89
+ type: "object",
90
+ properties: {
91
+ issueKey: { type: "string", description: "Issue Key (e.g., PROJ-123)" },
92
+ accountId: { type: ["string", "null"], description: "Account ID of the assignee. Set to null to unassign. Use 'me' to assign to yourself." }
93
+ },
94
+ required: ["issueKey"]
95
+ }
96
+ },
97
+ {
98
+ name: "jira_add_comment",
99
+ description: "Add a comment to a Jira issue.",
100
+ inputSchema: {
101
+ type: "object",
102
+ properties: {
103
+ issueKey: { type: "string", description: "Issue Key (e.g., PROJ-123)" },
104
+ body: { type: "string", description: "Comment text (plain text, will be converted to ADF)" }
105
+ },
106
+ required: ["issueKey", "body"]
107
+ }
108
+ },
109
+ // ── Users ───────────────────────────────────────
110
+ {
111
+ name: "jira_search_users",
112
+ description: "Search for Jira users by name or email. Returns accountId and displayName.",
113
+ inputSchema: {
114
+ type: "object",
115
+ properties: {
116
+ query: { type: "string", description: "Name, email, or part of it" }
117
+ },
118
+ required: ["query"]
119
+ }
120
+ },
121
+ {
122
+ name: "jira_myself",
123
+ description: "Get details about the current authenticated user.",
124
+ inputSchema: {
125
+ type: "object",
126
+ properties: {}
127
+ }
128
+ },
129
+ // ── Projects & Sprints ──────────────────────────
130
+ {
131
+ name: "jira_list_projects",
132
+ description: "List all accessible Jira projects. Returns project key, name, lead, and style.",
133
+ inputSchema: {
134
+ type: "object",
135
+ properties: {
136
+ limit: { type: "number", description: "Max results (default: 50)", default: 50 }
137
+ }
138
+ }
139
+ },
140
+ {
141
+ name: "jira_list_sprints",
142
+ description: "List sprints for a Jira board. Requires a board ID.",
143
+ inputSchema: {
144
+ type: "object",
145
+ properties: {
146
+ boardId: { type: "number", description: "Board ID (numeric)" },
147
+ state: { type: "string", description: "Sprint state filter: active, future, closed (comma-separated)", default: "active,future" }
148
+ },
149
+ required: ["boardId"]
150
+ }
151
+ },
152
+ {
153
+ name: "jira_add_worklog",
154
+ description: "Log work to a Jira issue.",
155
+ inputSchema: {
156
+ type: "object",
157
+ properties: {
158
+ issueKey: { type: "string", description: "Issue Key" },
159
+ timeSpent: { type: "string", description: "Time spent (e.g., '2h 30m', '1d')" },
160
+ comment: { type: "string", description: "Worklog comment" }
161
+ },
162
+ required: ["issueKey", "timeSpent"]
163
+ }
164
+ },
165
+ {
166
+ name: "jira_create_subtask",
167
+ description: "Create a subtask for a parent issue.",
168
+ inputSchema: {
169
+ type: "object",
170
+ properties: {
171
+ parentKey: { type: "string", description: "Parent Issue Key" },
172
+ summary: { type: "string", description: "Subtask summary" },
173
+ description: { type: "string", description: "Subtask description" },
174
+ priority: { type: "string", description: "Priority name" },
175
+ assigneeId: { type: "string", description: "Assignee Account ID" }
176
+ },
177
+ required: ["parentKey", "summary"]
178
+ }
179
+ },
180
+ {
181
+ name: "jira_add_attachment",
182
+ description: "Attach a file to a Jira issue.",
183
+ inputSchema: {
184
+ type: "object",
185
+ properties: {
186
+ issueKey: { type: "string", description: "Issue Key" },
187
+ filePath: { type: "string", description: "Absolute path to the file to extract/upload" }
188
+ },
189
+ required: ["issueKey", "filePath"]
190
+ }
191
+ }
192
+ ]
193
+ };
194
+ });
195
+ // ── Tool Handlers ────────────────────────────────────────────────────
196
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
197
+ const { name, arguments: args } = request.params;
198
+ try {
199
+ // ── jira_list_issues ────────────────────────────────
200
+ if (name === "jira_list_issues") {
201
+ const jql = args.jql || "";
202
+ const limit = args.limit || 10;
203
+ const data = await api.post('/search/jql', {
204
+ jql,
205
+ maxResults: limit,
206
+ fields: ['summary', 'status', 'assignee', 'priority', 'created', 'updated']
207
+ });
208
+ // Return a cleaner format for LLM consumption
209
+ const issues = (data.issues || []).map((i) => ({
210
+ key: i.key,
211
+ summary: i.fields.summary,
212
+ status: i.fields.status?.name,
213
+ assignee: i.fields.assignee?.displayName || 'Unassigned',
214
+ priority: i.fields.priority?.name,
215
+ created: i.fields.created?.split('T')[0],
216
+ updated: i.fields.updated?.split('T')[0]
217
+ }));
218
+ return {
219
+ content: [{ type: "text", text: JSON.stringify(issues, null, 2) }]
220
+ };
221
+ }
222
+ // ── jira_get_issue ──────────────────────────────────
223
+ if (name === "jira_get_issue") {
224
+ const data = await api.get(`/issue/${args.issueKey}`);
225
+ // Return a cleaner summary for agents
226
+ const result = {
227
+ key: data.key,
228
+ summary: data.fields.summary,
229
+ status: data.fields.status?.name,
230
+ issueType: data.fields.issuetype?.name,
231
+ priority: data.fields.priority?.name,
232
+ assignee: data.fields.assignee?.displayName || 'Unassigned',
233
+ assigneeAccountId: data.fields.assignee?.accountId || null,
234
+ reporter: data.fields.reporter?.displayName,
235
+ created: data.fields.created,
236
+ updated: data.fields.updated,
237
+ description: data.fields.description,
238
+ labels: data.fields.labels,
239
+ comments: data.fields.comment?.comments?.map((c) => ({
240
+ author: c.author.displayName,
241
+ body: c.body,
242
+ created: c.created
243
+ })) || []
244
+ };
245
+ return {
246
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }]
247
+ };
248
+ }
249
+ // ── jira_create_issue ───────────────────────────────
250
+ if (name === "jira_create_issue") {
251
+ const body = {
252
+ fields: {
253
+ project: { key: args.projectKey },
254
+ summary: args.summary,
255
+ issuetype: { name: args.issueType || 'Task' }
256
+ }
257
+ };
258
+ // Convert plain text description to ADF
259
+ if (args.description) {
260
+ body.fields.description = textToADF(args.description);
261
+ }
262
+ if (args.priority) {
263
+ body.fields.priority = { name: args.priority };
264
+ }
265
+ if (args.assigneeId) {
266
+ body.fields.assignee = { accountId: args.assigneeId };
267
+ }
268
+ const data = await api.post('/issue', body);
269
+ return {
270
+ content: [{ type: "text", text: JSON.stringify({ key: data.key, self: data.self }, null, 2) }]
271
+ };
272
+ }
273
+ // ── jira_transition_issue ───────────────────────────
274
+ if (name === "jira_transition_issue") {
275
+ if (!args.transitionId) {
276
+ // List available transitions
277
+ const transData = await api.get(`/issue/${args.issueKey}/transitions`);
278
+ const issue = await api.get(`/issue/${args.issueKey}?fields=summary,status`);
279
+ const result = {
280
+ issueKey: args.issueKey,
281
+ summary: issue.fields.summary,
282
+ currentStatus: issue.fields.status?.name,
283
+ availableTransitions: (transData.transitions || []).map((t) => ({
284
+ id: t.id,
285
+ name: t.name,
286
+ toStatus: t.to.name
287
+ }))
288
+ };
289
+ return {
290
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }]
291
+ };
292
+ }
293
+ // Execute transition
294
+ await api.post(`/issue/${args.issueKey}/transitions`, {
295
+ transition: { id: args.transitionId }
296
+ });
297
+ return {
298
+ content: [{ type: "text", text: JSON.stringify({ success: true, issueKey: args.issueKey, transitionId: args.transitionId }) }]
299
+ };
300
+ }
301
+ // ── jira_assign_issue ───────────────────────────────
302
+ if (name === "jira_assign_issue") {
303
+ let accountId = args.accountId;
304
+ // Resolve "me" to actual account ID
305
+ if (accountId === 'me') {
306
+ const myself = await api.get('/myself');
307
+ accountId = myself.accountId;
308
+ }
309
+ await api.put(`/issue/${args.issueKey}/assignee`, {
310
+ accountId: accountId || null
311
+ });
312
+ return {
313
+ content: [{ type: "text", text: JSON.stringify({ success: true, issueKey: args.issueKey, assignedTo: accountId || 'unassigned' }) }]
314
+ };
315
+ }
316
+ // ── jira_add_comment ────────────────────────────────
317
+ if (name === "jira_add_comment") {
318
+ const data = await api.post(`/issue/${args.issueKey}/comment`, {
319
+ body: textToADF(args.body)
320
+ });
321
+ return {
322
+ content: [{ type: "text", text: JSON.stringify({ success: true, issueKey: args.issueKey, commentId: data.id }) }]
323
+ };
324
+ }
325
+ // ── jira_update_issue ───────────────────────────────
326
+ if (name === "jira_update_issue") {
327
+ const updateBody = { fields: {} };
328
+ if (args.summary)
329
+ updateBody.fields.summary = args.summary;
330
+ if (args.description)
331
+ updateBody.fields.description = textToADF(args.description);
332
+ if (args.priority)
333
+ updateBody.fields.priority = { name: args.priority };
334
+ if (args.assigneeId) {
335
+ let accId = args.assigneeId;
336
+ if (accId === 'me') {
337
+ const myself = await api.get('/myself');
338
+ accId = myself.accountId;
339
+ }
340
+ else if (accId === 'none') {
341
+ accId = null;
342
+ }
343
+ updateBody.fields.assignee = { accountId: accId };
344
+ }
345
+ if (Object.keys(updateBody.fields).length === 0) {
346
+ return {
347
+ content: [{ type: "text", text: "No fields to update provided." }],
348
+ isError: true
349
+ };
350
+ }
351
+ await api.put(`/issue/${args.issueKey}`, updateBody);
352
+ return {
353
+ content: [{ type: "text", text: JSON.stringify({ success: true, issueKey: args.issueKey }) }]
354
+ };
355
+ }
356
+ // ── jira_search_users ───────────────────────────────
357
+ if (name === "jira_search_users") {
358
+ const users = await api.get(`/user/search?query=${encodeURIComponent(args.query)}`);
359
+ const results = (users || []).map((u) => ({
360
+ accountId: u.accountId,
361
+ displayName: u.displayName,
362
+ email: u.emailAddress,
363
+ active: u.active
364
+ }));
365
+ return {
366
+ content: [{ type: "text", text: JSON.stringify(results, null, 2) }]
367
+ };
368
+ }
369
+ // ── jira_myself ─────────────────────────────────────
370
+ if (name === "jira_myself") {
371
+ const myself = await api.get('/myself');
372
+ const result = {
373
+ accountId: myself.accountId,
374
+ displayName: myself.displayName,
375
+ email: myself.emailAddress,
376
+ active: myself.active,
377
+ timeZone: myself.timeZone
378
+ };
379
+ return {
380
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }]
381
+ };
382
+ }
383
+ // ── jira_list_projects ──────────────────────────────
384
+ if (name === "jira_list_projects") {
385
+ const limit = args.limit || 50;
386
+ const data = await api.get(`/project/search?maxResults=${limit}`);
387
+ const projects = (data.values || []).map((p) => ({
388
+ key: p.key,
389
+ name: p.name,
390
+ lead: p.lead?.displayName || 'N/A',
391
+ style: p.style,
392
+ projectType: p.projectTypeKey
393
+ }));
394
+ return {
395
+ content: [{ type: "text", text: JSON.stringify(projects, null, 2) }]
396
+ };
397
+ }
398
+ // ── jira_list_sprints ───────────────────────────────
399
+ if (name === "jira_list_sprints") {
400
+ const state = args.state || 'active,future';
401
+ const data = await api.agileGet(`/board/${args.boardId}/sprint?state=${state}`);
402
+ const sprints = (data.values || []).map((s) => ({
403
+ id: s.id,
404
+ name: s.name,
405
+ state: s.state,
406
+ startDate: s.startDate?.split('T')[0] || null,
407
+ endDate: s.endDate?.split('T')[0] || null,
408
+ goal: s.goal || null
409
+ }));
410
+ return {
411
+ content: [{ type: "text", text: JSON.stringify(sprints, null, 2) }]
412
+ };
413
+ }
414
+ // ── jira_add_worklog ────────────────────────────────
415
+ if (name === "jira_add_worklog") {
416
+ const body = {
417
+ timeSpent: args.timeSpent
418
+ };
419
+ if (args.comment) {
420
+ body.comment = textToADF(args.comment);
421
+ }
422
+ await api.post(`/issue/${args.issueKey}/worklog`, body);
423
+ return {
424
+ content: [{ type: "text", text: JSON.stringify({ success: true, issueKey: args.issueKey, timeSpent: args.timeSpent }) }]
425
+ };
426
+ }
427
+ // ── jira_create_subtask ─────────────────────────────
428
+ if (name === "jira_create_subtask") {
429
+ // 1. Fetch parent to get project
430
+ const parent = await api.get(`/issue/${args.parentKey}?fields=project`);
431
+ const projectKey = parent.fields.project.key;
432
+ // 2. Find subtask issue type
433
+ const meta = await api.get(`/issue/createmeta/${projectKey}/issuetypes`);
434
+ const allTypes = meta.issueTypes || meta.values || [];
435
+ const subtaskTypes = allTypes.filter((t) => t.subtask);
436
+ if (subtaskTypes.length === 0) {
437
+ return {
438
+ content: [{ type: "text", text: `Error: No subtask types found in project ${projectKey}` }],
439
+ isError: true
440
+ };
441
+ }
442
+ const subtaskId = subtaskTypes[0].id; // Default to first available
443
+ const body = {
444
+ fields: {
445
+ project: { key: projectKey },
446
+ parent: { key: args.parentKey },
447
+ issuetype: { id: subtaskId },
448
+ summary: args.summary
449
+ }
450
+ };
451
+ if (args.description)
452
+ body.fields.description = textToADF(args.description);
453
+ if (args.priority)
454
+ body.fields.priority = { name: args.priority };
455
+ if (args.assigneeId) {
456
+ let accId = args.assigneeId;
457
+ if (accId === 'me') {
458
+ const myself = await api.get('/myself');
459
+ accId = myself.accountId;
460
+ }
461
+ body.fields.assignee = { accountId: accId };
462
+ }
463
+ const data = await api.post('/issue', body);
464
+ return {
465
+ content: [{ type: "text", text: JSON.stringify({ key: data.key, self: data.self }, null, 2) }]
466
+ };
467
+ }
468
+ // ── jira_add_attachment ─────────────────────────────
469
+ if (name === "jira_add_attachment") {
470
+ try {
471
+ // Dynamically import fs/path to avoid top-level node dependencies if this runs in browser-like env (unlikely but safe)
472
+ const { openAsBlob } = await import('node:fs');
473
+ const path = await import('node:path');
474
+ const filePath = args.filePath;
475
+ const file = await openAsBlob(filePath);
476
+ const formData = new FormData();
477
+ formData.append('file', file, path.default.basename(filePath));
478
+ const result = await api.upload(`/issue/${args.issueKey}/attachments`, formData);
479
+ return {
480
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }]
481
+ };
482
+ }
483
+ catch (e) {
484
+ return {
485
+ content: [{ type: "text", text: `Error attaching file: ${e.message}` }],
486
+ isError: true
487
+ };
488
+ }
489
+ }
490
+ throw new Error(`Unknown tool: ${name}`);
491
+ }
492
+ catch (e) {
493
+ const errorMessage = e.response?.data ? JSON.stringify(e.response.data) : e.message;
494
+ return {
495
+ content: [{ type: "text", text: `Error: ${errorMessage}` }],
496
+ isError: true
497
+ };
498
+ }
499
+ });
500
+ // Start Server
501
+ export async function startServer() {
502
+ const transport = new StdioServerTransport();
503
+ await server.connect(transport);
504
+ }
505
+ //# sourceMappingURL=mcp-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../../src/server/mcp-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export declare class AiService {
2
+ constructor();
3
+ generate(prompt: string): Promise<string>;
4
+ reviewCode(diff: string, context: string): Promise<string>;
5
+ breakdownEpic(summary: string, description: string): Promise<any>;
6
+ generateStandup(yesterday: string, today: string): Promise<string>;
7
+ generateJql(query: string): Promise<string>;
8
+ callOpenAI(key: string, prompt: string): Promise<string>;
9
+ callGemini(key: string, prompt: string): Promise<string>;
10
+ callAnthropic(key: string, prompt: string): Promise<string>;
11
+ }
12
+ export declare const aiService: AiService;