@mcp-monorepo/jira 1.2.0 → 1.4.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 (42) hide show
  1. package/README.md +93 -11
  2. package/dist/index.js +21 -5
  3. package/dist/index.js.map +1 -1
  4. package/dist/lib/adf-utils.d.ts +19 -0
  5. package/dist/lib/adf-utils.d.ts.map +1 -0
  6. package/dist/lib/adf-utils.js +52 -0
  7. package/dist/lib/adf-utils.js.map +1 -0
  8. package/dist/lib/jira-env.d.ts +12 -3
  9. package/dist/lib/jira-env.d.ts.map +1 -1
  10. package/dist/lib/jira-env.js +19 -7
  11. package/dist/lib/jira-env.js.map +1 -1
  12. package/dist/lib/jira.service.d.ts +29 -2
  13. package/dist/lib/jira.service.d.ts.map +1 -1
  14. package/dist/lib/jira.service.js +168 -14
  15. package/dist/lib/jira.service.js.map +1 -1
  16. package/dist/lib/types.d.ts +91 -3
  17. package/dist/lib/types.d.ts.map +1 -1
  18. package/dist/tools/add-comment.d.ts +3 -0
  19. package/dist/tools/add-comment.d.ts.map +1 -0
  20. package/dist/tools/add-comment.js +38 -0
  21. package/dist/tools/add-comment.js.map +1 -0
  22. package/dist/tools/create-issue.d.ts +3 -0
  23. package/dist/tools/create-issue.d.ts.map +1 -0
  24. package/dist/tools/create-issue.js +48 -0
  25. package/dist/tools/create-issue.js.map +1 -0
  26. package/dist/tools/execute-jql.d.ts.map +1 -1
  27. package/dist/tools/execute-jql.js +39 -12
  28. package/dist/tools/execute-jql.js.map +1 -1
  29. package/dist/tools/get-create-metadata.d.ts +3 -0
  30. package/dist/tools/get-create-metadata.d.ts.map +1 -0
  31. package/dist/tools/get-create-metadata.js +59 -0
  32. package/dist/tools/get-create-metadata.js.map +1 -0
  33. package/dist/tools/get-current-profile.js +1 -1
  34. package/dist/tools/get-current-profile.js.map +1 -1
  35. package/dist/tools/get-issue.d.ts.map +1 -1
  36. package/dist/tools/get-issue.js +3 -2
  37. package/dist/tools/get-issue.js.map +1 -1
  38. package/dist/tools/update-issue.d.ts +3 -0
  39. package/dist/tools/update-issue.d.ts.map +1 -0
  40. package/dist/tools/update-issue.js +43 -0
  41. package/dist/tools/update-issue.js.map +1 -0
  42. package/package.json +2 -1
@@ -0,0 +1,59 @@
1
+ import { registerTool } from '@mcp-monorepo/shared';
2
+ import { z } from 'zod';
3
+ import { getCreateMetadata } from '../lib/jira.service.js';
4
+ export const registerGetCreateMetadataTool = (server) => registerTool(server, {
5
+ name: 'get-create-metadata',
6
+ title: 'Get Jira Create Issue Metadata',
7
+ description: 'Get metadata about fields required to create issues in a project. Returns issue types, priorities, and field requirements. Use this to find valid issueTypeId and priorityId values for creating issues.',
8
+ inputSchema: {
9
+ projectKey: z.string().optional().describe('Filter by project key (e.g., "PROJ")'),
10
+ issueTypeId: z.string().optional().describe('Filter by specific issue type ID'),
11
+ },
12
+ outputSchema: {
13
+ projects: z.array(z.object({
14
+ key: z.string(),
15
+ name: z.string(),
16
+ issueTypes: z.array(z.object({
17
+ id: z.string(),
18
+ name: z.string(),
19
+ subtask: z.boolean(),
20
+ requiredFields: z.array(z.string()),
21
+ availablePriorities: z.array(z.object({ id: z.string(), name: z.string() })).optional(),
22
+ })),
23
+ })),
24
+ },
25
+ isReadOnly: true,
26
+ async fetcher(params) {
27
+ return getCreateMetadata(params.projectKey, params.issueTypeId);
28
+ },
29
+ formatter(data) {
30
+ // Filter response to only show essential information
31
+ return {
32
+ projects: data.projects.map((project) => ({
33
+ key: project.key,
34
+ name: project.name,
35
+ issueTypes: project.issuetypes.map((issueType) => {
36
+ const fields = issueType.fields;
37
+ // Extract required fields
38
+ const requiredFields = Object.entries(fields)
39
+ .filter(([, meta]) => meta.required)
40
+ .map(([key]) => key);
41
+ // Extract priorities if available
42
+ const priorityField = fields.priority;
43
+ const availablePriorities = priorityField?.allowedValues?.map((p) => ({
44
+ id: p.id ?? '',
45
+ name: p.name ?? '',
46
+ }));
47
+ return {
48
+ id: issueType.id,
49
+ name: issueType.name,
50
+ subtask: issueType.subtask,
51
+ requiredFields,
52
+ ...(availablePriorities && availablePriorities.length > 0 && { availablePriorities }),
53
+ };
54
+ }),
55
+ })),
56
+ };
57
+ },
58
+ });
59
+ //# sourceMappingURL=get-create-metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-create-metadata.js","sourceRoot":"","sources":["../../src/tools/get-create-metadata.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ export const registerGetCurrentProfileTool = (server) => registerTool(server, {
8
8
  inputSchema: {},
