@kb-labs/clickup-entry 2.96.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 (122) hide show
  1. package/README.md +69 -0
  2. package/dist/commands/folder-create.d.ts +13 -0
  3. package/dist/commands/folder-create.js +94 -0
  4. package/dist/commands/folder-create.js.map +1 -0
  5. package/dist/commands/folder-delete.d.ts +14 -0
  6. package/dist/commands/folder-delete.js +92 -0
  7. package/dist/commands/folder-delete.js.map +1 -0
  8. package/dist/commands/folder-update.d.ts +13 -0
  9. package/dist/commands/folder-update.js +94 -0
  10. package/dist/commands/folder-update.js.map +1 -0
  11. package/dist/commands/list-create.d.ts +15 -0
  12. package/dist/commands/list-create.js +96 -0
  13. package/dist/commands/list-create.js.map +1 -0
  14. package/dist/commands/list-delete.d.ts +14 -0
  15. package/dist/commands/list-delete.js +92 -0
  16. package/dist/commands/list-delete.js.map +1 -0
  17. package/dist/commands/list-statuses.d.ts +11 -0
  18. package/dist/commands/list-statuses.js +88 -0
  19. package/dist/commands/list-statuses.js.map +1 -0
  20. package/dist/commands/list-tasks.d.ts +16 -0
  21. package/dist/commands/list-tasks.js +118 -0
  22. package/dist/commands/list-tasks.js.map +1 -0
  23. package/dist/commands/list-update.d.ts +13 -0
  24. package/dist/commands/list-update.js +92 -0
  25. package/dist/commands/list-update.js.map +1 -0
  26. package/dist/commands/space-create.d.ts +15 -0
  27. package/dist/commands/space-create.js +94 -0
  28. package/dist/commands/space-create.js.map +1 -0
  29. package/dist/commands/space-delete.d.ts +14 -0
  30. package/dist/commands/space-delete.js +92 -0
  31. package/dist/commands/space-delete.js.map +1 -0
  32. package/dist/commands/space-update.d.ts +14 -0
  33. package/dist/commands/space-update.js +93 -0
  34. package/dist/commands/space-update.js.map +1 -0
  35. package/dist/commands/task-comment-add.d.ts +15 -0
  36. package/dist/commands/task-comment-add.js +95 -0
  37. package/dist/commands/task-comment-add.js.map +1 -0
  38. package/dist/commands/task-comment-list.d.ts +11 -0
  39. package/dist/commands/task-comment-list.js +91 -0
  40. package/dist/commands/task-comment-list.js.map +1 -0
  41. package/dist/commands/task-create.d.ts +20 -0
  42. package/dist/commands/task-create.js +116 -0
  43. package/dist/commands/task-create.js.map +1 -0
  44. package/dist/commands/task-delete.d.ts +14 -0
  45. package/dist/commands/task-delete.js +92 -0
  46. package/dist/commands/task-delete.js.map +1 -0
  47. package/dist/commands/task-get.d.ts +14 -0
  48. package/dist/commands/task-get.js +128 -0
  49. package/dist/commands/task-get.js.map +1 -0
  50. package/dist/commands/task-search.d.ts +16 -0
  51. package/dist/commands/task-search.js +112 -0
  52. package/dist/commands/task-search.js.map +1 -0
  53. package/dist/commands/task-update.d.ts +19 -0
  54. package/dist/commands/task-update.js +124 -0
  55. package/dist/commands/task-update.js.map +1 -0
  56. package/dist/commands/workspace.d.ts +11 -0
  57. package/dist/commands/workspace.js +102 -0
  58. package/dist/commands/workspace.js.map +1 -0
  59. package/dist/index.d.ts +2 -0
  60. package/dist/index.js +474 -0
  61. package/dist/index.js.map +1 -0
  62. package/dist/manifest.d.ts +171 -0
  63. package/dist/manifest.js +474 -0
  64. package/dist/manifest.js.map +1 -0
  65. package/dist/rest/handlers/folder-create-handler.d.ts +11 -0
  66. package/dist/rest/handlers/folder-create-handler.js +57 -0
  67. package/dist/rest/handlers/folder-create-handler.js.map +1 -0
  68. package/dist/rest/handlers/folder-delete-handler.d.ts +11 -0
  69. package/dist/rest/handlers/folder-delete-handler.js +57 -0
  70. package/dist/rest/handlers/folder-delete-handler.js.map +1 -0
  71. package/dist/rest/handlers/folder-update-handler.d.ts +11 -0
  72. package/dist/rest/handlers/folder-update-handler.js +57 -0
  73. package/dist/rest/handlers/folder-update-handler.js.map +1 -0
  74. package/dist/rest/handlers/list-create-handler.d.ts +17 -0
  75. package/dist/rest/handlers/list-create-handler.js +59 -0
  76. package/dist/rest/handlers/list-create-handler.js.map +1 -0
  77. package/dist/rest/handlers/list-delete-handler.d.ts +11 -0
  78. package/dist/rest/handlers/list-delete-handler.js +57 -0
  79. package/dist/rest/handlers/list-delete-handler.js.map +1 -0
  80. package/dist/rest/handlers/list-statuses-handler.d.ts +9 -0
  81. package/dist/rest/handlers/list-statuses-handler.js +57 -0
  82. package/dist/rest/handlers/list-statuses-handler.js.map +1 -0
  83. package/dist/rest/handlers/list-tasks-handler.d.ts +16 -0
  84. package/dist/rest/handlers/list-tasks-handler.js +64 -0
  85. package/dist/rest/handlers/list-tasks-handler.js.map +1 -0
  86. package/dist/rest/handlers/list-update-handler.d.ts +15 -0
  87. package/dist/rest/handlers/list-update-handler.js +57 -0
  88. package/dist/rest/handlers/list-update-handler.js.map +1 -0
  89. package/dist/rest/handlers/search-handler.d.ts +16 -0
  90. package/dist/rest/handlers/search-handler.js +65 -0
  91. package/dist/rest/handlers/search-handler.js.map +1 -0
  92. package/dist/rest/handlers/space-create-handler.d.ts +11 -0
  93. package/dist/rest/handlers/space-create-handler.js +55 -0
  94. package/dist/rest/handlers/space-create-handler.js.map +1 -0
  95. package/dist/rest/handlers/space-delete-handler.d.ts +11 -0
  96. package/dist/rest/handlers/space-delete-handler.js +57 -0
  97. package/dist/rest/handlers/space-delete-handler.js.map +1 -0
  98. package/dist/rest/handlers/space-update-handler.d.ts +13 -0
  99. package/dist/rest/handlers/space-update-handler.js +57 -0
  100. package/dist/rest/handlers/space-update-handler.js.map +1 -0
  101. package/dist/rest/handlers/task-comment-add-handler.d.ts +13 -0
  102. package/dist/rest/handlers/task-comment-add-handler.js +61 -0
  103. package/dist/rest/handlers/task-comment-add-handler.js.map +1 -0
  104. package/dist/rest/handlers/task-comments-handler.d.ts +9 -0
  105. package/dist/rest/handlers/task-comments-handler.js +57 -0
  106. package/dist/rest/handlers/task-comments-handler.js.map +1 -0
  107. package/dist/rest/handlers/task-create-handler.d.ts +18 -0
  108. package/dist/rest/handlers/task-create-handler.js +58 -0
  109. package/dist/rest/handlers/task-create-handler.js.map +1 -0
  110. package/dist/rest/handlers/task-delete-handler.d.ts +11 -0
  111. package/dist/rest/handlers/task-delete-handler.js +58 -0
  112. package/dist/rest/handlers/task-delete-handler.js.map +1 -0
  113. package/dist/rest/handlers/task-get-handler.d.ts +12 -0
  114. package/dist/rest/handlers/task-get-handler.js +61 -0
  115. package/dist/rest/handlers/task-get-handler.js.map +1 -0
  116. package/dist/rest/handlers/task-update-handler.d.ts +19 -0
  117. package/dist/rest/handlers/task-update-handler.js +58 -0
  118. package/dist/rest/handlers/task-update-handler.js.map +1 -0
  119. package/dist/rest/handlers/workspace-handler.d.ts +6 -0
  120. package/dist/rest/handlers/workspace-handler.js +56 -0
  121. package/dist/rest/handlers/workspace-handler.js.map +1 -0
  122. package/package.json +54 -0
