@opentabs-dev/opentabs-plugin-linear 0.0.81 → 0.0.83

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 (163) hide show
  1. package/dist/adapter.iife.js +17268 -0
  2. package/dist/adapter.iife.js.map +7 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +92 -2
  5. package/dist/index.js.map +1 -1
  6. package/dist/tools/add-issue-label.d.ts +28 -0
  7. package/dist/tools/add-issue-label.d.ts.map +1 -0
  8. package/dist/tools/add-issue-label.js +56 -0
  9. package/dist/tools/add-issue-label.js.map +1 -0
  10. package/dist/tools/add-issue-subscriber.d.ts +8 -0
  11. package/dist/tools/add-issue-subscriber.d.ts.map +1 -0
  12. package/dist/tools/add-issue-subscriber.js +29 -0
  13. package/dist/tools/add-issue-subscriber.js.map +1 -0
  14. package/dist/tools/batch-update-issues.d.ts +35 -0
  15. package/dist/tools/batch-update-issues.d.ts.map +1 -0
  16. package/dist/tools/batch-update-issues.js +80 -0
  17. package/dist/tools/batch-update-issues.js.map +1 -0
  18. package/dist/tools/create-attachment.d.ts +19 -0
  19. package/dist/tools/create-attachment.d.ts.map +1 -0
  20. package/dist/tools/create-attachment.js +45 -0
  21. package/dist/tools/create-attachment.js.map +1 -0
  22. package/dist/tools/create-document.d.ts +21 -0
  23. package/dist/tools/create-document.d.ts.map +1 -0
  24. package/dist/tools/create-document.js +46 -0
  25. package/dist/tools/create-document.js.map +1 -0
  26. package/dist/tools/create-initiative.d.ts +26 -0
  27. package/dist/tools/create-initiative.d.ts.map +1 -0
  28. package/dist/tools/create-initiative.js +50 -0
  29. package/dist/tools/create-initiative.js.map +1 -0
  30. package/dist/tools/create-issue-relation.d.ts +18 -0
  31. package/dist/tools/create-issue-relation.d.ts.map +1 -0
  32. package/dist/tools/create-issue-relation.js +53 -0
  33. package/dist/tools/create-issue-relation.js.map +1 -0
  34. package/dist/tools/create-milestone.d.ts +16 -0
  35. package/dist/tools/create-milestone.d.ts.map +1 -0
  36. package/dist/tools/create-milestone.js +45 -0
  37. package/dist/tools/create-milestone.js.map +1 -0
  38. package/dist/tools/create-project-update.d.ts +20 -0
  39. package/dist/tools/create-project-update.d.ts.map +1 -0
  40. package/dist/tools/create-project-update.js +37 -0
  41. package/dist/tools/create-project-update.js.map +1 -0
  42. package/dist/tools/delete-attachment.d.ts +7 -0
  43. package/dist/tools/delete-attachment.d.ts.map +1 -0
  44. package/dist/tools/delete-attachment.js +28 -0
  45. package/dist/tools/delete-attachment.js.map +1 -0
  46. package/dist/tools/delete-comment.d.ts +7 -0
  47. package/dist/tools/delete-comment.d.ts.map +1 -0
  48. package/dist/tools/delete-comment.js +28 -0
  49. package/dist/tools/delete-comment.js.map +1 -0
  50. package/dist/tools/delete-issue-relation.d.ts +7 -0
  51. package/dist/tools/delete-issue-relation.d.ts.map +1 -0
  52. package/dist/tools/delete-issue-relation.js +28 -0
  53. package/dist/tools/delete-issue-relation.js.map +1 -0
  54. package/dist/tools/delete-label.d.ts +7 -0
  55. package/dist/tools/delete-label.d.ts.map +1 -0
  56. package/dist/tools/delete-label.js +28 -0
  57. package/dist/tools/delete-label.js.map +1 -0
  58. package/dist/tools/delete-project-update.d.ts +7 -0
  59. package/dist/tools/delete-project-update.d.ts.map +1 -0
  60. package/dist/tools/delete-project-update.js +28 -0
  61. package/dist/tools/delete-project-update.js.map +1 -0
  62. package/dist/tools/get-attachment.d.ts +16 -0
  63. package/dist/tools/get-attachment.d.ts.map +1 -0
  64. package/dist/tools/get-attachment.js +30 -0
  65. package/dist/tools/get-attachment.js.map +1 -0
  66. package/dist/tools/get-cycle.d.ts +15 -0
  67. package/dist/tools/get-cycle.d.ts.map +1 -0
  68. package/dist/tools/get-cycle.js +29 -0
  69. package/dist/tools/get-cycle.js.map +1 -0
  70. package/dist/tools/get-document.d.ts +18 -0
  71. package/dist/tools/get-document.d.ts.map +1 -0
  72. package/dist/tools/get-document.js +31 -0
  73. package/dist/tools/get-document.js.map +1 -0
  74. package/dist/tools/get-initiative.d.ts +30 -0
  75. package/dist/tools/get-initiative.d.ts.map +1 -0
  76. package/dist/tools/get-initiative.js +42 -0
  77. package/dist/tools/get-initiative.js.map +1 -0
  78. package/dist/tools/get-milestone.d.ts +13 -0
  79. package/dist/tools/get-milestone.d.ts.map +1 -0
  80. package/dist/tools/get-milestone.js +29 -0
  81. package/dist/tools/get-milestone.js.map +1 -0
  82. package/dist/tools/get-team.d.ts +12 -0
  83. package/dist/tools/get-team.d.ts.map +1 -0
  84. package/dist/tools/get-team.js +29 -0
  85. package/dist/tools/get-team.js.map +1 -0
  86. package/dist/tools/get-user.d.ts +14 -0
  87. package/dist/tools/get-user.d.ts.map +1 -0
  88. package/dist/tools/get-user.js +29 -0
  89. package/dist/tools/get-user.js.map +1 -0
  90. package/dist/tools/list-attachments.d.ts +22 -0
  91. package/dist/tools/list-attachments.d.ts.map +1 -0
  92. package/dist/tools/list-attachments.js +46 -0
  93. package/dist/tools/list-attachments.js.map +1 -0
  94. package/dist/tools/list-documents.d.ts +24 -0
  95. package/dist/tools/list-documents.d.ts.map +1 -0
  96. package/dist/tools/list-documents.js +49 -0
  97. package/dist/tools/list-documents.js.map +1 -0
  98. package/dist/tools/list-initiatives.d.ts +28 -0
  99. package/dist/tools/list-initiatives.d.ts.map +1 -0
  100. package/dist/tools/list-initiatives.js +48 -0
  101. package/dist/tools/list-initiatives.js.map +1 -0
  102. package/dist/tools/list-issue-history.d.ts +23 -0
  103. package/dist/tools/list-issue-history.d.ts.map +1 -0
  104. package/dist/tools/list-issue-history.js +52 -0
  105. package/dist/tools/list-issue-history.js.map +1 -0
  106. package/dist/tools/list-milestones.d.ts +13 -0
  107. package/dist/tools/list-milestones.d.ts.map +1 -0
  108. package/dist/tools/list-milestones.js +35 -0
  109. package/dist/tools/list-milestones.js.map +1 -0
  110. package/dist/tools/list-project-labels.d.ts +14 -0
  111. package/dist/tools/list-project-labels.d.ts.map +1 -0
  112. package/dist/tools/list-project-labels.js +36 -0
  113. package/dist/tools/list-project-labels.js.map +1 -0
  114. package/dist/tools/list-project-updates.d.ts +20 -0
  115. package/dist/tools/list-project-updates.d.ts.map +1 -0
  116. package/dist/tools/list-project-updates.js +46 -0
  117. package/dist/tools/list-project-updates.js.map +1 -0
  118. package/dist/tools/list-sub-issues.d.ts +33 -0
  119. package/dist/tools/list-sub-issues.d.ts.map +1 -0
  120. package/dist/tools/list-sub-issues.js +53 -0
  121. package/dist/tools/list-sub-issues.js.map +1 -0
  122. package/dist/tools/list-team-members.d.ts +20 -0
  123. package/dist/tools/list-team-members.d.ts.map +1 -0
  124. package/dist/tools/list-team-members.js +45 -0
  125. package/dist/tools/list-team-members.js.map +1 -0
  126. package/dist/tools/move-issue-to-project.d.ts +28 -0
  127. package/dist/tools/move-issue-to-project.d.ts.map +1 -0
  128. package/dist/tools/move-issue-to-project.js +43 -0
  129. package/dist/tools/move-issue-to-project.js.map +1 -0
  130. package/dist/tools/remove-issue-label.d.ts +28 -0
  131. package/dist/tools/remove-issue-label.d.ts.map +1 -0
  132. package/dist/tools/remove-issue-label.js +56 -0
  133. package/dist/tools/remove-issue-label.js.map +1 -0
  134. package/dist/tools/remove-issue-subscriber.d.ts +8 -0
  135. package/dist/tools/remove-issue-subscriber.d.ts.map +1 -0
  136. package/dist/tools/remove-issue-subscriber.js +29 -0
  137. package/dist/tools/remove-issue-subscriber.js.map +1 -0
  138. package/dist/tools/schemas.d.ts +207 -0
  139. package/dist/tools/schemas.d.ts.map +1 -1
  140. package/dist/tools/schemas.js +120 -0
  141. package/dist/tools/schemas.js.map +1 -1
  142. package/dist/tools/set-issue-cycle.d.ts +28 -0
  143. package/dist/tools/set-issue-cycle.d.ts.map +1 -0
  144. package/dist/tools/set-issue-cycle.js +43 -0
  145. package/dist/tools/set-issue-cycle.js.map +1 -0
  146. package/dist/tools/update-document.d.ts +22 -0
  147. package/dist/tools/update-document.d.ts.map +1 -0
  148. package/dist/tools/update-document.js +47 -0
  149. package/dist/tools/update-document.js.map +1 -0
  150. package/dist/tools/update-initiative.d.ts +27 -0
  151. package/dist/tools/update-initiative.d.ts.map +1 -0
  152. package/dist/tools/update-initiative.js +51 -0
  153. package/dist/tools/update-initiative.js.map +1 -0
  154. package/dist/tools/update-label.d.ts +17 -0
  155. package/dist/tools/update-label.d.ts.map +1 -0
  156. package/dist/tools/update-label.js +43 -0
  157. package/dist/tools/update-label.js.map +1 -0
  158. package/dist/tools/update-milestone.d.ts +16 -0
  159. package/dist/tools/update-milestone.d.ts.map +1 -0
  160. package/dist/tools/update-milestone.js +44 -0
  161. package/dist/tools/update-milestone.js.map +1 -0
  162. package/dist/tools.json +5531 -0
  163. package/package.json +3 -3
