@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.
- package/LICENSE +21 -0
- package/README.md +467 -0
- package/bin/clickup-mcp-server-ai.js +9 -0
- package/bin/clickup-mcp-server-basic.js +9 -0
- package/bin/clickup-mcp-server-efficiency.js +9 -0
- package/bin/clickup-mcp-server-enhanced.js +9 -0
- package/build/app.d.ts +1 -0
- package/build/app.js +2 -0
- package/build/app.js.map +1 -0
- package/build/clickup-client/attachments-enhanced.d.ts +128 -0
- package/build/clickup-client/attachments-enhanced.js +212 -0
- package/build/clickup-client/attachments-enhanced.js.map +1 -0
- package/build/clickup-client/auth.d.ts +254 -0
- package/build/clickup-client/auth.js +105 -0
- package/build/clickup-client/auth.js.map +1 -0
- package/build/clickup-client/chat-enhanced.d.ts +141 -0
- package/build/clickup-client/chat-enhanced.js +196 -0
- package/build/clickup-client/chat-enhanced.js.map +1 -0
- package/build/clickup-client/checklists.d.ts +87 -0
- package/build/clickup-client/checklists.js +63 -0
- package/build/clickup-client/checklists.js.map +1 -0
- package/build/clickup-client/comments-enhanced.d.ts +176 -0
- package/build/clickup-client/comments-enhanced.js +230 -0
- package/build/clickup-client/comments-enhanced.js.map +1 -0
- package/build/clickup-client/comments.d.ts +173 -0
- package/build/clickup-client/comments.js +312 -0
- package/build/clickup-client/comments.js.map +1 -0
- package/build/clickup-client/custom-fields-enhanced.d.ts +286 -0
- package/build/clickup-client/custom-fields-enhanced.js +416 -0
- package/build/clickup-client/custom-fields-enhanced.js.map +1 -0
- package/build/clickup-client/dependencies-enhanced.d.ts +144 -0
- package/build/clickup-client/dependencies-enhanced.js +142 -0
- package/build/clickup-client/dependencies-enhanced.js.map +1 -0
- package/build/clickup-client/docs-enhanced.d.ts +176 -0
- package/build/clickup-client/docs-enhanced.js +374 -0
- package/build/clickup-client/docs-enhanced.js.map +1 -0
- package/build/clickup-client/docs.d.ts +84 -0
- package/build/clickup-client/docs.js +156 -0
- package/build/clickup-client/docs.js.map +1 -0
- package/build/clickup-client/folders.d.ts +62 -0
- package/build/clickup-client/folders.js +53 -0
- package/build/clickup-client/folders.js.map +1 -0
- package/build/clickup-client/goals-enhanced.d.ts +163 -0
- package/build/clickup-client/goals-enhanced.js +309 -0
- package/build/clickup-client/goals-enhanced.js.map +1 -0
- package/build/clickup-client/index.d.ts +16 -0
- package/build/clickup-client/index.js +61 -0
- package/build/clickup-client/index.js.map +1 -0
- package/build/clickup-client/lists.d.ts +105 -0
- package/build/clickup-client/lists.js +108 -0
- package/build/clickup-client/lists.js.map +1 -0
- package/build/clickup-client/secure-client.d.ts +88 -0
- package/build/clickup-client/secure-client.js +275 -0
- package/build/clickup-client/secure-client.js.map +1 -0
- package/build/clickup-client/spaces.d.ts +58 -0
- package/build/clickup-client/spaces.js +28 -0
- package/build/clickup-client/spaces.js.map +1 -0
- package/build/clickup-client/tasks.d.ts +161 -0
- package/build/clickup-client/tasks.js +99 -0
- package/build/clickup-client/tasks.js.map +1 -0
- package/build/clickup-client/time-tracking-enhanced.d.ts +153 -0
- package/build/clickup-client/time-tracking-enhanced.js +292 -0
- package/build/clickup-client/time-tracking-enhanced.js.map +1 -0
- package/build/clickup-client/views-enhanced.d.ts +149 -0
- package/build/clickup-client/views-enhanced.js +210 -0
- package/build/clickup-client/views-enhanced.js.map +1 -0
- package/build/clickup-client/webhooks-enhanced.d.ts +119 -0
- package/build/clickup-client/webhooks-enhanced.js +169 -0
- package/build/clickup-client/webhooks-enhanced.js.map +1 -0
- package/build/controllers/lists.controller.d.ts +1 -0
- package/build/controllers/lists.controller.js +2 -0
- package/build/controllers/lists.controller.js.map +1 -0
- package/build/index-efficiency-simple.d.ts +2 -0
- package/build/index-efficiency-simple.js +379 -0
- package/build/index-efficiency-simple.js.map +1 -0
- package/build/index-enhanced-efficiency.d.ts +2 -0
- package/build/index-enhanced-efficiency.js +275 -0
- package/build/index-enhanced-efficiency.js.map +1 -0
- package/build/index-enhanced.d.ts +2 -0
- package/build/index-enhanced.js +74 -0
- package/build/index-enhanced.js.map +1 -0
- package/build/index.d.ts +2 -0
- package/build/index.js +77 -0
- package/build/index.js.map +1 -0
- package/build/resources/checklist-resources.d.ts +2 -0
- package/build/resources/checklist-resources.js +102 -0
- package/build/resources/checklist-resources.js.map +1 -0
- package/build/resources/comment-resources.d.ts +2 -0
- package/build/resources/comment-resources.js +152 -0
- package/build/resources/comment-resources.js.map +1 -0
- package/build/resources/doc-resources.d.ts +2 -0
- package/build/resources/doc-resources.js +77 -0
- package/build/resources/doc-resources.js.map +1 -0
- package/build/resources/folder-resources.d.ts +2 -0
- package/build/resources/folder-resources.js +160 -0
- package/build/resources/folder-resources.js.map +1 -0
- package/build/resources/list-resources.d.ts +2 -0
- package/build/resources/list-resources.js +104 -0
- package/build/resources/list-resources.js.map +1 -0
- package/build/resources/space-resources.d.ts +2 -0
- package/build/resources/space-resources.js +104 -0
- package/build/resources/space-resources.js.map +1 -0
- package/build/resources/task-resources.d.ts +2 -0
- package/build/resources/task-resources.js +57 -0
- package/build/resources/task-resources.js.map +1 -0
- package/build/routes/lists.routes.d.ts +1 -0
- package/build/routes/lists.routes.js +2 -0
- package/build/routes/lists.routes.js.map +1 -0
- package/build/schemas/attachments-schemas.d.ts +201 -0
- package/build/schemas/attachments-schemas.js +250 -0
- package/build/schemas/attachments-schemas.js.map +1 -0
- package/build/schemas/chat-schemas.d.ts +478 -0
- package/build/schemas/chat-schemas.js +173 -0
- package/build/schemas/chat-schemas.js.map +1 -0
- package/build/schemas/custom-field-schemas.d.ts +1617 -0
- package/build/schemas/custom-field-schemas.js +384 -0
- package/build/schemas/custom-field-schemas.js.map +1 -0
- package/build/schemas/dependencies-schemas.d.ts +274 -0
- package/build/schemas/dependencies-schemas.js +176 -0
- package/build/schemas/dependencies-schemas.js.map +1 -0
- package/build/schemas/document-schemas.d.ts +433 -0
- package/build/schemas/document-schemas.js +168 -0
- package/build/schemas/document-schemas.js.map +1 -0
- package/build/schemas/goals-schemas.d.ts +961 -0
- package/build/schemas/goals-schemas.js +293 -0
- package/build/schemas/goals-schemas.js.map +1 -0
- package/build/schemas/time-tracking-schemas.d.ts +741 -0
- package/build/schemas/time-tracking-schemas.js +234 -0
- package/build/schemas/time-tracking-schemas.js.map +1 -0
- package/build/schemas/views-schemas.d.ts +1168 -0
- package/build/schemas/views-schemas.js +221 -0
- package/build/schemas/views-schemas.js.map +1 -0
- package/build/schemas/webhook-schemas.d.ts +1127 -0
- package/build/schemas/webhook-schemas.js +137 -0
- package/build/schemas/webhook-schemas.js.map +1 -0
- package/build/services/lists.service.d.ts +1 -0
- package/build/services/lists.service.js +2 -0
- package/build/services/lists.service.js.map +1 -0
- package/build/tools/attachments-tools-setup.d.ts +2 -0
- package/build/tools/attachments-tools-setup.js +387 -0
- package/build/tools/attachments-tools-setup.js.map +1 -0
- package/build/tools/chat-tools-enhanced.d.ts +5 -0
- package/build/tools/chat-tools-enhanced.js +396 -0
- package/build/tools/chat-tools-enhanced.js.map +1 -0
- package/build/tools/chat-tools.d.ts +2 -0
- package/build/tools/chat-tools.js +614 -0
- package/build/tools/chat-tools.js.map +1 -0
- package/build/tools/checklist-tools.d.ts +2 -0
- package/build/tools/checklist-tools.js +139 -0
- package/build/tools/checklist-tools.js.map +1 -0
- package/build/tools/comment-tools.d.ts +2 -0
- package/build/tools/comment-tools.js +295 -0
- package/build/tools/comment-tools.js.map +1 -0
- package/build/tools/custom-field-tools.d.ts +2 -0
- package/build/tools/custom-field-tools.js +578 -0
- package/build/tools/custom-field-tools.js.map +1 -0
- package/build/tools/dependencies-tools-setup.d.ts +2 -0
- package/build/tools/dependencies-tools-setup.js +319 -0
- package/build/tools/dependencies-tools-setup.js.map +1 -0
- package/build/tools/doc-tools-enhanced.d.ts +2 -0
- package/build/tools/doc-tools-enhanced.js +417 -0
- package/build/tools/doc-tools-enhanced.js.map +1 -0
- package/build/tools/doc-tools.d.ts +2 -0
- package/build/tools/doc-tools.js +109 -0
- package/build/tools/doc-tools.js.map +1 -0
- package/build/tools/goals-tools.d.ts +2 -0
- package/build/tools/goals-tools.js +422 -0
- package/build/tools/goals-tools.js.map +1 -0
- package/build/tools/helper-tools.d.ts +2 -0
- package/build/tools/helper-tools.js +363 -0
- package/build/tools/helper-tools.js.map +1 -0
- package/build/tools/space-tools.d.ts +2 -0
- package/build/tools/space-tools.js +45 -0
- package/build/tools/space-tools.js.map +1 -0
- package/build/tools/task-tools.d.ts +2 -0
- package/build/tools/task-tools.js +415 -0
- package/build/tools/task-tools.js.map +1 -0
- package/build/tools/time-tracking-tools.d.ts +2 -0
- package/build/tools/time-tracking-tools.js +329 -0
- package/build/tools/time-tracking-tools.js.map +1 -0
- package/build/tools/views-tools-setup.d.ts +2 -0
- package/build/tools/views-tools-setup.js +358 -0
- package/build/tools/views-tools-setup.js.map +1 -0
- package/build/tools/webhook-tools-setup.d.ts +2 -0
- package/build/tools/webhook-tools-setup.js +304 -0
- package/build/tools/webhook-tools-setup.js.map +1 -0
- package/build/tools/webhook-tools.d.ts +4 -0
- package/build/tools/webhook-tools.js +345 -0
- package/build/tools/webhook-tools.js.map +1 -0
- package/build/utils/clickup-comment-formatter.d.ts +124 -0
- package/build/utils/clickup-comment-formatter.js +504 -0
- package/build/utils/clickup-comment-formatter.js.map +1 -0
- package/build/utils/context-aware-suggestions.d.ts +45 -0
- package/build/utils/context-aware-suggestions.js +360 -0
- package/build/utils/context-aware-suggestions.js.map +1 -0
- package/build/utils/error-handling.d.ts +140 -0
- package/build/utils/error-handling.js +392 -0
- package/build/utils/error-handling.js.map +1 -0
- package/build/utils/markdown-styling.d.ts +40 -0
- package/build/utils/markdown-styling.js +344 -0
- package/build/utils/markdown-styling.js.map +1 -0
- package/build/utils/markdown.d.ts +54 -0
- package/build/utils/markdown.js +243 -0
- package/build/utils/markdown.js.map +1 -0
- package/build/utils/security.d.ts +79 -0
- package/build/utils/security.js +303 -0
- package/build/utils/security.js.map +1 -0
- package/build/utils/tool-efficiency.d.ts +59 -0
- package/build/utils/tool-efficiency.js +247 -0
- package/build/utils/tool-efficiency.js.map +1 -0
- 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
|
+
}
|