@chykalophia/clickup-mcp-server 3.2.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 (211) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +467 -0
  3. package/bin/clickup-mcp-server-ai.js +9 -0
  4. package/bin/clickup-mcp-server-basic.js +9 -0
  5. package/bin/clickup-mcp-server-efficiency.js +9 -0
  6. package/bin/clickup-mcp-server-enhanced.js +9 -0
  7. package/build/app.d.ts +1 -0
  8. package/build/app.js +2 -0
  9. package/build/app.js.map +1 -0
  10. package/build/clickup-client/attachments-enhanced.d.ts +128 -0
  11. package/build/clickup-client/attachments-enhanced.js +212 -0
  12. package/build/clickup-client/attachments-enhanced.js.map +1 -0
  13. package/build/clickup-client/auth.d.ts +254 -0
  14. package/build/clickup-client/auth.js +105 -0
  15. package/build/clickup-client/auth.js.map +1 -0
  16. package/build/clickup-client/chat-enhanced.d.ts +141 -0
  17. package/build/clickup-client/chat-enhanced.js +196 -0
  18. package/build/clickup-client/chat-enhanced.js.map +1 -0
  19. package/build/clickup-client/checklists.d.ts +87 -0
  20. package/build/clickup-client/checklists.js +63 -0
  21. package/build/clickup-client/checklists.js.map +1 -0
  22. package/build/clickup-client/comments-enhanced.d.ts +176 -0
  23. package/build/clickup-client/comments-enhanced.js +230 -0
  24. package/build/clickup-client/comments-enhanced.js.map +1 -0
  25. package/build/clickup-client/comments.d.ts +173 -0
  26. package/build/clickup-client/comments.js +312 -0
  27. package/build/clickup-client/comments.js.map +1 -0
  28. package/build/clickup-client/custom-fields-enhanced.d.ts +286 -0
  29. package/build/clickup-client/custom-fields-enhanced.js +416 -0
  30. package/build/clickup-client/custom-fields-enhanced.js.map +1 -0
  31. package/build/clickup-client/dependencies-enhanced.d.ts +144 -0
  32. package/build/clickup-client/dependencies-enhanced.js +142 -0
  33. package/build/clickup-client/dependencies-enhanced.js.map +1 -0
  34. package/build/clickup-client/docs-enhanced.d.ts +176 -0
  35. package/build/clickup-client/docs-enhanced.js +374 -0
  36. package/build/clickup-client/docs-enhanced.js.map +1 -0
  37. package/build/clickup-client/docs.d.ts +84 -0
  38. package/build/clickup-client/docs.js +156 -0
  39. package/build/clickup-client/docs.js.map +1 -0
  40. package/build/clickup-client/folders.d.ts +62 -0
  41. package/build/clickup-client/folders.js +53 -0
  42. package/build/clickup-client/folders.js.map +1 -0
  43. package/build/clickup-client/goals-enhanced.d.ts +163 -0
  44. package/build/clickup-client/goals-enhanced.js +309 -0
  45. package/build/clickup-client/goals-enhanced.js.map +1 -0
  46. package/build/clickup-client/index.d.ts +16 -0
  47. package/build/clickup-client/index.js +61 -0
  48. package/build/clickup-client/index.js.map +1 -0
  49. package/build/clickup-client/lists.d.ts +105 -0
  50. package/build/clickup-client/lists.js +108 -0
  51. package/build/clickup-client/lists.js.map +1 -0
  52. package/build/clickup-client/secure-client.d.ts +88 -0
  53. package/build/clickup-client/secure-client.js +275 -0
  54. package/build/clickup-client/secure-client.js.map +1 -0
  55. package/build/clickup-client/spaces.d.ts +58 -0
  56. package/build/clickup-client/spaces.js +28 -0
  57. package/build/clickup-client/spaces.js.map +1 -0
  58. package/build/clickup-client/tasks.d.ts +161 -0
  59. package/build/clickup-client/tasks.js +99 -0
  60. package/build/clickup-client/tasks.js.map +1 -0
  61. package/build/clickup-client/time-tracking-enhanced.d.ts +153 -0
  62. package/build/clickup-client/time-tracking-enhanced.js +292 -0
  63. package/build/clickup-client/time-tracking-enhanced.js.map +1 -0
  64. package/build/clickup-client/views-enhanced.d.ts +149 -0
  65. package/build/clickup-client/views-enhanced.js +210 -0
  66. package/build/clickup-client/views-enhanced.js.map +1 -0
  67. package/build/clickup-client/webhooks-enhanced.d.ts +119 -0
  68. package/build/clickup-client/webhooks-enhanced.js +169 -0
  69. package/build/clickup-client/webhooks-enhanced.js.map +1 -0
  70. package/build/controllers/lists.controller.d.ts +1 -0
  71. package/build/controllers/lists.controller.js +2 -0
  72. package/build/controllers/lists.controller.js.map +1 -0
  73. package/build/index-efficiency-simple.d.ts +2 -0
  74. package/build/index-efficiency-simple.js +379 -0
  75. package/build/index-efficiency-simple.js.map +1 -0
  76. package/build/index-enhanced-efficiency.d.ts +2 -0
  77. package/build/index-enhanced-efficiency.js +275 -0
  78. package/build/index-enhanced-efficiency.js.map +1 -0
  79. package/build/index-enhanced.d.ts +2 -0
  80. package/build/index-enhanced.js +74 -0
  81. package/build/index-enhanced.js.map +1 -0
  82. package/build/index.d.ts +2 -0
  83. package/build/index.js +77 -0
  84. package/build/index.js.map +1 -0
  85. package/build/resources/checklist-resources.d.ts +2 -0
  86. package/build/resources/checklist-resources.js +102 -0
  87. package/build/resources/checklist-resources.js.map +1 -0
  88. package/build/resources/comment-resources.d.ts +2 -0
  89. package/build/resources/comment-resources.js +152 -0
  90. package/build/resources/comment-resources.js.map +1 -0
  91. package/build/resources/doc-resources.d.ts +2 -0
  92. package/build/resources/doc-resources.js +77 -0
  93. package/build/resources/doc-resources.js.map +1 -0
  94. package/build/resources/folder-resources.d.ts +2 -0
  95. package/build/resources/folder-resources.js +160 -0
  96. package/build/resources/folder-resources.js.map +1 -0
  97. package/build/resources/list-resources.d.ts +2 -0
  98. package/build/resources/list-resources.js +104 -0
  99. package/build/resources/list-resources.js.map +1 -0
  100. package/build/resources/space-resources.d.ts +2 -0
  101. package/build/resources/space-resources.js +104 -0
  102. package/build/resources/space-resources.js.map +1 -0
  103. package/build/resources/task-resources.d.ts +2 -0
  104. package/build/resources/task-resources.js +57 -0
  105. package/build/resources/task-resources.js.map +1 -0
  106. package/build/routes/lists.routes.d.ts +1 -0
  107. package/build/routes/lists.routes.js +2 -0
  108. package/build/routes/lists.routes.js.map +1 -0
  109. package/build/schemas/attachments-schemas.d.ts +201 -0
  110. package/build/schemas/attachments-schemas.js +250 -0
  111. package/build/schemas/attachments-schemas.js.map +1 -0
  112. package/build/schemas/chat-schemas.d.ts +478 -0
  113. package/build/schemas/chat-schemas.js +173 -0
  114. package/build/schemas/chat-schemas.js.map +1 -0
  115. package/build/schemas/custom-field-schemas.d.ts +1617 -0
  116. package/build/schemas/custom-field-schemas.js +384 -0
  117. package/build/schemas/custom-field-schemas.js.map +1 -0
  118. package/build/schemas/dependencies-schemas.d.ts +274 -0
  119. package/build/schemas/dependencies-schemas.js +176 -0
  120. package/build/schemas/dependencies-schemas.js.map +1 -0
  121. package/build/schemas/document-schemas.d.ts +433 -0
  122. package/build/schemas/document-schemas.js +168 -0
  123. package/build/schemas/document-schemas.js.map +1 -0
  124. package/build/schemas/goals-schemas.d.ts +961 -0
  125. package/build/schemas/goals-schemas.js +293 -0
  126. package/build/schemas/goals-schemas.js.map +1 -0
  127. package/build/schemas/time-tracking-schemas.d.ts +741 -0
  128. package/build/schemas/time-tracking-schemas.js +234 -0
  129. package/build/schemas/time-tracking-schemas.js.map +1 -0
  130. package/build/schemas/views-schemas.d.ts +1168 -0
  131. package/build/schemas/views-schemas.js +221 -0
  132. package/build/schemas/views-schemas.js.map +1 -0
  133. package/build/schemas/webhook-schemas.d.ts +1127 -0
  134. package/build/schemas/webhook-schemas.js +137 -0
  135. package/build/schemas/webhook-schemas.js.map +1 -0
  136. package/build/services/lists.service.d.ts +1 -0
  137. package/build/services/lists.service.js +2 -0
  138. package/build/services/lists.service.js.map +1 -0
  139. package/build/tools/attachments-tools-setup.d.ts +2 -0
  140. package/build/tools/attachments-tools-setup.js +387 -0
  141. package/build/tools/attachments-tools-setup.js.map +1 -0
  142. package/build/tools/chat-tools-enhanced.d.ts +5 -0
  143. package/build/tools/chat-tools-enhanced.js +396 -0
  144. package/build/tools/chat-tools-enhanced.js.map +1 -0
  145. package/build/tools/chat-tools.d.ts +2 -0
  146. package/build/tools/chat-tools.js +614 -0
  147. package/build/tools/chat-tools.js.map +1 -0
  148. package/build/tools/checklist-tools.d.ts +2 -0
  149. package/build/tools/checklist-tools.js +139 -0
  150. package/build/tools/checklist-tools.js.map +1 -0
  151. package/build/tools/comment-tools.d.ts +2 -0
  152. package/build/tools/comment-tools.js +295 -0
  153. package/build/tools/comment-tools.js.map +1 -0
  154. package/build/tools/custom-field-tools.d.ts +2 -0
  155. package/build/tools/custom-field-tools.js +578 -0
  156. package/build/tools/custom-field-tools.js.map +1 -0
  157. package/build/tools/dependencies-tools-setup.d.ts +2 -0
  158. package/build/tools/dependencies-tools-setup.js +319 -0
  159. package/build/tools/dependencies-tools-setup.js.map +1 -0
  160. package/build/tools/doc-tools-enhanced.d.ts +2 -0
  161. package/build/tools/doc-tools-enhanced.js +417 -0
  162. package/build/tools/doc-tools-enhanced.js.map +1 -0
  163. package/build/tools/doc-tools.d.ts +2 -0
  164. package/build/tools/doc-tools.js +109 -0
  165. package/build/tools/doc-tools.js.map +1 -0
  166. package/build/tools/goals-tools.d.ts +2 -0
  167. package/build/tools/goals-tools.js +422 -0
  168. package/build/tools/goals-tools.js.map +1 -0
  169. package/build/tools/helper-tools.d.ts +2 -0
  170. package/build/tools/helper-tools.js +363 -0
  171. package/build/tools/helper-tools.js.map +1 -0
  172. package/build/tools/space-tools.d.ts +2 -0
  173. package/build/tools/space-tools.js +45 -0
  174. package/build/tools/space-tools.js.map +1 -0
  175. package/build/tools/task-tools.d.ts +2 -0
  176. package/build/tools/task-tools.js +415 -0
  177. package/build/tools/task-tools.js.map +1 -0
  178. package/build/tools/time-tracking-tools.d.ts +2 -0
  179. package/build/tools/time-tracking-tools.js +329 -0
  180. package/build/tools/time-tracking-tools.js.map +1 -0
  181. package/build/tools/views-tools-setup.d.ts +2 -0
  182. package/build/tools/views-tools-setup.js +358 -0
  183. package/build/tools/views-tools-setup.js.map +1 -0
  184. package/build/tools/webhook-tools-setup.d.ts +2 -0
  185. package/build/tools/webhook-tools-setup.js +304 -0
  186. package/build/tools/webhook-tools-setup.js.map +1 -0
  187. package/build/tools/webhook-tools.d.ts +4 -0
  188. package/build/tools/webhook-tools.js +345 -0
  189. package/build/tools/webhook-tools.js.map +1 -0
  190. package/build/utils/clickup-comment-formatter.d.ts +124 -0
  191. package/build/utils/clickup-comment-formatter.js +504 -0
  192. package/build/utils/clickup-comment-formatter.js.map +1 -0
  193. package/build/utils/context-aware-suggestions.d.ts +45 -0
  194. package/build/utils/context-aware-suggestions.js +360 -0
  195. package/build/utils/context-aware-suggestions.js.map +1 -0
  196. package/build/utils/error-handling.d.ts +140 -0
  197. package/build/utils/error-handling.js +392 -0
  198. package/build/utils/error-handling.js.map +1 -0
  199. package/build/utils/markdown-styling.d.ts +40 -0
  200. package/build/utils/markdown-styling.js +344 -0
  201. package/build/utils/markdown-styling.js.map +1 -0
  202. package/build/utils/markdown.d.ts +54 -0
  203. package/build/utils/markdown.js +243 -0
  204. package/build/utils/markdown.js.map +1 -0
  205. package/build/utils/security.d.ts +79 -0
  206. package/build/utils/security.js +303 -0
  207. package/build/utils/security.js.map +1 -0
  208. package/build/utils/tool-efficiency.d.ts +59 -0
  209. package/build/utils/tool-efficiency.js +247 -0
  210. package/build/utils/tool-efficiency.js.map +1 -0
  211. package/package.json +130 -0
