motionmcp 2.5.0 → 2.7.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 (197) hide show
  1. package/dist/handlers/CommentHandler.d.ts.map +1 -1
  2. package/dist/handlers/CommentHandler.js +4 -3
  3. package/dist/handlers/CommentHandler.js.map +1 -1
  4. package/dist/handlers/CustomFieldHandler.d.ts.map +1 -1
  5. package/dist/handlers/CustomFieldHandler.js +44 -21
  6. package/dist/handlers/CustomFieldHandler.js.map +1 -1
  7. package/dist/handlers/HandlerFactory.d.ts +0 -5
  8. package/dist/handlers/HandlerFactory.d.ts.map +1 -1
  9. package/dist/handlers/HandlerFactory.js +0 -15
  10. package/dist/handlers/HandlerFactory.js.map +1 -1
  11. package/dist/handlers/ProjectHandler.d.ts.map +1 -1
  12. package/dist/handlers/ProjectHandler.js +2 -1
  13. package/dist/handlers/ProjectHandler.js.map +1 -1
  14. package/dist/handlers/RecurringTaskHandler.d.ts.map +1 -1
  15. package/dist/handlers/RecurringTaskHandler.js +16 -10
  16. package/dist/handlers/RecurringTaskHandler.js.map +1 -1
  17. package/dist/handlers/ScheduleHandler.d.ts +1 -1
  18. package/dist/handlers/ScheduleHandler.d.ts.map +1 -1
  19. package/dist/handlers/ScheduleHandler.js +4 -26
  20. package/dist/handlers/ScheduleHandler.js.map +1 -1
  21. package/dist/handlers/SearchHandler.d.ts +1 -2
  22. package/dist/handlers/SearchHandler.d.ts.map +1 -1
  23. package/dist/handlers/SearchHandler.js +24 -70
  24. package/dist/handlers/SearchHandler.js.map +1 -1
  25. package/dist/handlers/TaskHandler.d.ts +11 -5
  26. package/dist/handlers/TaskHandler.d.ts.map +1 -1
  27. package/dist/handlers/TaskHandler.js +101 -63
  28. package/dist/handlers/TaskHandler.js.map +1 -1
  29. package/dist/handlers/UserHandler.js +6 -6
  30. package/dist/handlers/UserHandler.js.map +1 -1
  31. package/dist/handlers/WorkspaceHandler.d.ts +0 -1
  32. package/dist/handlers/WorkspaceHandler.d.ts.map +1 -1
  33. package/dist/handlers/WorkspaceHandler.js +0 -9
  34. package/dist/handlers/WorkspaceHandler.js.map +1 -1
  35. package/dist/handlers/base/BaseHandler.d.ts +4 -5
  36. package/dist/handlers/base/BaseHandler.d.ts.map +1 -1
  37. package/dist/handlers/base/BaseHandler.js +0 -12
  38. package/dist/handlers/base/BaseHandler.js.map +1 -1
  39. package/dist/handlers/base/HandlerInterface.d.ts +0 -5
  40. package/dist/handlers/base/HandlerInterface.d.ts.map +1 -1
  41. package/dist/handlers/index.d.ts +1 -1
  42. package/dist/handlers/index.d.ts.map +1 -1
  43. package/dist/mcp-server.js +3 -3
  44. package/dist/mcp-server.js.map +1 -1
  45. package/dist/schemas/motion.d.ts +12 -255
  46. package/dist/schemas/motion.d.ts.map +1 -1
  47. package/dist/schemas/motion.js +4 -17
  48. package/dist/schemas/motion.js.map +1 -1
  49. package/dist/services/api/ApiClient.d.ts +22 -0
  50. package/dist/services/api/ApiClient.d.ts.map +1 -0
  51. package/dist/services/api/ApiClient.js +198 -0
  52. package/dist/services/api/ApiClient.js.map +1 -0
  53. package/dist/services/api/CacheManager.d.ts +21 -0
  54. package/dist/services/api/CacheManager.d.ts.map +1 -0
  55. package/dist/services/api/CacheManager.js +25 -0
  56. package/dist/services/api/CacheManager.js.map +1 -0
  57. package/dist/services/api/comments.d.ts +8 -0
  58. package/dist/services/api/comments.d.ts.map +1 -0
  59. package/dist/services/api/comments.js +86 -0
  60. package/dist/services/api/comments.js.map +1 -0
  61. package/dist/services/api/customFields.d.ts +21 -0
  62. package/dist/services/api/customFields.d.ts.map +1 -0
  63. package/dist/services/api/customFields.js +277 -0
  64. package/dist/services/api/customFields.js.map +1 -0
  65. package/dist/services/api/index.d.ts +22 -0
  66. package/dist/services/api/index.d.ts.map +1 -0
  67. package/dist/services/api/index.js +64 -0
  68. package/dist/services/api/index.js.map +1 -0
  69. package/dist/services/api/projects.d.ts +18 -0
  70. package/dist/services/api/projects.d.ts.map +1 -0
  71. package/dist/services/api/projects.js +346 -0
  72. package/dist/services/api/projects.js.map +1 -0
  73. package/dist/services/api/recurringTasks.d.ts +15 -0
  74. package/dist/services/api/recurringTasks.d.ts.map +1 -0
  75. package/dist/services/api/recurringTasks.js +143 -0
  76. package/dist/services/api/recurringTasks.js.map +1 -0
  77. package/dist/services/api/schedules.d.ts +8 -0
  78. package/dist/services/api/schedules.d.ts.map +1 -0
  79. package/dist/services/api/schedules.js +70 -0
  80. package/dist/services/api/schedules.js.map +1 -0
  81. package/dist/services/api/search.d.ts +29 -0
  82. package/dist/services/api/search.d.ts.map +1 -0
  83. package/dist/services/api/search.js +415 -0
  84. package/dist/services/api/search.js.map +1 -0
  85. package/dist/services/api/statuses.d.ts +7 -0
  86. package/dist/services/api/statuses.d.ts.map +1 -0
  87. package/dist/services/api/statuses.js +67 -0
  88. package/dist/services/api/statuses.js.map +1 -0
  89. package/dist/services/api/tasks.d.ts +34 -0
  90. package/dist/services/api/tasks.d.ts.map +1 -0
  91. package/dist/services/api/tasks.js +474 -0
  92. package/dist/services/api/tasks.js.map +1 -0
  93. package/dist/services/api/types.d.ts +54 -0
  94. package/dist/services/api/types.d.ts.map +1 -0
  95. package/dist/services/api/types.js +9 -0
  96. package/dist/services/api/types.js.map +1 -0
  97. package/dist/services/api/users.d.ts +8 -0
  98. package/dist/services/api/users.d.ts.map +1 -0
  99. package/dist/services/api/users.js +93 -0
  100. package/dist/services/api/users.js.map +1 -0
  101. package/dist/services/api/workspaces.d.ts +7 -0
  102. package/dist/services/api/workspaces.d.ts.map +1 -0
  103. package/dist/services/api/workspaces.js +59 -0
  104. package/dist/services/api/workspaces.js.map +1 -0
  105. package/dist/services/motionApi.d.ts +41 -175
  106. package/dist/services/motionApi.d.ts.map +1 -1
  107. package/dist/services/motionApi.js +90 -2015
  108. package/dist/services/motionApi.js.map +1 -1
  109. package/dist/tools/ToolConfigurator.d.ts +1 -7
  110. package/dist/tools/ToolConfigurator.d.ts.map +1 -1
  111. package/dist/tools/ToolConfigurator.js +0 -31
  112. package/dist/tools/ToolConfigurator.js.map +1 -1
  113. package/dist/tools/ToolDefinitions.d.ts.map +1 -1
  114. package/dist/tools/ToolDefinitions.js +60 -82
  115. package/dist/tools/ToolDefinitions.js.map +1 -1
  116. package/dist/tools/ToolRegistry.d.ts +1 -22
  117. package/dist/tools/ToolRegistry.d.ts.map +1 -1
  118. package/dist/tools/ToolRegistry.js +0 -31
  119. package/dist/tools/ToolRegistry.js.map +1 -1
  120. package/dist/types/mcp-tool-args.d.ts +46 -61
  121. package/dist/types/mcp-tool-args.d.ts.map +1 -1
  122. package/dist/types/mcp-tool-args.js +2 -4
  123. package/dist/types/mcp-tool-args.js.map +1 -1
  124. package/dist/types/mcp.d.ts +5 -1
  125. package/dist/types/mcp.d.ts.map +1 -1
  126. package/dist/types/motion.d.ts +40 -20
  127. package/dist/types/motion.d.ts.map +1 -1
  128. package/dist/utils/cache.d.ts +0 -5
  129. package/dist/utils/cache.d.ts.map +1 -1
  130. package/dist/utils/cache.js +0 -8
  131. package/dist/utils/cache.js.map +1 -1
  132. package/dist/utils/constants.d.ts +4 -11
  133. package/dist/utils/constants.d.ts.map +1 -1
  134. package/dist/utils/constants.js +13 -53
  135. package/dist/utils/constants.js.map +1 -1
  136. package/dist/utils/errorHandling.d.ts +0 -12
  137. package/dist/utils/errorHandling.d.ts.map +1 -1
  138. package/dist/utils/errorHandling.js +2 -23
  139. package/dist/utils/errorHandling.js.map +1 -1
  140. package/dist/utils/errors.d.ts +89 -0
  141. package/dist/utils/errors.d.ts.map +1 -0
  142. package/dist/utils/errors.js +276 -0
  143. package/dist/utils/errors.js.map +1 -0
  144. package/dist/utils/frequencyTransform.d.ts +0 -5
  145. package/dist/utils/frequencyTransform.d.ts.map +1 -1
  146. package/dist/utils/frequencyTransform.js +1 -9
  147. package/dist/utils/frequencyTransform.js.map +1 -1
  148. package/dist/utils/index.d.ts +2 -2
  149. package/dist/utils/index.d.ts.map +1 -1
  150. package/dist/utils/index.js +6 -5
  151. package/dist/utils/index.js.map +1 -1
  152. package/dist/utils/pagination.d.ts +61 -0
  153. package/dist/utils/pagination.d.ts.map +1 -0
  154. package/dist/utils/pagination.js +168 -0
  155. package/dist/utils/pagination.js.map +1 -0
  156. package/dist/utils/paginationNew.d.ts +0 -5
  157. package/dist/utils/paginationNew.d.ts.map +1 -1
  158. package/dist/utils/paginationNew.js +5 -9
  159. package/dist/utils/paginationNew.js.map +1 -1
  160. package/dist/utils/parameterUtils.d.ts +15 -10
  161. package/dist/utils/parameterUtils.d.ts.map +1 -1
  162. package/dist/utils/parameterUtils.js +8 -22
  163. package/dist/utils/parameterUtils.js.map +1 -1
  164. package/dist/utils/responseFormatters.d.ts +3 -2
  165. package/dist/utils/responseFormatters.d.ts.map +1 -1
  166. package/dist/utils/responseFormatters.js +67 -24
  167. package/dist/utils/responseFormatters.js.map +1 -1
  168. package/dist/utils/responseWrapper.js +1 -1
  169. package/dist/utils/responseWrapper.js.map +1 -1
  170. package/dist/utils/sanitize.d.ts.map +1 -1
  171. package/dist/utils/sanitize.js +2 -5
  172. package/dist/utils/sanitize.js.map +1 -1
  173. package/dist/utils/serverInstructions.d.ts +2 -0
  174. package/dist/utils/serverInstructions.d.ts.map +1 -0
  175. package/dist/utils/serverInstructions.js +21 -0
  176. package/dist/utils/serverInstructions.js.map +1 -0
  177. package/dist/utils/userFacingErrors.d.ts +0 -8
  178. package/dist/utils/userFacingErrors.d.ts.map +1 -1
  179. package/dist/utils/userFacingErrors.js +0 -19
  180. package/dist/utils/userFacingErrors.js.map +1 -1
  181. package/dist/utils/workspaceResolver.d.ts +5 -1
  182. package/dist/utils/workspaceResolver.d.ts.map +1 -1
  183. package/dist/utils/workspaceResolver.js +46 -25
  184. package/dist/utils/workspaceResolver.js.map +1 -1
  185. package/package.json +6 -2
  186. package/dist/mcp-server-old.d.ts +0 -29
  187. package/dist/mcp-server-old.d.ts.map +0 -1
  188. package/dist/mcp-server-old.js +0 -1304
  189. package/dist/mcp-server-old.js.map +0 -1
  190. package/dist/utils/jsonSchemaToZod.d.ts +0 -33
  191. package/dist/utils/jsonSchemaToZod.d.ts.map +0 -1
  192. package/dist/utils/jsonSchemaToZod.js +0 -110
  193. package/dist/utils/jsonSchemaToZod.js.map +0 -1
  194. package/dist/worker.d.ts +0 -17
  195. package/dist/worker.d.ts.map +0 -1
  196. package/dist/worker.js +0 -61
  197. package/dist/worker.js.map +0 -1
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ /**
3
+ * User resource module — getUsers, getCurrentUser
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getUsers = getUsers;
7
+ exports.getCurrentUser = getCurrentUser;
8
+ const axios_1 = require("axios");
9
+ const constants_1 = require("../../utils/constants");
10
+ const logger_1 = require("../../utils/logger");
11
+ const ApiClient_1 = require("./ApiClient");
12
+ async function getUsers(ctx, workspaceId, teamId) {
13
+ const parts = [workspaceId && `ws:${workspaceId}`, teamId && `team:${teamId}`].filter(Boolean);
14
+ const cacheKey = parts.length > 0 ? `users:${parts.join(':')}` : 'users:all';
15
+ return ctx.cache.user.withCache(cacheKey, async () => {
16
+ try {
17
+ (0, logger_1.mcpLog)(constants_1.LOG_LEVELS.DEBUG, 'Fetching users from Motion API', {
18
+ method: 'getUsers',
19
+ workspaceId,
20
+ teamId
21
+ });
22
+ const params = new URLSearchParams();
23
+ if (workspaceId) {
24
+ params.append('workspaceId', workspaceId);
25
+ }
26
+ if (teamId) {
27
+ params.append('teamId', teamId);
28
+ }
29
+ const queryString = params.toString();
30
+ const url = queryString ? `/users?${queryString}` : '/users';
31
+ const response = await ctx.api.requestWithRetry(() => ctx.api.client.get(url));
32
+ // The Motion API might wrap the users in a 'users' array
33
+ const usersData = response.data?.users || response.data || [];
34
+ const users = Array.isArray(usersData) ? usersData : [];
35
+ if (!Array.isArray(response.data?.users) && !Array.isArray(response.data)) {
36
+ (0, logger_1.mcpLog)(constants_1.LOG_LEVELS.WARN, 'Unexpected users response shape', {
37
+ method: 'getUsers',
38
+ workspaceId,
39
+ responseType: response.data === null ? 'null' : typeof response.data
40
+ });
41
+ }
42
+ (0, logger_1.mcpLog)(constants_1.LOG_LEVELS.INFO, 'Users fetched successfully', {
43
+ method: 'getUsers',
44
+ count: users.length,
45
+ workspaceId
46
+ });
47
+ return users;
48
+ }
49
+ catch (error) {
50
+ (0, logger_1.mcpLog)(constants_1.LOG_LEVELS.ERROR, 'Failed to fetch users', {
51
+ method: 'getUsers',
52
+ error: (0, ApiClient_1.getErrorMessage)(error),
53
+ apiStatus: (0, axios_1.isAxiosError)(error) ? error.response?.status : undefined,
54
+ apiMessage: (0, axios_1.isAxiosError)(error) ? error.response?.data?.message : undefined
55
+ });
56
+ throw ctx.api.formatApiError(error, 'fetch', 'user');
57
+ }
58
+ });
59
+ }
60
+ async function getCurrentUser(ctx) {
61
+ const cacheKey = 'currentUser';
62
+ // Use userCache but with a special single-user wrapper
63
+ const cachedUsers = await ctx.cache.user.withCache(cacheKey, async () => {
64
+ try {
65
+ (0, logger_1.mcpLog)(constants_1.LOG_LEVELS.DEBUG, 'Fetching current user from Motion API', {
66
+ method: 'getCurrentUser'
67
+ });
68
+ const response = await ctx.api.requestWithRetry(() => ctx.api.client.get('/users/me'));
69
+ const user = response.data;
70
+ (0, logger_1.mcpLog)(constants_1.LOG_LEVELS.INFO, 'Current user fetched successfully', {
71
+ method: 'getCurrentUser',
72
+ userId: user.id,
73
+ email: user.email
74
+ });
75
+ return [user]; // Wrap in array for cache compatibility
76
+ }
77
+ catch (error) {
78
+ (0, logger_1.mcpLog)(constants_1.LOG_LEVELS.ERROR, 'Failed to fetch current user', {
79
+ method: 'getCurrentUser',
80
+ error: (0, ApiClient_1.getErrorMessage)(error),
81
+ apiStatus: (0, axios_1.isAxiosError)(error) ? error.response?.status : undefined,
82
+ apiMessage: (0, axios_1.isAxiosError)(error) ? error.response?.data?.message : undefined
83
+ });
84
+ throw ctx.api.formatApiError(error, 'fetch', 'user');
85
+ }
86
+ });
87
+ const user = cachedUsers[0];
88
+ if (!user) {
89
+ throw ctx.api.formatApiError(new Error('No user returned from API'), 'fetch', 'user');
90
+ }
91
+ return user;
92
+ }
93
+ //# sourceMappingURL=users.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"users.js","sourceRoot":"","sources":["../../../src/services/api/users.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Workspace resource module — getWorkspaces, fetchWorkspaces
3
+ */
4
+ import { MotionWorkspace } from '../../types/motion';
5
+ import { ResourceContext } from './types';
6
+ export declare function getWorkspaces(ctx: ResourceContext, ids?: string[]): Promise<MotionWorkspace[]>;
7
+ //# sourceMappingURL=workspaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspaces.d.ts","sourceRoot":"","sources":["../../../src/services/api/workspaces.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAIrD,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAmD1C,wBAAsB,aAAa,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAQpG"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ /**
3
+ * Workspace resource module — getWorkspaces, fetchWorkspaces
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getWorkspaces = getWorkspaces;
7
+ const axios_1 = require("axios");
8
+ const constants_1 = require("../../utils/constants");
9
+ const logger_1 = require("../../utils/logger");
10
+ const motion_1 = require("../../schemas/motion");
11
+ const ApiClient_1 = require("./ApiClient");
12
+ async function fetchWorkspaces(ctx, ids) {
13
+ try {
14
+ (0, logger_1.mcpLog)(constants_1.LOG_LEVELS.DEBUG, 'Fetching workspaces from Motion API', {
15
+ method: 'getWorkspaces',
16
+ filterIds: ids
17
+ });
18
+ const params = new URLSearchParams();
19
+ if (ids && ids.length > 0) {
20
+ for (const id of ids) {
21
+ params.append('ids', id);
22
+ }
23
+ }
24
+ const queryString = params.toString();
25
+ const url = queryString ? `/workspaces?${queryString}` : '/workspaces';
26
+ const response = await ctx.api.requestWithRetry(() => ctx.api.client.get(url));
27
+ // Validate the response structure
28
+ const validatedResponse = ctx.api.validateResponse(response.data, motion_1.WorkspacesListResponseSchema, 'getWorkspaces');
29
+ // Extract workspaces array (handle both wrapped and unwrapped responses)
30
+ const workspaces = Array.isArray(validatedResponse)
31
+ ? validatedResponse
32
+ : validatedResponse.workspaces;
33
+ (0, logger_1.mcpLog)(constants_1.LOG_LEVELS.INFO, 'Workspaces fetched successfully', {
34
+ method: 'getWorkspaces',
35
+ count: workspaces.length,
36
+ workspaceNames: workspaces.map((w) => w.name)
37
+ });
38
+ return workspaces;
39
+ }
40
+ catch (error) {
41
+ (0, logger_1.mcpLog)(constants_1.LOG_LEVELS.ERROR, 'Failed to fetch workspaces', {
42
+ method: 'getWorkspaces',
43
+ error: (0, ApiClient_1.getErrorMessage)(error),
44
+ apiStatus: (0, axios_1.isAxiosError)(error) ? error.response?.status : undefined,
45
+ apiMessage: (0, axios_1.isAxiosError)(error) ? error.response?.data?.message : undefined
46
+ });
47
+ throw ctx.api.formatApiError(error, 'fetch', 'workspace');
48
+ }
49
+ }
50
+ async function getWorkspaces(ctx, ids) {
51
+ // Skip caching when filtering by IDs — filtered results are unlikely to be reused
52
+ if (ids && ids.length > 0) {
53
+ return fetchWorkspaces(ctx, ids);
54
+ }
55
+ return ctx.cache.workspace.withCache('workspaces', async () => {
56
+ return fetchWorkspaces(ctx);
57
+ });
58
+ }
59
+ //# sourceMappingURL=workspaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspaces.js","sourceRoot":"","sources":["../../../src/services/api/workspaces.ts"],"names":[],"mappings":";AAAA;;GAEG;;AA0DH,sCAQC;AAhED,iCAAoD;AAEpD,qDAAmD;AACnD,+CAA4C;AAC5C,iDAAoE;AAEpE,2CAA8C;AAE9C,KAAK,UAAU,eAAe,CAAC,GAAoB,EAAE,GAAc;IACjE,IAAI,CAAC;QACH,IAAA,eAAM,EAAC,sBAAU,CAAC,KAAK,EAAE,qCAAqC,EAAE;YAC9D,MAAM,EAAE,eAAe;YACvB,SAAS,EAAE,GAAG;SACf,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;gBACrB,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,eAAe,WAAW,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;QAEvE,MAAM,QAAQ,GAAkB,MAAM,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAE9F,kCAAkC;QAClC,MAAM,iBAAiB,GAAG,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAChD,QAAQ,CAAC,IAAI,EACb,qCAA4B,EAC5B,eAAe,CAChB,CAAC;QAEF,yEAAyE;QACzE,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC;YACjD,CAAC,CAAC,iBAAiB;YACnB,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC;QAEjC,IAAA,eAAM,EAAC,sBAAU,CAAC,IAAI,EAAE,iCAAiC,EAAE;YACzD,MAAM,EAAE,eAAe;YACvB,KAAK,EAAE,UAAU,CAAC,MAAM;YACxB,cAAc,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAkB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SAC/D,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC;IACpB,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,IAAA,eAAM,EAAC,sBAAU,CAAC,KAAK,EAAE,4BAA4B,EAAE;YACrD,MAAM,EAAE,eAAe;YACvB,KAAK,EAAE,IAAA,2BAAe,EAAC,KAAK,CAAC;YAC7B,SAAS,EAAE,IAAA,oBAAY,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS;YACnE,UAAU,EAAE,IAAA,oBAAY,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS;SAC5E,CAAC,CAAC;QACH,MAAM,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,aAAa,CAAC,GAAoB,EAAE,GAAc;IACtE,kFAAkF;IAClF,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;QAC5D,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,52 +1,31 @@
1
- import { MotionWorkspace, MotionProject, MotionTask, MotionUser, MotionComment, CreateCommentData, MotionCustomField, CreateCustomFieldData, MotionRecurringTask, CreateRecurringTaskData, MotionSchedule, MotionStatus, MotionPaginatedResponse } from '../types/motion';
2
- import { ValidPriority } from '../utils/constants';
1
+ /**
2
+ * MotionApiService thin facade that delegates to resource modules.
3
+ *
4
+ * All business logic lives in `src/services/api/*.ts` modules. This class
5
+ * preserves the original public API surface so existing consumers (handlers,
6
+ * tests) don't need to change.
7
+ */
8
+ import { MotionWorkspace, MotionProject, MotionTask, MotionTaskCreateData, MotionTaskUpdateData, MotionUser, MotionComment, CreateCommentData, MotionCustomField, MotionCustomFieldValue, CreateCustomFieldData, MotionRecurringTask, CreateRecurringTaskData, MotionSchedule, MotionStatus, MotionPaginatedResponse } from '../types/motion';
3
9
  import { ListResult } from '../types/mcp';