@@ -0,0 +1,50 @@
1
+ import { graphql } from '../linear-api.js';
2
+ import { ToolError, defineTool } from '@opentabs-dev/plugin-sdk';
3
+ import { z } from 'zod';
4
+ import { initiativeSchema, mapInitiative } from './schemas.js';
5
+ export const createInitiative = defineTool({
6
+ name: 'create_initiative',
7
+ displayName: 'Create Initiative',
8
+ description: 'Create a new initiative in Linear.',
9
+ summary: 'Create a new initiative',
10
+ icon: 'target',
11
+ group: 'Initiatives',
12
+ input: z.object({
13
+ name: z.string().describe('Initiative name'),
14
+ description: z.string().optional().describe('Initiative description in markdown'),
15
+ status: z.enum(['Planned', 'Active', 'Completed']).optional().describe('Initiative status'),
16
+ color: z.string().optional().describe('Color hex code (e.g. #FF0000)'),
17
+ owner_id: z.string().optional().describe('Owner user UUID'),
18
+ }),
19
+ output: z.object({
20
+ initiative: initiativeSchema.describe('The newly created initiative'),
21
+ }),
22
+ handle: async (params) => {
23
+ const input = {
24
+ name: params.name,
25
+ };
26
+ if (params.description !== undefined)
27
+ input.description = params.description;
28
+ if (params.status)
29
+ input.status = params.status;
30
+ if (params.color)
31
+ input.color = params.color;
32
+ if (params.owner_id)
33
+ input.ownerId = params.owner_id;
34
+ const data = await graphql(`mutation CreateInitiative($input: InitiativeCreateInput!) {
35
+ initiativeCreate(input: $input) {
36
+ success
37
+ initiative {
38
+ id name description status color icon url createdAt updatedAt
39
+ owner { name displayName }
40
+ }
41
+ }
42
+ }`, { input });
43
+ if (!data.initiativeCreate?.initiative)
44
+ throw ToolError.internal('Initiative creation failed — no initiative returned');
45
+ return {
46
+ initiative: mapInitiative(data.initiativeCreate.initiative),
47
+ };
48
+ },
49
+ });
50
+ //# sourceMappingURL=create-initiative.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-initiative.js","sourceRoot":"","sources":["../../src/tools/create-initiative.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE/D,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAC;IACzC,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE,mBAAmB;IAChC,WAAW,EAAE,oCAAoC;IACjD,OAAO,EAAE,yBAAyB;IAClC,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,aAAa;IACpB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAC5C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QACjF,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAC3F,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;QACtE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;KAC5D,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,UAAU,EAAE,gBAAgB,CAAC,QAAQ,CAAC,8BAA8B,CAAC;KACtE,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,KAAK,GAA4B;YACrC,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAC;QACF,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS;YAAE,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QAC7E,IAAI,MAAM,CAAC,MAAM;YAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAChD,IAAI,MAAM,CAAC,KAAK;YAAE,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC7C,IAAI,MAAM,CAAC,QAAQ;YAAE,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC;QAErD,MAAM,IAAI,GAAG,MAAM,OAAO,CAMxB;;;;;;;;QAQE,EACF,EAAE,KAAK,EAAE,CACV,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAU;YACpC,MAAM,SAAS,CAAC,QAAQ,CAAC,qDAAqD,CAAC,CAAC;QAElF,OAAO;YACL,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAiD,CAAC;SACnG,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { z } from 'zod';
2
+ export declare const createIssueRelation: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ issue_id: z.ZodString;
4
+ related_issue_id: z.ZodString;
5
+ type: z.ZodEnum<{
6
+ blocks: "blocks";
7
+ blockedBy: "blockedBy";
8
+ related: "related";
9
+ duplicate: "duplicate";
10
+ }>;
11
+ }, z.core.$strip>, z.ZodObject<{
12
+ relation: z.ZodObject<{
13
+ id: z.ZodString;
14
+ type: z.ZodString;
15
+ related_issue_identifier: z.ZodString;
16
+ }, z.core.$strip>;
17
+ }, z.core.$strip>>;
18
+ //# sourceMappingURL=create-issue-relation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-issue-relation.d.ts","sourceRoot":"","sources":["../../src/tools/create-issue-relation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;kBA8D9B,CAAC"}
@@ -0,0 +1,53 @@
1
+ import { graphql } from '../linear-api.js';
2
+ import { ToolError, defineTool } from '@opentabs-dev/plugin-sdk';
3
+ import { z } from 'zod';
4
+ export const createIssueRelation = defineTool({
5
+ name: 'create_issue_relation',
6
+ displayName: 'Create Issue Relation',
7
+ description: 'Create a relation between two Linear issues (blocks, is blocked by, relates to, or duplicate of).',
8
+ summary: 'Create a relation between two issues',
9
+ icon: 'link',
10
+ group: 'Issues',
11
+ input: z.object({
12
+ issue_id: z.string().describe('UUID of the source issue'),
13
+ related_issue_id: z.string().describe('UUID of the target issue to relate to'),
14
+ type: z
15
+ .enum(['blocks', 'blockedBy', 'related', 'duplicate'])
16
+ .describe('Relation type: blocks, blockedBy, related, or duplicate'),
17
+ }),
18
+ output: z.object({
19
+ relation: z.object({
20
+ id: z.string().describe('Relation UUID'),
21
+ type: z.string().describe('Relation type'),
22
+ related_issue_identifier: z.string().describe('Related issue identifier (e.g. ENG-123)'),
23
+ }),
24
+ }),
25
+ handle: async (params) => {
26
+ const data = await graphql(`mutation CreateIssueRelation($input: IssueRelationCreateInput!) {
27
+ issueRelationCreate(input: $input) {
28
+ success
29
+ issueRelation {
30
+ id type
31
+ relatedIssue { identifier }
32
+ }
33
+ }
34
+ }`, {
35
+ input: {
36
+ issueId: params.issue_id,
37
+ relatedIssueId: params.related_issue_id,
38
+ type: params.type,
39
+ },
40
+ });
41
+ if (!data.issueRelationCreate?.issueRelation)
42
+ throw ToolError.internal('Issue relation creation failed — no relation returned');
43
+ const rel = data.issueRelationCreate.issueRelation;
44
+ return {
45
+ relation: {
46
+ id: rel.id ?? '',
47
+ type: rel.type ?? '',
48
+ related_issue_identifier: rel.relatedIssue?.identifier ?? '',
49
+ },
50
+ };
51
+ },
52
+ });
53
+ //# sourceMappingURL=create-issue-relation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-issue-relation.js","sourceRoot":"","sources":["../../src/tools/create-issue-relation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,mBAAmB,GAAG,UAAU,CAAC;IAC5C,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EAAE,uBAAuB;IACpC,WAAW,EAAE,mGAAmG;IAChH,OAAO,EAAE,sCAAsC;IAC/C,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QACzD,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;QAC9E,IAAI,EAAE,CAAC;aACJ,IAAI,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;aACrD,QAAQ,CAAC,yDAAyD,CAAC;KACvE,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC;YACjB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;YACxC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;YAC1C,wBAAwB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;SACzF,CAAC;KACH,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,OAAO,CAUxB;;;;;;;;QAQE,EACF;YACE,KAAK,EAAE;gBACL,OAAO,EAAE,MAAM,CAAC,QAAQ;gBACxB,cAAc,EAAE,MAAM,CAAC,gBAAgB;gBACvC,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB;SACF,CACF,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,aAAa;YAC1C,MAAM,SAAS,CAAC,QAAQ,CAAC,uDAAuD,CAAC,CAAC;QAEpF,MAAM,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC;QACnD,OAAO;YACL,QAAQ,EAAE;gBACR,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE;gBAChB,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE;gBACpB,wBAAwB,EAAE,GAAG,CAAC,YAAY,EAAE,UAAU,IAAI,EAAE;aAC7D;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { z } from 'zod';
2
+ export declare const createMilestone: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ project_id: z.ZodString;
4
+ name: z.ZodString;
5
+ description: z.ZodOptional<z.ZodString>;
6
+ target_date: z.ZodOptional<z.ZodString>;
7
+ }, z.core.$strip>, z.ZodObject<{
8
+ milestone: z.ZodObject<{
9
+ id: z.ZodString;
10
+ name: z.ZodString;
11
+ description: z.ZodString;
12
+ target_date: z.ZodString;
13
+ sort_order: z.ZodNumber;
14
+ }, z.core.$strip>;
15
+ }, z.core.$strip>>;
16
+ //# sourceMappingURL=create-milestone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-milestone.d.ts","sourceRoot":"","sources":["../../src/tools/create-milestone.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,eAAe;;;;;;;;;;;;;kBAgD1B,CAAC"}
@@ -0,0 +1,45 @@
1
+ import { graphql } from '../linear-api.js';
2
+ import { ToolError, defineTool } from '@opentabs-dev/plugin-sdk';
3
+ import { z } from 'zod';
4
+ import { mapMilestone, milestoneSchema } from './schemas.js';
5
+ export const createMilestone = defineTool({
6
+ name: 'create_milestone',
7
+ displayName: 'Create Milestone',
8
+ description: 'Create a new milestone in a Linear project.',
9
+ summary: 'Create a new project milestone',
10
+ icon: 'milestone',
11
+ group: 'Projects',
12
+ input: z.object({
13
+ project_id: z.string().describe('Project UUID to create the milestone in'),
14
+ name: z.string().describe('Milestone name'),
15
+ description: z.string().optional().describe('Milestone description'),
16
+ target_date: z.string().optional().describe('Target date in YYYY-MM-DD format'),
17
+ }),
18
+ output: z.object({
19
+ milestone: milestoneSchema.describe('The newly created milestone'),
20
+ }),
21
+ handle: async (params) => {
22
+ const input = {
23
+ projectId: params.project_id,
24
+ name: params.name,
25
+ };
26
+ if (params.description !== undefined)
27
+ input.description = params.description;
28
+ if (params.target_date)
29
+ input.targetDate = params.target_date;
30
+ const data = await graphql(`mutation CreateMilestone($input: ProjectMilestoneCreateInput!) {
31
+ projectMilestoneCreate(input: $input) {
32
+ success
33
+ projectMilestone {
34
+ id name description targetDate sortOrder
35
+ }
36
+ }
37
+ }`, { input });
38
+ if (!data.projectMilestoneCreate?.projectMilestone)
39
+ throw ToolError.internal('Milestone creation failed — no milestone returned');
40
+ return {
41
+ milestone: mapMilestone(data.projectMilestoneCreate.projectMilestone),
42
+ };
43
+ },
44
+ });
45
+ //# sourceMappingURL=create-milestone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-milestone.js","sourceRoot":"","sources":["../../src/tools/create-milestone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE7D,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC;IACxC,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE,kBAAkB;IAC/B,WAAW,EAAE,6CAA6C;IAC1D,OAAO,EAAE,gCAAgC;IACzC,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;QAC1E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAC3C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QACpE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;KAChF,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,SAAS,EAAE,eAAe,CAAC,QAAQ,CAAC,6BAA6B,CAAC;KACnE,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,KAAK,GAA4B;YACrC,SAAS,EAAE,MAAM,CAAC,UAAU;YAC5B,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAC;QACF,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS;YAAE,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QAC7E,IAAI,MAAM,CAAC,WAAW;YAAE,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;QAE9D,MAAM,IAAI,GAAG,MAAM,OAAO,CAMxB;;;;;;;QAOE,EACF,EAAE,KAAK,EAAE,CACV,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,gBAAgB;YAChD,MAAM,SAAS,CAAC,QAAQ,CAAC,mDAAmD,CAAC,CAAC;QAEhF,OAAO;YACL,SAAS,EAAE,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC,gBAAsD,CAAC;SAC5G,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { z } from 'zod';
2
+ export declare const createProjectUpdate: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ project_id: z.ZodString;
4
+ body: z.ZodString;
5
+ health: z.ZodEnum<{
6
+ onTrack: "onTrack";
7
+ atRisk: "atRisk";
8
+ offTrack: "offTrack";
9
+ }>;
10
+ }, z.core.$strip>, z.ZodObject<{
11
+ update: z.ZodObject<{
12
+ id: z.ZodString;
13
+ body: z.ZodString;
14
+ health: z.ZodString;
15
+ user_name: z.ZodString;
16
+ created_at: z.ZodString;
17
+ updated_at: z.ZodString;
18
+ }, z.core.$strip>;
19
+ }, z.core.$strip>>;
20
+ //# sourceMappingURL=create-project-update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-project-update.d.ts","sourceRoot":"","sources":["../../src/tools/create-project-update.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;kBAyC9B,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { graphql } from '../linear-api.js';
2
+ import { ToolError, defineTool } from '@opentabs-dev/plugin-sdk';
3
+ import { z } from 'zod';
4
+ import { mapStatusUpdate, statusUpdateSchema } from './schemas.js';
5
+ export const createProjectUpdate = defineTool({
6
+ name: 'create_project_update',
7
+ displayName: 'Create Project Update',
8
+ description: 'Post a status update (health report) on a Linear project.',
9
+ summary: 'Post a project status update',
10
+ icon: 'activity',
11
+ group: 'Projects',
12
+ input: z.object({
13
+ project_id: z.string().describe('Project UUID to post the update on'),
14
+ body: z.string().describe('Status update body in markdown'),
15
+ health: z.enum(['onTrack', 'atRisk', 'offTrack']).describe('Project health status'),
16
+ }),
17
+ output: z.object({
18
+ update: statusUpdateSchema.describe('The newly created status update'),
19
+ }),
20
+ handle: async (params) => {
21
+ const data = await graphql(`mutation CreateProjectUpdate($input: ProjectUpdateCreateInput!) {
22
+ projectUpdateCreate(input: $input) {
23
+ success
24
+ projectUpdate {
25
+ id body health createdAt updatedAt
26
+ user { name displayName }
27
+ }
28
+ }
29
+ }`, { input: { projectId: params.project_id, body: params.body, health: params.health } });
30
+ if (!data.projectUpdateCreate?.projectUpdate)
31
+ throw ToolError.internal('Project update creation failed — no update returned');
32
+ return {
33
+ update: mapStatusUpdate(data.projectUpdateCreate.projectUpdate),
34
+ };
35
+ },
36
+ });
37
+ //# sourceMappingURL=create-project-update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-project-update.js","sourceRoot":"","sources":["../../src/tools/create-project-update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEnE,MAAM,CAAC,MAAM,mBAAmB,GAAG,UAAU,CAAC;IAC5C,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EAAE,uBAAuB;IACpC,WAAW,EAAE,2DAA2D;IACxE,OAAO,EAAE,8BAA8B;IACvC,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QACrE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QAC3D,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC;KACpF,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CAAC,iCAAiC,CAAC;KACvE,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,OAAO,CAMxB;;;;;;;;QAQE,EACF,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,CACtF,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,aAAa;YAC1C,MAAM,SAAS,CAAC,QAAQ,CAAC,qDAAqD,CAAC,CAAC;QAElF,OAAO;YACL,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,mBAAmB,CAAC,aAAsD,CAAC;SACzG,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { z } from 'zod';
2
+ export declare const deleteAttachment: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ attachment_id: z.ZodString;
4
+ }, z.core.$strip>, z.ZodObject<{
5
+ success: z.ZodBoolean;
6
+ }, z.core.$strip>>;
7
+ //# sourceMappingURL=delete-attachment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-attachment.d.ts","sourceRoot":"","sources":["../../src/tools/delete-attachment.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,gBAAgB;;;;kBA6B3B,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { graphql } from '../linear-api.js';
2
+ import { ToolError, defineTool } from '@opentabs-dev/plugin-sdk';
3
+ import { z } from 'zod';
4
+ export const deleteAttachment = defineTool({
5
+ name: 'delete_attachment',
6
+ displayName: 'Delete Attachment',
7
+ description: 'Delete an attachment from a Linear issue.',
8
+ summary: 'Delete an attachment',
9
+ icon: 'paperclip',
10
+ group: 'Issues',
11
+ input: z.object({
12
+ attachment_id: z.string().describe('Attachment UUID to delete'),
13
+ }),
14
+ output: z.object({
15
+ success: z.boolean().describe('Whether the attachment was successfully deleted'),
16
+ }),
17
+ handle: async (params) => {
18
+ const data = await graphql(`mutation DeleteAttachment($id: String!) {
19
+ attachmentDelete(id: $id) {
20
+ success
21
+ }
22
+ }`, { id: params.attachment_id });
23
+ if (!data.attachmentDelete)
24
+ throw ToolError.internal('Attachment deletion failed — no response');
25
+ return { success: data.attachmentDelete.success };
26
+ },
27
+ });
28
+ //# sourceMappingURL=delete-attachment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-attachment.js","sourceRoot":"","sources":["../../src/tools/delete-attachment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAC;IACzC,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE,mBAAmB;IAChC,WAAW,EAAE,2CAA2C;IACxD,OAAO,EAAE,sBAAsB;IAC/B,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;KAChE,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;KACjF,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,OAAO,CAGxB;;;;QAIE,EACF,EAAE,EAAE,EAAE,MAAM,CAAC,aAAa,EAAE,CAC7B,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,gBAAgB;YAAE,MAAM,SAAS,CAAC,QAAQ,CAAC,0CAA0C,CAAC,CAAC;QAEjG,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;IACpD,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { z } from 'zod';
2
+ export declare const deleteComment: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ comment_id: z.ZodString;
4
+ }, z.core.$strip>, z.ZodObject<{
5
+ success: z.ZodBoolean;
6
+ }, z.core.$strip>>;
7
+ //# sourceMappingURL=delete-comment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-comment.d.ts","sourceRoot":"","sources":["../../src/tools/delete-comment.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,aAAa;;;;kBA6BxB,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { graphql } from '../linear-api.js';
2
+ import { ToolError, defineTool } from '@opentabs-dev/plugin-sdk';
3
+ import { z } from 'zod';
4
+ export const deleteComment = defineTool({
5
+ name: 'delete_comment',
6
+ displayName: 'Delete Comment',
7
+ description: 'Delete a comment from a Linear issue.',
8
+ summary: 'Delete a comment',
9
+ icon: 'message-square-x',
10
+ group: 'Comments',
11
+ input: z.object({
12
+ comment_id: z.string().describe('Comment UUID to delete'),
13
+ }),
14
+ output: z.object({
15
+ success: z.boolean().describe('Whether the comment was successfully deleted'),
16
+ }),
17
+ handle: async (params) => {
18
+ const data = await graphql(`mutation DeleteComment($id: String!) {
19
+ commentDelete(id: $id) {
20
+ success
21
+ }
22
+ }`, { id: params.comment_id });
23
+ if (!data.commentDelete)
24
+ throw ToolError.internal('Comment deletion failed — no response');
25
+ return { success: data.commentDelete.success };
26
+ },
27
+ });
28
+ //# sourceMappingURL=delete-comment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-comment.js","sourceRoot":"","sources":["../../src/tools/delete-comment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC;IACtC,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,gBAAgB;IAC7B,WAAW,EAAE,uCAAuC;IACpD,OAAO,EAAE,kBAAkB;IAC3B,IAAI,EAAE,kBAAkB;IACxB,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;KAC1D,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;KAC9E,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,OAAO,CAGxB;;;;QAIE,EACF,EAAE,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE,CAC1B,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,MAAM,SAAS,CAAC,QAAQ,CAAC,uCAAuC,CAAC,CAAC;QAE3F,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;IACjD,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { z } from 'zod';
2
+ export declare const deleteIssueRelation: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ relation_id: z.ZodString;
4
+ }, z.core.$strip>, z.ZodObject<{
5
+ success: z.ZodBoolean;
6
+ }, z.core.$strip>>;
7
+ //# sourceMappingURL=delete-issue-relation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-issue-relation.d.ts","sourceRoot":"","sources":["../../src/tools/delete-issue-relation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;;;kBA6B9B,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { graphql } from '../linear-api.js';
2
+ import { ToolError, defineTool } from '@opentabs-dev/plugin-sdk';
3
+ import { z } from 'zod';
4
+ export const deleteIssueRelation = defineTool({
5
+ name: 'delete_issue_relation',
6
+ displayName: 'Delete Issue Relation',
7
+ description: 'Delete a relation between two Linear issues. Use list_issue_relations to find relation IDs.',
8
+ summary: 'Delete a relation between two issues',
9
+ icon: 'unlink',
10
+ group: 'Issues',
11
+ input: z.object({
12
+ relation_id: z.string().describe('Relation UUID to delete (from list_issue_relations)'),
13
+ }),
14
+ output: z.object({
15
+ success: z.boolean().describe('Whether the relation was successfully deleted'),
16
+ }),
17
+ handle: async (params) => {
18
+ const data = await graphql(`mutation DeleteIssueRelation($id: String!) {
19
+ issueRelationDelete(id: $id) {
20
+ success
21
+ }
22
+ }`, { id: params.relation_id });
23
+ if (!data.issueRelationDelete)
24
+ throw ToolError.internal('Issue relation deletion failed — no response');
25
+ return { success: data.issueRelationDelete.success };
26
+ },
27
+ });
28
+ //# sourceMappingURL=delete-issue-relation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-issue-relation.js","sourceRoot":"","sources":["../../src/tools/delete-issue-relation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,mBAAmB,GAAG,UAAU,CAAC;IAC5C,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EAAE,uBAAuB;IACpC,WAAW,EAAE,6FAA6F;IAC1G,OAAO,EAAE,sCAAsC;IAC/C,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;KACxF,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;KAC/E,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,OAAO,CAGxB;;;;QAIE,EACF,EAAE,EAAE,EAAE,MAAM,CAAC,WAAW,EAAE,CAC3B,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,mBAAmB;YAAE,MAAM,SAAS,CAAC,QAAQ,CAAC,8CAA8C,CAAC,CAAC;QAExG,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;IACvD,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { z } from 'zod';
2
+ export declare const deleteLabel: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ label_id: z.ZodString;
4
+ }, z.core.$strip>, z.ZodObject<{
5
+ success: z.ZodBoolean;
6
+ }, z.core.$strip>>;
7
+ //# sourceMappingURL=delete-label.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-label.d.ts","sourceRoot":"","sources":["../../src/tools/delete-label.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,WAAW;;;;kBA6BtB,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { graphql } from '../linear-api.js';
2
+ import { ToolError, defineTool } from '@opentabs-dev/plugin-sdk';
3
+ import { z } from 'zod';
4
+ export const deleteLabel = defineTool({
5
+ name: 'delete_label',
6
+ displayName: 'Delete Label',
7
+ description: 'Delete a Linear issue label. Labels will be removed from all issues that use them.',
8
+ summary: 'Delete a label',
9
+ icon: 'tag',
10
+ group: 'Workflow',
11
+ input: z.object({
12
+ label_id: z.string().describe('Label UUID to delete'),
13
+ }),
14
+ output: z.object({
15
+ success: z.boolean().describe('Whether the label was successfully deleted'),
16
+ }),
17
+ handle: async (params) => {
18
+ const data = await graphql(`mutation DeleteLabel($id: String!) {
19
+ issueLabelDelete(id: $id) {
20
+ success
21
+ }
22
+ }`, { id: params.label_id });
23
+ if (!data.issueLabelDelete)
24
+ throw ToolError.internal('Label deletion failed — no response');
25
+ return { success: data.issueLabelDelete.success };
26
+ },
27
+ });
28
+ //# sourceMappingURL=delete-label.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-label.js","sourceRoot":"","sources":["../../src/tools/delete-label.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;IACpC,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,cAAc;IAC3B,WAAW,EAAE,oFAAoF;IACjG,OAAO,EAAE,gBAAgB;IACzB,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;KACtD,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;KAC5E,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,OAAO,CAGxB;;;;QAIE,EACF,EAAE,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,CACxB,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,gBAAgB;YAAE,MAAM,SAAS,CAAC,QAAQ,CAAC,qCAAqC,CAAC,CAAC;QAE5F,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;IACpD,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { z } from 'zod';
2
+ export declare const deleteProjectUpdate: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ update_id: z.ZodString;
4
+ }, z.core.$strip>, z.ZodObject<{
5
+ success: z.ZodBoolean;
6
+ }, z.core.$strip>>;
7
+ //# sourceMappingURL=delete-project-update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-project-update.d.ts","sourceRoot":"","sources":["../../src/tools/delete-project-update.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;;;kBA6B9B,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { graphql } from '../linear-api.js';
2
+ import { ToolError, defineTool } from '@opentabs-dev/plugin-sdk';
3
+ import { z } from 'zod';
4
+ export const deleteProjectUpdate = defineTool({
5
+ name: 'delete_project_update',
6
+ displayName: 'Delete Project Update',
7
+ description: 'Delete a status update from a Linear project.',
8
+ summary: 'Delete a project status update',
9
+ icon: 'activity',
10
+ group: 'Projects',
11
+ input: z.object({
12
+ update_id: z.string().describe('Project update UUID to delete'),
13
+ }),
14
+ output: z.object({
15
+ success: z.boolean().describe('Whether the update was successfully deleted'),
16
+ }),
17
+ handle: async (params) => {
18
+ const data = await graphql(`mutation DeleteProjectUpdate($id: String!) {
19
+ projectUpdateDelete(id: $id) {
20
+ success
21
+ }
22
+ }`, { id: params.update_id });
23
+ if (!data.projectUpdateDelete)
24
+ throw ToolError.internal('Project update deletion failed — no response');
25
+ return { success: data.projectUpdateDelete.success };
26
+ },
27
+ });
28
+ //# sourceMappingURL=delete-project-update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-project-update.js","sourceRoot":"","sources":["../../src/tools/delete-project-update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,mBAAmB,GAAG,UAAU,CAAC;IAC5C,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EAAE,uBAAuB;IACpC,WAAW,EAAE,+CAA+C;IAC5D,OAAO,EAAE,gCAAgC;IACzC,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;KAChE,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;KAC7E,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,OAAO,CAGxB;;;;QAIE,EACF,EAAE,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE,CACzB,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,mBAAmB;YAAE,MAAM,SAAS,CAAC,QAAQ,CAAC,8CAA8C,CAAC,CAAC;QAExG,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;IACvD,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { z } from 'zod';
2
+ export declare const getAttachment: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ attachment_id: z.ZodString;
4
+ }, z.core.$strip>, z.ZodObject<{
5
+ attachment: z.ZodObject<{
6
+ id: z.ZodString;
7
+ title: z.ZodString;
8
+ subtitle: z.ZodString;
9
+ url: z.ZodString;
10
+ source_type: z.ZodString;
11
+ creator_name: z.ZodString;
12
+ created_at: z.ZodString;
13
+ updated_at: z.ZodString;
14
+ }, z.core.$strip>;
15
+ }, z.core.$strip>>;
16
+ //# sourceMappingURL=get-attachment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-attachment.d.ts","sourceRoot":"","sources":["../../src/tools/get-attachment.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,aAAa;;;;;;;;;;;;;kBA4BxB,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { graphql } from '../linear-api.js';
2
+ import { ToolError, defineTool } from '@opentabs-dev/plugin-sdk';
3
+ import { z } from 'zod';
4
+ import { attachmentSchema, mapAttachment } from './schemas.js';
5
+ export const getAttachment = defineTool({
6
+ name: 'get_attachment',
7
+ displayName: 'Get Attachment',
8
+ description: 'Get detailed information about a single attachment by its UUID.',
9
+ summary: 'Get details of a single attachment',
10
+ icon: 'paperclip',
11
+ group: 'Issues',
12
+ input: z.object({
13
+ attachment_id: z.string().describe('Attachment UUID'),
14
+ }),
15
+ output: z.object({
16
+ attachment: attachmentSchema.describe('The requested attachment'),
17
+ }),
18
+ handle: async (params) => {
19
+ const data = await graphql(`query GetAttachment($id: String!) {
20
+ attachment(id: $id) {
21
+ id title subtitle url sourceType createdAt updatedAt
22
+ creator { name displayName }
23
+ }
24
+ }`, { id: params.attachment_id });
25
+ if (!data.attachment)
26
+ throw ToolError.notFound('Attachment not found');
27
+ return { attachment: mapAttachment(data.attachment) };
28
+ },
29
+ });
30
+ //# sourceMappingURL=get-attachment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-attachment.js","sourceRoot":"","sources":["../../src/tools/get-attachment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE/D,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC;IACtC,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,gBAAgB;IAC7B,WAAW,EAAE,iEAAiE;IAC9E,OAAO,EAAE,oCAAoC;IAC7C,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;KACtD,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,UAAU,EAAE,gBAAgB,CAAC,QAAQ,CAAC,0BAA0B,CAAC;KAClE,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,OAAO,CACxB;;;;;QAKE,EACF,EAAE,EAAE,EAAE,MAAM,CAAC,aAAa,EAAE,CAC7B,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,MAAM,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;QAEvE,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC,UAAiD,CAAC,EAAE,CAAC;IAC/F,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { z } from 'zod';
2
+ export declare const getCycle: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ cycle_id: z.ZodString;
4
+ }, z.core.$strip>, z.ZodObject<{
5
+ cycle: z.ZodObject<{
6
+ id: z.ZodString;
7
+ number: z.ZodNumber;
8
+ name: z.ZodString;
9
+ starts_at: z.ZodString;
10
+ ends_at: z.ZodString;
11
+ is_active: z.ZodBoolean;
12
+ completed_at: z.ZodString;
13
+ }, z.core.$strip>;
14
+ }, z.core.$strip>>;
15
+ //# sourceMappingURL=get-cycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-cycle.d.ts","sourceRoot":"","sources":["../../src/tools/get-cycle.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,QAAQ;;;;;;;;;;;;kBA2BnB,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { graphql } from '../linear-api.js';
2
+ import { ToolError, defineTool } from '@opentabs-dev/plugin-sdk';
3
+ import { z } from 'zod';
4
+ import { cycleSchema, mapCycle } from './schemas.js';
5
+ export const getCycle = defineTool({
6
+ name: 'get_cycle',
7
+ displayName: 'Get Cycle',
8
+ description: 'Get detailed information about a single cycle (sprint) by its UUID.',
9
+ summary: 'Get details of a single cycle',
10
+ icon: 'refresh-cw',
11
+ group: 'Workflow',
12
+ input: z.object({
13
+ cycle_id: z.string().describe('Cycle UUID'),
14
+ }),
15
+ output: z.object({
16
+ cycle: cycleSchema.describe('The requested cycle'),
17
+ }),
18
+ handle: async (params) => {
19
+ const data = await graphql(`query GetCycle($id: String!) {
20
+ cycle(id: $id) {
21
+ id number name startsAt endsAt completedAt
22
+ }
23
+ }`, { id: params.cycle_id });
24
+ if (!data.cycle)
25
+ throw ToolError.notFound('Cycle not found');
26
+ return { cycle: mapCycle(data.cycle) };
27
+ },
28
+ });
29
+ //# sourceMappingURL=get-cycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-cycle.js","sourceRoot":"","sources":["../../src/tools/get-cycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAErD,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;IACjC,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,WAAW;IACxB,WAAW,EAAE,qEAAqE;IAClF,OAAO,EAAE,+BAA+B;IACxC,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;KAC5C,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,qBAAqB,CAAC;KACnD,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,OAAO,CACxB;;;;QAIE,EACF,EAAE,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,CACxB,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,MAAM,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QAE7D,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAuC,CAAC,EAAE,CAAC;IAC3E,CAAC;CACF,CAAC,CAAC"}