@@ -0,0 +1,416 @@
1
+ import axios from 'axios';
2
+ // ========================================
3
+ // ENHANCED CUSTOM FIELDS CLIENT
4
+ // ========================================
5
+ export class EnhancedCustomFieldsClient {
6
+ constructor(client) {
7
+ this.client = client;
8
+ this.apiToken = process.env.CLICKUP_API_TOKEN || '';
9
+ }
10
+ getHeaders() {
11
+ return {
12
+ 'Authorization': this.apiToken,
13
+ 'Accept': 'application/json',
14
+ 'Content-Type': 'application/json'
15
+ };
16
+ }
17
+ // ========================================
18
+ // CUSTOM FIELD MANAGEMENT
19
+ // ========================================
20
+ /**
21
+ * Get custom fields for a list
22
+ */
23
+ async getListCustomFields(listId, params) {
24
+ try {
25
+ const url = `https://api.clickup.com/api/v2/list/${listId}/field`;
26
+ const response = await axios.get(url, {
27
+ headers: this.getHeaders(),
28
+ params
29
+ });
30
+ return response.data.fields || [];
31
+ }
32
+ catch (error) {
33
+ console.error('Error getting list custom fields:', error);
34
+ throw this.handleError(error, `Failed to get custom fields for list ${listId}`);
35
+ }
36
+ }
37
+ /**
38
+ * Get custom fields for a folder
39
+ */
40
+ async getFolderCustomFields(folderId, params) {
41
+ try {
42
+ const url = `https://api.clickup.com/api/v2/folder/${folderId}/field`;
43
+ const response = await axios.get(url, {
44
+ headers: this.getHeaders(),
45
+ params
46
+ });
47
+ return response.data.fields || [];
48
+ }
49
+ catch (error) {
50
+ console.error('Error getting folder custom fields:', error);
51
+ throw this.handleError(error, `Failed to get custom fields for folder ${folderId}`);
52
+ }
53
+ }
54
+ /**
55
+ * Get custom fields for a space
56
+ */
57
+ async getSpaceCustomFields(spaceId, params) {
58
+ try {
59
+ const url = `https://api.clickup.com/api/v2/space/${spaceId}/field`;
60
+ const response = await axios.get(url, {
61
+ headers: this.getHeaders(),
62
+ params
63
+ });
64
+ return response.data.fields || [];
65
+ }
66
+ catch (error) {
67
+ console.error('Error getting space custom fields:', error);
68
+ throw this.handleError(error, `Failed to get custom fields for space ${spaceId}`);
69
+ }
70
+ }
71
+ /**
72
+ * Create a custom field in a list
73
+ */
74
+ async createListCustomField(listId, params) {
75
+ try {
76
+ const url = `https://api.clickup.com/api/v2/list/${listId}/field`;
77
+ const response = await axios.post(url, params, {
78
+ headers: this.getHeaders()
79
+ });
80
+ return response.data;
81
+ }
82
+ catch (error) {
83
+ console.error('Error creating list custom field:', error);
84
+ throw this.handleError(error, `Failed to create custom field in list ${listId}`);
85
+ }
86
+ }
87
+ /**
88
+ * Create a custom field in a folder
89
+ */
90
+ async createFolderCustomField(folderId, params) {
91
+ try {
92
+ const url = `https://api.clickup.com/api/v2/folder/${folderId}/field`;
93
+ const response = await axios.post(url, params, {
94
+ headers: this.getHeaders()
95
+ });
96
+ return response.data;
97
+ }
98
+ catch (error) {
99
+ console.error('Error creating folder custom field:', error);
100
+ throw this.handleError(error, `Failed to create custom field in folder ${folderId}`);
101
+ }
102
+ }
103
+ /**
104
+ * Create a custom field in a space
105
+ */
106
+ async createSpaceCustomField(spaceId, params) {
107
+ try {
108
+ const url = `https://api.clickup.com/api/v2/space/${spaceId}/field`;
109
+ const response = await axios.post(url, params, {
110
+ headers: this.getHeaders()
111
+ });
112
+ return response.data;
113
+ }
114
+ catch (error) {
115
+ console.error('Error creating space custom field:', error);
116
+ throw this.handleError(error, `Failed to create custom field in space ${spaceId}`);
117
+ }
118
+ }
119
+ /**
120
+ * Update a custom field
121
+ */
122
+ async updateCustomField(fieldId, params) {
123
+ try {
124
+ const url = `https://api.clickup.com/api/v2/field/${fieldId}`;
125
+ const response = await axios.put(url, params, {
126
+ headers: this.getHeaders()
127
+ });
128
+ return response.data;
129
+ }
130
+ catch (error) {
131
+ console.error('Error updating custom field:', error);
132
+ throw this.handleError(error, `Failed to update custom field ${fieldId}`);
133
+ }
134
+ }
135
+ /**
136
+ * Delete a custom field
137
+ */
138
+ async deleteCustomField(fieldId) {
139
+ try {
140
+ const url = `https://api.clickup.com/api/v2/field/${fieldId}`;
141
+ await axios.delete(url, {
142
+ headers: this.getHeaders()
143
+ });
144
+ }
145
+ catch (error) {
146
+ console.error('Error deleting custom field:', error);
147
+ throw this.handleError(error, `Failed to delete custom field ${fieldId}`);
148
+ }
149
+ }
150
+ // ========================================
151
+ // CUSTOM FIELD VALUE MANAGEMENT
152
+ // ========================================
153
+ /**
154
+ * Set a custom field value on a task
155
+ */
156
+ async setCustomFieldValue(taskId, fieldId, value) {
157
+ try {
158
+ const url = `https://api.clickup.com/api/v2/task/${taskId}/field/${fieldId}`;
159
+ await axios.post(url, { value }, {
160
+ headers: this.getHeaders()
161
+ });
162
+ }
163
+ catch (error) {
164
+ console.error('Error setting custom field value:', error);
165
+ throw this.handleError(error, `Failed to set custom field value for task ${taskId}, field ${fieldId}`);
166
+ }
167
+ }
168
+ /**
169
+ * Remove a custom field value from a task
170
+ */
171
+ async removeCustomFieldValue(taskId, fieldId) {
172
+ try {
173
+ const url = `https://api.clickup.com/api/v2/task/${taskId}/field/${fieldId}`;
174
+ await axios.delete(url, {
175
+ headers: this.getHeaders()
176
+ });
177
+ }
178
+ catch (error) {
179
+ console.error('Error removing custom field value:', error);
180
+ throw this.handleError(error, `Failed to remove custom field value for task ${taskId}, field ${fieldId}`);
181
+ }
182
+ }
183
+ /**
184
+ * Get a custom field value from a task
185
+ */
186
+ async getCustomFieldValue(taskId, fieldId) {
187
+ try {
188
+ // Get task details which includes custom field values
189
+ const taskUrl = `https://api.clickup.com/api/v2/task/${taskId}`;
190
+ const response = await axios.get(taskUrl, {
191
+ headers: this.getHeaders()
192
+ });
193
+ const task = response.data;
194
+ const customField = task.custom_fields?.find((field) => field.id === fieldId);
195
+ if (!customField) {
196
+ throw new Error(`Custom field ${fieldId} not found on task ${taskId}`);
197
+ }
198
+ return {
199
+ field_id: customField.id,
200
+ field_name: customField.name,
201
+ field_type: customField.type,
202
+ value: customField.value,
203
+ type_config: customField.type_config
204
+ };
205
+ }
206
+ catch (error) {
207
+ console.error('Error getting custom field value:', error);
208
+ throw this.handleError(error, `Failed to get custom field value for task ${taskId}, field ${fieldId}`);
209
+ }
210
+ }
211
+ /**
212
+ * Get all custom field values for a task
213
+ */
214
+ async getTaskCustomFieldValues(taskId) {
215
+ try {
216
+ const taskUrl = `https://api.clickup.com/api/v2/task/${taskId}`;
217
+ const response = await axios.get(taskUrl, {
218
+ headers: this.getHeaders()
219
+ });
220
+ const task = response.data;
221
+ return task.custom_fields?.map((field) => ({
222
+ field_id: field.id,
223
+ field_name: field.name,
224
+ field_type: field.type,
225
+ value: field.value,
226
+ type_config: field.type_config,
227
+ required: field.required,
228
+ hide_from_guests: field.hide_from_guests
229
+ })) || [];
230
+ }
231
+ catch (error) {
232
+ console.error('Error getting task custom field values:', error);
233
+ throw this.handleError(error, `Failed to get custom field values for task ${taskId}`);
234
+ }
235
+ }
236
+ /**
237
+ * Bulk set multiple custom field values on a task
238
+ */
239
+ async bulkSetCustomFieldValues(taskId, fieldValues) {
240
+ try {
241
+ const results = [];
242
+ // ClickUp doesn't have a native bulk API, so we'll set them individually
243
+ // but return consolidated results
244
+ for (const { field_id, value } of fieldValues) {
245
+ try {
246
+ await this.setCustomFieldValue(taskId, field_id, value);
247
+ results.push({
248
+ field_id,
249
+ value,
250
+ status: 'success'
251
+ });
252
+ }
253
+ catch (error) {
254
+ results.push({
255
+ field_id,
256
+ value,
257
+ status: 'error',
258
+ error: error.message
259
+ });
260
+ }
261
+ }
262
+ return results;
263
+ }
264
+ catch (error) {
265
+ console.error('Error bulk setting custom field values:', error);
266
+ throw this.handleError(error, `Failed to bulk set custom field values for task ${taskId}`);
267
+ }
268
+ }
269
+ // ========================================
270
+ // VALIDATION UTILITIES
271
+ // ========================================
272
+ /**
273
+ * Validate a field value against its field type
274
+ */
275
+ validateFieldValue(field, value) {
276
+ switch (field.type) {
277
+ case 'text':
278
+ case 'textarea':
279
+ return typeof value === 'string';
280
+ case 'number':
281
+ case 'currency':
282
+ return typeof value === 'number' && !isNaN(value);
283
+ case 'date':
284
+ return typeof value === 'number' && value > 0;
285
+ case 'checkbox':
286
+ return typeof value === 'boolean';
287
+ case 'url':
288
+ return typeof value === 'string' && this.isValidURL(value);
289
+ case 'email':
290
+ return typeof value === 'string' && this.isValidEmail(value);
291
+ case 'phone':
292
+ return typeof value === 'string' && value.length > 0;
293
+ case 'drop_down':
294
+ return field.type_config.options?.some((opt) => opt.id === value);
295
+ case 'labels':
296
+ return Array.isArray(value) && value.every(v => field.type_config.options?.some((opt) => opt.id === v));
297
+ case 'rating':
298
+ return typeof value === 'number' &&
299
+ value >= 0 && value <= (field.type_config.count || 5);
300
+ case 'progress': {
301
+ const { start = 0, end = 100 } = field.type_config;
302
+ return typeof value === 'number' && value >= start && value <= end;
303
+ }
304
+ case 'task_relationship':
305
+ if (field.type_config.multiple) {
306
+ return Array.isArray(value) && value.every(v => typeof v === 'string');
307
+ }
308
+ return typeof value === 'string';
309
+ default:
310
+ return true;
311
+ }
312
+ }
313
+ /**
314
+ * Get field type configuration template
315
+ */
316
+ getFieldTypeTemplate(type) {
317
+ switch (type) {
318
+ case 'text':
319
+ case 'textarea':
320
+ return {
321
+ default: '',
322
+ placeholder: ''
323
+ };
324
+ case 'number':
325
+ return {
326
+ default: 0,
327
+ precision: 0
328
+ };
329
+ case 'currency':
330
+ return {
331
+ default: 0,
332
+ precision: 2,
333
+ currency_type: 'USD'
334
+ };
335
+ case 'date':
336
+ return {
337
+ include_time: false
338
+ };
339
+ case 'drop_down':
340
+ case 'labels':
341
+ return {
342
+ options: []
343
+ };
344
+ case 'checkbox':
345
+ return {
346
+ default: false
347
+ };
348
+ case 'url':
349
+ case 'email':
350
+ case 'phone':
351
+ return {
352
+ placeholder: ''
353
+ };
354
+ case 'rating':
355
+ return {
356
+ count: 5,
357
+ default: 0
358
+ };
359
+ case 'progress':
360
+ return {
361
+ start: 0,
362
+ end: 100,
363
+ unit: '%'
364
+ };
365
+ case 'task_relationship':
366
+ return {
367
+ multiple: false
368
+ };
369
+ default:
370
+ return {};
371
+ }
372
+ }
373
+ // ========================================
374
+ // UTILITY METHODS
375
+ // ========================================
376
+ isValidURL(string) {
377
+ try {
378
+ const url = new URL(string);
379
+ return !!url;
380
+ }
381
+ catch (_) {
382
+ return false;
383
+ }
384
+ }
385
+ isValidEmail(email) {
386
+ const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
387
+ return emailRegex.test(email);
388
+ }
389
+ handleError(error, context) {
390
+ if (axios.isAxiosError(error)) {
391
+ const status = error.response?.status;
392
+ const message = error.response?.data?.message || error.message;
393
+ switch (status) {
394
+ case 400:
395
+ return new Error(`${context}: Invalid request - ${message}`);
396
+ case 401:
397
+ return new Error(`${context}: Authentication failed - check API token`);
398
+ case 403:
399
+ return new Error(`${context}: Permission denied - insufficient access rights`);
400
+ case 404:
401
+ return new Error(`${context}: Resource not found - ${message}`);
402
+ case 429:
403
+ return new Error(`${context}: Rate limit exceeded - please retry later`);
404
+ case 500:
405
+ return new Error(`${context}: Server error - please try again`);
406
+ default:
407
+ return new Error(`${context}: ${message}`);
408
+ }
409
+ }
410
+ return new Error(`${context}: ${error.message || 'Unknown error'}`);
411
+ }
412
+ }
413
+ export const createEnhancedCustomFieldsClient = (client) => {
414
+ return new EnhancedCustomFieldsClient(client);
415
+ };
416
+ //# sourceMappingURL=custom-fields-enhanced.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-fields-enhanced.js","sourceRoot":"","sources":["../../src/clickup-client/custom-fields-enhanced.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,144 @@
1
+ import { ClickUpClient } from './index.js';
2
+ import type { CreateDependencyRequest, UpdateDependencyRequest, GetDependenciesFilter, DependencyGraphOptions, DependencyConflictCheck, BulkDependencyOperation, DependencyResponse, DependencyListResponse, DependencyGraphResponse, DependencyConflictResponse } from '../schemas/dependencies-schemas.js';
3
+ export declare class DependenciesEnhancedClient extends ClickUpClient {
4
+ constructor(apiToken: string);
5
+ /**
6
+ * Create a new dependency between tasks
7
+ */
8
+ createDependency(request: CreateDependencyRequest): Promise<DependencyResponse>;
9
+ /**
10
+ * Get dependencies for a task
11
+ */
12
+ getTaskDependencies(filter: GetDependenciesFilter): Promise<DependencyListResponse>;
13
+ /**
14
+ * Update an existing dependency
15
+ */
16
+ updateDependency(request: UpdateDependencyRequest): Promise<DependencyResponse>;
17
+ /**
18
+ * Delete a dependency
19
+ */
20
+ deleteDependency(dependencyId: string): Promise<{
21
+ success: boolean;
22
+ }>;
23
+ /**
24
+ * Get dependency graph for a task
25
+ */
26
+ getDependencyGraph(options: DependencyGraphOptions): Promise<DependencyGraphResponse>;
27
+ /**
28
+ * Check for dependency conflicts
29
+ */
30
+ checkDependencyConflicts(check: DependencyConflictCheck): Promise<DependencyConflictResponse>;
31
+ /**
32
+ * Perform bulk dependency operations
33
+ */
34
+ bulkDependencyOperations(operation: BulkDependencyOperation): Promise<{
35
+ success: boolean;
36
+ results: Array<{
37
+ success: boolean;
38
+ dependency?: DependencyResponse;
39
+ error?: string;
40
+ }>;
41
+ }>;
42
+ /**
43
+ * Get all dependencies in a workspace
44
+ */
45
+ getWorkspaceDependencies(workspaceId: string, options?: {
46
+ status?: string;
47
+ type?: string;
48
+ limit?: number;
49
+ offset?: number;
50
+ }): Promise<DependencyListResponse>;
51
+ /**
52
+ * Get dependency statistics for a workspace
53
+ */
54
+ getDependencyStats(workspaceId: string): Promise<{
55
+ total_dependencies: number;
56
+ active_dependencies: number;
57
+ resolved_dependencies: number;
58
+ broken_dependencies: number;
59
+ circular_dependencies: number;
60
+ most_dependent_tasks: Array<{
61
+ task_id: string;
62
+ task_name: string;
63
+ dependency_count: number;
64
+ }>;
65
+ most_blocking_tasks: Array<{
66
+ task_id: string;
67
+ task_name: string;
68
+ blocking_count: number;
69
+ }>;
70
+ }>;
71
+ /**
72
+ * Resolve dependency conflicts automatically
73
+ */
74
+ resolveDependencyConflicts(taskId: string, resolution: {
75
+ break_cycles?: boolean;
76
+ remove_duplicates?: boolean;
77
+ update_invalid_statuses?: boolean;
78
+ }): Promise<{
79
+ success: boolean;
80
+ resolved_conflicts: number;
81
+ remaining_conflicts: number;
82
+ actions_taken: Array<{
83
+ action: string;
84
+ description: string;
85
+ affected_dependencies: string[];
86
+ }>;
87
+ }>;
88
+ /**
89
+ * Get dependency timeline impact
90
+ */
91
+ getDependencyTimelineImpact(taskId: string): Promise<{
92
+ task_id: string;
93
+ current_timeline: {
94
+ start_date?: string;
95
+ due_date?: string;
96
+ estimated_duration_days: number;
97
+ };
98
+ dependency_impact: {
99
+ earliest_start_date?: string;
100
+ latest_due_date?: string;
101
+ critical_path_duration_days: number;
102
+ buffer_days: number;
103
+ };
104
+ blocking_tasks: Array<{
105
+ task_id: string;
106
+ task_name: string;
107
+ delay_days: number;
108
+ }>;
109
+ dependent_tasks: Array<{
110
+ task_id: string;
111
+ task_name: string;
112
+ affected_start_date?: string;
113
+ }>;
114
+ }>;
115
+ /**
116
+ * Export dependency graph
117
+ */
118
+ exportDependencyGraph(taskId: string, format?: 'json' | 'csv' | 'graphml'): Promise<{
119
+ format: string;
120
+ data: string;
121
+ download_url?: string;
122
+ }>;
123
+ /**
124
+ * Import dependency graph
125
+ */
126
+ importDependencyGraph(workspaceId: string, data: {
127
+ format: 'json' | 'csv';
128
+ data: string;
129
+ options?: {
130
+ merge_existing?: boolean;
131
+ validate_tasks?: boolean;
132
+ create_missing_tasks?: boolean;
133
+ };
134
+ }): Promise<{
135
+ success: boolean;
136
+ imported_dependencies: number;
137
+ skipped_dependencies: number;
138
+ errors: Array<{
139
+ line_number?: number;
140
+ error: string;
141
+ data?: any;
142
+ }>;
143
+ }>;
144
+ }