@qikdev/mcp 6.7.5 → 6.7.8
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/build/src/tools/create.d.ts.map +1 -1
- package/build/src/tools/create.js +34 -642
- package/build/src/tools/create.js.map +1 -1
- package/build/src/tools/form.d.ts +17 -0
- package/build/src/tools/form.d.ts.map +1 -0
- package/build/src/tools/form.js +136 -0
- package/build/src/tools/form.js.map +1 -0
- package/build/src/tools/index.d.ts.map +1 -1
- package/build/src/tools/index.js +16 -0
- package/build/src/tools/index.js.map +1 -1
- package/build/src/tools/list.d.ts.map +1 -1
- package/build/src/tools/list.js +79 -323
- package/build/src/tools/list.js.map +1 -1
- package/build/src/tools/update.d.ts.map +1 -1
- package/build/src/tools/update.js +30 -345
- package/build/src/tools/update.js.map +1 -1
- package/build/src/tools/workflow.d.ts +110 -0
- package/build/src/tools/workflow.d.ts.map +1 -0
- package/build/src/tools/workflow.js +1047 -0
- package/build/src/tools/workflow.js.map +1 -0
- package/package.json +2 -2
|
@@ -1,16 +1,24 @@
|
|
|
1
1
|
import { ConfigManager } from "../config.js";
|
|
2
|
-
import { handleListContent } from "./list.js";
|
|
3
2
|
export const updateContentTool = {
|
|
4
3
|
name: "update_content",
|
|
5
4
|
description: `Update existing content items in Qik.
|
|
6
5
|
|
|
6
|
+
**Endpoint:** PATCH /content/:contentId (partial update) or PUT /content/:contentId (full replacement)
|
|
7
|
+
|
|
8
|
+
**Required:**
|
|
9
|
+
- contentId: The ID of the content item to update
|
|
10
|
+
|
|
11
|
+
**Optional:**
|
|
12
|
+
- updateMethod: "patch" (default) for partial updates, "put" for full replacement
|
|
13
|
+
|
|
14
|
+
All other properties are passed directly to the API as the update payload.
|
|
15
|
+
|
|
7
16
|
**Tags Shorthand:**
|
|
8
|
-
|
|
17
|
+
Pass \`tags: ['green', 'red']\` as string names and the backend auto-creates tags.
|
|
9
18
|
|
|
10
19
|
**Example:**
|
|
11
20
|
\`\`\`json
|
|
12
21
|
{
|
|
13
|
-
"typeKey": "article",
|
|
14
22
|
"contentId": "abc123",
|
|
15
23
|
"title": "Updated Title",
|
|
16
24
|
"tags": ["featured", "breaking"]
|
|
@@ -19,26 +27,9 @@ You can pass \`tags: ['green', 'red']\` as string names and the backend will aut
|
|
|
19
27
|
inputSchema: {
|
|
20
28
|
type: "object",
|
|
21
29
|
properties: {
|
|
22
|
-
typeKey: {
|
|
23
|
-
type: "string",
|
|
24
|
-
description: "The content type key (e.g., 'article', 'profile') OR natural language (e.g., 'blog posts')"
|
|
25
|
-
},
|
|
26
30
|
contentId: {
|
|
27
31
|
type: "string",
|
|
28
|
-
description: "The ID of the content item to update
|
|
29
|
-
},
|
|
30
|
-
tags: {
|
|
31
|
-
type: "array",
|
|
32
|
-
items: { type: "string" },
|
|
33
|
-
description: "Tag names - backend auto-creates tags and attaches IDs to meta.tags"
|
|
34
|
-
},
|
|
35
|
-
searchCriteria: {
|
|
36
|
-
type: "object",
|
|
37
|
-
description: "Search criteria to find content (used when contentId is not provided)",
|
|
38
|
-
properties: {
|
|
39
|
-
search: { type: "string", description: "Keywords to search for" },
|
|
40
|
-
filters: { type: "array", description: "Filter conditions to apply" }
|
|
41
|
-
}
|
|
32
|
+
description: "The ID of the content item to update"
|
|
42
33
|
},
|
|
43
34
|
updateMethod: {
|
|
44
35
|
type: "string",
|
|
@@ -46,7 +37,7 @@ You can pass \`tags: ['green', 'red']\` as string names and the backend will aut
|
|
|
46
37
|
description: "'patch' for partial updates (default), 'put' for full replacement"
|
|
47
38
|
}
|
|
48
39
|
},
|
|
49
|
-
required: ["
|
|
40
|
+
required: ["contentId"],
|
|
50
41
|
additionalProperties: true
|
|
51
42
|
},
|
|
52
43
|
};
|
|
@@ -57,334 +48,28 @@ export async function handleUpdateContent(args) {
|
|
|
57
48
|
if (!config) {
|
|
58
49
|
throw new Error('Qik MCP server not configured. Run setup first.');
|
|
59
50
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
return createErrorResponse('Please provide a description of what you want to update (e.g., "article", "profile")');
|
|
64
|
-
}
|
|
65
|
-
// STEP 1: Translate natural language to content type and get detailed info
|
|
66
|
-
const contentType = await findContentTypeFromNaturalLanguage(config, naturalLanguage);
|
|
67
|
-
if (!contentType) {
|
|
68
|
-
return createErrorResponse(`I couldn't find a content type matching "${naturalLanguage}". Please check available types using get_glossary.`);
|
|
69
|
-
}
|
|
70
|
-
// STEP 2: Find the content to update
|
|
71
|
-
let targetContent = null;
|
|
72
|
-
if (args.contentId) {
|
|
73
|
-
// Direct ID lookup
|
|
74
|
-
targetContent = await getContentById(config, contentType.key, args.contentId);
|
|
75
|
-
if (!targetContent) {
|
|
76
|
-
return createErrorResponse(`Content with ID "${args.contentId}" not found.`);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
// Search for content to update
|
|
81
|
-
const searchResults = await findContentToUpdate(args, contentType, naturalLanguage);
|
|
82
|
-
if (searchResults.error) {
|
|
83
|
-
return searchResults;
|
|
84
|
-
}
|
|
85
|
-
if (searchResults.needsSelection) {
|
|
86
|
-
return searchResults;
|
|
87
|
-
}
|
|
88
|
-
targetContent = searchResults.content;
|
|
89
|
-
}
|
|
90
|
-
// STEP 3: If we haven't confirmed the update yet, show the content and ask for confirmation
|
|
91
|
-
if (!args.confirmUpdate) {
|
|
92
|
-
return createUpdateConfirmationPrompt(contentType, targetContent, args);
|
|
93
|
-
}
|
|
94
|
-
// STEP 4: Extract field values from user input (everything except control fields)
|
|
95
|
-
const { typeKey, contentId, searchCriteria, updateMethod, confirmUpdate, ...userFieldValues } = args;
|
|
96
|
-
// STEP 4.5: Handle reference field searches before building payload
|
|
97
|
-
const referenceSearchResult = await handleReferenceFieldSearches(contentType, userFieldValues, naturalLanguage);
|
|
98
|
-
if (referenceSearchResult) {
|
|
99
|
-
return referenceSearchResult;
|
|
51
|
+
const { contentId, updateMethod, ...payload } = args;
|
|
52
|
+
if (!contentId) {
|
|
53
|
+
throw new Error('contentId is required');
|
|
100
54
|
}
|
|
101
|
-
|
|
102
|
-
const
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
// Find content type from natural language and get detailed info
|
|
112
|
-
async function findContentTypeFromNaturalLanguage(config, naturalLanguage) {
|
|
113
|
-
// Get the glossary index
|
|
114
|
-
const indexResponse = await fetch(`${config.apiUrl || 'https://api.qik.dev'}/glossary/ai`, {
|
|
115
|
-
headers: {
|
|
116
|
-
'Authorization': `Bearer ${config.accessToken}`,
|
|
117
|
-
'Content-Type': 'application/json',
|
|
118
|
-
},
|
|
119
|
-
});
|
|
120
|
-
if (!indexResponse.ok) {
|
|
121
|
-
throw new Error(`Failed to fetch glossary: HTTP ${indexResponse.status}`);
|
|
122
|
-
}
|
|
123
|
-
const glossary = await indexResponse.json();
|
|
124
|
-
// Find matching content type
|
|
125
|
-
const searchTerm = naturalLanguage.toLowerCase().trim();
|
|
126
|
-
let matchedType = null;
|
|
127
|
-
// Try exact key match first
|
|
128
|
-
matchedType = glossary.find(ct => ct.key === searchTerm);
|
|
129
|
-
// Try fuzzy matching on title, plural, and key
|
|
130
|
-
if (!matchedType) {
|
|
131
|
-
matchedType = glossary.find(ct => {
|
|
132
|
-
const title = (ct.title || '').toLowerCase();
|
|
133
|
-
const plural = (ct.plural || '').toLowerCase();
|
|
134
|
-
const key = (ct.key || '').toLowerCase();
|
|
135
|
-
return title.includes(searchTerm) ||
|
|
136
|
-
plural.includes(searchTerm) ||
|
|
137
|
-
key.includes(searchTerm) ||
|
|
138
|
-
searchTerm.includes(title) ||
|
|
139
|
-
searchTerm.includes(plural) ||
|
|
140
|
-
searchTerm.includes(key);
|
|
55
|
+
const method = (updateMethod || 'patch').toUpperCase();
|
|
56
|
+
const response = await fetch(`${config.apiUrl || 'https://api.qik.dev'}/content/${contentId}`, {
|
|
57
|
+
method,
|
|
58
|
+
headers: {
|
|
59
|
+
'Authorization': `Bearer ${config.accessToken}`,
|
|
60
|
+
'Content-Type': 'application/json',
|
|
61
|
+
},
|
|
62
|
+
body: JSON.stringify(payload)
|
|
141
63
|
});
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
}
|
|
146
|
-
// Fetch detailed documentation with examples
|
|
147
|
-
const detailResponse = await fetch(matchedType.urls.documentation.url, {
|
|
148
|
-
headers: {
|
|
149
|
-
'Authorization': `Bearer ${config.accessToken}`,
|
|
150
|
-
'Content-Type': 'application/json',
|
|
151
|
-
},
|
|
152
|
-
});
|
|
153
|
-
if (!detailResponse.ok) {
|
|
154
|
-
throw new Error(`Failed to fetch content type details: HTTP ${detailResponse.status}`);
|
|
155
|
-
}
|
|
156
|
-
const detailData = await detailResponse.json();
|
|
157
|
-
return {
|
|
158
|
-
...detailData,
|
|
159
|
-
title: matchedType.title,
|
|
160
|
-
plural: matchedType.plural,
|
|
161
|
-
urls: matchedType.urls
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
// Get content by ID
|
|
165
|
-
async function getContentById(config, contentTypeKey, contentId) {
|
|
166
|
-
const response = await fetch(`${config.apiUrl || 'https://api.qik.dev'}/content/${contentId}`, {
|
|
167
|
-
headers: {
|
|
168
|
-
'Authorization': `Bearer ${config.accessToken}`,
|
|
169
|
-
'Content-Type': 'application/json',
|
|
170
|
-
},
|
|
171
|
-
});
|
|
172
|
-
if (!response.ok) {
|
|
173
|
-
if (response.status === 404) {
|
|
174
|
-
return null;
|
|
175
|
-
}
|
|
176
|
-
throw new Error(`HTTP ${response.status} - ${await response.text()}`);
|
|
177
|
-
}
|
|
178
|
-
return await response.json();
|
|
179
|
-
}
|
|
180
|
-
// Find content to update using search criteria
|
|
181
|
-
async function findContentToUpdate(args, contentType, naturalLanguage) {
|
|
182
|
-
// Build search arguments for the list function
|
|
183
|
-
const listArgs = {
|
|
184
|
-
typeKey: naturalLanguage,
|
|
185
|
-
page: { size: 10, index: 1 } // Limit results for selection
|
|
186
|
-
};
|
|
187
|
-
// Add search criteria if provided
|
|
188
|
-
if (args.searchCriteria) {
|
|
189
|
-
if (args.searchCriteria.search) {
|
|
190
|
-
listArgs.search = args.searchCriteria.search;
|
|
64
|
+
if (!response.ok) {
|
|
65
|
+
const errorText = await response.text();
|
|
66
|
+
throw new Error(`HTTP ${response.status}: ${errorText}`);
|
|
191
67
|
}
|
|
192
|
-
|
|
193
|
-
listArgs.filters = args.searchCriteria.filters;
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
// If no specific search criteria, try to infer from the request
|
|
197
|
-
if (!args.searchCriteria && !listArgs.search) {
|
|
198
|
-
// Look for any field values that might help identify the content
|
|
199
|
-
const { typeKey, contentId, searchCriteria, updateMethod, confirmUpdate, ...fieldValues } = args;
|
|
200
|
-
// If there's a title field, use it for search
|
|
201
|
-
if (fieldValues.title) {
|
|
202
|
-
listArgs.search = fieldValues.title;
|
|
203
|
-
}
|
|
204
|
-
else {
|
|
205
|
-
// Ask user to provide search criteria
|
|
206
|
-
return createSearchCriteriaPrompt(contentType, naturalLanguage);
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
// Execute the search using the list function
|
|
210
|
-
const searchResponse = await handleListContent(listArgs);
|
|
211
|
-
// Parse the response to extract content items
|
|
212
|
-
const responseText = searchResponse.content[0]?.text || '';
|
|
213
|
-
if (responseText.includes('No ') && responseText.includes('found matching')) {
|
|
214
|
-
return createErrorResponse(`No ${contentType.plural || contentType.title} found matching your search criteria. Please refine your search or provide a specific content ID.`);
|
|
215
|
-
}
|
|
216
|
-
// For now, we'll ask the user to provide the specific ID
|
|
217
|
-
// In a more advanced implementation, we could parse the list response and extract IDs
|
|
218
|
-
return createContentSelectionPrompt(contentType, responseText, naturalLanguage);
|
|
219
|
-
}
|
|
220
|
-
// Build update payload based on method (PATCH vs PUT)
|
|
221
|
-
async function buildUpdatePayload(contentType, existingContent, userFieldValues, method) {
|
|
222
|
-
if (method === 'put') {
|
|
223
|
-
// For PUT, we need to provide the complete content
|
|
224
|
-
// Start with existing content and apply user changes
|
|
225
|
-
const payload = JSON.parse(JSON.stringify(existingContent));
|
|
226
|
-
// Apply user field values
|
|
227
|
-
for (const [key, value] of Object.entries(userFieldValues)) {
|
|
228
|
-
setValueAtPath(payload, key, value);
|
|
229
|
-
}
|
|
230
|
-
// Update the modified timestamp
|
|
231
|
-
if (payload.meta) {
|
|
232
|
-
payload.meta.updated = new Date().toISOString();
|
|
233
|
-
}
|
|
234
|
-
return payload;
|
|
235
|
-
}
|
|
236
|
-
else {
|
|
237
|
-
// For PATCH, we only send the fields that are changing
|
|
238
|
-
// Use the same structure as create requests - no nested data object
|
|
239
|
-
const payload = {};
|
|
240
|
-
// Apply user field values directly to the payload (same as create)
|
|
241
|
-
for (const [key, value] of Object.entries(userFieldValues)) {
|
|
242
|
-
setValueAtPath(payload, key, value);
|
|
243
|
-
}
|
|
244
|
-
return payload;
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
// Execute the update via API
|
|
248
|
-
async function executeUpdate(config, contentId, payload, method) {
|
|
249
|
-
const httpMethod = method.toUpperCase();
|
|
250
|
-
const response = await fetch(`${config.apiUrl || 'https://api.qik.dev'}/content/${contentId}`, {
|
|
251
|
-
method: httpMethod,
|
|
252
|
-
headers: {
|
|
253
|
-
'Authorization': `Bearer ${config.accessToken}`,
|
|
254
|
-
'Content-Type': 'application/json',
|
|
255
|
-
},
|
|
256
|
-
body: JSON.stringify(payload)
|
|
257
|
-
});
|
|
258
|
-
if (!response.ok) {
|
|
259
|
-
const errorText = await response.text();
|
|
260
|
-
throw new Error(`HTTP ${response.status} - ${errorText}`);
|
|
261
|
-
}
|
|
262
|
-
return await response.json();
|
|
263
|
-
}
|
|
264
|
-
// Helper function to set value at a specific path
|
|
265
|
-
function setValueAtPath(obj, path, value) {
|
|
266
|
-
const parts = path.split('.');
|
|
267
|
-
let current = obj;
|
|
268
|
-
for (let i = 0; i < parts.length - 1; i++) {
|
|
269
|
-
const part = parts[i];
|
|
270
|
-
if (!current[part]) {
|
|
271
|
-
current[part] = {};
|
|
272
|
-
}
|
|
273
|
-
current = current[part];
|
|
274
|
-
}
|
|
275
|
-
const finalPart = parts[parts.length - 1];
|
|
276
|
-
current[finalPart] = value;
|
|
277
|
-
}
|
|
278
|
-
// Helper functions for responses
|
|
279
|
-
function createErrorResponse(message) {
|
|
280
|
-
return {
|
|
281
|
-
content: [{
|
|
282
|
-
type: "text",
|
|
283
|
-
text: JSON.stringify({ error: message }, null, 2)
|
|
284
|
-
}]
|
|
285
|
-
};
|
|
286
|
-
}
|
|
287
|
-
function createSearchCriteriaPrompt(contentType, naturalLanguage) {
|
|
288
|
-
return {
|
|
289
|
-
content: [{
|
|
290
|
-
type: "text",
|
|
291
|
-
text: JSON.stringify({
|
|
292
|
-
needsSearchCriteria: true,
|
|
293
|
-
contentTitle: contentType.title,
|
|
294
|
-
typeKey: naturalLanguage
|
|
295
|
-
}, null, 2)
|
|
296
|
-
}]
|
|
297
|
-
};
|
|
298
|
-
}
|
|
299
|
-
function createContentSelectionPrompt(contentType, searchResults, naturalLanguage) {
|
|
300
|
-
return {
|
|
301
|
-
content: [{
|
|
302
|
-
type: "text",
|
|
303
|
-
text: JSON.stringify({
|
|
304
|
-
needsSelection: true,
|
|
305
|
-
contentTitle: contentType.title,
|
|
306
|
-
plural: contentType.plural,
|
|
307
|
-
searchResults: JSON.parse(searchResults),
|
|
308
|
-
typeKey: naturalLanguage
|
|
309
|
-
}, null, 2)
|
|
310
|
-
}]
|
|
311
|
-
};
|
|
312
|
-
}
|
|
313
|
-
function createUpdateConfirmationPrompt(contentType, targetContent, args) {
|
|
314
|
-
const { typeKey, contentId, searchCriteria, updateMethod, confirmUpdate, ...fieldUpdates } = args;
|
|
315
|
-
return {
|
|
316
|
-
content: [{
|
|
317
|
-
type: "text",
|
|
318
|
-
text: JSON.stringify({
|
|
319
|
-
needsConfirmation: true,
|
|
320
|
-
contentTitle: contentType.title,
|
|
321
|
-
currentContent: targetContent,
|
|
322
|
-
proposedChanges: fieldUpdates,
|
|
323
|
-
updateMethod: args.updateMethod || 'patch',
|
|
324
|
-
typeKey,
|
|
325
|
-
contentId: targetContent._id
|
|
326
|
-
}, null, 2)
|
|
327
|
-
}]
|
|
328
|
-
};
|
|
329
|
-
}
|
|
330
|
-
function createUpdateSuccessResponse(contentType, updatedContent, method) {
|
|
331
|
-
return {
|
|
332
|
-
content: [{
|
|
333
|
-
type: "text",
|
|
334
|
-
text: JSON.stringify(updatedContent, null, 2)
|
|
335
|
-
}]
|
|
336
|
-
};
|
|
337
|
-
}
|
|
338
|
-
// Handle reference field searches in update context
|
|
339
|
-
async function handleReferenceFieldSearches(contentType, userFieldValues, naturalLanguage) {
|
|
340
|
-
// Check if any field values are reference search requests
|
|
341
|
-
for (const [key, value] of Object.entries(userFieldValues)) {
|
|
342
|
-
if (typeof value === 'string' && value.startsWith('search for:')) {
|
|
343
|
-
// Find the field definition for this key
|
|
344
|
-
const field = contentType.fields?.find(f => f.path === key ||
|
|
345
|
-
f.title === key ||
|
|
346
|
-
f.path.split('.').pop() === key);
|
|
347
|
-
if (field && field.type === 'reference') {
|
|
348
|
-
const searchTerm = value.replace('search for:', '').trim();
|
|
349
|
-
if (searchTerm) {
|
|
350
|
-
return await handleUpdateReferenceFieldSearch(field, searchTerm, naturalLanguage, key);
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
return null;
|
|
356
|
-
}
|
|
357
|
-
// Handle reference field search for update operations
|
|
358
|
-
async function handleUpdateReferenceFieldSearch(field, searchTerm, naturalLanguage, fieldKey) {
|
|
359
|
-
try {
|
|
360
|
-
if (!field.referenceType) {
|
|
361
|
-
return {
|
|
362
|
-
content: [{
|
|
363
|
-
type: "text",
|
|
364
|
-
text: JSON.stringify({ error: `Cannot search for ${field.path} references - no reference type specified in field definition.` }, null, 2)
|
|
365
|
-
}]
|
|
366
|
-
};
|
|
367
|
-
}
|
|
368
|
-
// Use the list function to search for references
|
|
369
|
-
const listArgs = {
|
|
370
|
-
typeKey: field.referenceType,
|
|
371
|
-
search: searchTerm,
|
|
372
|
-
page: { size: 10, index: 1 }
|
|
373
|
-
};
|
|
374
|
-
const searchResults = await handleListContent(listArgs);
|
|
68
|
+
const data = await response.json();
|
|
375
69
|
return {
|
|
376
70
|
content: [{
|
|
377
71
|
type: "text",
|
|
378
|
-
text: JSON.stringify(
|
|
379
|
-
referenceSearch: true,
|
|
380
|
-
field: field.path,
|
|
381
|
-
fieldTitle: field.title,
|
|
382
|
-
fieldKey,
|
|
383
|
-
referenceType: field.referenceType,
|
|
384
|
-
searchTerm,
|
|
385
|
-
results: JSON.parse(searchResults.content[0]?.text || '{}'),
|
|
386
|
-
typeKey: naturalLanguage
|
|
387
|
-
}, null, 2)
|
|
72
|
+
text: JSON.stringify(data, null, 2)
|
|
388
73
|
}]
|
|
389
74
|
};
|
|
390
75
|
}
|
|
@@ -392,7 +77,7 @@ async function handleUpdateReferenceFieldSearch(field, searchTerm, naturalLangua
|
|
|
392
77
|
return {
|
|
393
78
|
content: [{
|
|
394
79
|
type: "text",
|
|
395
|
-
text: JSON.stringify({ error:
|
|
80
|
+
text: JSON.stringify({ error: error.message }, null, 2)
|
|
396
81
|
}]
|
|
397
82
|
};
|
|
398
83
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/tools/update.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/tools/update.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,CAAC,MAAM,iBAAiB,GAAS;IACrC,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;OAsBR;IACL,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,sCAAsC;aACpD;YACD,YAAY,EAAE;gBACZ,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;gBACtB,WAAW,EAAE,mEAAmE;aACjF;SACF;QACD,QAAQ,EAAE,CAAC,WAAW,CAAC;QACvB,oBAAoB,EAAE,IAAI;KAC3B;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAS;IACjD,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,UAAU,EAAE,CAAC;QAEhD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC;QAErD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QAEvD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,qBAAqB,YAAY,SAAS,EAAE,EAAE;YAC7F,MAAM;YACN,OAAO,EAAE;gBACP,eAAe,EAAE,UAAU,MAAM,CAAC,WAAW,EAAE;gBAC/C,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;SAC9B,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnC,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;iBACpC,CAAC;SACH,CAAC;IAEJ,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;iBACxD,CAAC;SACH,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
interface WorkflowStep {
|
|
3
|
+
title: string;
|
|
4
|
+
key?: string;
|
|
5
|
+
color?: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
assignees?: string[];
|
|
8
|
+
assigneeBehaviour?: "" | "leave" | "remove";
|
|
9
|
+
dueDateBehaviour?: "" | "period" | "point";
|
|
10
|
+
dueDateQuantity?: number;
|
|
11
|
+
dueDateUnit?: string;
|
|
12
|
+
dueDateReplacement?: "" | "leave";
|
|
13
|
+
hasRequiredTasks?: boolean;
|
|
14
|
+
requireTasks?: Array<{
|
|
15
|
+
title: string;
|
|
16
|
+
description?: string;
|
|
17
|
+
}>;
|
|
18
|
+
hasRequiredForms?: boolean;
|
|
19
|
+
requireForms?: any[];
|
|
20
|
+
hasRequiredCriteria?: boolean;
|
|
21
|
+
completionCriteria?: any[];
|
|
22
|
+
completionWhen?: "" | "immediate" | "wait";
|
|
23
|
+
entryFunctions?: any[];
|
|
24
|
+
exitFunctions?: any[];
|
|
25
|
+
successFunctions?: any[];
|
|
26
|
+
failFunctions?: any[];
|
|
27
|
+
successAction?: "" | "next" | "previous" | "step" | "archive";
|
|
28
|
+
successTargetStep?: string;
|
|
29
|
+
failureAction?: "" | "next" | "previous" | "step" | "archive";
|
|
30
|
+
failureTargetStep?: string;
|
|
31
|
+
}
|
|
32
|
+
interface WorkflowColumn {
|
|
33
|
+
title: string;
|
|
34
|
+
description?: string;
|
|
35
|
+
steps: WorkflowStep[];
|
|
36
|
+
}
|
|
37
|
+
interface ListWorkflowsArgs {
|
|
38
|
+
search?: string;
|
|
39
|
+
category?: string;
|
|
40
|
+
page?: {
|
|
41
|
+
size: number;
|
|
42
|
+
index: number;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
interface GetWorkflowArgs {
|
|
46
|
+
workflowId?: string;
|
|
47
|
+
workflowKey?: string;
|
|
48
|
+
workflowTitle?: string;
|
|
49
|
+
}
|
|
50
|
+
interface CreateWorkflowArgs {
|
|
51
|
+
title: string;
|
|
52
|
+
plural?: string;
|
|
53
|
+
category?: string;
|
|
54
|
+
workflow: WorkflowColumn[];
|
|
55
|
+
scope?: string;
|
|
56
|
+
}
|
|
57
|
+
interface UpdateWorkflowArgs {
|
|
58
|
+
workflowId?: string;
|
|
59
|
+
workflowKey?: string;
|
|
60
|
+
workflowTitle?: string;
|
|
61
|
+
title?: string;
|
|
62
|
+
category?: string;
|
|
63
|
+
addColumns?: Array<{
|
|
64
|
+
title: string;
|
|
65
|
+
description?: string;
|
|
66
|
+
steps: WorkflowStep[];
|
|
67
|
+
insertAfter?: string;
|
|
68
|
+
}>;
|
|
69
|
+
removeColumns?: string[];
|
|
70
|
+
addSteps?: Array<{
|
|
71
|
+
columnTitle: string;
|
|
72
|
+
step: WorkflowStep;
|
|
73
|
+
insertAfter?: string;
|
|
74
|
+
}>;
|
|
75
|
+
removeSteps?: string[];
|
|
76
|
+
updateSteps?: Array<{
|
|
77
|
+
stepKey: string;
|
|
78
|
+
changes: Partial<WorkflowStep>;
|
|
79
|
+
}>;
|
|
80
|
+
}
|
|
81
|
+
export declare const listWorkflowsTool: Tool;
|
|
82
|
+
export declare const getWorkflowTool: Tool;
|
|
83
|
+
export declare const createWorkflowTool: Tool;
|
|
84
|
+
export declare const updateWorkflowTool: Tool;
|
|
85
|
+
export declare function handleListWorkflows(args: ListWorkflowsArgs): Promise<{
|
|
86
|
+
content: Array<{
|
|
87
|
+
type: string;
|
|
88
|
+
text: string;
|
|
89
|
+
}>;
|
|
90
|
+
}>;
|
|
91
|
+
export declare function handleGetWorkflow(args: GetWorkflowArgs): Promise<{
|
|
92
|
+
content: Array<{
|
|
93
|
+
type: string;
|
|
94
|
+
text: string;
|
|
95
|
+
}>;
|
|
96
|
+
}>;
|
|
97
|
+
export declare function handleCreateWorkflow(args: CreateWorkflowArgs): Promise<{
|
|
98
|
+
content: Array<{
|
|
99
|
+
type: string;
|
|
100
|
+
text: string;
|
|
101
|
+
}>;
|
|
102
|
+
}>;
|
|
103
|
+
export declare function handleUpdateWorkflow(args: UpdateWorkflowArgs): Promise<{
|
|
104
|
+
content: Array<{
|
|
105
|
+
type: string;
|
|
106
|
+
text: string;
|
|
107
|
+
}>;
|
|
108
|
+
}>;
|
|
109
|
+
export {};
|
|
110
|
+
//# sourceMappingURL=workflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../../src/tools/workflow.ts"],"names":[],"mappings":"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"}
|