@opentabs-dev/opentabs-plugin-linear 0.0.82 → 0.0.84
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.
- package/dist/adapter.iife.js +1766 -77
- package/dist/adapter.iife.js.map +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +92 -2
- package/dist/index.js.map +1 -1
- package/dist/tools/add-issue-label.d.ts +28 -0
- package/dist/tools/add-issue-label.d.ts.map +1 -0
- package/dist/tools/add-issue-label.js +56 -0
- package/dist/tools/add-issue-label.js.map +1 -0
- package/dist/tools/add-issue-subscriber.d.ts +8 -0
- package/dist/tools/add-issue-subscriber.d.ts.map +1 -0
- package/dist/tools/add-issue-subscriber.js +29 -0
- package/dist/tools/add-issue-subscriber.js.map +1 -0
- package/dist/tools/batch-update-issues.d.ts +35 -0
- package/dist/tools/batch-update-issues.d.ts.map +1 -0
- package/dist/tools/batch-update-issues.js +86 -0
- package/dist/tools/batch-update-issues.js.map +1 -0
- package/dist/tools/create-attachment.d.ts +19 -0
- package/dist/tools/create-attachment.d.ts.map +1 -0
- package/dist/tools/create-attachment.js +45 -0
- package/dist/tools/create-attachment.js.map +1 -0
- package/dist/tools/create-document.d.ts +21 -0
- package/dist/tools/create-document.d.ts.map +1 -0
- package/dist/tools/create-document.js +46 -0
- package/dist/tools/create-document.js.map +1 -0
- package/dist/tools/create-initiative.d.ts +26 -0
- package/dist/tools/create-initiative.d.ts.map +1 -0
- package/dist/tools/create-initiative.js +50 -0
- package/dist/tools/create-initiative.js.map +1 -0
- package/dist/tools/create-issue-relation.d.ts +18 -0
- package/dist/tools/create-issue-relation.d.ts.map +1 -0
- package/dist/tools/create-issue-relation.js +53 -0
- package/dist/tools/create-issue-relation.js.map +1 -0
- package/dist/tools/create-milestone.d.ts +16 -0
- package/dist/tools/create-milestone.d.ts.map +1 -0
- package/dist/tools/create-milestone.js +45 -0
- package/dist/tools/create-milestone.js.map +1 -0
- package/dist/tools/create-project-update.d.ts +20 -0
- package/dist/tools/create-project-update.d.ts.map +1 -0
- package/dist/tools/create-project-update.js +37 -0
- package/dist/tools/create-project-update.js.map +1 -0
- package/dist/tools/delete-attachment.d.ts +7 -0
- package/dist/tools/delete-attachment.d.ts.map +1 -0
- package/dist/tools/delete-attachment.js +28 -0
- package/dist/tools/delete-attachment.js.map +1 -0
- package/dist/tools/delete-comment.d.ts +7 -0
- package/dist/tools/delete-comment.d.ts.map +1 -0
- package/dist/tools/delete-comment.js +28 -0
- package/dist/tools/delete-comment.js.map +1 -0
- package/dist/tools/delete-issue-relation.d.ts +7 -0
- package/dist/tools/delete-issue-relation.d.ts.map +1 -0
- package/dist/tools/delete-issue-relation.js +28 -0
- package/dist/tools/delete-issue-relation.js.map +1 -0
- package/dist/tools/delete-label.d.ts +7 -0
- package/dist/tools/delete-label.d.ts.map +1 -0
- package/dist/tools/delete-label.js +28 -0
- package/dist/tools/delete-label.js.map +1 -0
- package/dist/tools/delete-project-update.d.ts +7 -0
- package/dist/tools/delete-project-update.d.ts.map +1 -0
- package/dist/tools/delete-project-update.js +28 -0
- package/dist/tools/delete-project-update.js.map +1 -0
- package/dist/tools/get-attachment.d.ts +16 -0
- package/dist/tools/get-attachment.d.ts.map +1 -0
- package/dist/tools/get-attachment.js +30 -0
- package/dist/tools/get-attachment.js.map +1 -0
- package/dist/tools/get-cycle.d.ts +15 -0
- package/dist/tools/get-cycle.d.ts.map +1 -0
- package/dist/tools/get-cycle.js +29 -0
- package/dist/tools/get-cycle.js.map +1 -0
- package/dist/tools/get-document.d.ts +18 -0
- package/dist/tools/get-document.d.ts.map +1 -0
- package/dist/tools/get-document.js +31 -0
- package/dist/tools/get-document.js.map +1 -0
- package/dist/tools/get-initiative.d.ts +30 -0
- package/dist/tools/get-initiative.d.ts.map +1 -0
- package/dist/tools/get-initiative.js +42 -0
- package/dist/tools/get-initiative.js.map +1 -0
- package/dist/tools/get-milestone.d.ts +13 -0
- package/dist/tools/get-milestone.d.ts.map +1 -0
- package/dist/tools/get-milestone.js +29 -0
- package/dist/tools/get-milestone.js.map +1 -0
- package/dist/tools/get-team.d.ts +12 -0
- package/dist/tools/get-team.d.ts.map +1 -0
- package/dist/tools/get-team.js +29 -0
- package/dist/tools/get-team.js.map +1 -0
- package/dist/tools/get-user.d.ts +14 -0
- package/dist/tools/get-user.d.ts.map +1 -0
- package/dist/tools/get-user.js +29 -0
- package/dist/tools/get-user.js.map +1 -0
- package/dist/tools/list-attachments.d.ts +22 -0
- package/dist/tools/list-attachments.d.ts.map +1 -0
- package/dist/tools/list-attachments.js +46 -0
- package/dist/tools/list-attachments.js.map +1 -0
- package/dist/tools/list-documents.d.ts +24 -0
- package/dist/tools/list-documents.d.ts.map +1 -0
- package/dist/tools/list-documents.js +49 -0
- package/dist/tools/list-documents.js.map +1 -0
- package/dist/tools/list-initiatives.d.ts +28 -0
- package/dist/tools/list-initiatives.d.ts.map +1 -0
- package/dist/tools/list-initiatives.js +48 -0
- package/dist/tools/list-initiatives.js.map +1 -0
- package/dist/tools/list-issue-history.d.ts +23 -0
- package/dist/tools/list-issue-history.d.ts.map +1 -0
- package/dist/tools/list-issue-history.js +52 -0
- package/dist/tools/list-issue-history.js.map +1 -0
- package/dist/tools/list-milestones.d.ts +13 -0
- package/dist/tools/list-milestones.d.ts.map +1 -0
- package/dist/tools/list-milestones.js +35 -0
- package/dist/tools/list-milestones.js.map +1 -0
- package/dist/tools/list-project-labels.d.ts +14 -0
- package/dist/tools/list-project-labels.d.ts.map +1 -0
- package/dist/tools/list-project-labels.js +36 -0
- package/dist/tools/list-project-labels.js.map +1 -0
- package/dist/tools/list-project-updates.d.ts +20 -0
- package/dist/tools/list-project-updates.d.ts.map +1 -0
- package/dist/tools/list-project-updates.js +46 -0
- package/dist/tools/list-project-updates.js.map +1 -0
- package/dist/tools/list-sub-issues.d.ts +33 -0
- package/dist/tools/list-sub-issues.d.ts.map +1 -0
- package/dist/tools/list-sub-issues.js +53 -0
- package/dist/tools/list-sub-issues.js.map +1 -0
- package/dist/tools/list-team-members.d.ts +20 -0
- package/dist/tools/list-team-members.d.ts.map +1 -0
- package/dist/tools/list-team-members.js +45 -0
- package/dist/tools/list-team-members.js.map +1 -0
- package/dist/tools/move-issue-to-project.d.ts +28 -0
- package/dist/tools/move-issue-to-project.d.ts.map +1 -0
- package/dist/tools/move-issue-to-project.js +43 -0
- package/dist/tools/move-issue-to-project.js.map +1 -0
- package/dist/tools/remove-issue-label.d.ts +28 -0
- package/dist/tools/remove-issue-label.d.ts.map +1 -0
- package/dist/tools/remove-issue-label.js +56 -0
- package/dist/tools/remove-issue-label.js.map +1 -0
- package/dist/tools/remove-issue-subscriber.d.ts +8 -0
- package/dist/tools/remove-issue-subscriber.d.ts.map +1 -0
- package/dist/tools/remove-issue-subscriber.js +29 -0
- package/dist/tools/remove-issue-subscriber.js.map +1 -0
- package/dist/tools/schemas.d.ts +207 -0
- package/dist/tools/schemas.d.ts.map +1 -1
- package/dist/tools/schemas.js +120 -0
- package/dist/tools/schemas.js.map +1 -1
- package/dist/tools/set-issue-cycle.d.ts +28 -0
- package/dist/tools/set-issue-cycle.d.ts.map +1 -0
- package/dist/tools/set-issue-cycle.js +43 -0
- package/dist/tools/set-issue-cycle.js.map +1 -0
- package/dist/tools/update-document.d.ts +22 -0
- package/dist/tools/update-document.d.ts.map +1 -0
- package/dist/tools/update-document.js +47 -0
- package/dist/tools/update-document.js.map +1 -0
- package/dist/tools/update-initiative.d.ts +27 -0
- package/dist/tools/update-initiative.d.ts.map +1 -0
- package/dist/tools/update-initiative.js +51 -0
- package/dist/tools/update-initiative.js.map +1 -0
- package/dist/tools/update-label.d.ts +17 -0
- package/dist/tools/update-label.d.ts.map +1 -0
- package/dist/tools/update-label.js +43 -0
- package/dist/tools/update-label.js.map +1 -0
- package/dist/tools/update-milestone.d.ts +16 -0
- package/dist/tools/update-milestone.d.ts.map +1 -0
- package/dist/tools/update-milestone.js +44 -0
- package/dist/tools/update-milestone.js.map +1 -0
- package/dist/tools.json +4044 -577
- package/package.json +3 -3
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA4DA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,cAAM,YAAa,SAAQ,cAAc;IACvC,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,WAAW,gCAAgC;IACpD,SAAkB,WAAW,YAAY;IACzC,QAAQ,CAAC,WAAW,WAAwB;IAC5C,SAAkB,QAAQ,wBAAwB;IAClD,QAAQ,CAAC,KAAK,EAAE,cAAc,EAAE,CA0E9B;IAEI,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;CAIlC;;AAED,wBAAkC"}
|
package/dist/index.js
CHANGED
|
@@ -1,24 +1,62 @@
|
|
|
1
1
|
import { isLinearAuthenticated, waitForLinearAuth } from './linear-api.js';
|
|
2
|
+
import { addIssueLabel } from './tools/add-issue-label.js';
|
|
3
|
+
import { addIssueSubscriber } from './tools/add-issue-subscriber.js';
|
|
2
4
|
import { archiveIssue } from './tools/archive-issue.js';
|
|
5
|
+
import { batchUpdateIssues } from './tools/batch-update-issues.js';
|
|
6
|
+
import { createAttachment } from './tools/create-attachment.js';
|
|
3
7
|
import { createComment } from './tools/create-comment.js';
|
|
8
|
+
import { createDocument } from './tools/create-document.js';
|
|
9
|
+
import { createInitiative } from './tools/create-initiative.js';
|
|
4
10
|
import { createIssue } from './tools/create-issue.js';
|
|
11
|
+
import { createIssueRelation } from './tools/create-issue-relation.js';
|
|
5
12
|
import { createLabel } from './tools/create-label.js';
|
|
13
|
+
import { createMilestone } from './tools/create-milestone.js';
|
|
6
14
|
import { createProject } from './tools/create-project.js';
|
|
15
|
+
import { createProjectUpdate } from './tools/create-project-update.js';
|
|
16
|
+
import { deleteAttachment } from './tools/delete-attachment.js';
|
|
17
|
+
import { deleteComment } from './tools/delete-comment.js';
|
|
7
18
|
import { deleteIssue } from './tools/delete-issue.js';
|
|
19
|
+
import { deleteIssueRelation } from './tools/delete-issue-relation.js';
|
|
20
|
+
import { deleteLabel } from './tools/delete-label.js';
|
|
21
|
+
import { deleteProjectUpdate } from './tools/delete-project-update.js';
|
|
22
|
+
import { getAttachment } from './tools/get-attachment.js';
|
|
23
|
+
import { getCycle } from './tools/get-cycle.js';
|
|
24
|
+
import { getDocument } from './tools/get-document.js';
|
|
25
|
+
import { getInitiative } from './tools/get-initiative.js';
|
|
8
26
|
import { getIssue } from './tools/get-issue.js';
|
|
27
|
+
import { getMilestone } from './tools/get-milestone.js';
|
|
9
28
|
import { getProject } from './tools/get-project.js';
|
|
29
|
+
import { getTeam } from './tools/get-team.js';
|
|
30
|
+
import { getUser } from './tools/get-user.js';
|
|
10
31
|
import { getViewer } from './tools/get-viewer.js';
|
|
32
|
+
import { listAttachments } from './tools/list-attachments.js';
|
|
11
33
|
import { listComments } from './tools/list-comments.js';
|
|
12
34
|
import { listCycles } from './tools/list-cycles.js';
|
|
35
|
+
import { listDocuments } from './tools/list-documents.js';
|
|
36
|
+
import { listInitiatives } from './tools/list-initiatives.js';
|
|
37
|
+
import { listIssueHistory } from './tools/list-issue-history.js';
|
|
13
38
|
import { listIssueRelations } from './tools/list-issue-relations.js';
|
|
14
39
|
import { listLabels } from './tools/list-labels.js';
|
|
40
|
+
import { listMilestones } from './tools/list-milestones.js';
|
|
41
|
+
import { listProjectLabels } from './tools/list-project-labels.js';
|
|
42
|
+
import { listProjectUpdates } from './tools/list-project-updates.js';
|
|
15
43
|
import { listProjects } from './tools/list-projects.js';
|
|
44
|
+
import { listSubIssues } from './tools/list-sub-issues.js';
|
|
45
|
+
import { listTeamMembers } from './tools/list-team-members.js';
|
|
16
46
|
import { listTeams } from './tools/list-teams.js';
|
|
17
47
|
import { listUsers } from './tools/list-users.js';
|
|
18
48
|
import { listWorkflowStates } from './tools/list-workflow-states.js';
|
|
49
|
+
import { moveIssueToProject } from './tools/move-issue-to-project.js';
|
|
50
|
+
import { removeIssueLabel } from './tools/remove-issue-label.js';
|
|
51
|
+
import { removeIssueSubscriber } from './tools/remove-issue-subscriber.js';
|
|
19
52
|
import { searchIssues } from './tools/search-issues.js';
|
|
53
|
+
import { setIssueCycle } from './tools/set-issue-cycle.js';
|
|
20
54
|
import { updateComment } from './tools/update-comment.js';
|
|
55
|
+
import { updateDocument } from './tools/update-document.js';
|
|
56
|
+
import { updateInitiative } from './tools/update-initiative.js';
|
|
21
57
|
import { updateIssue } from './tools/update-issue.js';
|
|
58
|
+
import { updateLabel } from './tools/update-label.js';
|
|
59
|
+
import { updateMilestone } from './tools/update-milestone.js';
|
|
22
60
|
import { updateProject } from './tools/update-project.js';
|
|
23
61
|
import { OpenTabsPlugin } from '@opentabs-dev/plugin-sdk';
|
|
24
62
|
class LinearPlugin extends OpenTabsPlugin {
|
|
@@ -28,27 +66,79 @@ class LinearPlugin extends OpenTabsPlugin {
|
|
|
28
66
|
urlPatterns = ['*://linear.app/*'];
|
|
29
67
|
homepage = 'https://linear.app';
|
|
30
68
|
tools = [
|
|
69
|
+
// Issues
|
|
31
70
|
searchIssues,
|
|
32
71
|
getIssue,
|
|
33
72
|
createIssue,
|
|
34
73
|
updateIssue,
|
|
35
74
|
deleteIssue,
|
|
36
75
|
archiveIssue,
|
|
76
|
+
batchUpdateIssues,
|
|
77
|
+
listSubIssues,
|
|
78
|
+
listIssueHistory,
|
|
79
|
+
// Issue relations
|
|
37
80
|
listIssueRelations,
|
|
81
|
+
createIssueRelation,
|
|
82
|
+
deleteIssueRelation,
|
|
83
|
+
// Issue labels (additive/subtractive)
|
|
84
|
+
addIssueLabel,
|
|
85
|
+
removeIssueLabel,
|
|
86
|
+
// Issue subscribers
|
|
87
|
+
addIssueSubscriber,
|
|
88
|
+
removeIssueSubscriber,
|
|
89
|
+
// Issue assignment
|
|
90
|
+
setIssueCycle,
|
|
91
|
+
moveIssueToProject,
|
|
92
|
+
// Attachments
|
|
93
|
+
listAttachments,
|
|
94
|
+
getAttachment,
|
|
95
|
+
createAttachment,
|
|
96
|
+
deleteAttachment,
|
|
97
|
+
// Comments
|
|
38
98
|
createComment,
|
|
39
99
|
updateComment,
|
|
100
|
+
deleteComment,
|
|
40
101
|
listComments,
|
|
102
|
+
// Projects
|
|
41
103
|
listProjects,
|
|
42
104
|
getProject,
|
|
43
105
|
createProject,
|
|
44
106
|
updateProject,
|
|
107
|
+
listProjectLabels,
|
|
108
|
+
// Project updates (health reports)
|
|
109
|
+
listProjectUpdates,
|
|
110
|
+
createProjectUpdate,
|
|
111
|
+
deleteProjectUpdate,
|
|
112
|
+
// Milestones
|
|
113
|
+
listMilestones,
|
|
114
|
+
getMilestone,
|
|
115
|
+
createMilestone,
|
|
116
|
+
updateMilestone,
|
|
117
|
+
// Initiatives
|
|
118
|
+
listInitiatives,
|
|
119
|
+
getInitiative,
|
|
120
|
+
createInitiative,
|
|
121
|
+
updateInitiative,
|
|
122
|
+
// Documents
|
|
123
|
+
listDocuments,
|
|
124
|
+
getDocument,
|
|
125
|
+
createDocument,
|
|
126
|
+
updateDocument,
|
|
127
|
+
// Teams & Users
|
|
45
128
|
listTeams,
|
|
129
|
+
getTeam,
|
|
130
|
+
listTeamMembers,
|
|
131
|
+
listUsers,
|
|
132
|
+
getUser,
|
|
133
|
+
getViewer,
|
|
134
|
+
// Workflow
|
|
46
135
|
listWorkflowStates,
|
|
47
136
|
listLabels,
|
|
48
137
|
createLabel,
|
|
49
|
-
|
|
50
|
-
|
|
138
|
+
updateLabel,
|
|
139
|
+
deleteLabel,
|
|
51
140
|
listCycles,
|
|
141
|
+
getCycle,
|
|
52
142
|
];
|
|
53
143
|
async isReady() {
|
|
54
144
|
if (isLinearAuthenticated())
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,MAAM,YAAa,SAAQ,cAAc;IAC9B,IAAI,GAAG,QAAQ,CAAC;IAChB,WAAW,GAAG,4BAA4B,CAAC;IAClC,WAAW,GAAG,QAAQ,CAAC;IAChC,WAAW,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC1B,QAAQ,GAAG,oBAAoB,CAAC;IACzC,KAAK,GAAqB;QACjC,YAAY;QACZ,QAAQ;QACR,WAAW;QACX,WAAW;QACX,WAAW;QACX,YAAY;QACZ,kBAAkB;QAClB,aAAa;QACb,aAAa;QACb,YAAY;QACZ,YAAY;QACZ,UAAU;QACV,aAAa;QACb,aAAa;QACb,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const addIssueLabel: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
|
|
3
|
+
issue_id: z.ZodString;
|
|
4
|
+
label_id: z.ZodString;
|
|
5
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
6
|
+
issue: z.ZodObject<{
|
|
7
|
+
id: z.ZodString;
|
|
8
|
+
identifier: z.ZodString;
|
|
9
|
+
title: z.ZodString;
|
|
10
|
+
description: z.ZodString;
|
|
11
|
+
priority: z.ZodNumber;
|
|
12
|
+
priority_label: z.ZodString;
|
|
13
|
+
state_name: z.ZodString;
|
|
14
|
+
state_type: z.ZodString;
|
|
15
|
+
assignee_name: z.ZodString;
|
|
16
|
+
team_key: z.ZodString;
|
|
17
|
+
team_name: z.ZodString;
|
|
18
|
+
label_names: z.ZodArray<z.ZodString>;
|
|
19
|
+
project_name: z.ZodString;
|
|
20
|
+
cycle_number: z.ZodNumber;
|
|
21
|
+
due_date: z.ZodString;
|
|
22
|
+
estimate: z.ZodNumber;
|
|
23
|
+
url: z.ZodString;
|
|
24
|
+
created_at: z.ZodString;
|
|
25
|
+
updated_at: z.ZodString;
|
|
26
|
+
}, z.core.$strip>;
|
|
27
|
+
}, z.core.$strip>>;
|
|
28
|
+
//# sourceMappingURL=add-issue-label.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-issue-label.d.ts","sourceRoot":"","sources":["../../src/tools/add-issue-label.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;kBA0DxB,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { graphql } from '../linear-api.js';
|
|
2
|
+
import { ToolError, defineTool } from '@opentabs-dev/plugin-sdk';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { issueSchema, mapIssue } from './schemas.js';
|
|
5
|
+
const ISSUE_FIELDS = `
|
|
6
|
+
id identifier title description priority priorityLabel url
|
|
7
|
+
createdAt updatedAt dueDate estimate
|
|
8
|
+
state { name type }
|
|
9
|
+
assignee { name displayName }
|
|
10
|
+
team { key name }
|
|
11
|
+
labels { nodes { id name } }
|
|
12
|
+
project { name }
|
|
13
|
+
cycle { number }
|
|
14
|
+
`;
|
|
15
|
+
export const addIssueLabel = defineTool({
|
|
16
|
+
name: 'add_issue_label',
|
|
17
|
+
displayName: 'Add Issue Label',
|
|
18
|
+
description: 'Add a label to an issue without removing existing labels. Unlike update_issue which replaces all labels, this appends.',
|
|
19
|
+
summary: 'Add a label to an issue',
|
|
20
|
+
icon: 'tag',
|
|
21
|
+
group: 'Issues',
|
|
22
|
+
input: z.object({
|
|
23
|
+
issue_id: z.string().describe('Issue UUID to add the label to'),
|
|
24
|
+
label_id: z.string().describe('Label UUID to add (use list_labels to find label IDs)'),
|
|
25
|
+
}),
|
|
26
|
+
output: z.object({
|
|
27
|
+
issue: issueSchema.describe('The updated issue with the new label'),
|
|
28
|
+
}),
|
|
29
|
+
handle: async (params) => {
|
|
30
|
+
// Fetch current label IDs
|
|
31
|
+
const current = await graphql(`query GetIssueLabels($id: String!) {
|
|
32
|
+
issue(id: $id) {
|
|
33
|
+
labels { nodes { id } }
|
|
34
|
+
}
|
|
35
|
+
}`, { id: params.issue_id });
|
|
36
|
+
if (!current.issue)
|
|
37
|
+
throw ToolError.notFound('Issue not found');
|
|
38
|
+
const existingIds = (current.issue.labels?.nodes ?? []).map(l => l.id);
|
|
39
|
+
if (existingIds.includes(params.label_id)) {
|
|
40
|
+
// Label already present — just return the issue
|
|
41
|
+
const data = await graphql(`query GetIssue($id: String!) { issue(id: $id) { ${ISSUE_FIELDS} } }`, { id: params.issue_id });
|
|
42
|
+
return { issue: mapIssue(data.issue) };
|
|
43
|
+
}
|
|
44
|
+
const labelIds = [...existingIds, params.label_id];
|
|
45
|
+
const data = await graphql(`mutation AddIssueLabel($id: String!, $input: IssueUpdateInput!) {
|
|
46
|
+
issueUpdate(id: $id, input: $input) {
|
|
47
|
+
success
|
|
48
|
+
issue { ${ISSUE_FIELDS} }
|
|
49
|
+
}
|
|
50
|
+
}`, { id: params.issue_id, input: { labelIds } });
|
|
51
|
+
if (!data.issueUpdate?.issue)
|
|
52
|
+
throw ToolError.internal('Failed to add label — no issue returned');
|
|
53
|
+
return { issue: mapIssue(data.issueUpdate.issue) };
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
//# sourceMappingURL=add-issue-label.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-issue-label.js","sourceRoot":"","sources":["../../src/tools/add-issue-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;AACxB,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAErD,MAAM,YAAY,GAAG;;;;;;;;;CASpB,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC;IACtC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,iBAAiB;IAC9B,WAAW,EACT,wHAAwH;IAC1H,OAAO,EAAE,yBAAyB;IAClC,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QAC/D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;KACvF,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,sCAAsC,CAAC;KACpE,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,0BAA0B;QAC1B,MAAM,OAAO,GAAG,MAAM,OAAO,CAG3B;;;;QAIE,EACF,EAAE,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,CACxB,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,KAAK;YAAE,MAAM,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QAEhE,MAAM,WAAW,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACvE,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1C,gDAAgD;YAChD,MAAM,IAAI,GAAG,MAAM,OAAO,CACxB,mDAAmD,YAAY,MAAM,EACrE,EAAE,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,CACxB,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAuC,CAAC,EAAE,CAAC;QAC3E,CAAC;QAED,MAAM,QAAQ,GAAG,CAAC,GAAG,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEnD,MAAM,IAAI,GAAG,MAAM,OAAO,CAGxB;;;oBAGc,YAAY;;QAExB,EACF,EAAE,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,CAC7C,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK;YAAE,MAAM,SAAS,CAAC,QAAQ,CAAC,yCAAyC,CAAC,CAAC;QAElG,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAuC,CAAC,EAAE,CAAC;IACvF,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const addIssueSubscriber: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
|
|
3
|
+
issue_id: z.ZodString;
|
|
4
|
+
subscriber_id: z.ZodString;
|
|
5
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
6
|
+
success: z.ZodBoolean;
|
|
7
|
+
}, z.core.$strip>>;
|
|
8
|
+
//# sourceMappingURL=add-issue-subscriber.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-issue-subscriber.d.ts","sourceRoot":"","sources":["../../src/tools/add-issue-subscriber.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,kBAAkB;;;;;kBA8B7B,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
|
+
export const addIssueSubscriber = defineTool({
|
|
5
|
+
name: 'add_issue_subscriber',
|
|
6
|
+
displayName: 'Add Issue Subscriber',
|
|
7
|
+
description: 'Subscribe a user to receive notifications for a Linear issue.',
|
|
8
|
+
summary: 'Subscribe a user to an issue',
|
|
9
|
+
icon: 'bell-plus',
|
|
10
|
+
group: 'Issues',
|
|
11
|
+
input: z.object({
|
|
12
|
+
issue_id: z.string().describe('Issue UUID to subscribe to'),
|
|
13
|
+
subscriber_id: z.string().describe('User UUID to subscribe (use list_users to find user IDs)'),
|
|
14
|
+
}),
|
|
15
|
+
output: z.object({
|
|
16
|
+
success: z.boolean().describe('Whether the subscription was successfully created'),
|
|
17
|
+
}),
|
|
18
|
+
handle: async (params) => {
|
|
19
|
+
const data = await graphql(`mutation AddIssueSubscriber($id: String!, $userId: String!) {
|
|
20
|
+
issueSubscribe(id: $id, userId: $userId) {
|
|
21
|
+
success
|
|
22
|
+
}
|
|
23
|
+
}`, { id: params.issue_id, userId: params.subscriber_id });
|
|
24
|
+
if (!data.issueSubscribe)
|
|
25
|
+
throw ToolError.internal('Failed to subscribe — no response');
|
|
26
|
+
return { success: data.issueSubscribe.success };
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
//# sourceMappingURL=add-issue-subscriber.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-issue-subscriber.js","sourceRoot":"","sources":["../../src/tools/add-issue-subscriber.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,kBAAkB,GAAG,UAAU,CAAC;IAC3C,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EAAE,sBAAsB;IACnC,WAAW,EAAE,+DAA+D;IAC5E,OAAO,EAAE,8BAA8B;IACvC,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QAC3D,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;KAC/F,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;KACnF,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,MAAM,EAAE,MAAM,CAAC,aAAa,EAAE,CACtD,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,MAAM,SAAS,CAAC,QAAQ,CAAC,mCAAmC,CAAC,CAAC;QAExF,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;IAClD,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const batchUpdateIssues: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
|
|
3
|
+
issue_ids: z.ZodArray<z.ZodString>;
|
|
4
|
+
state_id: z.ZodOptional<z.ZodString>;
|
|
5
|
+
assignee_id: z.ZodOptional<z.ZodString>;
|
|
6
|
+
priority: z.ZodOptional<z.ZodNumber>;
|
|
7
|
+
project_id: z.ZodOptional<z.ZodString>;
|
|
8
|
+
cycle_id: z.ZodOptional<z.ZodString>;
|
|
9
|
+
label_ids: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
10
|
+
due_date: z.ZodOptional<z.ZodString>;
|
|
11
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
12
|
+
issues: z.ZodArray<z.ZodObject<{
|
|
13
|
+
id: z.ZodString;
|
|
14
|
+
identifier: z.ZodString;
|
|
15
|
+
title: z.ZodString;
|
|
16
|
+
description: z.ZodString;
|
|
17
|
+
priority: z.ZodNumber;
|
|
18
|
+
priority_label: z.ZodString;
|
|
19
|
+
state_name: z.ZodString;
|
|
20
|
+
state_type: z.ZodString;
|
|
21
|
+
assignee_name: z.ZodString;
|
|
22
|
+
team_key: z.ZodString;
|
|
23
|
+
team_name: z.ZodString;
|
|
24
|
+
label_names: z.ZodArray<z.ZodString>;
|
|
25
|
+
project_name: z.ZodString;
|
|
26
|
+
cycle_number: z.ZodNumber;
|
|
27
|
+
due_date: z.ZodString;
|
|
28
|
+
estimate: z.ZodNumber;
|
|
29
|
+
url: z.ZodString;
|
|
30
|
+
created_at: z.ZodString;
|
|
31
|
+
updated_at: z.ZodString;
|
|
32
|
+
}, z.core.$strip>>;
|
|
33
|
+
failed: z.ZodArray<z.ZodString>;
|
|
34
|
+
}, z.core.$strip>>;
|
|
35
|
+
//# sourceMappingURL=batch-update-issues.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-update-issues.d.ts","sourceRoot":"","sources":["../../src/tools/batch-update-issues.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAyE5B,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { graphql } from '../linear-api.js';
|
|
2
|
+
import { ToolError, defineTool } from '@opentabs-dev/plugin-sdk';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { issueSchema, mapIssue } from './schemas.js';
|
|
5
|
+
const ISSUE_FIELDS = `
|
|
6
|
+
id identifier title description priority priorityLabel url
|
|
7
|
+
createdAt updatedAt dueDate estimate
|
|
8
|
+
state { name type }
|
|
9
|
+
assignee { name displayName }
|
|
10
|
+
team { key name }
|
|
11
|
+
labels { nodes { name } }
|
|
12
|
+
project { name }
|
|
13
|
+
cycle { number }
|
|
14
|
+
`;
|
|
15
|
+
export const batchUpdateIssues = defineTool({
|
|
16
|
+
name: 'batch_update_issues',
|
|
17
|
+
displayName: 'Batch Update Issues',
|
|
18
|
+
description: 'Apply the same update to multiple issues at once. All specified fields are applied to every issue in the batch. Maximum 25 issues per call.',
|
|
19
|
+
summary: 'Update multiple issues at once',
|
|
20
|
+
icon: 'layers',
|
|
21
|
+
group: 'Issues',
|
|
22
|
+
input: z.object({
|
|
23
|
+
issue_ids: z.array(z.string()).min(1).max(25).describe('Array of issue UUIDs to update (1–25)'),
|
|
24
|
+
state_id: z.string().optional().describe('New workflow state UUID'),
|
|
25
|
+
assignee_id: z.string().optional().describe('New assignee UUID'),
|
|
26
|
+
priority: z.number().optional().describe('New priority (0=none, 1=urgent, 2=high, 3=medium, 4=low)'),
|
|
27
|
+
project_id: z.string().optional().describe('Move to this project UUID'),
|
|
28
|
+
cycle_id: z.string().optional().describe('Assign to this cycle UUID'),
|
|
29
|
+
label_ids: z.array(z.string()).optional().describe('Replace labels with these label UUIDs'),
|
|
30
|
+
due_date: z.string().optional().describe('New due date in YYYY-MM-DD format'),
|
|
31
|
+
}),
|
|
32
|
+
output: z.object({
|
|
33
|
+
issues: z.array(issueSchema).describe('The updated issues'),
|
|
34
|
+
failed: z.array(z.string()).describe('Issue UUIDs that failed to update'),
|
|
35
|
+
}),
|
|
36
|
+
handle: async (params) => {
|
|
37
|
+
const input = {};
|
|
38
|
+
if (params.state_id !== undefined)
|
|
39
|
+
input.stateId = params.state_id;
|
|
40
|
+
if (params.assignee_id !== undefined)
|
|
41
|
+
input.assigneeId = params.assignee_id;
|
|
42
|
+
if (params.priority !== undefined)
|
|
43
|
+
input.priority = params.priority;
|
|
44
|
+
if (params.project_id !== undefined)
|
|
45
|
+
input.projectId = params.project_id;
|
|
46
|
+
if (params.cycle_id !== undefined)
|
|
47
|
+
input.cycleId = params.cycle_id;
|
|
48
|
+
if (params.label_ids !== undefined)
|
|
49
|
+
input.labelIds = params.label_ids;
|
|
50
|
+
if (params.due_date !== undefined)
|
|
51
|
+
input.dueDate = params.due_date;
|
|
52
|
+
if (Object.keys(input).length === 0) {
|
|
53
|
+
throw ToolError.validation('No update fields specified — provide at least one field to update');
|
|
54
|
+
}
|
|
55
|
+
// Build aliased mutations for batch execution in a single GraphQL request.
|
|
56
|
+
// Issue IDs are passed as GraphQL variables to prevent injection.
|
|
57
|
+
const varDefs = params.issue_ids.map((_, i) => `$id${i}: String!`).join(', ');
|
|
58
|
+
const aliases = params.issue_ids.map((_, i) => `issue${i}: issueUpdate(id: $id${i}, input: $input) {
|
|
59
|
+
success
|
|
60
|
+
issue { ${ISSUE_FIELDS} }
|
|
61
|
+
}`);
|
|
62
|
+
const query = `mutation BatchUpdateIssues($input: IssueUpdateInput!, ${varDefs}) {
|
|
63
|
+
${aliases.join('\n')}
|
|
64
|
+
}`;
|
|
65
|
+
const vars = { input };
|
|
66
|
+
for (let i = 0; i < params.issue_ids.length; i++) {
|
|
67
|
+
vars[`id${i}`] = params.issue_ids[i];
|
|
68
|
+
}
|
|
69
|
+
const data = await graphql(query, vars);
|
|
70
|
+
const issues = [];
|
|
71
|
+
const failed = [];
|
|
72
|
+
for (let i = 0; i < params.issue_ids.length; i++) {
|
|
73
|
+
const result = data[`issue${i}`];
|
|
74
|
+
if (result?.success && result.issue) {
|
|
75
|
+
issues.push(mapIssue(result.issue));
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
const issueId = params.issue_ids[i];
|
|
79
|
+
if (issueId)
|
|
80
|
+
failed.push(issueId);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return { issues, failed };
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
//# sourceMappingURL=batch-update-issues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-update-issues.js","sourceRoot":"","sources":["../../src/tools/batch-update-issues.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const createAttachment: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
|
|
3
|
+
issue_id: z.ZodString;
|
|
4
|
+
url: z.ZodString;
|
|
5
|
+
title: z.ZodString;
|
|
6
|
+
subtitle: z.ZodOptional<z.ZodString>;
|
|
7
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
8
|
+
attachment: z.ZodObject<{
|
|
9
|
+
id: z.ZodString;
|
|
10
|
+
title: z.ZodString;
|
|
11
|
+
subtitle: z.ZodString;
|
|
12
|
+
url: z.ZodString;
|
|
13
|
+
source_type: z.ZodString;
|
|
14
|
+
creator_name: z.ZodString;
|
|
15
|
+
created_at: z.ZodString;
|
|
16
|
+
updated_at: z.ZodString;
|
|
17
|
+
}, z.core.$strip>;
|
|
18
|
+
}, z.core.$strip>>;
|
|
19
|
+
//# sourceMappingURL=create-attachment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-attachment.d.ts","sourceRoot":"","sources":["../../src/tools/create-attachment.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;kBAiD3B,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 { attachmentSchema, mapAttachment } from './schemas.js';
|
|
5
|
+
export const createAttachment = defineTool({
|
|
6
|
+
name: 'create_attachment',
|
|
7
|
+
displayName: 'Create Attachment',
|
|
8
|
+
description: 'Link a URL (PR, document, design file, etc.) to a Linear issue as an attachment.',
|
|
9
|
+
summary: 'Link a URL to an issue',
|
|
10
|
+
icon: 'paperclip',
|
|
11
|
+
group: 'Issues',
|
|
12
|
+
input: z.object({
|
|
13
|
+
issue_id: z.string().describe('Issue UUID to attach to'),
|
|
14
|
+
url: z.string().describe('URL to attach (e.g. GitHub PR, Figma file, Google Doc)'),
|
|
15
|
+
title: z.string().describe('Attachment title'),
|
|
16
|
+
subtitle: z.string().optional().describe('Attachment subtitle or description'),
|
|
17
|
+
}),
|
|
18
|
+
output: z.object({
|
|
19
|
+
attachment: attachmentSchema.describe('The newly created attachment'),
|
|
20
|
+
}),
|
|
21
|
+
handle: async (params) => {
|
|
22
|
+
const input = {
|
|
23
|
+
issueId: params.issue_id,
|
|
24
|
+
url: params.url,
|
|
25
|
+
title: params.title,
|
|
26
|
+
};
|
|
27
|
+
if (params.subtitle !== undefined)
|
|
28
|
+
input.subtitle = params.subtitle;
|
|
29
|
+
const data = await graphql(`mutation CreateAttachment($input: AttachmentCreateInput!) {
|
|
30
|
+
attachmentCreate(input: $input) {
|
|
31
|
+
success
|
|
32
|
+
attachment {
|
|
33
|
+
id title subtitle url sourceType createdAt updatedAt
|
|
34
|
+
creator { name displayName }
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}`, { input });
|
|
38
|
+
if (!data.attachmentCreate?.attachment)
|
|
39
|
+
throw ToolError.internal('Attachment creation failed — no attachment returned');
|
|
40
|
+
return {
|
|
41
|
+
attachment: mapAttachment(data.attachmentCreate.attachment),
|
|
42
|
+
};
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
//# sourceMappingURL=create-attachment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-attachment.js","sourceRoot":"","sources":["../../src/tools/create-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,gBAAgB,GAAG,UAAU,CAAC;IACzC,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE,mBAAmB;IAChC,WAAW,EAAE,kFAAkF;IAC/F,OAAO,EAAE,wBAAwB;IACjC,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QACxD,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;QAClF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAC9C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;KAC/E,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,OAAO,EAAE,MAAM,CAAC,QAAQ;YACxB,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAC;QACF,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;YAAE,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAEpE,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,21 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const createDocument: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
|
|
3
|
+
title: z.ZodString;
|
|
4
|
+
content: z.ZodOptional<z.ZodString>;
|
|
5
|
+
project_id: z.ZodOptional<z.ZodString>;
|
|
6
|
+
icon: z.ZodOptional<z.ZodString>;
|
|
7
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
8
|
+
document: z.ZodObject<{
|
|
9
|
+
id: z.ZodString;
|
|
10
|
+
title: z.ZodString;
|
|
11
|
+
content: z.ZodString;
|
|
12
|
+
slug_id: z.ZodString;
|
|
13
|
+
icon: z.ZodString;
|
|
14
|
+
creator_name: z.ZodString;
|
|
15
|
+
project_name: z.ZodString;
|
|
16
|
+
url: z.ZodString;
|
|
17
|
+
created_at: z.ZodString;
|
|
18
|
+
updated_at: z.ZodString;
|
|
19
|
+
}, z.core.$strip>;
|
|
20
|
+
}, z.core.$strip>>;
|
|
21
|
+
//# sourceMappingURL=create-document.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-document.d.ts","sourceRoot":"","sources":["../../src/tools/create-document.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;kBA+CzB,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { graphql } from '../linear-api.js';
|
|
2
|
+
import { ToolError, defineTool } from '@opentabs-dev/plugin-sdk';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { documentSchema, mapDocument } from './schemas.js';
|
|
5
|
+
export const createDocument = defineTool({
|
|
6
|
+
name: 'create_document',
|
|
7
|
+
displayName: 'Create Document',
|
|
8
|
+
description: 'Create a new document in Linear, optionally associated with a project.',
|
|
9
|
+
summary: 'Create a new document',
|
|
10
|
+
icon: 'file-plus',
|
|
11
|
+
group: 'Documents',
|
|
12
|
+
input: z.object({
|
|
13
|
+
title: z.string().describe('Document title'),
|
|
14
|
+
content: z.string().optional().describe('Document content in markdown'),
|
|
15
|
+
project_id: z.string().optional().describe('Project UUID to associate the document with'),
|
|
16
|
+
icon: z.string().optional().describe('Icon emoji for the document'),
|
|
17
|
+
}),
|
|
18
|
+
output: z.object({
|
|
19
|
+
document: documentSchema.describe('The newly created document'),
|
|
20
|
+
}),
|
|
21
|
+
handle: async (params) => {
|
|
22
|
+
const input = {
|
|
23
|
+
title: params.title,
|
|
24
|
+
};
|
|
25
|
+
if (params.content !== undefined)
|
|
26
|
+
input.content = params.content;
|
|
27
|
+
if (params.project_id)
|
|
28
|
+
input.projectId = params.project_id;
|
|
29
|
+
if (params.icon)
|
|
30
|
+
input.icon = params.icon;
|
|
31
|
+
const data = await graphql(`mutation CreateDocument($input: DocumentCreateInput!) {
|
|
32
|
+
documentCreate(input: $input) {
|
|
33
|
+
success
|
|
34
|
+
document {
|
|
35
|
+
id title content slugId icon url createdAt updatedAt
|
|
36
|
+
creator { name displayName }
|
|
37
|
+
project { name }
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}`, { input });
|
|
41
|
+
if (!data.documentCreate?.document)
|
|
42
|
+
throw ToolError.internal('Document creation failed — no document returned');
|
|
43
|
+
return { document: mapDocument(data.documentCreate.document) };
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
//# sourceMappingURL=create-document.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-document.js","sourceRoot":"","sources":["../../src/tools/create-document.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,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3D,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAAC;IACvC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,iBAAiB;IAC9B,WAAW,EAAE,wEAAwE;IACrF,OAAO,EAAE,uBAAuB;IAChC,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAC5C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QACvE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;QACzF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;KACpE,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC,4BAA4B,CAAC;KAChE,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,KAAK,GAA4B;YACrC,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAC;QACF,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;YAAE,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QACjE,IAAI,MAAM,CAAC,UAAU;YAAE,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC;QAC3D,IAAI,MAAM,CAAC,IAAI;YAAE,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QAE1C,MAAM,IAAI,GAAG,MAAM,OAAO,CAMxB;;;;;;;;;QASE,EACF,EAAE,KAAK,EAAE,CACV,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ;YAAE,MAAM,SAAS,CAAC,QAAQ,CAAC,iDAAiD,CAAC,CAAC;QAEhH,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,QAA6C,CAAC,EAAE,CAAC;IACtG,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const createInitiative: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
|
|
3
|
+
name: z.ZodString;
|
|
4
|
+
description: z.ZodOptional<z.ZodString>;
|
|
5
|
+
status: z.ZodOptional<z.ZodEnum<{
|
|
6
|
+
Planned: "Planned";
|
|
7
|
+
Active: "Active";
|
|
8
|
+
Completed: "Completed";
|
|
9
|
+
}>>;
|
|
10
|
+
color: z.ZodOptional<z.ZodString>;
|
|
11
|
+
owner_id: z.ZodOptional<z.ZodString>;
|
|
12
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
13
|
+
initiative: z.ZodObject<{
|
|
14
|
+
id: z.ZodString;
|
|
15
|
+
name: z.ZodString;
|
|
16
|
+
description: z.ZodString;
|
|
17
|
+
status: z.ZodString;
|
|
18
|
+
color: z.ZodString;
|
|
19
|
+
icon: z.ZodString;
|
|
20
|
+
owner_name: z.ZodString;
|
|
21
|
+
url: z.ZodString;
|
|
22
|
+
created_at: z.ZodString;
|
|
23
|
+
updated_at: z.ZodString;
|
|
24
|
+
}, z.core.$strip>;
|
|
25
|
+
}, z.core.$strip>>;
|
|
26
|
+
//# sourceMappingURL=create-initiative.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-initiative.d.ts","sourceRoot":"","sources":["../../src/tools/create-initiative.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;kBAmD3B,CAAC"}
|