motionmcp 1.0.1 → 2.0.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 +202 -0
- package/README.md +251 -417
- package/dist/handlers/CommentHandler.d.ts +9 -0
- package/dist/handlers/CommentHandler.d.ts.map +1 -0
- package/dist/handlers/CommentHandler.js +66 -0
- package/dist/handlers/CommentHandler.js.map +1 -0
- package/dist/handlers/CustomFieldHandler.d.ts +14 -0
- package/dist/handlers/CustomFieldHandler.d.ts.map +1 -0
- package/dist/handlers/CustomFieldHandler.js +95 -0
- package/dist/handlers/CustomFieldHandler.js.map +1 -0
- package/dist/handlers/HandlerFactory.d.ts +15 -0
- package/dist/handlers/HandlerFactory.d.ts.map +1 -0
- package/dist/handlers/HandlerFactory.js +58 -0
- package/dist/handlers/HandlerFactory.js.map +1 -0
- package/dist/handlers/ProjectHandler.d.ts +10 -0
- package/dist/handlers/ProjectHandler.d.ts.map +1 -0
- package/dist/handlers/ProjectHandler.js +63 -0
- package/dist/handlers/ProjectHandler.js.map +1 -0
- package/dist/handlers/RecurringTaskHandler.d.ts +10 -0
- package/dist/handlers/RecurringTaskHandler.d.ts.map +1 -0
- package/dist/handlers/RecurringTaskHandler.js +68 -0
- package/dist/handlers/RecurringTaskHandler.js.map +1 -0
- package/dist/handlers/ScheduleHandler.d.ts +8 -0
- package/dist/handlers/ScheduleHandler.d.ts.map +1 -0
- package/dist/handlers/ScheduleHandler.js +43 -0
- package/dist/handlers/ScheduleHandler.js.map +1 -0
- package/dist/handlers/SearchHandler.d.ts +10 -0
- package/dist/handlers/SearchHandler.d.ts.map +1 -0
- package/dist/handlers/SearchHandler.js +116 -0
- package/dist/handlers/SearchHandler.js.map +1 -0
- package/dist/handlers/StatusHandler.d.ts +8 -0
- package/dist/handlers/StatusHandler.d.ts.map +1 -0
- package/dist/handlers/StatusHandler.js +22 -0
- package/dist/handlers/StatusHandler.js.map +1 -0
- package/dist/handlers/TaskHandler.d.ts +22 -0
- package/dist/handlers/TaskHandler.d.ts.map +1 -0
- package/dist/handlers/TaskHandler.js +266 -0
- package/dist/handlers/TaskHandler.js.map +1 -0
- package/dist/handlers/UserHandler.d.ts +9 -0
- package/dist/handlers/UserHandler.d.ts.map +1 -0
- package/dist/handlers/UserHandler.js +36 -0
- package/dist/handlers/UserHandler.js.map +1 -0
- package/dist/handlers/WorkspaceHandler.d.ts +10 -0
- package/dist/handlers/WorkspaceHandler.d.ts.map +1 -0
- package/dist/handlers/WorkspaceHandler.js +49 -0
- package/dist/handlers/WorkspaceHandler.js.map +1 -0
- package/dist/handlers/base/BaseHandler.d.ts +16 -0
- package/dist/handlers/base/BaseHandler.d.ts.map +1 -0
- package/dist/handlers/base/BaseHandler.js +31 -0
- package/dist/handlers/base/BaseHandler.js.map +1 -0
- package/dist/handlers/base/HandlerInterface.d.ts +18 -0
- package/dist/handlers/base/HandlerInterface.d.ts.map +1 -0
- package/dist/handlers/base/HandlerInterface.js +3 -0
- package/dist/handlers/base/HandlerInterface.js.map +1 -0
- package/dist/handlers/index.d.ts +14 -0
- package/dist/handlers/index.d.ts.map +1 -0
- package/dist/handlers/index.js +31 -0
- package/dist/handlers/index.js.map +1 -0
- package/dist/mcp-server-old.d.ts +29 -0
- package/dist/mcp-server-old.d.ts.map +1 -0
- package/dist/mcp-server-old.js +1304 -0
- package/dist/mcp-server-old.js.map +1 -0
- package/dist/mcp-server.d.ts +15 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +145 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/schemas/motion.d.ts +4971 -0
- package/dist/schemas/motion.d.ts.map +1 -0
- package/dist/schemas/motion.js +328 -0
- package/dist/schemas/motion.js.map +1 -0
- package/dist/services/motionApi.d.ts +186 -0
- package/dist/services/motionApi.d.ts.map +1 -0
- package/dist/services/motionApi.js +1912 -0
- package/dist/services/motionApi.js.map +1 -0
- package/dist/tools/ToolConfigurator.d.ts +19 -0
- package/dist/tools/ToolConfigurator.d.ts.map +1 -0
- package/dist/tools/ToolConfigurator.js +89 -0
- package/dist/tools/ToolConfigurator.js.map +1 -0
- package/dist/tools/ToolDefinitions.d.ts +25 -0
- package/dist/tools/ToolDefinitions.d.ts.map +1 -0
- package/dist/tools/ToolDefinitions.js +502 -0
- package/dist/tools/ToolDefinitions.js.map +1 -0
- package/dist/tools/ToolRegistry.d.ts +16 -0
- package/dist/tools/ToolRegistry.d.ts.map +1 -0
- package/dist/tools/ToolRegistry.js +89 -0
- package/dist/tools/ToolRegistry.js.map +1 -0
- package/dist/tools/index.d.ts +4 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +21 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/types/mcp-tool-args.d.ts +122 -0
- package/dist/types/mcp-tool-args.d.ts.map +1 -0
- package/dist/types/mcp-tool-args.js +7 -0
- package/dist/types/mcp-tool-args.js.map +1 -0
- package/dist/types/mcp.d.ts +32 -0
- package/dist/types/mcp.d.ts.map +1 -0
- package/dist/types/mcp.js +3 -0
- package/dist/types/mcp.js.map +1 -0
- package/dist/types/motion.d.ts +304 -0
- package/dist/types/motion.d.ts.map +1 -0
- package/dist/types/motion.js +3 -0
- package/dist/types/motion.js.map +1 -0
- package/dist/utils/cache.d.ts +25 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +135 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/constants.d.ts +83 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/constants.js +151 -0
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/errorHandling.d.ts +50 -0
- package/dist/utils/errorHandling.d.ts.map +1 -0
- package/dist/utils/errorHandling.js +86 -0
- package/dist/utils/errorHandling.js.map +1 -0
- package/dist/utils/index.d.ts +13 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +38 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +13 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +47 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/paginationNew.d.ts +44 -0
- package/dist/utils/paginationNew.d.ts.map +1 -0
- package/dist/utils/paginationNew.js +149 -0
- package/dist/utils/paginationNew.js.map +1 -0
- package/dist/utils/parameterUtils.d.ts +79 -0
- package/dist/utils/parameterUtils.d.ts.map +1 -0
- package/dist/utils/parameterUtils.js +189 -0
- package/dist/utils/parameterUtils.js.map +1 -0
- package/dist/utils/responseFormatters.d.ts +92 -0
- package/dist/utils/responseFormatters.d.ts.map +1 -0
- package/dist/utils/responseFormatters.js +331 -0
- package/dist/utils/responseFormatters.js.map +1 -0
- package/dist/utils/responseWrapper.d.ts +38 -0
- package/dist/utils/responseWrapper.d.ts.map +1 -0
- package/dist/utils/responseWrapper.js +201 -0
- package/dist/utils/responseWrapper.js.map +1 -0
- package/dist/utils/sanitize.d.ts +51 -0
- package/dist/utils/sanitize.d.ts.map +1 -0
- package/dist/utils/sanitize.js +137 -0
- package/dist/utils/sanitize.js.map +1 -0
- package/dist/utils/validator.d.ts +37 -0
- package/dist/utils/validator.d.ts.map +1 -0
- package/dist/utils/validator.js +74 -0
- package/dist/utils/validator.js.map +1 -0
- package/dist/utils/workspaceResolver.d.ts +40 -0
- package/dist/utils/workspaceResolver.d.ts.map +1 -0
- package/dist/utils/workspaceResolver.js +207 -0
- package/dist/utils/workspaceResolver.js.map +1 -0
- package/package.json +41 -17
- package/.claude/settings.local.json +0 -15
- package/.env.example +0 -3
- package/sample.png +0 -0
- package/src/index.js +0 -49
- package/src/mcp-server.js +0 -1137
- package/src/routes/motion.js +0 -152
- package/src/services/motionApi.js +0 -1177
- package/src/worker.js +0 -248
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAIH,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;AAEpF;;GAEG;AACH,SAAS,eAAe,CAAC,IAAyB;IAChD,MAAM,SAAS,GAAwB,EAAE,CAAC;IAE1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,8CAA8C;QAC9C,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACtE,SAAS,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;QAChC,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAChF,sCAAsC;YACtC,SAAS,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACI,MAAM,MAAM,GAAG,CAAC,KAAe,EAAE,OAAe,EAAE,QAA6B,EAAE,EAAQ,EAAE;IAChG,MAAM,cAAc,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAE9C,MAAM,QAAQ,GAAG;QACf,KAAK;QACL,GAAG,EAAE,OAAO;QACZ,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC9B,GAAG,cAAc;KAClB,CAAC;IAEF,kDAAkD;IAClD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1C,CAAC,CAAC;AAZW,QAAA,MAAM,UAYjB"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enhanced Pagination Utilities with Proper Response Wrapper Support
|
|
3
|
+
*
|
|
4
|
+
* This replaces the old pagination utility with proper handling of Motion API's
|
|
5
|
+
* inconsistent response patterns using the ResponseWrapper utility.
|
|
6
|
+
*/
|
|
7
|
+
import { AxiosResponse } from 'axios';
|
|
8
|
+
import { UnwrappedResponse } from './responseWrapper';
|
|
9
|
+
export interface PaginatedResponse<T> {
|
|
10
|
+
items: T[];
|
|
11
|
+
nextCursor?: string;
|
|
12
|
+
hasMore: boolean;
|
|
13
|
+
totalFetched: number;
|
|
14
|
+
}
|
|
15
|
+
export interface CursorPaginationOptions {
|
|
16
|
+
maxPages?: number;
|
|
17
|
+
pageSize?: number;
|
|
18
|
+
logProgress?: boolean;
|
|
19
|
+
maxItems?: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Enhanced pagination handler that properly uses response wrapper
|
|
23
|
+
*
|
|
24
|
+
* @param fetchPage - Function that fetches a single page of data
|
|
25
|
+
* @param apiEndpoint - The API endpoint name for proper response unwrapping
|
|
26
|
+
* @param options - Pagination options
|
|
27
|
+
* @returns All items from all pages with pagination metadata
|
|
28
|
+
*/
|
|
29
|
+
export declare function fetchAllPages<T>(fetchPage: (cursor?: string) => Promise<AxiosResponse<any>>, apiEndpoint: string, options?: CursorPaginationOptions): Promise<PaginatedResponse<T>>;
|
|
30
|
+
/**
|
|
31
|
+
* Fetches a single page with proper response unwrapping
|
|
32
|
+
*
|
|
33
|
+
* @param fetchPage - Function that fetches a single page
|
|
34
|
+
* @param apiEndpoint - The API endpoint name for proper response unwrapping
|
|
35
|
+
* @param cursor - Optional cursor for the specific page
|
|
36
|
+
* @returns Single page of data with pagination metadata
|
|
37
|
+
*/
|
|
38
|
+
export declare function fetchSinglePage<T>(fetchPage: (cursor?: string) => Promise<AxiosResponse<any>>, apiEndpoint: string, cursor?: string): Promise<UnwrappedResponse<T>>;
|
|
39
|
+
/**
|
|
40
|
+
* Check if an endpoint supports pagination
|
|
41
|
+
*/
|
|
42
|
+
export declare function endpointSupportsPagination(apiEndpoint: string): boolean;
|
|
43
|
+
export { UnwrappedResponse } from './responseWrapper';
|
|
44
|
+
//# sourceMappingURL=paginationNew.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paginationNew.d.ts","sourceRoot":"","sources":["../../src/utils/paginationNew.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAGtC,OAAO,EAAyC,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAG7F,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CAAC,CAAC,EACnC,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EAC3D,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAuH/B;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,CAAC,EACrC,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EAC3D,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAG/B;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAEvE;AAGD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Enhanced Pagination Utilities with Proper Response Wrapper Support
|
|
4
|
+
*
|
|
5
|
+
* This replaces the old pagination utility with proper handling of Motion API's
|
|
6
|
+
* inconsistent response patterns using the ResponseWrapper utility.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.fetchAllPages = fetchAllPages;
|
|
10
|
+
exports.fetchSinglePage = fetchSinglePage;
|
|
11
|
+
exports.endpointSupportsPagination = endpointSupportsPagination;
|
|
12
|
+
const logger_1 = require("./logger");
|
|
13
|
+
const constants_1 = require("./constants");
|
|
14
|
+
const responseWrapper_1 = require("./responseWrapper");
|
|
15
|
+
/**
|
|
16
|
+
* Enhanced pagination handler that properly uses response wrapper
|
|
17
|
+
*
|
|
18
|
+
* @param fetchPage - Function that fetches a single page of data
|
|
19
|
+
* @param apiEndpoint - The API endpoint name for proper response unwrapping
|
|
20
|
+
* @param options - Pagination options
|
|
21
|
+
* @returns All items from all pages with pagination metadata
|
|
22
|
+
*/
|
|
23
|
+
async function fetchAllPages(fetchPage, apiEndpoint, options = {}) {
|
|
24
|
+
const { maxPages = constants_1.LIMITS.MAX_PAGES, logProgress = true, maxItems = constants_1.LIMITS.MAX_PAGE_SIZE * 10 } = options;
|
|
25
|
+
let allItems = [];
|
|
26
|
+
let cursor;
|
|
27
|
+
let pageCount = 0;
|
|
28
|
+
let hasMore = true;
|
|
29
|
+
// Infinite loop protection - ensure we never fetch more than absolute max pages
|
|
30
|
+
const absoluteMaxPages = Math.min(maxPages, constants_1.LIMITS.ABSOLUTE_MAX_PAGES); // Hard limit to prevent infinite loops
|
|
31
|
+
while (hasMore && pageCount < absoluteMaxPages) {
|
|
32
|
+
try {
|
|
33
|
+
if (logProgress && pageCount > 0) {
|
|
34
|
+
(0, logger_1.mcpLog)(constants_1.LOG_LEVELS.DEBUG, `Fetching page ${pageCount + 1} for ${apiEndpoint}`, {
|
|
35
|
+
cursor,
|
|
36
|
+
pageCount,
|
|
37
|
+
itemsSoFar: allItems.length
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
const response = await fetchPage(cursor);
|
|
41
|
+
const unwrapped = (0, responseWrapper_1.unwrapApiResponse)(response.data, apiEndpoint);
|
|
42
|
+
// Enforce page size limit to prevent memory exhaustion
|
|
43
|
+
if (unwrapped.data.length > constants_1.LIMITS.MAX_PAGE_SIZE) {
|
|
44
|
+
(0, logger_1.mcpLog)(constants_1.LOG_LEVELS.WARN, `Page size ${unwrapped.data.length} exceeds maximum allowed ${constants_1.LIMITS.MAX_PAGE_SIZE}, truncating`, {
|
|
45
|
+
pageNumber: pageCount + 1,
|
|
46
|
+
endpoint: apiEndpoint,
|
|
47
|
+
originalSize: unwrapped.data.length,
|
|
48
|
+
truncatedSize: constants_1.LIMITS.MAX_PAGE_SIZE
|
|
49
|
+
});
|
|
50
|
+
unwrapped.data = unwrapped.data.slice(0, constants_1.LIMITS.MAX_PAGE_SIZE);
|
|
51
|
+
}
|
|
52
|
+
// Add items to our collection, but check memory limits first
|
|
53
|
+
const itemsToAdd = unwrapped.data;
|
|
54
|
+
if (allItems.length + itemsToAdd.length > maxItems) {
|
|
55
|
+
// Limit reached - add only what fits
|
|
56
|
+
const remainingSlots = maxItems - allItems.length;
|
|
57
|
+
if (remainingSlots > 0) {
|
|
58
|
+
allItems.push(...itemsToAdd.slice(0, remainingSlots));
|
|
59
|
+
}
|
|
60
|
+
(0, logger_1.mcpLog)(constants_1.LOG_LEVELS.WARN, `Memory limit reached for ${apiEndpoint}, stopping pagination`, {
|
|
61
|
+
totalItems: allItems.length,
|
|
62
|
+
maxItems,
|
|
63
|
+
pageCount: pageCount + 1,
|
|
64
|
+
endpoint: apiEndpoint
|
|
65
|
+
});
|
|
66
|
+
hasMore = false;
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
allItems.push(...itemsToAdd);
|
|
70
|
+
}
|
|
71
|
+
pageCount++;
|
|
72
|
+
// Determine if there are more pages
|
|
73
|
+
if (unwrapped.meta?.nextCursor) {
|
|
74
|
+
const newCursor = unwrapped.meta.nextCursor;
|
|
75
|
+
// Additional safety: detect cursor not advancing (API bug protection)
|
|
76
|
+
if (pageCount > 1 && cursor === newCursor) {
|
|
77
|
+
(0, logger_1.mcpLog)(constants_1.LOG_LEVELS.WARN, `Cursor not advancing for ${apiEndpoint}, stopping pagination`, {
|
|
78
|
+
oldCursor: cursor,
|
|
79
|
+
newCursor,
|
|
80
|
+
pageCount,
|
|
81
|
+
endpoint: apiEndpoint
|
|
82
|
+
});
|
|
83
|
+
hasMore = false;
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
cursor = newCursor;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
hasMore = false;
|
|
91
|
+
}
|
|
92
|
+
// If we got no items on this page, stop
|
|
93
|
+
if (unwrapped.data.length === 0) {
|
|
94
|
+
hasMore = false;
|
|
95
|
+
}
|
|
96
|
+
if (logProgress) {
|
|
97
|
+
(0, logger_1.mcpLog)(constants_1.LOG_LEVELS.DEBUG, `Page ${pageCount} fetched for ${apiEndpoint}`, {
|
|
98
|
+
pageItems: unwrapped.data.length,
|
|
99
|
+
totalItems: allItems.length,
|
|
100
|
+
hasMore,
|
|
101
|
+
nextCursor: cursor,
|
|
102
|
+
endpoint: apiEndpoint
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
(0, logger_1.mcpLog)(constants_1.LOG_LEVELS.ERROR, `Failed to fetch page ${pageCount + 1} for ${apiEndpoint}`, {
|
|
108
|
+
error: error instanceof Error ? error.message : String(error),
|
|
109
|
+
pageCount,
|
|
110
|
+
cursor,
|
|
111
|
+
endpoint: apiEndpoint
|
|
112
|
+
});
|
|
113
|
+
// Don't completely fail - return what we have so far
|
|
114
|
+
hasMore = false;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
if (pageCount >= absoluteMaxPages && hasMore) {
|
|
118
|
+
(0, logger_1.mcpLog)(constants_1.LOG_LEVELS.WARN, `Reached maximum page limit for ${apiEndpoint}`, {
|
|
119
|
+
maxPages: absoluteMaxPages,
|
|
120
|
+
totalItems: allItems.length,
|
|
121
|
+
endpoint: apiEndpoint
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
return {
|
|
125
|
+
items: allItems,
|
|
126
|
+
nextCursor: cursor,
|
|
127
|
+
hasMore: hasMore && pageCount < absoluteMaxPages,
|
|
128
|
+
totalFetched: allItems.length
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Fetches a single page with proper response unwrapping
|
|
133
|
+
*
|
|
134
|
+
* @param fetchPage - Function that fetches a single page
|
|
135
|
+
* @param apiEndpoint - The API endpoint name for proper response unwrapping
|
|
136
|
+
* @param cursor - Optional cursor for the specific page
|
|
137
|
+
* @returns Single page of data with pagination metadata
|
|
138
|
+
*/
|
|
139
|
+
async function fetchSinglePage(fetchPage, apiEndpoint, cursor) {
|
|
140
|
+
const response = await fetchPage(cursor);
|
|
141
|
+
return (0, responseWrapper_1.unwrapApiResponse)(response.data, apiEndpoint);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Check if an endpoint supports pagination
|
|
145
|
+
*/
|
|
146
|
+
function endpointSupportsPagination(apiEndpoint) {
|
|
147
|
+
return (0, responseWrapper_1.supportsPagination)(apiEndpoint);
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=paginationNew.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paginationNew.js","sourceRoot":"","sources":["../../src/utils/paginationNew.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parameter Utilities - Parameter parsing and validation helpers
|
|
3
|
+
*
|
|
4
|
+
* This module provides utilities for parsing, validating, and setting
|
|
5
|
+
* default values for MCP handler parameters, reducing duplication and
|
|
6
|
+
* ensuring consistent parameter handling.
|
|
7
|
+
*/
|
|
8
|
+
interface WorkspaceArgs {
|
|
9
|
+
workspaceId?: string;
|
|
10
|
+
workspaceName?: string;
|
|
11
|
+
}
|
|
12
|
+
interface SearchArgs extends WorkspaceArgs {
|
|
13
|
+
query?: string;
|
|
14
|
+
searchScope?: 'both' | 'tasks' | 'projects';
|
|
15
|
+
limit?: number;
|
|
16
|
+
}
|
|
17
|
+
interface TaskArgs extends WorkspaceArgs {
|
|
18
|
+
name?: string;
|
|
19
|
+
description?: string;
|
|
20
|
+
projectId?: string;
|
|
21
|
+
projectName?: string;
|
|
22
|
+
status?: string;
|
|
23
|
+
priority?: 'ASAP' | 'HIGH' | 'MEDIUM' | 'LOW';
|
|
24
|
+
dueDate?: string;
|
|
25
|
+
duration?: string | number;
|
|
26
|
+
labels?: string[];
|
|
27
|
+
assigneeId?: string;
|
|
28
|
+
autoScheduled?: Record<string, unknown> | null;
|
|
29
|
+
}
|
|
30
|
+
interface ProjectArgs extends WorkspaceArgs {
|
|
31
|
+
name?: string;
|
|
32
|
+
description?: string;
|
|
33
|
+
color?: string;
|
|
34
|
+
status?: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Parse workspace-related arguments from MCP request
|
|
38
|
+
*/
|
|
39
|
+
export declare function parseWorkspaceArgs(args?: Record<string, unknown>): WorkspaceArgs;
|
|
40
|
+
/**
|
|
41
|
+
* Parse search-related arguments from MCP request
|
|
42
|
+
*/
|
|
43
|
+
export declare function parseSearchArgs(args?: Record<string, unknown>): SearchArgs;
|
|
44
|
+
/**
|
|
45
|
+
* Parse task creation/update arguments from MCP request
|
|
46
|
+
*/
|
|
47
|
+
export declare function parseTaskArgs(args?: Record<string, unknown>): TaskArgs;
|
|
48
|
+
/**
|
|
49
|
+
* Parse project creation/update arguments from MCP request
|
|
50
|
+
*/
|
|
51
|
+
export declare function parseProjectArgs(args?: Record<string, unknown>): ProjectArgs;
|
|
52
|
+
/**
|
|
53
|
+
* Set default values for parameters
|
|
54
|
+
*/
|
|
55
|
+
export declare function setDefaults<T extends object, D extends Partial<T>>(args?: T, defaults?: D): T & D;
|
|
56
|
+
/**
|
|
57
|
+
* Validate that required parameters are present
|
|
58
|
+
* @throws {ValidationError} If required parameters are missing
|
|
59
|
+
*/
|
|
60
|
+
export declare function validateRequiredParams(args?: Record<string, unknown>, required?: string[]): void;
|
|
61
|
+
/**
|
|
62
|
+
* Validate parameter types
|
|
63
|
+
* @throws {ValidationError} If parameters have wrong types
|
|
64
|
+
*/
|
|
65
|
+
export declare function validateParameterTypes(args?: Record<string, unknown>, types?: Record<string, string>): void;
|
|
66
|
+
/**
|
|
67
|
+
* Sanitize string parameters (trim whitespace, handle empty strings)
|
|
68
|
+
* Following NULL_UNDEFINED_POLICY: empty strings become undefined (deleted)
|
|
69
|
+
*/
|
|
70
|
+
export declare function sanitizeStringParams<T extends Record<string, any>>(args?: T, stringParams?: (keyof T)[]): T;
|
|
71
|
+
interface ValidationOptions {
|
|
72
|
+
requireWorkspace?: boolean;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Parse and validate workspace parameters with common validation
|
|
76
|
+
*/
|
|
77
|
+
export declare function parseAndValidateWorkspace(args?: Record<string, unknown>, options?: ValidationOptions): WorkspaceArgs;
|
|
78
|
+
export {};
|
|
79
|
+
//# sourceMappingURL=parameterUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parameterUtils.d.ts","sourceRoot":"","sources":["../../src/utils/parameterUtils.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,UAAU,aAAa;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,UAAW,SAAQ,aAAa;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,QAAS,SAAQ,aAAa;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAChD;AAED,UAAU,WAAY,SAAQ,aAAa;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,aAAa,CAKpF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,UAAU,CAO9E;AAoDD;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,QAAQ,CAe1E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,WAAW,CAQhF;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,EAChE,IAAI,GAAE,CAAW,EACjB,QAAQ,GAAE,CAAW,GACpB,CAAC,GAAG,CAAC,CAEP;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAClC,QAAQ,GAAE,MAAM,EAAO,GACtB,IAAI,CAgBN;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAClC,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GACjC,IAAI,CAmBN;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAChE,IAAI,GAAE,CAAW,EACjB,YAAY,GAAE,CAAC,MAAM,CAAC,CAAC,EAAO,GAC7B,CAAC,CAoBH;AAED,UAAU,iBAAiB;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAClC,OAAO,GAAE,iBAAsB,GAC9B,aAAa,CAcf"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Parameter Utilities - Parameter parsing and validation helpers
|
|
4
|
+
*
|
|
5
|
+
* This module provides utilities for parsing, validating, and setting
|
|
6
|
+
* default values for MCP handler parameters, reducing duplication and
|
|
7
|
+
* ensuring consistent parameter handling.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.parseWorkspaceArgs = parseWorkspaceArgs;
|
|
11
|
+
exports.parseSearchArgs = parseSearchArgs;
|
|
12
|
+
exports.parseTaskArgs = parseTaskArgs;
|
|
13
|
+
exports.parseProjectArgs = parseProjectArgs;
|
|
14
|
+
exports.setDefaults = setDefaults;
|
|
15
|
+
exports.validateRequiredParams = validateRequiredParams;
|
|
16
|
+
exports.validateParameterTypes = validateParameterTypes;
|
|
17
|
+
exports.sanitizeStringParams = sanitizeStringParams;
|
|
18
|
+
exports.parseAndValidateWorkspace = parseAndValidateWorkspace;
|
|
19
|
+
const constants_1 = require("./constants");
|
|
20
|
+
const errorHandling_1 = require("./errorHandling");
|
|
21
|
+
const sanitize_1 = require("./sanitize");
|
|
22
|
+
/**
|
|
23
|
+
* Parse workspace-related arguments from MCP request
|
|
24
|
+
*/
|
|
25
|
+
function parseWorkspaceArgs(args = {}) {
|
|
26
|
+
return {
|
|
27
|
+
workspaceId: args.workspaceId || undefined,
|
|
28
|
+
workspaceName: args.workspaceName ? (0, sanitize_1.sanitizeName)(args.workspaceName) : undefined
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Parse search-related arguments from MCP request
|
|
33
|
+
*/
|
|
34
|
+
function parseSearchArgs(args = {}) {
|
|
35
|
+
return {
|
|
36
|
+
query: args.query ? (0, sanitize_1.sanitizeName)(args.query) : '',
|
|
37
|
+
searchScope: args.searchScope || constants_1.DEFAULTS.SEARCH_SCOPE,
|
|
38
|
+
limit: args.limit || constants_1.DEFAULTS.SEARCH_LIMIT,
|
|
39
|
+
...parseWorkspaceArgs(args)
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Parse autoScheduled parameter to handle various input formats
|
|
44
|
+
* @param value - The autoScheduled value from MCP request
|
|
45
|
+
* @returns Proper autoScheduled value for Motion API
|
|
46
|
+
*/
|
|
47
|
+
function parseAutoScheduledParam(value) {
|
|
48
|
+
// If undefined, leave as undefined (field not provided)
|
|
49
|
+
if (value === undefined) {
|
|
50
|
+
return undefined;
|
|
51
|
+
}
|
|
52
|
+
// If null, keep as null (explicitly disable auto-scheduling)
|
|
53
|
+
if (value === null) {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
// If it's already an object, use it as-is
|
|
57
|
+
if (typeof value === 'object' && value !== null) {
|
|
58
|
+
return value;
|
|
59
|
+
}
|
|
60
|
+
// If it's a non-empty string, treat as schedule name
|
|
61
|
+
if (typeof value === 'string' && value.trim()) {
|
|
62
|
+
const trimmed = value.trim();
|
|
63
|
+
// If it's 'false', disable auto-scheduling
|
|
64
|
+
if (trimmed === 'false') {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
// If it's 'true' or empty string, enable with no schedule (will trigger validation error)
|
|
68
|
+
if (trimmed === 'true' || trimmed === '') {
|
|
69
|
+
return {}; // Empty object enables auto-scheduling but will require schedule validation
|
|
70
|
+
}
|
|
71
|
+
// Otherwise, treat as schedule name
|
|
72
|
+
return { schedule: trimmed };
|
|
73
|
+
}
|
|
74
|
+
// If it's 'true' or true, enable auto-scheduling (will trigger validation for schedule)
|
|
75
|
+
if (value === 'true' || value === true) {
|
|
76
|
+
return {}; // Empty object enables auto-scheduling but will require schedule validation
|
|
77
|
+
}
|
|
78
|
+
// If it's 'false' or false, disable auto-scheduling
|
|
79
|
+
if (value === 'false' || value === false) {
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
// For any other value, treat as undefined (not provided)
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Parse task creation/update arguments from MCP request
|
|
87
|
+
*/
|
|
88
|
+
function parseTaskArgs(args = {}) {
|
|
89
|
+
return {
|
|
90
|
+
name: args.name ? (0, sanitize_1.sanitizeName)(args.name) : undefined,
|
|
91
|
+
description: (0, sanitize_1.sanitizeDescription)(args.description),
|
|
92
|
+
projectId: args.projectId || undefined,
|
|
93
|
+
projectName: args.projectName ? (0, sanitize_1.sanitizeName)(args.projectName) : undefined,
|
|
94
|
+
status: args.status || undefined,
|
|
95
|
+
priority: args.priority || undefined,
|
|
96
|
+
dueDate: args.dueDate || undefined,
|
|
97
|
+
duration: args.duration !== undefined ? args.duration : undefined,
|
|
98
|
+
labels: Array.isArray(args.labels) ? args.labels : undefined,
|
|
99
|
+
assigneeId: args.assigneeId || undefined,
|
|
100
|
+
autoScheduled: parseAutoScheduledParam(args.autoScheduled),
|
|
101
|
+
...parseWorkspaceArgs(args)
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Parse project creation/update arguments from MCP request
|
|
106
|
+
*/
|
|
107
|
+
function parseProjectArgs(args = {}) {
|
|
108
|
+
return {
|
|
109
|
+
name: args.name ? (0, sanitize_1.sanitizeName)(args.name) : undefined,
|
|
110
|
+
description: (0, sanitize_1.sanitizeDescription)(args.description),
|
|
111
|
+
color: args.color || undefined,
|
|
112
|
+
status: args.status || undefined,
|
|
113
|
+
...parseWorkspaceArgs(args)
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Set default values for parameters
|
|
118
|
+
*/
|
|
119
|
+
function setDefaults(args = {}, defaults = {}) {
|
|
120
|
+
return { ...defaults, ...args };
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Validate that required parameters are present
|
|
124
|
+
* @throws {ValidationError} If required parameters are missing
|
|
125
|
+
*/
|
|
126
|
+
function validateRequiredParams(args = {}, required = []) {
|
|
127
|
+
const missing = [];
|
|
128
|
+
for (const param of required) {
|
|
129
|
+
if (args[param] === null || args[param] === undefined || args[param] === '') {
|
|
130
|
+
missing.push(param);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
if (missing.length > 0) {
|
|
134
|
+
throw new errorHandling_1.ValidationError(`Missing required parameters: ${missing.join(', ')}`, missing[0], { missing, provided: Object.keys(args) });
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Validate parameter types
|
|
139
|
+
* @throws {ValidationError} If parameters have wrong types
|
|
140
|
+
*/
|
|
141
|
+
function validateParameterTypes(args = {}, types = {}) {
|
|
142
|
+
const errors = [];
|
|
143
|
+
for (const [param, expectedType] of Object.entries(types)) {
|
|
144
|
+
if (args[param] !== null && args[param] !== undefined) {
|
|
145
|
+
const actualType = typeof args[param];
|
|
146
|
+
if (actualType !== expectedType) {
|
|
147
|
+
errors.push(`${param} should be ${expectedType}, got ${actualType}`);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
if (errors.length > 0) {
|
|
152
|
+
throw new errorHandling_1.ValidationError(`Type validation failed: ${errors.join('; ')}`, null, { errors, args });
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Sanitize string parameters (trim whitespace, handle empty strings)
|
|
157
|
+
* Following NULL_UNDEFINED_POLICY: empty strings become undefined (deleted)
|
|
158
|
+
*/
|
|
159
|
+
function sanitizeStringParams(args = {}, stringParams = []) {
|
|
160
|
+
const sanitized = { ...args };
|
|
161
|
+
for (const param of stringParams) {
|
|
162
|
+
const value = sanitized[param];
|
|
163
|
+
if (typeof value === 'string') {
|
|
164
|
+
const trimmed = value.trim();
|
|
165
|
+
// Delete empty strings (makes them undefined) per policy
|
|
166
|
+
if (trimmed === '') {
|
|
167
|
+
delete sanitized[param];
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
// Type-safe assignment: we've verified it's a string at runtime
|
|
171
|
+
// and we're only processing declared string parameters
|
|
172
|
+
Object.assign(sanitized, { [param]: trimmed });
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return sanitized;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Parse and validate workspace parameters with common validation
|
|
180
|
+
*/
|
|
181
|
+
function parseAndValidateWorkspace(args = {}, options = {}) {
|
|
182
|
+
const { requireWorkspace = false } = options;
|
|
183
|
+
const workspaceParams = parseWorkspaceArgs(args);
|
|
184
|
+
if (requireWorkspace && !workspaceParams.workspaceId && !workspaceParams.workspaceName) {
|
|
185
|
+
throw new errorHandling_1.ValidationError('Either workspaceId or workspaceName is required', 'workspace', { provided: workspaceParams });
|
|
186
|
+
}
|
|
187
|
+
return workspaceParams;
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=parameterUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parameterUtils.js","sourceRoot":"","sources":["../../src/utils/parameterUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Response Formatting Utilities - MCP response formatting helpers
|
|
3
|
+
*
|
|
4
|
+
* This module provides utilities to format various types of responses
|
|
5
|
+
* consistently across all MCP handlers, reducing duplication and ensuring
|
|
6
|
+
* uniform response structures.
|
|
7
|
+
*/
|
|
8
|
+
import { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
|
|
9
|
+
import { MotionProject, MotionTask, MotionWorkspace, MotionComment, MotionCustomField, MotionRecurringTask, MotionSchedule, MotionStatus } from '../types/motion';
|
|
10
|
+
/**
|
|
11
|
+
* Format a list of items for MCP response
|
|
12
|
+
*/
|
|
13
|
+
export declare function formatListResponse<T>(items: T[], title: string, formatter: (item: T) => string): CallToolResult;
|
|
14
|
+
interface ProjectListOptions {
|
|
15
|
+
includeWorkspaceNote?: boolean;
|
|
16
|
+
showIds?: boolean;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Format project list response with workspace context
|
|
20
|
+
*/
|
|
21
|
+
export declare function formatProjectList(projects: MotionProject[], workspaceName: string, workspaceId?: string | null, options?: ProjectListOptions): CallToolResult;
|
|
22
|
+
interface TaskListContext {
|
|
23
|
+
workspaceName?: string;
|
|
24
|
+
projectName?: string;
|
|
25
|
+
status?: string;
|
|
26
|
+
limit?: number;
|
|
27
|
+
allWorkspaces?: boolean;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Format task list response
|
|
31
|
+
*/
|
|
32
|
+
export declare function formatTaskList(tasks: MotionTask[], context?: TaskListContext): CallToolResult;
|
|
33
|
+
/**
|
|
34
|
+
* Format workspace list response
|
|
35
|
+
*/
|
|
36
|
+
export declare function formatWorkspaceList(workspaces: MotionWorkspace[]): CallToolResult;
|
|
37
|
+
/**
|
|
38
|
+
* Format detailed item response (project, task, etc.)
|
|
39
|
+
*/
|
|
40
|
+
export declare function formatDetailResponse<T extends Record<string, any>>(item: T, itemType: string, fields?: (keyof T)[]): CallToolResult;
|
|
41
|
+
/**
|
|
42
|
+
* Format single task detail response with comprehensive information
|
|
43
|
+
*/
|
|
44
|
+
export declare function formatTaskDetail(task: MotionTask): CallToolResult;
|
|
45
|
+
interface SearchOptions {
|
|
46
|
+
limit?: number;
|
|
47
|
+
searchScope?: string;
|
|
48
|
+
}
|
|
49
|
+
interface SearchResult {
|
|
50
|
+
id: string;
|
|
51
|
+
name: string;
|
|
52
|
+
projectId?: string;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Format search results response
|
|
56
|
+
*/
|
|
57
|
+
export declare function formatSearchResults(results: SearchResult[], query: string, options?: SearchOptions): CallToolResult;
|
|
58
|
+
/**
|
|
59
|
+
* Format comments list response
|
|
60
|
+
*/
|
|
61
|
+
export declare function formatCommentList(comments: MotionComment[]): CallToolResult;
|
|
62
|
+
/**
|
|
63
|
+
* Format single comment response
|
|
64
|
+
*/
|
|
65
|
+
export declare function formatCommentDetail(comment: MotionComment): CallToolResult;
|
|
66
|
+
/**
|
|
67
|
+
* Format custom field list response
|
|
68
|
+
*/
|
|
69
|
+
export declare function formatCustomFieldList(fields: MotionCustomField[]): CallToolResult;
|
|
70
|
+
/**
|
|
71
|
+
* Format single custom field response
|
|
72
|
+
*/
|
|
73
|
+
export declare function formatCustomFieldDetail(field: MotionCustomField): CallToolResult;
|
|
74
|
+
/**
|
|
75
|
+
* Format success message for custom field operations
|
|
76
|
+
*/
|
|
77
|
+
export declare function formatCustomFieldSuccess(operation: string, entityType?: string, entityId?: string): CallToolResult;
|
|
78
|
+
/**
|
|
79
|
+
* Format recurring task list response
|
|
80
|
+
*/
|
|
81
|
+
export declare function formatRecurringTaskList(tasks: MotionRecurringTask[]): CallToolResult;
|
|
82
|
+
/**
|
|
83
|
+
* Format single recurring task response
|
|
84
|
+
*/
|
|
85
|
+
export declare function formatRecurringTaskDetail(task: MotionRecurringTask): CallToolResult;
|
|
86
|
+
/**
|
|
87
|
+
* Format schedule list response
|
|
88
|
+
*/
|
|
89
|
+
export declare function formatScheduleList(schedules: MotionSchedule[]): CallToolResult;
|
|
90
|
+
export declare function formatStatusList(statuses: MotionStatus[]): CallToolResult;
|
|
91
|
+
export {};
|
|
92
|
+
//# sourceMappingURL=responseFormatters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responseFormatters.d.ts","sourceRoot":"","sources":["../../src/utils/responseFormatters.ts"],"names":[],"mappings":"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"}
|