4
- interface GetTasksOptions {
5
- workspaceId: string;
6
- projectId?: string;
7
- status?: string | string[];
8
- includeAllStatuses?: boolean;
9
- assigneeId?: string;
10
- priority?: ValidPriority;
11
- dueDate?: string;
12
- labels?: string[];
13
- limit?: number;
14
- maxPages?: number;
15
- }
10
+ import type { GetTasksOptions } from './api/tasks';
11
+ import type { ResolveUserIdentifierOptions } from './api/search';
16
12
  export declare class MotionApiService {
17
- private apiKey;
18
- private baseUrl;
19
- private client;
20
- private workspaceCache;
21
- private userCache;
22
- private projectCache;
23
- private singleProjectCache;
24
- private commentCache;
25
- private customFieldCache;
26
- private recurringTaskCache;
27
- private scheduleCache;
28
- private statusCache;
29
- /**
30
- * Validate API response against schema
31
- * Handles strict/lenient/off modes based on configuration
32
- */
33
- private validateResponse;
13
+ private _api;
14
+ private _cache;
34
15
  constructor(apiKey?: string);
35
- /**
36
- * Formats API errors with user-friendly messages while preserving technical details
37
- * @param error - The error that occurred
38
- * @param action - Description of the action that failed (e.g., 'fetch', 'create', 'update')
39
- * @param resourceType - Type of resource being operated on (e.g., 'project', 'task')
40
- * @param resourceId - Optional ID of the resource
41
- * @param resourceName - Optional name of the resource
42
- * @returns UserFacingError with both user-friendly and technical messages
43
- */
44
- private formatApiError;
45
- /**
46
- * Wraps an axios request with a retry mechanism featuring exponential backoff.
47
- * Only retries on 5xx server errors or 429 rate-limiting errors.
48
- */
49
- private requestWithRetry;
16
+ /** ResourceContext for delegating to extracted resource modules. */
17
+ private get _ctx();
18
+ getWorkspaces(ids?: string[]): Promise<MotionWorkspace[]>;
19
+ getUsers(workspaceId?: string, teamId?: string): Promise<MotionUser[]>;
20
+ getCurrentUser(): Promise<MotionUser>;
21
+ getTasks(options: GetTasksOptions): Promise<ListResult<MotionTask>>;
22
+ getTask(taskId: string): Promise<MotionTask>;
23
+ createTask(taskData: MotionTaskCreateData): Promise<MotionTask>;
24
+ updateTask(taskId: string, updates: MotionTaskUpdateData): Promise<MotionTask>;
25
+ deleteTask(taskId: string): Promise<void>;
26
+ moveTask(taskId: string, targetWorkspaceId: string, assigneeId?: string): Promise<MotionTask | undefined>;
27
+ unassignTask(taskId: string): Promise<MotionTask | undefined>;
28
+ getAllUncompletedTasks(limit?: number, assigneeId?: string): Promise<ListResult<MotionTask>>;
50
29
  getProjects(workspaceId: string, options?: {
51
30
  maxPages?: number;
52
31
  limit?: number;
@@ -56,155 +35,42 @@ export declare class MotionApiService {
56
35
  createProject(projectData: Partial<MotionProject>): Promise<MotionProject>;
57
36
  updateProject(projectId: string, updates: Partial<MotionProject>): Promise<MotionProject>;
58
37
  deleteProject(projectId: string): Promise<void>;
59
- getTasks(options: GetTasksOptions): Promise<ListResult<MotionTask>>;
60
- getTask(taskId: string): Promise<MotionTask>;
61
- createTask(taskData: Partial<MotionTask>): Promise<MotionTask>;
62
- updateTask(taskId: string, updates: Partial<MotionTask>): Promise<MotionTask>;
63
- deleteTask(taskId: string): Promise<void>;
64
- moveTask(taskId: string, targetProjectId?: string | null, targetWorkspaceId?: string | null): Promise<MotionTask>;
65
- unassignTask(taskId: string): Promise<MotionTask>;
66
- getWorkspaces(): Promise<MotionWorkspace[]>;
67
- getUsers(workspaceId?: string): Promise<MotionUser[]>;
68
- getCurrentUser(): Promise<MotionUser>;
69
- /**
70
- * Resolves a project identifier (either projectId or projectName) to a MotionProject
71
- * Searches across all workspaces if not found in the specified workspace
72
- * @param identifier Object containing either projectId or projectName
73
- * @param workspaceId Workspace to start searching in
74
- * @returns Resolved MotionProject with workspace info, or undefined if not found
75
- */
76
- resolveProjectIdentifier(identifier: {
77
- projectId?: string;
78
- projectName?: string;
79
- }, workspaceId: string): Promise<MotionProject | undefined>;
80
- /**
81
- * Resolves a user identifier (either userId or userName/email) to a MotionUser
82
- * Searches across all workspaces if not found in the specified workspace
83
- * @param identifier Object containing either userId or userName
84
- * @param workspaceId Workspace to start searching in (optional)
85
- * @returns Resolved MotionUser with workspace info, or undefined if not found
86
- */
87
- resolveUserIdentifier(identifier: {
88
- userId?: string;
89
- userName?: string;
90
- }, workspaceId?: string): Promise<MotionUser | undefined>;
91
- getProjectByName(projectName: string, workspaceId: string): Promise<MotionProject | undefined>;
92
- searchTasks(query: string, workspaceId: string, limit?: number): Promise<ListResult<MotionTask>>;
93
- searchProjects(query: string, workspaceId: string, limit?: number): Promise<ListResult<MotionProject>>;
94
- /**
95
- * Get comments for a task with proper pagination support
96
- * @param taskId Task ID to get comments for
97
- * @param cursor Optional cursor for pagination
98
- * @returns Paginated response with comments and metadata
99
- */
38
+ getProjectByName(projectName: string, workspaceId?: string): Promise<MotionProject | undefined>;
100
39
  getComments(taskId: string, cursor?: string): Promise<MotionPaginatedResponse<MotionComment>>;
101
40
  createComment(commentData: CreateCommentData): Promise<MotionComment>;
102
- /**
103
- * Fetch custom fields from Motion API
104
- * @param workspaceId - Required workspace ID to get custom fields for
105
- * @returns Array of custom fields
106
- */
107
41
  getCustomFields(workspaceId: string): Promise<MotionCustomField[]>;
108
- /**
109
- * Create a new custom field
110
- * @param workspaceId - Required workspace ID to create custom field in
111
- * @param fieldData - Data for creating the custom field
112
- * @returns The created custom field
113
- */
114
42
  createCustomField(workspaceId: string, fieldData: CreateCustomFieldData): Promise<MotionCustomField>;
115
- /**
116
- * Delete a custom field
117
- * @param workspaceId - Required workspace ID containing the custom field
118
- * @param fieldId - ID of the custom field to delete
119
- * @returns Success indicator
120
- */
121
43
  deleteCustomField(workspaceId: string, fieldId: string): Promise<{
122
44
  success: boolean;
123
45
  }>;
124
- /**
125
- * Add a custom field to a project
126
- * @param projectId - ID of the project
127
- * @param fieldId - ID of the custom field
128
- * @param value - Optional value for the field
129
- * @returns Updated project data
130
- */
131
- addCustomFieldToProject(projectId: string, fieldId: string, value?: string | number | boolean | string[] | null): Promise<MotionProject>;
132
- /**
133
- * Remove a custom field from a project
134
- * @param projectId - ID of the project
135
- * @param fieldId - ID of the custom field
136
- * @returns Success indicator
137
- */
138
- removeCustomFieldFromProject(projectId: string, fieldId: string): Promise<{
46
+ addCustomFieldToProject(projectId: string, fieldId: string, value?: string | number | boolean | string[] | null, fieldType?: string): Promise<MotionCustomFieldValue>;
47
+ removeCustomFieldFromProject(projectId: string, valueId: string): Promise<{
139
48
  success: boolean;
140
49
  }>;
141
- /**
142
- * Add a custom field to a task
143
- * @param taskId - ID of the task
144
- * @param fieldId - ID of the custom field
145
- * @param value - Optional value for the field
146
- * @returns Updated task data
147
- */
148
- addCustomFieldToTask(taskId: string, fieldId: string, value?: string | number | boolean | string[] | null): Promise<MotionTask>;
149
- /**
150
- * Remove a custom field from a task
151
- * @param taskId - ID of the task
152
- * @param fieldId - ID of the custom field
153
- * @returns Success indicator
154
- */
155
- removeCustomFieldFromTask(taskId: string, fieldId: string): Promise<{
50
+ addCustomFieldToTask(taskId: string, fieldId: string, value?: string | number | boolean | string[] | null, fieldType?: string): Promise<MotionCustomFieldValue>;
51
+ removeCustomFieldFromTask(taskId: string, valueId: string): Promise<{
156
52
  success: boolean;
157
53
  }>;
158
- /**
159
- * Fetch recurring tasks from Motion API with automatic pagination
160
- * @param workspaceId - Optional workspace ID to filter recurring tasks
161
- * @param options - Optional configuration for maxPages and limit
162
- * @returns Array of recurring tasks from all pages
163
- */
164
54
  getRecurringTasks(workspaceId?: string, options?: {
165
55
  maxPages?: number;
166
56
  limit?: number;
167
57
  }): Promise<ListResult<MotionRecurringTask>>;
168
- /**
169
- * Create a new recurring task
170
- * @param taskData - Data for creating the recurring task
171
- * @returns The created recurring task
172
- */
173
58
  createRecurringTask(taskData: CreateRecurringTaskData): Promise<MotionRecurringTask>;
174
- /**
175
- * Delete a recurring task
176
- * @param recurringTaskId - ID of the recurring task to delete
177
- * @returns Success indicator
178
- */
179
59
  deleteRecurringTask(recurringTaskId: string): Promise<{
180
60
  success: boolean;
181
61
  }>;
182
- /**
183
- * Get available schedule names for auto-scheduling
184
- * @param workspaceId - Optional workspace ID to filter schedules (currently unused by Motion API)
185
- * @returns Array of schedule names
186
- */
187
62
  getAvailableScheduleNames(workspaceId?: string): Promise<string[]>;
188
- /**
189
- * Fetch schedules from Motion API
190
- * @param userId - Optional user ID to filter schedules
191
- * @param startDate - Optional start date (ISO 8601) to filter schedules
192
- * @param endDate - Optional end date (ISO 8601) to filter schedules
193
- * @returns Array of schedules
194
- */
195
- getSchedules(userId?: string, startDate?: string, endDate?: string): Promise<MotionSchedule[]>;
196
- /**
197
- * Retrieves available workflow statuses from Motion
198
- * @param workspaceId - Optional workspace ID to filter statuses
199
- * @returns Promise resolving to array of Motion statuses
200
- * @throws {Error} If the API request fails
201
- */
63
+ getSchedules(): Promise<MotionSchedule[]>;
202
64
  getStatuses(workspaceId?: string): Promise<MotionStatus[]>;
203
- /**
204
- * Get all uncompleted tasks across all workspaces and projects
205
- * Filters tasks where status.isResolvedStatus is false or undefined
206
- */
207
- getAllUncompletedTasks(limit?: number, assigneeId?: string): Promise<ListResult<MotionTask>>;
65
+ searchTasks(query: string, workspaceId: string, limit?: number): Promise<ListResult<MotionTask>>;
66
+ searchProjects(query: string, workspaceId: string, limit?: number): Promise<ListResult<MotionProject>>;
67
+ resolveProjectIdentifier(identifier: {
68
+ projectId?: string;
69
+ projectName?: string;
70
+ }, workspaceId?: string): Promise<MotionProject | undefined>;
71
+ resolveUserIdentifier(identifier: {
72
+ userId?: string;
73
+ userName?: string;
74
+ }, workspaceId?: string, options?: ResolveUserIdentifierOptions): Promise<MotionUser | undefined>;
208
75
  }
209
- export {};
210
76
  //# sourceMappingURL=motionApi.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"motionApi.d.ts","sourceRoot":"","sources":["../../src/services/motionApi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"motionApi.d.ts","sourceRoot":"","sources":["../../src/services/motionApi.ts"],"names":[],"mappings":"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"}