@@ -0,0 +1,474 @@
1
+ import { combinePermissions } from '@kb-labs/sdk';
2
+ import { CLICKUP_ROUTES, CLICKUP_BASE_PATH } from '@kb-labs/clickup-contracts';
3
+
4
+ // src/manifest.ts
5
+ var permissions = combinePermissions().withEnv(["CLICKUP_API_KEY", "CLICKUP_TEAM_ID"]).withNetwork({ fetch: ["api.clickup.com"] }).withQuotas({ timeoutMs: 3e4, memoryMb: 128 }).build();
6
+ var manifest = {
7
+ schema: "kb.plugin/3",
8
+ id: "@kb-labs/clickup",
9
+ version: "0.1.0",
10
+ display: {
11
+ name: "ClickUp",
12
+ description: "Manage ClickUp tasks, lists, and comments from CLI and REST API",
13
+ tags: ["clickup", "tasks", "productivity"]
14
+ },
15
+ permissions,
16
+ cli: {
17
+ groupMeta: [
18
+ { path: "clickup", describe: "ClickUp task management" },
19
+ { path: "clickup task", describe: "Task operations" },
20
+ { path: "clickup task comments", describe: "Task comment operations" },
21
+ { path: "clickup list", describe: "List operations" },
22
+ { path: "clickup space", describe: "Space operations" },
23
+ { path: "clickup folder", describe: "Folder operations" }
24
+ ],
25
+ commands: [
26
+ // ── Workspace ────────────────────────────────────────────────────────────
27
+ {
28
+ path: "clickup workspace",
29
+ category: "Workspace",
30
+ operationType: "read",
31
+ describe: "Show full workspace hierarchy (spaces \u2192 folders \u2192 lists)",
32
+ handler: "./commands/workspace.js#default",
33
+ flags: [
34
+ { name: "json", type: "boolean", description: "Output JSON (slim by default)" },
35
+ { name: "full", type: "boolean", description: "Output full raw JSON (requires --json)" }
36
+ ],
37
+ examples: [
38
+ "kb clickup workspace",
39
+ "kb clickup workspace --json",
40
+ "kb clickup workspace --json --full"
41
+ ]
42
+ },
43
+ // ── Tasks ─────────────────────────────────────────────────────────────────
44
+ {
45
+ path: "clickup task search",
46
+ category: "Tasks",
47
+ operationType: "read",
48
+ describe: "Search tasks across the workspace",
49
+ handler: "./commands/task-search.js#default",
50
+ flags: [
51
+ { name: "list", type: "string", description: "Filter by list ID" },
52
+ { name: "status", type: "string", description: "Filter by status (comma-separated)" },
53
+ { name: "assignee", type: "string", description: "Filter by assignee user IDs (comma-separated)" },
54
+ { name: "limit", type: "number", description: "Max results", default: 20 },
55
+ { name: "closed", type: "boolean", description: "Include closed tasks" },
56
+ { name: "json", type: "boolean", description: "Output JSON (slim by default)" },
57
+ { name: "full", type: "boolean", description: "Output full raw JSON (requires --json)" }
58
+ ],
59
+ examples: [
60
+ 'kb clickup task search "my bug"',
61
+ 'kb clickup task search --status "in progress" --json'
62
+ ]
63
+ },
64
+ {
65
+ path: "clickup task get",
66
+ category: "Tasks",
67
+ operationType: "read",
68
+ describe: "Get full task details including comments",
69
+ handler: "./commands/task-get.js#default",
70
+ flags: [
71
+ { name: "json", type: "boolean", description: "Output JSON (slim by default)" },
72
+ { name: "full", type: "boolean", description: "Output full raw JSON (requires --json)" }
73
+ ],
74
+ examples: [
75
+ "kb clickup task get abc123",
76
+ "kb clickup task get abc123 --json"
77
+ ]
78
+ },
79
+ {
80
+ path: "clickup task create",
81
+ category: "Tasks",
82
+ operationType: "mutate",
83
+ describe: "Create a new task",
84
+ handler: "./commands/task-create.js#default",
85
+ flags: [
86
+ { name: "list", type: "string", description: "Target list ID (required)" },
87
+ { name: "name", type: "string", description: "Task name (required)" },
88
+ { name: "desc", type: "string", description: "Task description" },
89
+ { name: "status", type: "string", description: "Initial status" },
90
+ { name: "priority", type: "number", description: "1=urgent 2=high 3=normal 4=low" },
91
+ { name: "assignee", type: "string", description: "Assignee user IDs (comma-separated)" },
92
+ { name: "due", type: "string", description: "Due date (ISO string or unix ms)" },
93
+ { name: "json", type: "boolean", description: "Output JSON (slim by default)" },
94
+ { name: "full", type: "boolean", description: "Output full raw JSON (requires --json)" }
95
+ ],
96
+ examples: [
97
+ 'kb clickup task create --list abc123 --name "Fix login bug" --priority 2',
98
+ 'kb clickup task create --list abc123 --name "Task" --json'
99
+ ]
100
+ },
101
+ {
102
+ path: "clickup task update",
103
+ category: "Tasks",
104
+ operationType: "mutate",
105
+ describe: "Update an existing task",
106
+ handler: "./commands/task-update.js#default",
107
+ flags: [
108
+ { name: "name", type: "string", description: "New task name" },
109
+ { name: "desc", type: "string", description: "New description" },
110
+ { name: "status", type: "string", description: "New status" },
111
+ { name: "priority", type: "number", description: "1=urgent 2=high 3=normal 4=low" },
112
+ { name: "assignee_add", type: "string", description: "User IDs to add (comma-separated)" },
113
+ { name: "assignee_rem", type: "string", description: "User IDs to remove (comma-separated)" },
114
+ { name: "due", type: "string", description: 'Due date (ISO, unix ms, or "none")' },
115
+ { name: "json", type: "boolean", description: "Output JSON (slim by default)" },
116
+ { name: "full", type: "boolean", description: "Output full raw JSON (requires --json)" }
117
+ ],
118
+ examples: [
119
+ 'kb clickup task update abc123 --status "in progress"',
120
+ "kb clickup task update abc123 --priority 1 --json"
121
+ ]
122
+ },
123
+ {
124
+ path: "clickup task delete",
125
+ category: "Tasks",
126
+ operationType: "mutate",
127
+ describe: "Delete a task",
128
+ handler: "./commands/task-delete.js#default",
129
+ flags: [
130
+ { name: "json", type: "boolean", description: "Output raw JSON" }
131
+ ],
132
+ examples: [
133
+ "kb clickup task delete abc123 --yes",
134
+ "kb clickup task delete abc123 --dry-run"
135
+ ]
136
+ },
137
+ // ── Comments ─────────────────────────────────────────────────────────────
138
+ {
139
+ path: "clickup task comments list",
140
+ category: "Comments",
141
+ operationType: "read",
142
+ describe: "List comments on a task",
143
+ handler: "./commands/task-comment-list.js#default",
144
+ flags: [
145
+ { name: "json", type: "boolean", description: "Output JSON (slim by default)" },
146
+ { name: "full", type: "boolean", description: "Output full raw JSON (requires --json)" }
147
+ ],
148
+ examples: [
149
+ "kb clickup task comments list abc123",
150
+ "kb clickup task comments list abc123 --json"
151
+ ]
152
+ },
153
+ {
154
+ path: "clickup task comments add",
155
+ category: "Comments",
156
+ operationType: "mutate",
157
+ describe: "Add a comment to a task",
158
+ handler: "./commands/task-comment-add.js#default",
159
+ flags: [
160
+ { name: "text", type: "string", description: "Comment text (required)" },
161
+ { name: "assignee", type: "number", description: "Assign comment to user ID" },
162
+ { name: "notify", type: "boolean", description: "Notify all task watchers" },
163
+ { name: "json", type: "boolean", description: "Output JSON (slim by default)" },
164
+ { name: "full", type: "boolean", description: "Output full raw JSON (requires --json)" }
165
+ ],
166
+ examples: [
167
+ 'kb clickup task comments add abc123 --text "Fixed in branch feature/x"'
168
+ ]
169
+ },
170
+ // ── Spaces ───────────────────────────────────────────────────────────────
171
+ {
172
+ path: "clickup space create",
173
+ category: "Spaces",
174
+ operationType: "mutate",
175
+ describe: "Create a new space",
176
+ handler: "./commands/space-create.js#default",
177
+ flags: [
178
+ { name: "name", type: "string", description: "Space name (required)" },
179
+ { name: "color", type: "string", description: "Space color (hex)" },
180
+ { name: "private", type: "boolean", description: "Make space private" },
181
+ { name: "json", type: "boolean", description: "Output JSON (slim by default)" },
182
+ { name: "full", type: "boolean", description: "Output full raw JSON (requires --json)" }
183
+ ],
184
+ examples: [
185
+ 'kb clickup space create --name "Engineering"',
186
+ 'kb clickup space create --name "Design" --color "#ff0000"'
187
+ ]
188
+ },
189
+ {
190
+ path: "clickup space update",
191
+ category: "Spaces",
192
+ operationType: "mutate",
193
+ describe: "Update a space",
194
+ handler: "./commands/space-update.js#default",
195
+ flags: [
196
+ { name: "name", type: "string", description: "New space name" },
197
+ { name: "color", type: "string", description: "New color (hex)" },
198
+ { name: "json", type: "boolean", description: "Output JSON (slim by default)" },
199
+ { name: "full", type: "boolean", description: "Output full raw JSON (requires --json)" }
200
+ ],
201
+ examples: [
202
+ 'kb clickup space update spaceId --name "Backend"'
203
+ ]
204
+ },
205
+ {
206
+ path: "clickup space delete",
207
+ category: "Spaces",
208
+ operationType: "mutate",
209
+ describe: "Delete a space",
210
+ handler: "./commands/space-delete.js#default",
211
+ flags: [
212
+ { name: "force", type: "boolean", description: "Skip confirmation" },
213
+ { name: "json", type: "boolean", description: "Output raw JSON" }
214
+ ],
215
+ examples: [
216
+ "kb clickup space delete spaceId --force"
217
+ ]
218
+ },
219
+ // ── Folders ───────────────────────────────────────────────────────────────
220
+ {
221
+ path: "clickup folder create",
222
+ category: "Folders",
223
+ operationType: "mutate",
224
+ describe: "Create a new folder in a space",
225
+ handler: "./commands/folder-create.js#default",
226
+ flags: [
227
+ { name: "space", type: "string", description: "Space ID (required)" },
228
+ { name: "name", type: "string", description: "Folder name (required)" },
229
+ { name: "json", type: "boolean", description: "Output JSON (slim by default)" },
230
+ { name: "full", type: "boolean", description: "Output full raw JSON (requires --json)" }
231
+ ],
232
+ examples: [
233
+ 'kb clickup folder create --space spaceId --name "Q3 Sprint"'
234
+ ]
235
+ },
236
+ {
237
+ path: "clickup folder update",
238
+ category: "Folders",
239
+ operationType: "mutate",
240
+ describe: "Rename a folder",
241
+ handler: "./commands/folder-update.js#default",
242
+ flags: [
243
+ { name: "name", type: "string", description: "New folder name (required)" },
244
+ { name: "json", type: "boolean", description: "Output JSON (slim by default)" },
245
+ { name: "full", type: "boolean", description: "Output full raw JSON (requires --json)" }
246
+ ],
247
+ examples: [
248
+ 'kb clickup folder update folderId --name "Q4 Sprint"'
249
+ ]
250
+ },
251
+ {
252
+ path: "clickup folder delete",
253
+ category: "Folders",
254
+ operationType: "mutate",
255
+ describe: "Delete a folder",
256
+ handler: "./commands/folder-delete.js#default",
257
+ flags: [
258
+ { name: "force", type: "boolean", description: "Skip confirmation" },
259
+ { name: "json", type: "boolean", description: "Output raw JSON" }
260
+ ],
261
+ examples: [
262
+ "kb clickup folder delete folderId --force"
263
+ ]
264
+ },
265
+ // ── List CRUD ─────────────────────────────────────────────────────────────
266
+ {
267
+ path: "clickup list create",
268
+ category: "Lists",
269
+ operationType: "mutate",
270
+ describe: "Create a new list in a folder or space",
271
+ handler: "./commands/list-create.js#default",
272
+ flags: [
273
+ { name: "folder", type: "string", description: "Folder ID (use instead of --space)" },
274
+ { name: "space", type: "string", description: "Space ID for folderless list" },
275
+ { name: "name", type: "string", description: "List name (required)" },
276
+ { name: "json", type: "boolean", description: "Output JSON (slim by default)" },
277
+ { name: "full", type: "boolean", description: "Output full raw JSON (requires --json)" }
278
+ ],
279
+ examples: [
280
+ 'kb clickup list create --folder folderId --name "Backlog"',
281
+ 'kb clickup list create --space spaceId --name "Inbox"'
282
+ ]
283
+ },
284
+ {
285
+ path: "clickup list update",
286
+ category: "Lists",
287
+ operationType: "mutate",
288
+ describe: "Update a list",
289
+ handler: "./commands/list-update.js#default",
290
+ flags: [
291
+ { name: "name", type: "string", description: "New list name" },
292
+ { name: "json", type: "boolean", description: "Output JSON (slim by default)" },
293
+ { name: "full", type: "boolean", description: "Output full raw JSON (requires --json)" }
294
+ ],
295
+ examples: [
296
+ 'kb clickup list update listId --name "Sprint 5"'
297
+ ]
298
+ },
299
+ {
300
+ path: "clickup list delete",
301
+ category: "Lists",
302
+ operationType: "mutate",
303
+ describe: "Delete a list",
304
+ handler: "./commands/list-delete.js#default",
305
+ flags: [
306
+ { name: "force", type: "boolean", description: "Skip confirmation" },
307
+ { name: "json", type: "boolean", description: "Output raw JSON" }
308
+ ],
309
+ examples: [
310
+ "kb clickup list delete listId --force"
311
+ ]
312
+ },
313
+ // ── List ─────────────────────────────────────────────────────────────────
314
+ {
315
+ path: "clickup list tasks",
316
+ category: "Lists",
317
+ operationType: "read",
318
+ describe: "List tasks in a specific list",
319
+ handler: "./commands/list-tasks.js#default",
320
+ flags: [
321
+ { name: "status", type: "string", description: "Filter by status (comma-separated)" },
322
+ { name: "assignee", type: "string", description: "Filter by user IDs (comma-separated)" },
323
+ { name: "limit", type: "number", description: "Max results", default: 50 },
324
+ { name: "page", type: "number", description: "Page number", default: 0 },
325
+ { name: "closed", type: "boolean", description: "Include closed tasks" },
326
+ { name: "json", type: "boolean", description: "Output JSON (slim by default)" },
327
+ { name: "full", type: "boolean", description: "Output full raw JSON (requires --json)" }
328
+ ],
329
+ examples: [
330
+ "kb clickup list tasks listId123",
331
+ 'kb clickup list tasks listId123 --status "open" --json'
332
+ ]
333
+ },
334
+ {
335
+ path: "clickup list statuses",
336
+ category: "Lists",
337
+ operationType: "read",
338
+ describe: "List available statuses for a list",
339
+ handler: "./commands/list-statuses.js#default",
340
+ flags: [
341
+ { name: "json", type: "boolean", description: "Output JSON (slim by default)" },
342
+ { name: "full", type: "boolean", description: "Output full raw JSON (requires --json)" }
343
+ ],
344
+ examples: [
345
+ "kb clickup list statuses listId123",
346
+ "kb clickup list statuses listId123 --json"
347
+ ]
348
+ }
349
+ ]
350
+ },
351
+ rest: {
352
+ basePath: CLICKUP_BASE_PATH,
353
+ routes: [
354
+ {
355
+ method: "GET",
356
+ path: CLICKUP_ROUTES.WORKSPACE,
357
+ handler: "./rest/handlers/workspace-handler.js#default"
358
+ },
359
+ {
360
+ method: "GET",
361
+ path: CLICKUP_ROUTES.TASKS_SEARCH,
362
+ handler: "./rest/handlers/search-handler.js#default"
363
+ },
364
+ {
365
+ method: "GET",
366
+ path: CLICKUP_ROUTES.TASK,
367
+ handler: "./rest/handlers/task-get-handler.js#default"
368
+ },
369
+ {
370
+ method: "POST",
371
+ path: CLICKUP_ROUTES.TASKS_IN_LIST,
372
+ handler: "./rest/handlers/task-create-handler.js#default",
373
+ input: { zod: "@kb-labs/clickup-contracts#CreateTaskSchema" }
374
+ },
375
+ {
376
+ method: "PATCH",
377
+ path: CLICKUP_ROUTES.TASK,
378
+ handler: "./rest/handlers/task-update-handler.js#default",
379
+ input: { zod: "@kb-labs/clickup-contracts#UpdateTaskSchema" }
380
+ },
381
+ {
382
+ method: "DELETE",
383
+ path: CLICKUP_ROUTES.TASK,
384
+ handler: "./rest/handlers/task-delete-handler.js#default"
385
+ },
386
+ {
387
+ method: "GET",
388
+ path: CLICKUP_ROUTES.TASKS_IN_LIST,
389
+ handler: "./rest/handlers/list-tasks-handler.js#default"
390
+ },
391
+ {
392
+ method: "GET",
393
+ path: CLICKUP_ROUTES.LIST_STATUSES,
394
+ handler: "./rest/handlers/list-statuses-handler.js#default"
395
+ },
396
+ {
397
+ method: "GET",
398
+ path: CLICKUP_ROUTES.TASK_COMMENTS,
399
+ handler: "./rest/handlers/task-comments-handler.js#default"
400
+ },
401
+ {
402
+ method: "POST",
403
+ path: CLICKUP_ROUTES.TASK_COMMENTS,
404
+ handler: "./rest/handlers/task-comment-add-handler.js#default",
405
+ input: { zod: "@kb-labs/clickup-contracts#AddCommentSchema" }
406
+ },
407
+ // ── Spaces
408
+ {
409
+ method: "POST",
410
+ path: CLICKUP_ROUTES.SPACES,
411
+ handler: "./rest/handlers/space-create-handler.js#default",
412
+ input: { zod: "@kb-labs/clickup-contracts#CreateSpaceSchema" }
413
+ },
414
+ {
415
+ method: "PATCH",
416
+ path: CLICKUP_ROUTES.SPACE,
417
+ handler: "./rest/handlers/space-update-handler.js#default",
418
+ input: { zod: "@kb-labs/clickup-contracts#UpdateSpaceSchema" }
419
+ },
420
+ {
421
+ method: "DELETE",
422
+ path: CLICKUP_ROUTES.SPACE,
423
+ handler: "./rest/handlers/space-delete-handler.js#default"
424
+ },
425
+ // ── Folders
426
+ {
427
+ method: "POST",
428
+ path: CLICKUP_ROUTES.SPACE_FOLDERS,
429
+ handler: "./rest/handlers/folder-create-handler.js#default",
430
+ input: { zod: "@kb-labs/clickup-contracts#CreateFolderSchema" }
431
+ },
432
+ {
433
+ method: "PATCH",
434
+ path: CLICKUP_ROUTES.FOLDER,
435
+ handler: "./rest/handlers/folder-update-handler.js#default",
436
+ input: { zod: "@kb-labs/clickup-contracts#UpdateFolderSchema" }
437
+ },
438
+ {
439
+ method: "DELETE",
440
+ path: CLICKUP_ROUTES.FOLDER,
441
+ handler: "./rest/handlers/folder-delete-handler.js#default"
442
+ },
443
+ // ── Lists CRUD
444
+ {
445
+ method: "POST",
446
+ path: CLICKUP_ROUTES.FOLDER_LISTS,
447
+ handler: "./rest/handlers/list-create-handler.js#default",
448
+ input: { zod: "@kb-labs/clickup-contracts#CreateListSchema" }
449
+ },
450
+ {
451
+ method: "POST",
452
+ path: CLICKUP_ROUTES.SPACE_LISTS,
453
+ handler: "./rest/handlers/list-create-handler.js#default",
454
+ input: { zod: "@kb-labs/clickup-contracts#CreateListSchema" }
455
+ },
456
+ {
457
+ method: "PATCH",
458
+ path: CLICKUP_ROUTES.LIST,
459
+ handler: "./rest/handlers/list-update-handler.js#default",
460
+ input: { zod: "@kb-labs/clickup-contracts#UpdateListSchema" }
461
+ },
462
+ {
463
+ method: "DELETE",
464
+ path: CLICKUP_ROUTES.LIST,
465
+ handler: "./rest/handlers/list-delete-handler.js#default"
466
+ }
467
+ ]
468
+ }
469
+ };
470
+ var manifest_default = manifest;
471
+
472
+ export { manifest_default as default, manifest };
473
+ //# sourceMappingURL=manifest.js.map
474
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/manifest.ts"],"names":[],"mappings":"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","file":"manifest.js","sourcesContent":["import { combinePermissions } from '@kb-labs/sdk';\nimport { CLICKUP_BASE_PATH, CLICKUP_ROUTES } from '@kb-labs/clickup-contracts';\n\n\nconst permissions = combinePermissions()\n .withEnv(['CLICKUP_API_KEY', 'CLICKUP_TEAM_ID'])\n .withNetwork({ fetch: ['api.clickup.com'] })\n .withQuotas({ timeoutMs: 30000, memoryMb: 128 })\n .build();\n\nexport const manifest = {\n schema: 'kb.plugin/3',\n id: '@kb-labs/clickup',\n version: '0.1.0',\n\n display: {\n name: 'ClickUp',\n description: 'Manage ClickUp tasks, lists, and comments from CLI and REST API',\n tags: ['clickup', 'tasks', 'productivity'],\n },\n\n permissions,\n\n cli: {\n groupMeta: [\n { path: 'clickup', describe: 'ClickUp task management' },\n { path: 'clickup task', describe: 'Task operations' },\n { path: 'clickup task comments', describe: 'Task comment operations' },\n { path: 'clickup list', describe: 'List operations' },\n { path: 'clickup space', describe: 'Space operations' },\n { path: 'clickup folder', describe: 'Folder operations' },\n ],\n commands: [\n // ── Workspace ────────────────────────────────────────────────────────────\n {\n path: 'clickup workspace',\n category: 'Workspace',\n operationType: 'read' as const,\n describe: 'Show full workspace hierarchy (spaces → folders → lists)',\n handler: './commands/workspace.js#default',\n flags: [\n { name: 'json', type: 'boolean', description: 'Output JSON (slim by default)' },\n { name: 'full', type: 'boolean', description: 'Output full raw JSON (requires --json)' },\n ],\n examples: [\n 'kb clickup workspace',\n 'kb clickup workspace --json',\n 'kb clickup workspace --json --full',\n ],\n },\n\n // ── Tasks ─────────────────────────────────────────────────────────────────\n {\n path: 'clickup task search',\n category: 'Tasks',\n operationType: 'read' as const,\n describe: 'Search tasks across the workspace',\n handler: './commands/task-search.js#default',\n flags: [\n { name: 'list', type: 'string', description: 'Filter by list ID' },\n { name: 'status', type: 'string', description: 'Filter by status (comma-separated)' },\n { name: 'assignee', type: 'string', description: 'Filter by assignee user IDs (comma-separated)' },\n { name: 'limit', type: 'number', description: 'Max results', default: 20 },\n { name: 'closed', type: 'boolean', description: 'Include closed tasks' },\n { name: 'json', type: 'boolean', description: 'Output JSON (slim by default)' },\n { name: 'full', type: 'boolean', description: 'Output full raw JSON (requires --json)' },\n ],\n examples: [\n 'kb clickup task search \"my bug\"',\n 'kb clickup task search --status \"in progress\" --json',\n ],\n },\n {\n path: 'clickup task get',\n category: 'Tasks',\n operationType: 'read' as const,\n describe: 'Get full task details including comments',\n handler: './commands/task-get.js#default',\n flags: [\n { name: 'json', type: 'boolean', description: 'Output JSON (slim by default)' },\n { name: 'full', type: 'boolean', description: 'Output full raw JSON (requires --json)' },\n ],\n examples: [\n 'kb clickup task get abc123',\n 'kb clickup task get abc123 --json',\n ],\n },\n {\n path: 'clickup task create',\n category: 'Tasks',\n operationType: 'mutate' as const,\n describe: 'Create a new task',\n handler: './commands/task-create.js#default',\n flags: [\n { name: 'list', type: 'string', description: 'Target list ID (required)' },\n { name: 'name', type: 'string', description: 'Task name (required)' },\n { name: 'desc', type: 'string', description: 'Task description' },\n { name: 'status', type: 'string', description: 'Initial status' },\n { name: 'priority', type: 'number', description: '1=urgent 2=high 3=normal 4=low' },\n { name: 'assignee', type: 'string', description: 'Assignee user IDs (comma-separated)' },\n { name: 'due', type: 'string', description: 'Due date (ISO string or unix ms)' },\n { name: 'json', type: 'boolean', description: 'Output JSON (slim by default)' },\n { name: 'full', type: 'boolean', description: 'Output full raw JSON (requires --json)' },\n ],\n examples: [\n 'kb clickup task create --list abc123 --name \"Fix login bug\" --priority 2',\n 'kb clickup task create --list abc123 --name \"Task\" --json',\n ],\n },\n {\n path: 'clickup task update',\n category: 'Tasks',\n operationType: 'mutate' as const,\n describe: 'Update an existing task',\n handler: './commands/task-update.js#default',\n flags: [\n { name: 'name', type: 'string', description: 'New task name' },\n { name: 'desc', type: 'string', description: 'New description' },\n { name: 'status', type: 'string', description: 'New status' },\n { name: 'priority', type: 'number', description: '1=urgent 2=high 3=normal 4=low' },\n { name: 'assignee_add', type: 'string', description: 'User IDs to add (comma-separated)' },\n { name: 'assignee_rem', type: 'string', description: 'User IDs to remove (comma-separated)' },\n { name: 'due', type: 'string', description: 'Due date (ISO, unix ms, or \"none\")' },\n { name: 'json', type: 'boolean', description: 'Output JSON (slim by default)' },\n { name: 'full', type: 'boolean', description: 'Output full raw JSON (requires --json)' },\n ],\n examples: [\n 'kb clickup task update abc123 --status \"in progress\"',\n 'kb clickup task update abc123 --priority 1 --json',\n ],\n },\n {\n path: 'clickup task delete',\n category: 'Tasks',\n operationType: 'mutate' as const,\n describe: 'Delete a task',\n handler: './commands/task-delete.js#default',\n flags: [\n { name: 'json', type: 'boolean', description: 'Output raw JSON' },\n ],\n examples: [\n 'kb clickup task delete abc123 --yes',\n 'kb clickup task delete abc123 --dry-run',\n ],\n },\n\n // ── Comments ─────────────────────────────────────────────────────────────\n {\n path: 'clickup task comments list',\n category: 'Comments',\n operationType: 'read' as const,\n describe: 'List comments on a task',\n handler: './commands/task-comment-list.js#default',\n flags: [\n { name: 'json', type: 'boolean', description: 'Output JSON (slim by default)' },\n { name: 'full', type: 'boolean', description: 'Output full raw JSON (requires --json)' },\n ],\n examples: [\n 'kb clickup task comments list abc123',\n 'kb clickup task comments list abc123 --json',\n ],\n },\n {\n path: 'clickup task comments add',\n category: 'Comments',\n operationType: 'mutate' as const,\n describe: 'Add a comment to a task',\n handler: './commands/task-comment-add.js#default',\n flags: [\n { name: 'text', type: 'string', description: 'Comment text (required)' },\n { name: 'assignee',type: 'number', description: 'Assign comment to user ID' },\n { name: 'notify', type: 'boolean', description: 'Notify all task watchers' },\n { name: 'json', type: 'boolean', description: 'Output JSON (slim by default)' },\n { name: 'full', type: 'boolean', description: 'Output full raw JSON (requires --json)' },\n ],\n examples: [\n 'kb clickup task comments add abc123 --text \"Fixed in branch feature/x\"',\n ],\n },\n\n // ── Spaces ───────────────────────────────────────────────────────────────\n {\n path: 'clickup space create',\n category: 'Spaces',\n operationType: 'mutate' as const,\n describe: 'Create a new space',\n handler: './commands/space-create.js#default',\n flags: [\n { name: 'name', type: 'string', description: 'Space name (required)' },\n { name: 'color', type: 'string', description: 'Space color (hex)' },\n { name: 'private', type: 'boolean', description: 'Make space private' },\n { name: 'json', type: 'boolean', description: 'Output JSON (slim by default)' },\n { name: 'full', type: 'boolean', description: 'Output full raw JSON (requires --json)' },\n ],\n examples: [\n 'kb clickup space create --name \"Engineering\"',\n 'kb clickup space create --name \"Design\" --color \"#ff0000\"',\n ],\n },\n {\n path: 'clickup space update',\n category: 'Spaces',\n operationType: 'mutate' as const,\n describe: 'Update a space',\n handler: './commands/space-update.js#default',\n flags: [\n { name: 'name', type: 'string', description: 'New space name' },\n { name: 'color', type: 'string', description: 'New color (hex)' },\n { name: 'json', type: 'boolean', description: 'Output JSON (slim by default)' },\n { name: 'full', type: 'boolean', description: 'Output full raw JSON (requires --json)' },\n ],\n examples: [\n 'kb clickup space update spaceId --name \"Backend\"',\n ],\n },\n {\n path: 'clickup space delete',\n category: 'Spaces',\n operationType: 'mutate' as const,\n describe: 'Delete a space',\n handler: './commands/space-delete.js#default',\n flags: [\n { name: 'force', type: 'boolean', description: 'Skip confirmation' },\n { name: 'json', type: 'boolean', description: 'Output raw JSON' },\n ],\n examples: [\n 'kb clickup space delete spaceId --force',\n ],\n },\n\n // ── Folders ───────────────────────────────────────────────────────────────\n {\n path: 'clickup folder create',\n category: 'Folders',\n operationType: 'mutate' as const,\n describe: 'Create a new folder in a space',\n handler: './commands/folder-create.js#default',\n flags: [\n { name: 'space', type: 'string', description: 'Space ID (required)' },\n { name: 'name', type: 'string', description: 'Folder name (required)' },\n { name: 'json', type: 'boolean', description: 'Output JSON (slim by default)' },\n { name: 'full', type: 'boolean', description: 'Output full raw JSON (requires --json)' },\n ],\n examples: [\n 'kb clickup folder create --space spaceId --name \"Q3 Sprint\"',\n ],\n },\n {\n path: 'clickup folder update',\n category: 'Folders',\n operationType: 'mutate' as const,\n describe: 'Rename a folder',\n handler: './commands/folder-update.js#default',\n flags: [\n { name: 'name', type: 'string', description: 'New folder name (required)' },\n { name: 'json', type: 'boolean', description: 'Output JSON (slim by default)' },\n { name: 'full', type: 'boolean', description: 'Output full raw JSON (requires --json)' },\n ],\n examples: [\n 'kb clickup folder update folderId --name \"Q4 Sprint\"',\n ],\n },\n {\n path: 'clickup folder delete',\n category: 'Folders',\n operationType: 'mutate' as const,\n describe: 'Delete a folder',\n handler: './commands/folder-delete.js#default',\n flags: [\n { name: 'force', type: 'boolean', description: 'Skip confirmation' },\n { name: 'json', type: 'boolean', description: 'Output raw JSON' },\n ],\n examples: [\n 'kb clickup folder delete folderId --force',\n ],\n },\n\n // ── List CRUD ─────────────────────────────────────────────────────────────\n {\n path: 'clickup list create',\n category: 'Lists',\n operationType: 'mutate' as const,\n describe: 'Create a new list in a folder or space',\n handler: './commands/list-create.js#default',\n flags: [\n { name: 'folder', type: 'string', description: 'Folder ID (use instead of --space)' },\n { name: 'space', type: 'string', description: 'Space ID for folderless list' },\n { name: 'name', type: 'string', description: 'List name (required)' },\n { name: 'json', type: 'boolean', description: 'Output JSON (slim by default)' },\n { name: 'full', type: 'boolean', description: 'Output full raw JSON (requires --json)' },\n ],\n examples: [\n 'kb clickup list create --folder folderId --name \"Backlog\"',\n 'kb clickup list create --space spaceId --name \"Inbox\"',\n ],\n },\n {\n path: 'clickup list update',\n category: 'Lists',\n operationType: 'mutate' as const,\n describe: 'Update a list',\n handler: './commands/list-update.js#default',\n flags: [\n { name: 'name', type: 'string', description: 'New list name' },\n { name: 'json', type: 'boolean', description: 'Output JSON (slim by default)' },\n { name: 'full', type: 'boolean', description: 'Output full raw JSON (requires --json)' },\n ],\n examples: [\n 'kb clickup list update listId --name \"Sprint 5\"',\n ],\n },\n {\n path: 'clickup list delete',\n category: 'Lists',\n operationType: 'mutate' as const,\n describe: 'Delete a list',\n handler: './commands/list-delete.js#default',\n flags: [\n { name: 'force', type: 'boolean', description: 'Skip confirmation' },\n { name: 'json', type: 'boolean', description: 'Output raw JSON' },\n ],\n examples: [\n 'kb clickup list delete listId --force',\n ],\n },\n\n // ── List ─────────────────────────────────────────────────────────────────\n {\n path: 'clickup list tasks',\n category: 'Lists',\n operationType: 'read' as const,\n describe: 'List tasks in a specific list',\n handler: './commands/list-tasks.js#default',\n flags: [\n { name: 'status', type: 'string', description: 'Filter by status (comma-separated)' },\n { name: 'assignee', type: 'string', description: 'Filter by user IDs (comma-separated)' },\n { name: 'limit', type: 'number', description: 'Max results', default: 50 },\n { name: 'page', type: 'number', description: 'Page number', default: 0 },\n { name: 'closed', type: 'boolean', description: 'Include closed tasks' },\n { name: 'json', type: 'boolean', description: 'Output JSON (slim by default)' },\n { name: 'full', type: 'boolean', description: 'Output full raw JSON (requires --json)' },\n ],\n examples: [\n 'kb clickup list tasks listId123',\n 'kb clickup list tasks listId123 --status \"open\" --json',\n ],\n },\n {\n path: 'clickup list statuses',\n category: 'Lists',\n operationType: 'read' as const,\n describe: 'List available statuses for a list',\n handler: './commands/list-statuses.js#default',\n flags: [\n { name: 'json', type: 'boolean', description: 'Output JSON (slim by default)' },\n { name: 'full', type: 'boolean', description: 'Output full raw JSON (requires --json)' },\n ],\n examples: [\n 'kb clickup list statuses listId123',\n 'kb clickup list statuses listId123 --json',\n ],\n },\n ],\n },\n\n rest: {\n basePath: CLICKUP_BASE_PATH,\n routes: [\n {\n method: 'GET',\n path: CLICKUP_ROUTES.WORKSPACE,\n handler: './rest/handlers/workspace-handler.js#default',\n },\n {\n method: 'GET',\n path: CLICKUP_ROUTES.TASKS_SEARCH,\n handler: './rest/handlers/search-handler.js#default',\n },\n {\n method: 'GET',\n path: CLICKUP_ROUTES.TASK,\n handler: './rest/handlers/task-get-handler.js#default',\n },\n {\n method: 'POST',\n path: CLICKUP_ROUTES.TASKS_IN_LIST,\n handler: './rest/handlers/task-create-handler.js#default',\n input: { zod: '@kb-labs/clickup-contracts#CreateTaskSchema' },\n },\n {\n method: 'PATCH',\n path: CLICKUP_ROUTES.TASK,\n handler: './rest/handlers/task-update-handler.js#default',\n input: { zod: '@kb-labs/clickup-contracts#UpdateTaskSchema' },\n },\n {\n method: 'DELETE',\n path: CLICKUP_ROUTES.TASK,\n handler: './rest/handlers/task-delete-handler.js#default',\n },\n {\n method: 'GET',\n path: CLICKUP_ROUTES.TASKS_IN_LIST,\n handler: './rest/handlers/list-tasks-handler.js#default',\n },\n {\n method: 'GET',\n path: CLICKUP_ROUTES.LIST_STATUSES,\n handler: './rest/handlers/list-statuses-handler.js#default',\n },\n {\n method: 'GET',\n path: CLICKUP_ROUTES.TASK_COMMENTS,\n handler: './rest/handlers/task-comments-handler.js#default',\n },\n {\n method: 'POST',\n path: CLICKUP_ROUTES.TASK_COMMENTS,\n handler: './rest/handlers/task-comment-add-handler.js#default',\n input: { zod: '@kb-labs/clickup-contracts#AddCommentSchema' },\n },\n // ── Spaces\n {\n method: 'POST',\n path: CLICKUP_ROUTES.SPACES,\n handler: './rest/handlers/space-create-handler.js#default',\n input: { zod: '@kb-labs/clickup-contracts#CreateSpaceSchema' },\n },\n {\n method: 'PATCH',\n path: CLICKUP_ROUTES.SPACE,\n handler: './rest/handlers/space-update-handler.js#default',\n input: { zod: '@kb-labs/clickup-contracts#UpdateSpaceSchema' },\n },\n {\n method: 'DELETE',\n path: CLICKUP_ROUTES.SPACE,\n handler: './rest/handlers/space-delete-handler.js#default',\n },\n // ── Folders\n {\n method: 'POST',\n path: CLICKUP_ROUTES.SPACE_FOLDERS,\n handler: './rest/handlers/folder-create-handler.js#default',\n input: { zod: '@kb-labs/clickup-contracts#CreateFolderSchema' },\n },\n {\n method: 'PATCH',\n path: CLICKUP_ROUTES.FOLDER,\n handler: './rest/handlers/folder-update-handler.js#default',\n input: { zod: '@kb-labs/clickup-contracts#UpdateFolderSchema' },\n },\n {\n method: 'DELETE',\n path: CLICKUP_ROUTES.FOLDER,\n handler: './rest/handlers/folder-delete-handler.js#default',\n },\n // ── Lists CRUD\n {\n method: 'POST',\n path: CLICKUP_ROUTES.FOLDER_LISTS,\n handler: './rest/handlers/list-create-handler.js#default',\n input: { zod: '@kb-labs/clickup-contracts#CreateListSchema' },\n },\n {\n method: 'POST',\n path: CLICKUP_ROUTES.SPACE_LISTS,\n handler: './rest/handlers/list-create-handler.js#default',\n input: { zod: '@kb-labs/clickup-contracts#CreateListSchema' },\n },\n {\n method: 'PATCH',\n path: CLICKUP_ROUTES.LIST,\n handler: './rest/handlers/list-update-handler.js#default',\n input: { zod: '@kb-labs/clickup-contracts#UpdateListSchema' },\n },\n {\n method: 'DELETE',\n path: CLICKUP_ROUTES.LIST,\n handler: './rest/handlers/list-delete-handler.js#default',\n },\n ],\n },\n};\n\nexport default manifest;\n"]}
@@ -0,0 +1,11 @@
1
+ import * as _kb_labs_shared_command_kit from '@kb-labs/shared-command-kit';
2
+ import * as _kb_labs_clickup_contracts from '@kb-labs/clickup-contracts';
3
+ import { RestInput } from '@kb-labs/sdk';
4
+
5
+ declare const _default: _kb_labs_shared_command_kit.Handler<unknown, RestInput<Record<string, never>, {
6
+ name: string;
7
+ }, {
8
+ spaceId: string;
9
+ }>, _kb_labs_clickup_contracts.ClickUpFolder>;
10
+
11
+ export { _default as default };
@@ -0,0 +1,57 @@
1
+ import { defineHandler } from '@kb-labs/sdk';
2
+ import { createFolder, requireApiKey, ClickUpApiError } from '@kb-labs/clickup-core';
3
+
4
+ // src/rest/handlers/folder-create-handler.ts
5
+ function apiHint(err) {
6
+ switch (err.status) {
7
+ case 401:
8
+ return "CLICKUP_API_KEY is invalid or expired \u2014 check the token in your environment";
9
+ case 403:
10
+ return "You don't have permission for this action in ClickUp \u2014 check workspace access";
11
+ case 404:
12
+ return "Resource not found \u2014 verify the ID is correct (use `kb clickup workspace` to browse IDs)";
13
+ case 429:
14
+ return "ClickUp rate limit reached \u2014 wait a moment and retry";
15
+ default:
16
+ return "Unexpected ClickUp API error";
17
+ }
18
+ }
19
+ function rethrowForRest(err) {
20
+ if (err instanceof ClickUpApiError) {
21
+ const hint = apiHint(err);
22
+ const restErr = Object.assign(new Error(err.message), {
23
+ statusCode: err.status,
24
+ code: err.code,
25
+ details: { hint }
26
+ });
27
+ throw restErr;
28
+ }
29
+ const message = err instanceof Error ? err.message : String(err);
30
+ const isEnvMissing = /CLICKUP_API_KEY|CLICKUP_TEAM_ID/.test(message);
31
+ if (isEnvMissing) {
32
+ throw Object.assign(new Error(message), {
33
+ statusCode: 400,
34
+ code: "ENV_MISSING",
35
+ details: { hint: "Set CLICKUP_API_KEY (and CLICKUP_TEAM_ID for workspace commands) as environment variables" }
36
+ });
37
+ }
38
+ throw err;
39
+ }
40
+
41
+ // src/rest/handlers/folder-create-handler.ts
42
+ var folder_create_handler_default = defineHandler({
43
+ async execute(_ctx, input) {
44
+ try {
45
+ const spaceId = input.params?.spaceId;
46
+ if (!spaceId) throw new Error("spaceId is required");
47
+ if (!input.body) throw new Error("body is required");
48
+ return createFolder(requireApiKey(), spaceId, input.body);
49
+ } catch (err) {
50
+ rethrowForRest(err);
51
+ }
52
+ }
53
+ });
54
+
55
+ export { folder_create_handler_default as default };
56
+ //# sourceMappingURL=folder-create-handler.js.map
57
+ //# sourceMappingURL=folder-create-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/error.ts","../../../src/rest/handlers/folder-create-handler.ts"],"names":[],"mappings":";;;;AAKA,SAAS,QAAQ,GAAA,EAA8B;AAC7C,EAAA,QAAQ,IAAI,MAAA;AAAQ,IAClB,KAAK,GAAA;AAAK,MAAA,OAAO,kFAAA;AAAA,IACjB,KAAK,GAAA;AAAK,MAAA,OAAO,oFAAA;AAAA,IACjB,KAAK,GAAA;AAAK,MAAA,OAAO,+FAAA;AAAA,IACjB,KAAK,GAAA;AAAK,MAAA,OAAO,2DAAA;AAAA,IACjB;AAAU,MAAA,OAAO,8BAAA;AAAA;AAErB;AA+CO,SAAS,eAAe,GAAA,EAAqB;AAClD,EAAA,IAAI,eAAe,eAAA,EAAiB;AAClC,IAAA,MAAM,IAAA,GAAO,QAAQ,GAAG,CAAA;AACxB,IAAA,MAAM,UAAU,MAAA,CAAO,MAAA,CAAO,IAAI,KAAA,CAAM,GAAA,CAAI,OAAO,CAAA,EAAG;AAAA,MACpD,YAAY,GAAA,CAAI,MAAA;AAAA,MAChB,MAAM,GAAA,CAAI,IAAA;AAAA,MACV,OAAA,EAAS,EAAE,IAAA;AAAK,KACjB,CAAA;AACD,IAAA,MAAM,OAAA;AAAA,EACR;AACA,EAAA,MAAM,UAAU,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,OAAO,GAAG,CAAA;AAC/D,EAAA,MAAM,YAAA,GAAe,iCAAA,CAAkC,IAAA,CAAK,OAAO,CAAA;AACnE,EAAA,IAAI,YAAA,EAAc;AAChB,IAAA,MAAM,MAAA,CAAO,MAAA,CAAO,IAAI,KAAA,CAAM,OAAO,CAAA,EAAG;AAAA,MACtC,UAAA,EAAY,GAAA;AAAA,MACZ,IAAA,EAAM,aAAA;AAAA,MACN,OAAA,EAAS,EAAE,IAAA,EAAM,2FAAA;AAA4F,KAC9G,CAAA;AAAA,EACH;AACA,EAAA,MAAM,GAAA;AACR;;;AC3EA,IAAO,gCAAQ,aAAA,CAAc;AAAA,EAC3B,MAAM,OAAA,CACJ,IAAA,EACA,KAAA,EACA;AACA,IAAA,IAAI;AACF,MAAA,MAAM,OAAA,GAAU,MAAM,MAAA,EAAQ,OAAA;AAC9B,MAAA,IAAI,CAAC,OAAA,EAAS,MAAM,IAAI,MAAM,qBAAqB,CAAA;AACnD,MAAA,IAAI,CAAC,KAAA,CAAM,IAAA,EAAM,MAAM,IAAI,MAAM,kBAAkB,CAAA;AACnD,MAAA,OAAO,YAAA,CAAa,aAAA,EAAc,EAAG,OAAA,EAAS,MAAM,IAAI,CAAA;AAAA,IAC1D,SAAS,GAAA,EAAK;AACZ,MAAA,cAAA,CAAe,GAAG,CAAA;AAAA,IACpB;AAAA,EACF;AACF,CAAC","file":"folder-create-handler.js","sourcesContent":["import type { PluginContextV3 } from '@kb-labs/sdk';\nimport { ClickUpApiError } from '@kb-labs/clickup-core';\n\nexport { validationError } from '@kb-labs/sdk';\n\nfunction apiHint(err: ClickUpApiError): string {\n switch (err.status) {\n case 401: return 'CLICKUP_API_KEY is invalid or expired — check the token in your environment';\n case 403: return 'You don\\'t have permission for this action in ClickUp — check workspace access';\n case 404: return 'Resource not found — verify the ID is correct (use `kb clickup workspace` to browse IDs)';\n case 429: return 'ClickUp rate limit reached — wait a moment and retry';\n default: return 'Unexpected ClickUp API error';\n }\n}\n\n/**\n * Output a structured error and return — call right before `return { exitCode: 1, result: null }`.\n * In JSON mode emits `{ ok: false, error: { code, message, hint?, status? } }`.\n * In CLI mode uses ctx.ui.error() with hint and cause.\n */\nexport function handleError(ctx: PluginContextV3, err: unknown, isJson?: boolean): void {\n if (err instanceof ClickUpApiError) {\n const hint = apiHint(err);\n if (isJson) {\n ctx.ui?.json?.({ ok: false, error: { code: err.code, message: err.message, status: err.status, hint } });\n } else {\n ctx.ui?.error?.(err.message, { hint, cause: `ClickUp API ${err.status} (${err.code})` });\n }\n return;\n }\n\n const message = err instanceof Error ? err.message : String(err);\n const isEnvMissing = /CLICKUP_API_KEY|CLICKUP_TEAM_ID/.test(message);\n\n if (isJson) {\n ctx.ui?.json?.({\n ok: false,\n error: {\n code: isEnvMissing ? 'ENV_MISSING' : 'INTERNAL_ERROR',\n message,\n ...(isEnvMissing && {\n hint: 'Set CLICKUP_API_KEY (and CLICKUP_TEAM_ID for workspace commands) as environment variables',\n }),\n },\n });\n } else {\n ctx.ui?.error?.(message, {\n ...(isEnvMissing && {\n hint: 'Set CLICKUP_API_KEY (and CLICKUP_TEAM_ID for workspace commands) as environment variables',\n command: 'export CLICKUP_API_KEY=pk_xxx CLICKUP_TEAM_ID=yyy',\n }),\n });\n }\n}\n\n/**\n * Re-throws `err` as an HTTP-aware error for REST handlers.\n * `ClickUpApiError` → preserves HTTP status code; env errors → 400; others → 500.\n * The envelope middleware in rest-api reads `err.statusCode` to set the response status.\n */\nexport function rethrowForRest(err: unknown): never {\n if (err instanceof ClickUpApiError) {\n const hint = apiHint(err);\n const restErr = Object.assign(new Error(err.message), {\n statusCode: err.status,\n code: err.code,\n details: { hint },\n });\n throw restErr;\n }\n const message = err instanceof Error ? err.message : String(err);\n const isEnvMissing = /CLICKUP_API_KEY|CLICKUP_TEAM_ID/.test(message);\n if (isEnvMissing) {\n throw Object.assign(new Error(message), {\n statusCode: 400,\n code: 'ENV_MISSING',\n details: { hint: 'Set CLICKUP_API_KEY (and CLICKUP_TEAM_ID for workspace commands) as environment variables' },\n });\n }\n throw err;\n}\n","import { defineHandler, type PluginContextV3, type RestInput } from '@kb-labs/sdk';\nimport { requireApiKey, createFolder } from '@kb-labs/clickup-core';\nimport type { CreateFolderInput } from '@kb-labs/clickup-contracts';\nimport { rethrowForRest } from '../../utils/error.js';\n\nexport default defineHandler({\n async execute(\n _ctx: PluginContextV3,\n input: RestInput<Record<string, never>, CreateFolderInput, { spaceId: string }>,\n ) {\n try {\n const spaceId = input.params?.spaceId;\n if (!spaceId) throw new Error('spaceId is required');\n if (!input.body) throw new Error('body is required');\n return createFolder(requireApiKey(), spaceId, input.body);\n } catch (err) {\n rethrowForRest(err);\n }\n },\n});\n"]}