9
9
  outputSchema: {
10
10
  displayName: z.string(),
11
- emailAddress: z.string(),
11
+ emailAddress: z.string().nullable(),
12
12
  accountId: z.string(),
13
13
  },
14
14
  isReadOnly: true,
@@ -1 +1 @@
1
- {"version":3,"file":"get-current-profile.js","sourceRoot":"","sources":["../../src/tools/get-current-profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAI1D,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,MAAiB,EAAE,EAAE,CACjE,YAAY,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,qBAAqB;IAC3B,KAAK,EAAE,0BAA0B;IACjC,WAAW,EAAE,4DAA4D;IACzE,WAAW,EAAE,EAAE;IACf,YAAY,EAAE;QACZ,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;QACvB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;QACxB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;KACtB;IACD,UAAU,EAAE,IAAI;IAChB,KAAK,CAAC,OAAO;QACX,OAAO,iBAAiB,EAAE,CAAA;IAC5B,CAAC;IACD,SAAS,CAAC,IAAI;QACZ,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAA;IACH,CAAC;CACF,CAAC,CAAA"}
1
+ {"version":3,"file":"get-current-profile.js","sourceRoot":"","sources":["../../src/tools/get-current-profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAI1D,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,MAAiB,EAAE,EAAE,CACjE,YAAY,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,qBAAqB;IAC3B,KAAK,EAAE,0BAA0B;IACjC,WAAW,EAAE,4DAA4D;IACzE,WAAW,EAAE,EAAE;IACf,YAAY,EAAE;QACZ,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;QACvB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACnC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;KACtB;IACD,UAAU,EAAE,IAAI;IAChB,KAAK,CAAC,OAAO;QACX,OAAO,iBAAiB,EAAE,CAAA;IAC5B,CAAC;IACD,SAAS,CAAC,IAAI;QACZ,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAA;IACH,CAAC;CACF,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"get-issue.d.ts","sourceRoot":"","sources":["../../src/tools/get-issue.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAExE,eAAO,MAAM,oBAAoB,GAAI,QAAQ,SAAS,SA8BlD,CAAA"}
1
+ {"version":3,"file":"get-issue.d.ts","sourceRoot":"","sources":["../../src/tools/get-issue.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAExE,eAAO,MAAM,oBAAoB,GAAI,QAAQ,SAAS,SA8BlD,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import { registerTool } from '@mcp-monorepo/shared';
2
2
  import { z } from 'zod';
3
+ import { adfToMd } from '../lib/adf-utils.js';
3
4
  import { getIssue } from '../lib/jira.service.js';
4
5
  export const registerGetIssueTool = (server) => registerTool(server, {
5
6
  name: 'get-issue',
@@ -15,7 +16,7 @@ export const registerGetIssueTool = (server) => registerTool(server, {
15
16
  summary: z.string().optional(),
16
17
  status: z.string().optional(),
17
18
  assignee: z.string().optional(),
18
- description: z.string().optional(),
19
+ description: z.string().optional(), // Always markdown (converted from ADF in v3)
19
20
  },
20
21
  isReadOnly: true,
21
22
  async fetcher({ issueIdOrKey, fields, expand }) {
@@ -27,7 +28,7 @@ export const registerGetIssueTool = (server) => registerTool(server, {
27
28
  summary: data.fields.summary,
28
29
  status: data.fields.status?.name,
29
30
  assignee: data.fields.assignee?.displayName,
30
- description: data.fields.description,
31
+ description: adfToMd(data.fields.description), // Convert ADF to Markdown
31
32
  };
32
33
  },
33
34
  });
@@ -1 +1 @@
1
- {"version":3,"file":"get-issue.js","sourceRoot":"","sources":["../../src/tools/get-issue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAIjD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,MAAiB,EAAE,EAAE,CACxD,YAAY,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,gBAAgB;IACvB,WAAW,EAAE,kDAAkD;IAC/D,WAAW,EAAE;QACX,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QACjE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;QACzG,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;KAChG;IACD,YAAY,EAAE;QACZ,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;QACf,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC9B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC/B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACnC;IACD,UAAU,EAAE,IAAI;IAChB,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE;QAC5C,OAAO,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/C,CAAC;IACD,SAAS,CAAC,IAAI;QACZ,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI;YAChC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW;YAC3C,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;SACrC,CAAA;IACH,CAAC;CACF,CAAC,CAAA"}
1
+ {"version":3,"file":"get-issue.js","sourceRoot":"","sources":["../../src/tools/get-issue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAIjD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,MAAiB,EAAE,EAAE,CACxD,YAAY,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,gBAAgB;IACvB,WAAW,EAAE,kDAAkD;IAC/D,WAAW,EAAE;QACX,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QACjE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;QACzG,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;KAChG;IACD,YAAY,EAAE;QACZ,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;QACf,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC9B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC/B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,6CAA6C;KAClF;IACD,UAAU,EAAE,IAAI;IAChB,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE;QAC5C,OAAO,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/C,CAAC;IACD,SAAS,CAAC,IAAI;QACZ,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI;YAChC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW;YAC3C,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,0BAA0B;SAC1E,CAAA;IACH,CAAC;CACF,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare const registerUpdateIssueTool: (server: McpServer) => void;
3
+ //# sourceMappingURL=update-issue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-issue.d.ts","sourceRoot":"","sources":["../../src/tools/update-issue.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAExE,eAAO,MAAM,uBAAuB,GAAI,QAAQ,SAAS,SAuCrD,CAAA"}
@@ -0,0 +1,43 @@
1
+ import { registerTool } from '@mcp-monorepo/shared';
2
+ import { z } from 'zod';
3
+ import { getJiraBaseUrl } from '../lib/jira-env.js';
4
+ import { updateIssue } from '../lib/jira.service.js';
5
+ export const registerUpdateIssueTool = (server) => registerTool(server, {
6
+ name: 'update-issue',
7
+ title: 'Update Jira Issue',
8
+ description: 'Update fields of an existing Jira issue. Only provided fields will be updated, others remain unchanged.',
9
+ inputSchema: {
10
+ issueIdOrKey: z.string().describe('Issue key or ID (e.g., "PROJ-123")'),
11
+ summary: z.string().optional().describe('New issue title/summary'),
12
+ description: z
13
+ .string()
14
+ .optional()
15
+ .describe('New description (supports Markdown formatting in API v3, plain text in v2)'),
16
+ assigneeId: z
17
+ .string()
18
+ .optional()
19
+ .nullable()
20
+ .describe('Assignee account ID (null to unassign, undefined to leave unchanged)'),
21
+ priorityId: z.string().optional().describe('New priority ID'),
22
+ labels: z.array(z.string()).optional().describe('New labels (replaces existing labels)'),
23
+ },
24
+ outputSchema: {
25
+ success: z.boolean(),
26
+ issueKey: z.string(),
27
+ url: z.string(),
28
+ },
29
+ isReadOnly: false,
30
+ async fetcher(params) {
31
+ const { issueIdOrKey, ...updates } = params;
32
+ await updateIssue(issueIdOrKey, updates);
33
+ return { issueIdOrKey };
34
+ },
35
+ formatter(data) {
36
+ return {
37
+ success: true,
38
+ issueKey: data.issueIdOrKey,
39
+ url: `${getJiraBaseUrl()}/browse/${data.issueIdOrKey}`,
40
+ };
41
+ },
42
+ });
43
+ //# sourceMappingURL=update-issue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-issue.js","sourceRoot":"","sources":["../../src/tools/update-issue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAIpD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,MAAiB,EAAE,EAAE,CAC3D,YAAY,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,cAAc;IACpB,KAAK,EAAE,mBAAmB;IAC1B,WAAW,EACT,yGAAyG;IAC3G,WAAW,EAAE;QACX,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QACvE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QAClE,WAAW,EAAE,CAAC;aACX,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,4EAA4E,CAAC;QACzF,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,EAAE;aACV,QAAQ,CAAC,sEAAsE,CAAC;QACnF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAC7D,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;KACzF;IACD,YAAY,EAAE;QACZ,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;QACpB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;QACpB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;KAChB;IACD,UAAU,EAAE,KAAK;IACjB,KAAK,CAAC,OAAO,CAAC,MAAM;QAClB,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,EAAE,GAAG,MAAM,CAAA;QAC3C,MAAM,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;QACxC,OAAO,EAAE,YAAY,EAAE,CAAA;IACzB,CAAC;IACD,SAAS,CAAC,IAAI;QACZ,OAAO;YACL,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI,CAAC,YAAY;YAC3B,GAAG,EAAE,GAAG,cAAc,EAAE,WAAW,IAAI,CAAC,YAAY,EAAE;SACvD,CAAA;IACH,CAAC;CACF,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mcp-monorepo/jira",
3
- "version": "1.2.0",
3
+ "version": "1.4.0",
4
4
  "type": "module",
5
5
  "description": "MCP server for Jira tools (JQL, issue management, etc.).",
6
6
  "main": "dist/index.js",
@@ -26,6 +26,7 @@
26
26
  "dependencies": {
27
27
  "@mcp-monorepo/shared": "1.2.0",
28
28
  "@modelcontextprotocol/sdk": "^1.25.1",
29
+ "extended-markdown-adf-parser": "^2.4.0",
29
30
  "zod": "^4.2.1"
30
31
  },
31
32
  "devDependencies": {