motionmcp 1.0.2 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +241 -450
  3. package/dist/handlers/CommentHandler.d.ts +9 -0
  4. package/dist/handlers/CommentHandler.d.ts.map +1 -0
  5. package/dist/handlers/CommentHandler.js +66 -0
  6. package/dist/handlers/CommentHandler.js.map +1 -0
  7. package/dist/handlers/CustomFieldHandler.d.ts +14 -0
  8. package/dist/handlers/CustomFieldHandler.d.ts.map +1 -0
  9. package/dist/handlers/CustomFieldHandler.js +95 -0
  10. package/dist/handlers/CustomFieldHandler.js.map +1 -0
  11. package/dist/handlers/HandlerFactory.d.ts +15 -0
  12. package/dist/handlers/HandlerFactory.d.ts.map +1 -0
  13. package/dist/handlers/HandlerFactory.js +58 -0
  14. package/dist/handlers/HandlerFactory.js.map +1 -0
  15. package/dist/handlers/ProjectHandler.d.ts +10 -0
  16. package/dist/handlers/ProjectHandler.d.ts.map +1 -0
  17. package/dist/handlers/ProjectHandler.js +63 -0
  18. package/dist/handlers/ProjectHandler.js.map +1 -0
  19. package/dist/handlers/RecurringTaskHandler.d.ts +10 -0
  20. package/dist/handlers/RecurringTaskHandler.d.ts.map +1 -0
  21. package/dist/handlers/RecurringTaskHandler.js +68 -0
  22. package/dist/handlers/RecurringTaskHandler.js.map +1 -0
  23. package/dist/handlers/ScheduleHandler.d.ts +8 -0
  24. package/dist/handlers/ScheduleHandler.d.ts.map +1 -0
  25. package/dist/handlers/ScheduleHandler.js +43 -0
  26. package/dist/handlers/ScheduleHandler.js.map +1 -0
  27. package/dist/handlers/SearchHandler.d.ts +10 -0
  28. package/dist/handlers/SearchHandler.d.ts.map +1 -0
  29. package/dist/handlers/SearchHandler.js +116 -0
  30. package/dist/handlers/SearchHandler.js.map +1 -0
  31. package/dist/handlers/StatusHandler.d.ts +8 -0
  32. package/dist/handlers/StatusHandler.d.ts.map +1 -0
  33. package/dist/handlers/StatusHandler.js +22 -0
  34. package/dist/handlers/StatusHandler.js.map +1 -0
  35. package/dist/handlers/TaskHandler.d.ts +22 -0
  36. package/dist/handlers/TaskHandler.d.ts.map +1 -0
  37. package/dist/handlers/TaskHandler.js +324 -0
  38. package/dist/handlers/TaskHandler.js.map +1 -0
  39. package/dist/handlers/UserHandler.d.ts +9 -0
  40. package/dist/handlers/UserHandler.d.ts.map +1 -0
  41. package/dist/handlers/UserHandler.js +36 -0
  42. package/dist/handlers/UserHandler.js.map +1 -0
  43. package/dist/handlers/WorkspaceHandler.d.ts +10 -0
  44. package/dist/handlers/WorkspaceHandler.d.ts.map +1 -0
  45. package/dist/handlers/WorkspaceHandler.js +49 -0
  46. package/dist/handlers/WorkspaceHandler.js.map +1 -0
  47. package/dist/handlers/base/BaseHandler.d.ts +16 -0
  48. package/dist/handlers/base/BaseHandler.d.ts.map +1 -0
  49. package/dist/handlers/base/BaseHandler.js +31 -0
  50. package/dist/handlers/base/BaseHandler.js.map +1 -0
  51. package/dist/handlers/base/HandlerInterface.d.ts +18 -0
  52. package/dist/handlers/base/HandlerInterface.d.ts.map +1 -0
  53. package/dist/handlers/base/HandlerInterface.js +3 -0
  54. package/dist/handlers/base/HandlerInterface.js.map +1 -0
  55. package/dist/handlers/index.d.ts +14 -0
  56. package/dist/handlers/index.d.ts.map +1 -0
  57. package/dist/handlers/index.js +31 -0
  58. package/dist/handlers/index.js.map +1 -0
  59. package/dist/mcp-server.d.ts +15 -0
  60. package/dist/mcp-server.d.ts.map +1 -0
  61. package/dist/mcp-server.js +145 -0
  62. package/dist/mcp-server.js.map +1 -0
  63. package/dist/schemas/motion.d.ts +4971 -0
  64. package/dist/schemas/motion.d.ts.map +1 -0
  65. package/dist/schemas/motion.js +328 -0
  66. package/dist/schemas/motion.js.map +1 -0
  67. package/dist/services/motionApi.d.ts +199 -0
  68. package/dist/services/motionApi.d.ts.map +1 -0
  69. package/dist/services/motionApi.js +1950 -0
  70. package/dist/services/motionApi.js.map +1 -0
  71. package/dist/tools/ToolConfigurator.d.ts +19 -0
  72. package/dist/tools/ToolConfigurator.d.ts.map +1 -0
  73. package/dist/tools/ToolConfigurator.js +89 -0
  74. package/dist/tools/ToolConfigurator.js.map +1 -0
  75. package/dist/tools/ToolDefinitions.d.ts +25 -0
  76. package/dist/tools/ToolDefinitions.d.ts.map +1 -0
  77. package/dist/tools/ToolDefinitions.js +508 -0
  78. package/dist/tools/ToolDefinitions.js.map +1 -0
  79. package/dist/tools/ToolRegistry.d.ts +16 -0
  80. package/dist/tools/ToolRegistry.d.ts.map +1 -0
  81. package/dist/tools/ToolRegistry.js +89 -0
  82. package/dist/tools/ToolRegistry.js.map +1 -0
  83. package/dist/tools/index.d.ts +4 -0
  84. package/dist/tools/index.d.ts.map +1 -0
  85. package/dist/tools/index.js +21 -0
  86. package/dist/tools/index.js.map +1 -0
  87. package/dist/types/mcp-tool-args.d.ts +123 -0
  88. package/dist/types/mcp-tool-args.d.ts.map +1 -0
  89. package/dist/types/mcp-tool-args.js +7 -0
  90. package/dist/types/mcp-tool-args.js.map +1 -0
  91. package/dist/types/mcp.d.ts +32 -0
  92. package/dist/types/mcp.d.ts.map +1 -0
  93. package/dist/types/mcp.js +3 -0
  94. package/dist/types/mcp.js.map +1 -0
  95. package/dist/types/motion.d.ts +304 -0
  96. package/dist/types/motion.d.ts.map +1 -0
  97. package/dist/types/motion.js +3 -0
  98. package/dist/types/motion.js.map +1 -0
  99. package/dist/utils/cache.d.ts +25 -0
  100. package/dist/utils/cache.d.ts.map +1 -0
  101. package/dist/utils/cache.js +135 -0
  102. package/dist/utils/cache.js.map +1 -0
  103. package/dist/utils/constants.d.ts +88 -0
  104. package/dist/utils/constants.d.ts.map +1 -0
  105. package/dist/utils/constants.js +188 -0
  106. package/dist/utils/constants.js.map +1 -0
  107. package/dist/utils/errorHandling.d.ts +50 -0
  108. package/dist/utils/errorHandling.d.ts.map +1 -0
  109. package/dist/utils/errorHandling.js +86 -0
  110. package/dist/utils/errorHandling.js.map +1 -0
  111. package/dist/utils/index.d.ts +13 -0
  112. package/dist/utils/index.d.ts.map +1 -0
  113. package/dist/utils/index.js +38 -0
  114. package/dist/utils/index.js.map +1 -0
  115. package/dist/utils/logger.d.ts +13 -0
  116. package/dist/utils/logger.d.ts.map +1 -0
  117. package/dist/utils/logger.js +47 -0
  118. package/dist/utils/logger.js.map +1 -0
  119. package/dist/utils/pagination.d.ts +61 -0
  120. package/dist/utils/pagination.d.ts.map +1 -0
  121. package/dist/utils/pagination.js +168 -0
  122. package/dist/utils/pagination.js.map +1 -0
  123. package/dist/utils/paginationNew.d.ts +44 -0
  124. package/dist/utils/paginationNew.d.ts.map +1 -0
  125. package/dist/utils/paginationNew.js +149 -0
  126. package/dist/utils/paginationNew.js.map +1 -0
  127. package/dist/utils/parameterUtils.d.ts +79 -0
  128. package/dist/utils/parameterUtils.d.ts.map +1 -0
  129. package/dist/utils/parameterUtils.js +189 -0
  130. package/dist/utils/parameterUtils.js.map +1 -0
  131. package/dist/utils/responseFormatters.d.ts +95 -0
  132. package/dist/utils/responseFormatters.d.ts.map +1 -0
  133. package/dist/utils/responseFormatters.js +342 -0
  134. package/dist/utils/responseFormatters.js.map +1 -0
  135. package/dist/utils/responseWrapper.d.ts +38 -0
  136. package/dist/utils/responseWrapper.d.ts.map +1 -0
  137. package/dist/utils/responseWrapper.js +201 -0
  138. package/dist/utils/responseWrapper.js.map +1 -0
  139. package/dist/utils/sanitize.d.ts +51 -0
  140. package/dist/utils/sanitize.d.ts.map +1 -0
  141. package/dist/utils/sanitize.js +138 -0
  142. package/dist/utils/sanitize.js.map +1 -0
  143. package/dist/utils/validator.d.ts +37 -0
  144. package/dist/utils/validator.d.ts.map +1 -0
  145. package/dist/utils/validator.js +74 -0
  146. package/dist/utils/validator.js.map +1 -0
  147. package/dist/utils/workspaceResolver.d.ts +40 -0
  148. package/dist/utils/workspaceResolver.d.ts.map +1 -0
  149. package/dist/utils/workspaceResolver.js +207 -0
  150. package/dist/utils/workspaceResolver.js.map +1 -0
  151. package/package.json +41 -17
  152. package/.claude/settings.local.json +0 -15
  153. package/.env.example +0 -3
  154. package/sample.png +0 -0
  155. package/src/index.js +0 -179
  156. package/src/mcp-server.js +0 -1137
  157. package/src/routes/motion.js +0 -152
  158. package/src/services/motionApi.js +0 -1177
  159. package/src/worker.js +0 -248
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SearchHandler = void 0;
4
+ const BaseHandler_1 = require("./base/BaseHandler");
5
+ const utils_1 = require("../utils");
6
+ class SearchHandler extends BaseHandler_1.BaseHandler {
7
+ async handle(args) {
8
+ try {
9
+ const { operation } = args;
10
+ switch (operation) {
11
+ case 'content':
12
+ return await this.handleContentSearch(args);
13
+ case 'context':
14
+ return await this.handleContextSearch(args);
15
+ case 'smart':
16
+ return await this.handleSmartSearch(args);
17
+ default:
18
+ return this.handleUnknownOperation(operation);
19
+ }
20
+ }
21
+ catch (error) {
22
+ return this.handleError(error);
23
+ }
24
+ }
25
+ async handleContentSearch(args) {
26
+ if (!args.query) {
27
+ return this.handleError(new Error("Query is required for content search"));
28
+ }
29
+ const entityTypes = args.searchScope === 'tasks' ? ['tasks'] :
30
+ args.searchScope === 'projects' ? ['projects'] :
31
+ ['tasks', 'projects'];
32
+ // Use configurable limit to prevent resource exhaustion
33
+ const limit = args.limit || utils_1.LIMITS.MAX_SEARCH_RESULTS;
34
+ const workspace = await this.workspaceResolver.resolveWorkspace({
35
+ workspaceId: args.workspaceId,
36
+ workspaceName: args.workspaceName
37
+ });
38
+ let results = [];
39
+ if (entityTypes.includes('tasks')) {
40
+ const tasks = await this.motionService.searchTasks(args.query, workspace.id, limit);
41
+ results.push(...tasks);
42
+ }
43
+ if (entityTypes.includes('projects')) {
44
+ const projects = await this.motionService.searchProjects(args.query, workspace.id, limit);
45
+ results.push(...projects);
46
+ }
47
+ return (0, utils_1.formatSearchResults)(results.slice(0, limit), args.query, {
48
+ limit,
49
+ searchScope: entityTypes.join(',') || 'both'
50
+ });
51
+ }
52
+ async handleContextSearch(args) {
53
+ if (!args.entityType || !args.entityId) {
54
+ return this.handleError(new Error("EntityType and entityId are required for context operation"));
55
+ }
56
+ const { entityType, entityId, includeRelated = false } = args;
57
+ let contextText = `Context for ${entityType} ${entityId}:\n\n`;
58
+ // For now, return a simple context message as Motion API doesn't have specific context endpoints
59
+ if (entityType === 'project') {
60
+ contextText += `Project ID: ${entityId}\n`;
61
+ if (includeRelated) {
62
+ contextText += `Related tasks would be listed here (when available)\n`;
63
+ }
64
+ }
65
+ else if (entityType === 'task') {
66
+ contextText += `Task ID: ${entityId}\n`;
67
+ if (includeRelated) {
68
+ contextText += `Related project and subtasks would be listed here (when available)\n`;
69
+ }
70
+ }
71
+ return (0, utils_1.formatMcpSuccess)(contextText);
72
+ }
73
+ async handleSmartSearch(args) {
74
+ if (!args.query) {
75
+ return this.handleError(new Error("Query is required for smart search"));
76
+ }
77
+ const { query, entityType, entityId, includeRelated = false } = args;
78
+ let contextText = `Smart search results for "${query}":\n\n`;
79
+ // Perform content search
80
+ const searchResults = await this.handleContentSearch({
81
+ query,
82
+ entityTypes: args.searchScope === 'tasks' ? ['tasks'] :
83
+ args.searchScope === 'projects' ? ['projects'] :
84
+ ['tasks', 'projects'],
85
+ workspaceId: args.workspaceId,
86
+ workspaceName: args.workspaceName
87
+ });
88
+ contextText += "Content Results:\n";
89
+ // Extract text from search results
90
+ if ('content' in searchResults && searchResults.content && Array.isArray(searchResults.content)) {
91
+ const textContent = searchResults.content.find(item => item.type === 'text');
92
+ if (textContent && 'text' in textContent) {
93
+ contextText += textContent.text + "\n\n";
94
+ }
95
+ }
96
+ // Add contextual information if entity is specified
97
+ if (entityType && entityId) {
98
+ contextText += `Context for ${entityType} ${entityId}:\n`;
99
+ if (entityType === 'project') {
100
+ contextText += `Project ID: ${entityId}\n`;
101
+ if (includeRelated) {
102
+ contextText += `Related tasks would be listed here (when available)\n`;
103
+ }
104
+ }
105
+ else if (entityType === 'task') {
106
+ contextText += `Task ID: ${entityId}\n`;
107
+ if (includeRelated) {
108
+ contextText += `Related project and subtasks would be listed here (when available)\n`;
109
+ }
110
+ }
111
+ }
112
+ return (0, utils_1.formatMcpSuccess)(contextText);
113
+ }
114
+ }
115
+ exports.SearchHandler = SearchHandler;
116
+ //# sourceMappingURL=SearchHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchHandler.js","sourceRoot":"","sources":["../../src/handlers/SearchHandler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { BaseHandler } from './base/BaseHandler';
2
+ import { McpToolResponse } from '../types/mcp';
3
+ import { MotionStatusesArgs } from '../types/mcp-tool-args';
4
+ export declare class StatusHandler extends BaseHandler {
5
+ handle(args: MotionStatusesArgs): Promise<McpToolResponse>;
6
+ private handleList;
7
+ }
8
+ //# sourceMappingURL=StatusHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/StatusHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG5D,qBAAa,aAAc,SAAQ,WAAW;IACtC,MAAM,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,CAAC;YASlD,UAAU;CAIzB"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StatusHandler = void 0;
4
+ const BaseHandler_1 = require("./base/BaseHandler");
5
+ const utils_1 = require("../utils");
6
+ class StatusHandler extends BaseHandler_1.BaseHandler {
7
+ async handle(args) {
8
+ try {
9
+ const { workspaceId } = args;
10
+ return await this.handleList(workspaceId);
11
+ }
12
+ catch (error) {
13
+ return this.handleError(error);
14
+ }
15
+ }
16
+ async handleList(workspaceId) {
17
+ const statuses = await this.motionService.getStatuses(workspaceId);
18
+ return (0, utils_1.formatStatusList)(statuses);
19
+ }
20
+ }
21
+ exports.StatusHandler = StatusHandler;
22
+ //# sourceMappingURL=StatusHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusHandler.js","sourceRoot":"","sources":["../../src/handlers/StatusHandler.ts"],"names":[],"mappings":";;;AAAA,oDAAiD;AAGjD,oCAA4C;AAE5C,MAAa,aAAc,SAAQ,yBAAW;IAC5C,KAAK,CAAC,MAAM,CAAC,IAAwB;QACnC,IAAI,CAAC;YACH,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;YAC7B,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,WAAoB;QAC3C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACnE,OAAO,IAAA,wBAAgB,EAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;CACF;AAdD,sCAcC"}
@@ -0,0 +1,22 @@
1
+ import { BaseHandler } from './base/BaseHandler';
2
+ import { McpToolResponse } from '../types/mcp';
3
+ import { MotionTasksArgs } from '../types/mcp-tool-args';
4
+ export declare class TaskHandler extends BaseHandler {
5
+ handle(args: MotionTasksArgs): Promise<McpToolResponse>;
6
+ private handleCreate;
7
+ private handleList;
8
+ private handleGet;
9
+ private handleUpdate;
10
+ private handleDelete;
11
+ private handleMove;
12
+ private handleUnassign;
13
+ private handleListAllUncompleted;
14
+ /**
15
+ * Validate auto-scheduling configuration and provide helpful error messages
16
+ * @param autoScheduled - The autoScheduled configuration
17
+ * @param workspaceId - The workspace ID for context
18
+ * @throws Error if validation fails with helpful guidance
19
+ */
20
+ private validateAutoScheduling;
21
+ }
22
+ //# sourceMappingURL=TaskHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/TaskHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAwEzD,qBAAa,WAAY,SAAQ,WAAW;IACpC,MAAM,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;YA6B/C,YAAY;YAkEZ,UAAU;YAqGV,SAAS;YAST,YAAY;YAkCZ,YAAY;YASZ,UAAU;YAYV,cAAc;YASd,wBAAwB;IAUtC;;;;;OAKG;YACW,sBAAsB;CAsFrC"}
@@ -0,0 +1,324 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TaskHandler = void 0;
4
+ const BaseHandler_1 = require("./base/BaseHandler");
5
+ const utils_1 = require("../utils");
6
+ const constants_1 = require("../utils/constants");
7
+ class TaskHandler extends BaseHandler_1.BaseHandler {
8
+ async handle(args) {
9
+ try {
10
+ const { operation, ...params } = args;
11
+ switch (operation) {
12
+ case 'create':
13
+ return await this.handleCreate(params);
14
+ case 'list':
15
+ return await this.handleList(params);
16
+ case 'get':
17
+ return await this.handleGet(params);
18
+ case 'update':
19
+ return await this.handleUpdate(params);
20
+ case 'delete':
21
+ return await this.handleDelete(params);
22
+ case 'move':
23
+ return await this.handleMove(params);
24
+ case 'unassign':
25
+ return await this.handleUnassign(params);
26
+ case 'list_all_uncompleted':
27
+ return await this.handleListAllUncompleted(params);
28
+ default:
29
+ return this.handleUnknownOperation(operation);
30
+ }
31
+ }
32
+ catch (error) {
33
+ return this.handleError(error);
34
+ }
35
+ }
36
+ async handleCreate(params) {
37
+ if (!params.name) {
38
+ return this.handleError(new Error("Task name is required for create operation"));
39
+ }
40
+ const taskData = (0, utils_1.parseTaskArgs)(params);
41
+ const workspace = await this.workspaceResolver.resolveWorkspace(taskData);
42
+ // Resolve project identifier (projectId or projectName) using the centralized utility
43
+ let resolvedProjectId = taskData.projectId;
44
+ let targetWorkspaceId = workspace.id; // Default to resolved workspace
45
+ if (taskData.projectId || taskData.projectName) {
46
+ const project = await this.motionService.resolveProjectIdentifier({ projectId: taskData.projectId, projectName: taskData.projectName }, workspace.id);
47
+ if (project) {
48
+ resolvedProjectId = project.id;
49
+ // Use the project's workspace instead of the default/specified workspace
50
+ targetWorkspaceId = project.workspaceId;
51
+ }
52
+ else {
53
+ const identifier = taskData.projectId ? `ID "${taskData.projectId}"` : `name "${taskData.projectName}"`;
54
+ return this.handleError(new Error(`Project with ${identifier} not found in any workspace`));
55
+ }
56
+ }
57
+ // Convert types for Motion API
58
+ let convertedDuration;
59
+ if (taskData.duration !== undefined) {
60
+ if (typeof taskData.duration === 'string') {
61
+ if (taskData.duration === 'NONE' || taskData.duration === 'REMINDER') {
62
+ convertedDuration = taskData.duration;
63
+ }
64
+ else {
65
+ const numDuration = parseInt(taskData.duration, 10);
66
+ if (!isNaN(numDuration)) {
67
+ convertedDuration = numDuration;
68
+ }
69
+ }
70
+ }
71
+ else {
72
+ convertedDuration = taskData.duration;
73
+ }
74
+ }
75
+ const convertedLabels = taskData.labels?.map(name => ({ name }));
76
+ // Validate auto-scheduling configuration
77
+ await this.validateAutoScheduling(taskData.autoScheduled, targetWorkspaceId);
78
+ const task = await this.motionService.createTask({
79
+ name: taskData.name,
80
+ description: taskData.description,
81
+ projectId: resolvedProjectId,
82
+ status: taskData.status,
83
+ priority: taskData.priority,
84
+ dueDate: taskData.dueDate,
85
+ duration: convertedDuration,
86
+ labels: convertedLabels,
87
+ assigneeId: taskData.assigneeId,
88
+ autoScheduled: taskData.autoScheduled,
89
+ workspaceId: targetWorkspaceId
90
+ });
91
+ return (0, utils_1.formatMcpSuccess)(`Successfully created task "${task.name}" (ID: ${task.id})`);
92
+ }
93
+ async handleList(params) {
94
+ const workspace = await this.workspaceResolver.resolveWorkspace({
95
+ workspaceId: params.workspaceId,
96
+ workspaceName: params.workspaceName
97
+ });
98
+ // Resolve project identifier (projectId or projectName) using the centralized utility
99
+ let resolvedProjectId = params.projectId;
100
+ let resolvedProjectName = params.projectName;
101
+ if (params.projectId || params.projectName) {
102
+ const project = await this.motionService.resolveProjectIdentifier({ projectId: params.projectId, projectName: params.projectName }, workspace.id);
103
+ if (project) {
104
+ resolvedProjectId = project.id;
105
+ resolvedProjectName = project.name;
106
+ }
107
+ else {
108
+ const identifier = params.projectId ? `ID "${params.projectId}"` : `name "${params.projectName}"`;
109
+ return this.handleError(new Error(`Project with ${identifier} not found in any workspace`));
110
+ }
111
+ }
112
+ // Validate priority if provided
113
+ if (params.priority && !(0, constants_1.isValidPriority)(params.priority)) {
114
+ return this.handleError(new Error(`Invalid priority "${params.priority}". Valid values are: ASAP, HIGH, MEDIUM, LOW`));
115
+ }
116
+ // Validate and parse due date if provided
117
+ let validatedDueDate;
118
+ if (params.dueDate) {
119
+ const parsedDate = (0, constants_1.parseFilterDate)(params.dueDate);
120
+ if (!parsedDate) {
121
+ return this.handleError(new Error(`Invalid date format "${params.dueDate}". Use YYYY-MM-DD format or relative dates like 'today', 'tomorrow'`));
122
+ }
123
+ validatedDueDate = parsedDate;
124
+ }
125
+ // Validate labels if provided
126
+ if (params.labels && (!Array.isArray(params.labels) || params.labels.some(label => !label || typeof label !== 'string'))) {
127
+ return this.handleError(new Error('Labels must be an array of non-empty strings'));
128
+ }
129
+ let resolvedAssigneeId = params.assigneeId;
130
+ let assigneeDisplay = params.assignee;
131
+ const normalizeDisplayFromUser = (user) => {
132
+ return user.name || user.email || user.id;
133
+ };
134
+ const resolveCurrentUser = async () => {
135
+ const currentUser = await this.motionService.getCurrentUser();
136
+ resolvedAssigneeId = currentUser.id;
137
+ assigneeDisplay = normalizeDisplayFromUser(currentUser);
138
+ };
139
+ if (resolvedAssigneeId) {
140
+ if (resolvedAssigneeId.toLowerCase() === 'me') {
141
+ await resolveCurrentUser();
142
+ }
143
+ }
144
+ else if (params.assignee) {
145
+ const assigneeInput = params.assignee.trim();
146
+ if (assigneeInput.toLowerCase() === 'me') {
147
+ await resolveCurrentUser();
148
+ }
149
+ else {
150
+ const user = await this.motionService.resolveUserIdentifier({ userName: assigneeInput }, workspace.id);
151
+ if (!user) {
152
+ return this.handleError(new Error(`Assignee "${assigneeInput}" not found in any workspace`));
153
+ }
154
+ resolvedAssigneeId = user.id;
155
+ assigneeDisplay = normalizeDisplayFromUser(user);
156
+ }
157
+ }
158
+ const tasks = await this.motionService.getTasks({
159
+ workspaceId: workspace.id,
160
+ projectId: resolvedProjectId,
161
+ status: params.status,
162
+ assigneeId: resolvedAssigneeId,
163
+ priority: params.priority,
164
+ dueDate: validatedDueDate,
165
+ labels: params.labels,
166
+ limit: params.limit
167
+ });
168
+ return (0, utils_1.formatTaskList)(tasks, {
169
+ workspaceName: workspace.name,
170
+ projectName: resolvedProjectName,
171
+ status: params.status,
172
+ assigneeName: assigneeDisplay || resolvedAssigneeId,
173
+ priority: params.priority,
174
+ dueDate: params.dueDate,
175
+ limit: params.limit
176
+ });
177
+ }
178
+ async handleGet(params) {
179
+ if (!params.taskId) {
180
+ return this.handleError(new Error("Task ID is required for get operation"));
181
+ }
182
+ const taskDetails = await this.motionService.getTask(params.taskId);
183
+ return (0, utils_1.formatTaskDetail)(taskDetails);
184
+ }
185
+ async handleUpdate(params) {
186
+ if (!params.taskId) {
187
+ return this.handleError(new Error("Task ID is required for update operation"));
188
+ }
189
+ // Create update object with only valid MotionTask fields
190
+ const updateData = {};
191
+ if (params.name !== undefined)
192
+ updateData.name = params.name;
193
+ if (params.description !== undefined)
194
+ updateData.description = params.description;
195
+ if (params.status !== undefined)
196
+ updateData.status = params.status;
197
+ if (params.priority !== undefined)
198
+ updateData.priority = params.priority;
199
+ if (params.dueDate !== undefined)
200
+ updateData.dueDate = params.dueDate;
201
+ if (params.duration !== undefined) {
202
+ // Convert string duration to number or keep special values
203
+ if (typeof params.duration === 'string') {
204
+ if (params.duration === 'NONE' || params.duration === 'REMINDER') {
205
+ updateData.duration = params.duration;
206
+ }
207
+ else {
208
+ const numDuration = parseInt(params.duration, 10);
209
+ if (!isNaN(numDuration)) {
210
+ updateData.duration = numDuration;
211
+ }
212
+ }
213
+ }
214
+ else {
215
+ updateData.duration = params.duration;
216
+ }
217
+ }
218
+ if (params.labels !== undefined)
219
+ updateData.labels = params.labels?.map(name => ({ name }));
220
+ if (params.autoScheduled !== undefined)
221
+ updateData.autoScheduled = params.autoScheduled;
222
+ const updatedTask = await this.motionService.updateTask(params.taskId, updateData);
223
+ return (0, utils_1.formatMcpSuccess)(`Successfully updated task "${updatedTask.name}" (ID: ${updatedTask.id})`);
224
+ }
225
+ async handleDelete(params) {
226
+ if (!params.taskId) {
227
+ return this.handleError(new Error("Task ID is required for delete operation"));
228
+ }
229
+ await this.motionService.deleteTask(params.taskId);
230
+ return (0, utils_1.formatMcpSuccess)(`Successfully deleted task ${params.taskId}`);
231
+ }
232
+ async handleMove(params) {
233
+ if (!params.taskId) {
234
+ return this.handleError(new Error("Task ID is required for move operation"));
235
+ }
236
+ if (!params.targetProjectId && !params.targetWorkspaceId) {
237
+ return this.handleError(new Error("Either target project ID or target workspace ID is required for move operation"));
238
+ }
239
+ const movedTask = await this.motionService.moveTask(params.taskId, params.targetProjectId, params.targetWorkspaceId);
240
+ return (0, utils_1.formatMcpSuccess)(`Successfully moved task "${movedTask.name}" (ID: ${movedTask.id})`);
241
+ }
242
+ async handleUnassign(params) {
243
+ if (!params.taskId) {
244
+ return this.handleError(new Error("Task ID is required for unassign operation"));
245
+ }
246
+ const unassignedTask = await this.motionService.unassignTask(params.taskId);
247
+ return (0, utils_1.formatMcpSuccess)(`Successfully unassigned task "${unassignedTask.name}" (ID: ${unassignedTask.id})`);
248
+ }
249
+ async handleListAllUncompleted(params) {
250
+ const tasks = await this.motionService.getAllUncompletedTasks(params.limit);
251
+ return (0, utils_1.formatTaskList)(tasks, {
252
+ status: 'uncompleted',
253
+ limit: params.limit,
254
+ allWorkspaces: true
255
+ });
256
+ }
257
+ /**
258
+ * Validate auto-scheduling configuration and provide helpful error messages
259
+ * @param autoScheduled - The autoScheduled configuration
260
+ * @param workspaceId - The workspace ID for context
261
+ * @throws Error if validation fails with helpful guidance
262
+ */
263
+ async validateAutoScheduling(autoScheduled, workspaceId) {
264
+ // If auto-scheduling is not enabled, no validation needed
265
+ if (!autoScheduled || autoScheduled === null) {
266
+ return;
267
+ }
268
+ // If it's an object, check if schedule is provided
269
+ if (typeof autoScheduled === 'object' && autoScheduled !== null) {
270
+ const schedule = autoScheduled.schedule;
271
+ // If no schedule provided, show available schedules
272
+ if (!schedule) {
273
+ try {
274
+ const availableSchedules = await this.motionService.getAvailableScheduleNames(workspaceId);
275
+ if (availableSchedules.length === 0) {
276
+ throw new Error('Auto-scheduling requires a schedule, but no schedules are available. Please create a schedule in Motion first.');
277
+ }
278
+ const scheduleList = availableSchedules
279
+ .map((name, i) => `${i + 1}. "${name}"`)
280
+ .join('\n');
281
+ throw new Error(`Auto-scheduling requires a schedule. Available schedules:\n${scheduleList}\n\nExample usage:\n• Set autoScheduled to {"schedule": "${availableSchedules[0]}"}\n• Or pass schedule name directly: autoScheduled = "${availableSchedules[0]}"`);
282
+ }
283
+ catch (error) {
284
+ // If we can't fetch schedules, provide a generic error
285
+ if (error instanceof Error && error.message.includes('Auto-scheduling requires a schedule')) {
286
+ throw error; // Re-throw our formatted error
287
+ }
288
+ throw new Error('Auto-scheduling requires a schedule, but unable to fetch available schedules. Please specify a schedule name in autoScheduled parameter.');
289
+ }
290
+ }
291
+ // Validate that the provided schedule exists
292
+ try {
293
+ const availableSchedules = await this.motionService.getAvailableScheduleNames(workspaceId);
294
+ // Case-insensitive matching
295
+ const normalizedSchedule = schedule.toLowerCase().trim();
296
+ const matchingSchedule = availableSchedules.find(s => s.toLowerCase().trim() === normalizedSchedule);
297
+ if (!matchingSchedule) {
298
+ // Provide suggestions for similar names
299
+ const suggestions = availableSchedules.filter(s => s.toLowerCase().includes(normalizedSchedule) ||
300
+ normalizedSchedule.includes(s.toLowerCase()));
301
+ const scheduleList = availableSchedules
302
+ .map((name, i) => `${i + 1}. "${name}"`)
303
+ .join('\n');
304
+ let errorMessage = `Schedule "${schedule}" not found.`;
305
+ if (suggestions.length > 0) {
306
+ errorMessage += ` Did you mean: ${suggestions.map(s => `"${s}"`).join(', ')}?`;
307
+ }
308
+ errorMessage += `\n\nAvailable schedules:\n${scheduleList}`;
309
+ throw new Error(errorMessage);
310
+ }
311
+ // Update the schedule with the exact match (fixes casing)
312
+ autoScheduled.schedule = matchingSchedule;
313
+ }
314
+ catch (error) {
315
+ if (error instanceof Error) {
316
+ throw error; // Re-throw validation errors
317
+ }
318
+ throw new Error(`Unable to validate schedule "${schedule}". Please check that the schedule exists in Motion.`);
319
+ }
320
+ }
321
+ }
322
+ }
323
+ exports.TaskHandler = TaskHandler;
324
+ //# sourceMappingURL=TaskHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskHandler.js","sourceRoot":"","sources":["../../src/handlers/TaskHandler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { BaseHandler } from './base/BaseHandler';
2
+ import { McpToolResponse } from '../types/mcp';
3
+ import { MotionUsersArgs } from '../types/mcp-tool-args';
4
+ export declare class UserHandler extends BaseHandler {
5
+ handle(args: MotionUsersArgs): Promise<McpToolResponse>;
6
+ private handleList;
7
+ private handleGetCurrent;
8
+ }
9
+ //# sourceMappingURL=UserHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/UserHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,qBAAa,WAAY,SAAQ,WAAW;IACpC,MAAM,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;YAiB/C,UAAU;YAQV,gBAAgB;CAK/B"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UserHandler = void 0;
4
+ const BaseHandler_1 = require("./base/BaseHandler");
5
+ const utils_1 = require("../utils");
6
+ class UserHandler extends BaseHandler_1.BaseHandler {
7
+ async handle(args) {
8
+ try {
9
+ const { operation, workspaceId, workspaceName } = args;
10
+ switch (operation) {
11
+ case 'list':
12
+ return await this.handleList(workspaceId, workspaceName);
13
+ case 'current':
14
+ return await this.handleGetCurrent();
15
+ default:
16
+ return this.handleUnknownOperation(operation);
17
+ }
18
+ }
19
+ catch (error) {
20
+ return this.handleError(error);
21
+ }
22
+ }
23
+ async handleList(workspaceId, workspaceName) {
24
+ const workspace = await this.workspaceResolver.resolveWorkspace({ workspaceId, workspaceName });
25
+ const users = await this.motionService.getUsers(workspace.id);
26
+ const userList = users.map(u => `- ${u.name} (${u.email}) [ID: ${u.id}]`).join('\n');
27
+ return (0, utils_1.formatMcpSuccess)(`Users in workspace "${workspace.name}":\n${userList}`);
28
+ }
29
+ async handleGetCurrent() {
30
+ const currentUser = await this.motionService.getCurrentUser();
31
+ const userInfo = `Current user: ${currentUser.name || 'No name'} (${currentUser.email}) [ID: ${currentUser.id}]`;
32
+ return (0, utils_1.formatMcpSuccess)(userInfo);
33
+ }
34
+ }
35
+ exports.UserHandler = UserHandler;
36
+ //# sourceMappingURL=UserHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserHandler.js","sourceRoot":"","sources":["../../src/handlers/UserHandler.ts"],"names":[],"mappings":";;;AAAA,oDAAiD;AAGjD,oCAA4C;AAE5C,MAAa,WAAY,SAAQ,yBAAW;IAC1C,KAAK,CAAC,MAAM,CAAC,IAAqB;QAChC,IAAI,CAAC;YACH,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;YAEvD,QAAO,SAAS,EAAE,CAAC;gBACjB,KAAK,MAAM;oBACT,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;gBAC3D,KAAK,SAAS;oBACZ,OAAO,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACvC;oBACE,OAAO,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,WAAoB,EAAE,aAAsB;QACnE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC;QAChG,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAE9D,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrF,OAAO,IAAA,wBAAgB,EAAC,uBAAuB,SAAS,CAAC,IAAI,OAAO,QAAQ,EAAE,CAAC,CAAC;IAClF,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC5B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;QAC9D,MAAM,QAAQ,GAAG,iBAAiB,WAAW,CAAC,IAAI,IAAI,SAAS,KAAK,WAAW,CAAC,KAAK,UAAU,WAAW,CAAC,EAAE,GAAG,CAAC;QACjH,OAAO,IAAA,wBAAgB,EAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;CACF;AA/BD,kCA+BC"}
@@ -0,0 +1,10 @@
1
+ import { BaseHandler } from './base/BaseHandler';
2
+ import { McpToolResponse } from '../types/mcp';
3
+ import { MotionWorkspacesArgs } from '../types/mcp-tool-args';
4
+ export declare class WorkspaceHandler extends BaseHandler {
5
+ handle(args: MotionWorkspacesArgs): Promise<McpToolResponse>;
6
+ private handleList;
7
+ private handleGet;
8
+ private handleSetDefault;
9
+ }
10
+ //# sourceMappingURL=WorkspaceHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkspaceHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/WorkspaceHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAO9D,qBAAa,gBAAiB,SAAQ,WAAW;IACzC,MAAM,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC;YAmBpD,UAAU;YAKV,SAAS;YAeT,gBAAgB;CAQ/B"}