motionmcp 2.6.0 → 2.8.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 (125) hide show
  1. package/README.md +4 -4
  2. package/dist/handlers/CustomFieldHandler.d.ts.map +1 -1
  3. package/dist/handlers/CustomFieldHandler.js +18 -2
  4. package/dist/handlers/CustomFieldHandler.js.map +1 -1
  5. package/dist/handlers/HandlerFactory.d.ts +0 -5
  6. package/dist/handlers/HandlerFactory.d.ts.map +1 -1
  7. package/dist/handlers/HandlerFactory.js +0 -15
  8. package/dist/handlers/HandlerFactory.js.map +1 -1
  9. package/dist/handlers/RecurringTaskHandler.d.ts.map +1 -1
  10. package/dist/handlers/RecurringTaskHandler.js +7 -2
  11. package/dist/handlers/RecurringTaskHandler.js.map +1 -1
  12. package/dist/handlers/TaskHandler.d.ts.map +1 -1
  13. package/dist/handlers/TaskHandler.js +7 -0
  14. package/dist/handlers/TaskHandler.js.map +1 -1
  15. package/dist/mcp-server.js +3 -3
  16. package/dist/mcp-server.js.map +1 -1
  17. package/dist/services/api/ApiClient.d.ts +22 -0
  18. package/dist/services/api/ApiClient.d.ts.map +1 -0
  19. package/dist/services/api/ApiClient.js +198 -0
  20. package/dist/services/api/ApiClient.js.map +1 -0
  21. package/dist/services/api/CacheManager.d.ts +21 -0
  22. package/dist/services/api/CacheManager.d.ts.map +1 -0
  23. package/dist/services/api/CacheManager.js +25 -0
  24. package/dist/services/api/CacheManager.js.map +1 -0
  25. package/dist/services/api/comments.d.ts +8 -0
  26. package/dist/services/api/comments.d.ts.map +1 -0
  27. package/dist/services/api/comments.js +86 -0
  28. package/dist/services/api/comments.js.map +1 -0
  29. package/dist/services/api/customFields.d.ts +21 -0
  30. package/dist/services/api/customFields.d.ts.map +1 -0
  31. package/dist/services/api/customFields.js +277 -0
  32. package/dist/services/api/customFields.js.map +1 -0
  33. package/dist/services/api/index.d.ts +22 -0
  34. package/dist/services/api/index.d.ts.map +1 -0
  35. package/dist/services/api/index.js +64 -0
  36. package/dist/services/api/index.js.map +1 -0
  37. package/dist/services/api/projects.d.ts +18 -0
  38. package/dist/services/api/projects.d.ts.map +1 -0
  39. package/dist/services/api/projects.js +346 -0
  40. package/dist/services/api/projects.js.map +1 -0
  41. package/dist/services/api/recurringTasks.d.ts +15 -0
  42. package/dist/services/api/recurringTasks.d.ts.map +1 -0
  43. package/dist/services/api/recurringTasks.js +143 -0
  44. package/dist/services/api/recurringTasks.js.map +1 -0
  45. package/dist/services/api/schedules.d.ts +8 -0
  46. package/dist/services/api/schedules.d.ts.map +1 -0
  47. package/dist/services/api/schedules.js +70 -0
  48. package/dist/services/api/schedules.js.map +1 -0
  49. package/dist/services/api/search.d.ts +29 -0
  50. package/dist/services/api/search.d.ts.map +1 -0
  51. package/dist/services/api/search.js +415 -0
  52. package/dist/services/api/search.js.map +1 -0
  53. package/dist/services/api/statuses.d.ts +7 -0
  54. package/dist/services/api/statuses.d.ts.map +1 -0
  55. package/dist/services/api/statuses.js +67 -0
  56. package/dist/services/api/statuses.js.map +1 -0
  57. package/dist/services/api/tasks.d.ts +34 -0
  58. package/dist/services/api/tasks.d.ts.map +1 -0
  59. package/dist/services/api/tasks.js +474 -0
  60. package/dist/services/api/tasks.js.map +1 -0
  61. package/dist/services/api/types.d.ts +54 -0
  62. package/dist/services/api/types.d.ts.map +1 -0
  63. package/dist/services/api/types.js +9 -0
  64. package/dist/services/api/types.js.map +1 -0
  65. package/dist/services/api/users.d.ts +8 -0
  66. package/dist/services/api/users.d.ts.map +1 -0
  67. package/dist/services/api/users.js +93 -0
  68. package/dist/services/api/users.js.map +1 -0
  69. package/dist/services/api/workspaces.d.ts +7 -0
  70. package/dist/services/api/workspaces.d.ts.map +1 -0
  71. package/dist/services/api/workspaces.js +59 -0
  72. package/dist/services/api/workspaces.js.map +1 -0
  73. package/dist/services/motionApi.d.ts +34 -180
  74. package/dist/services/motionApi.d.ts.map +1 -1
  75. package/dist/services/motionApi.js +84 -2163
  76. package/dist/services/motionApi.js.map +1 -1
  77. package/dist/tools/ToolConfigurator.d.ts +1 -7
  78. package/dist/tools/ToolConfigurator.d.ts.map +1 -1
  79. package/dist/tools/ToolConfigurator.js +0 -31
  80. package/dist/tools/ToolConfigurator.js.map +1 -1
  81. package/dist/tools/ToolDefinitions.js +1 -1
  82. package/dist/tools/ToolDefinitions.js.map +1 -1
  83. package/dist/tools/ToolRegistry.d.ts +1 -22
  84. package/dist/tools/ToolRegistry.d.ts.map +1 -1
  85. package/dist/tools/ToolRegistry.js +0 -31
  86. package/dist/tools/ToolRegistry.js.map +1 -1
  87. package/dist/types/motion.d.ts +0 -7
  88. package/dist/types/motion.d.ts.map +1 -1
  89. package/dist/utils/cache.d.ts +0 -5
  90. package/dist/utils/cache.d.ts.map +1 -1
  91. package/dist/utils/cache.js +0 -8
  92. package/dist/utils/cache.js.map +1 -1
  93. package/dist/utils/constants.d.ts +4 -0
  94. package/dist/utils/constants.d.ts.map +1 -1
  95. package/dist/utils/constants.js +7 -1
  96. package/dist/utils/constants.js.map +1 -1
  97. package/dist/utils/errorHandling.d.ts +0 -12
  98. package/dist/utils/errorHandling.d.ts.map +1 -1
  99. package/dist/utils/errorHandling.js +2 -23
  100. package/dist/utils/errorHandling.js.map +1 -1
  101. package/dist/utils/errors.d.ts +89 -0
  102. package/dist/utils/errors.d.ts.map +1 -0
  103. package/dist/utils/errors.js +276 -0
  104. package/dist/utils/errors.js.map +1 -0
  105. package/dist/utils/index.d.ts +2 -2
  106. package/dist/utils/index.d.ts.map +1 -1
  107. package/dist/utils/index.js +6 -5
  108. package/dist/utils/index.js.map +1 -1
  109. package/dist/utils/parameterUtils.d.ts +10 -0
  110. package/dist/utils/parameterUtils.d.ts.map +1 -1
  111. package/dist/utils/parameterUtils.js +61 -5
  112. package/dist/utils/parameterUtils.js.map +1 -1
  113. package/dist/utils/responseFormatters.js +16 -16
  114. package/dist/utils/responseFormatters.js.map +1 -1
  115. package/dist/utils/serverInstructions.d.ts +2 -0
  116. package/dist/utils/serverInstructions.d.ts.map +1 -0
  117. package/dist/utils/serverInstructions.js +21 -0
  118. package/dist/utils/serverInstructions.js.map +1 -0
  119. package/dist/utils/userFacingErrors.d.ts +0 -8
  120. package/dist/utils/userFacingErrors.d.ts.map +1 -1
  121. package/dist/utils/userFacingErrors.js +0 -19
  122. package/dist/utils/userFacingErrors.js.map +1 -1
  123. package/dist/utils/workspaceResolver.js +12 -12
  124. package/dist/utils/workspaceResolver.js.map +1 -1
  125. package/package.json +2 -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,64 +1,31 @@
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
+ */
1
8
  import { MotionWorkspace, MotionProject, MotionTask, MotionTaskCreateData, MotionTaskUpdateData, MotionUser, MotionComment, CreateCommentData, MotionCustomField, MotionCustomFieldValue, CreateCustomFieldData, MotionRecurringTask, CreateRecurringTaskData, MotionSchedule, MotionStatus, MotionPaginatedResponse } from '../types/motion';
2
- import { ValidPriority } from '../utils/constants';
3
9
  import { ListResult } from '../types/mcp';
4
- interface GetTasksOptions {
5
- workspaceId?: string;
6
- projectId?: string;
7
- name?: string;
8
- status?: string | string[];
9
- includeAllStatuses?: boolean;
10
- assigneeId?: string;
11
- priority?: ValidPriority;
12
- dueDate?: string;
13
- labels?: string[];
14
- limit?: number;
15
- maxPages?: number;
16
- }
17
- interface ResolveUserIdentifierOptions {
18
- strictWorkspace?: boolean;
19
- }
10
+ import type { GetTasksOptions } from './api/tasks';
11
+ import type { ResolveUserIdentifierOptions } from './api/search';
20
12
  export declare class MotionApiService {
21
- private apiKey;
22
- private baseUrl;
23
- private client;
24
- private workspaceCache;
25
- private userCache;
26
- private projectCache;
27
- private singleProjectCache;
28
- private commentCache;
29
- private customFieldCache;
30
- private recurringTaskCache;
31
- private scheduleCache;
32
- private statusCache;
33
- /**
34
- * Validate API response against schema
35
- * Handles strict/lenient/off modes based on configuration
36
- */
37
- private validateResponse;
13
+ private _api;
14
+ private _cache;
38
15
  constructor(apiKey?: string);
39
- /**
40
- * Formats API errors with user-friendly messages while preserving technical details
41
- * @param error - The error that occurred
42
- * @param action - Description of the action that failed (e.g., 'fetch', 'create', 'update')
43
- * @param resourceType - Type of resource being operated on (e.g., 'project', 'task')
44
- * @param resourceId - Optional ID of the resource
45
- * @param resourceName - Optional name of the resource
46
- * @returns UserFacingError with both user-friendly and technical messages
47
- */
48
- private formatApiError;
49
- /**
50
- * Wraps an axios request with a retry mechanism featuring exponential backoff.
51
- * Retries only safe/read-only requests (GET) on transient failures:
52
- * - HTTP 5xx
53
- * - HTTP 429
54
- * - Network errors with no HTTP response
55
- */
56
- private requestWithRetry;
57
- /**
58
- * Merge truncation metadata from multiple paginated sources without mutating source objects.
59
- * If sources disagree on reason/limit, drop those fields to avoid misleading aggregate metadata.
60
- */
61
- private mergeTruncationMetadata;
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>>;
62
29
  getProjects(workspaceId: string, options?: {
63
30
  maxPages?: number;
64
31
  limit?: number;
@@ -68,155 +35,42 @@ export declare class MotionApiService {
68
35
  createProject(projectData: Partial<MotionProject>): Promise<MotionProject>;
69
36
  updateProject(projectId: string, updates: Partial<MotionProject>): Promise<MotionProject>;
70
37
  deleteProject(projectId: string): Promise<void>;
71
- getTasks(options: GetTasksOptions): Promise<ListResult<MotionTask>>;
72
- getTask(taskId: string): Promise<MotionTask>;
73
- createTask(taskData: MotionTaskCreateData): Promise<MotionTask>;
74
- updateTask(taskId: string, updates: MotionTaskUpdateData): Promise<MotionTask>;
75
- deleteTask(taskId: string): Promise<void>;
76
- moveTask(taskId: string, targetWorkspaceId: string, assigneeId?: string): Promise<MotionTask | undefined>;
77
- unassignTask(taskId: string): Promise<MotionTask | undefined>;
78
- getWorkspaces(ids?: string[]): Promise<MotionWorkspace[]>;
79
- private fetchWorkspaces;
80
- getUsers(workspaceId?: string, teamId?: string): Promise<MotionUser[]>;
81
- getCurrentUser(): Promise<MotionUser>;
82
- /**
83
- * Resolves a project identifier (either projectId or projectName) to a MotionProject
84
- * Searches across all workspaces if not found in the specified workspace
85
- * @param identifier Object containing either projectId or projectName
86
- * @param workspaceId Workspace to start searching in
87
- * @returns Resolved MotionProject with workspace info, or undefined if not found
88
- */
89
- resolveProjectIdentifier(identifier: {
90
- projectId?: string;
91
- projectName?: string;
92
- }, workspaceId?: string): Promise<MotionProject | undefined>;
93
- /**
94
- * Resolves a user identifier (either userId or userName/email) to a MotionUser
95
- * Searches across all workspaces if not found in the specified workspace unless strictWorkspace is true
96
- * @param identifier Object containing either userId or userName
97
- * @param workspaceId Workspace to start searching in (optional)
98
- * @param options Resolution behavior options
99
- * @returns Resolved MotionUser with workspace info, or undefined if not found
100
- */
101
- resolveUserIdentifier(identifier: {
102
- userId?: string;
103
- userName?: string;
104
- }, workspaceId?: string, options?: ResolveUserIdentifierOptions): Promise<MotionUser | undefined>;
105
38
  getProjectByName(projectName: string, workspaceId?: string): Promise<MotionProject | undefined>;
106
- searchTasks(query: string, workspaceId: string, limit?: number): Promise<ListResult<MotionTask>>;
107
- searchProjects(query: string, workspaceId: string, limit?: number): Promise<ListResult<MotionProject>>;
108
- /**
109
- * Get comments for a task with proper pagination support
110
- * @param taskId Task ID to get comments for
111
- * @param cursor Optional cursor for pagination
112
- * @returns Paginated response with comments and metadata
113
- */
114
39
  getComments(taskId: string, cursor?: string): Promise<MotionPaginatedResponse<MotionComment>>;
115
40
  createComment(commentData: CreateCommentData): Promise<MotionComment>;
116
- /**
117
- * Fetch custom fields from Motion API
118
- * @param workspaceId - Required workspace ID to get custom fields for
119
- * @returns Array of custom fields
120
- */
121
41
  getCustomFields(workspaceId: string): Promise<MotionCustomField[]>;
122
- /**
123
- * Create a new custom field
124
- * @param workspaceId - Required workspace ID to create custom field in
125
- * @param fieldData - Data for creating the custom field
126
- * @returns The created custom field
127
- */
128
42
  createCustomField(workspaceId: string, fieldData: CreateCustomFieldData): Promise<MotionCustomField>;
129
- /**
130
- * Delete a custom field
131
- * @param workspaceId - Required workspace ID containing the custom field
132
- * @param fieldId - ID of the custom field to delete
133
- * @returns Success indicator
134
- */
135
43
  deleteCustomField(workspaceId: string, fieldId: string): Promise<{
136
44
  success: boolean;
137
45
  }>;
138
- /**
139
- * Add a custom field to a project
140
- * @param projectId - ID of the project
141
- * @param fieldId - ID of the custom field
142
- * @param value - Optional value for the field
143
- * @returns The field value as returned by the API ({ type, value })
144
- */
145
46
  addCustomFieldToProject(projectId: string, fieldId: string, value?: string | number | boolean | string[] | null, fieldType?: string): Promise<MotionCustomFieldValue>;
146
- /**
147
- * Remove a custom field from a project
148
- * @param projectId - ID of the project
149
- * @param valueId - ID of the custom field value
150
- * @returns Success indicator
151
- */
152
47
  removeCustomFieldFromProject(projectId: string, valueId: string): Promise<{
153
48
  success: boolean;
154
49
  }>;
155
- /**
156
- * Add a custom field to a task
157
- * @param taskId - ID of the task
158
- * @param fieldId - ID of the custom field
159
- * @param value - Optional value for the field
160
- * @returns The field value as returned by the API ({ type, value })
161
- */
162
50
  addCustomFieldToTask(taskId: string, fieldId: string, value?: string | number | boolean | string[] | null, fieldType?: string): Promise<MotionCustomFieldValue>;
163
- /**
164
- * Remove a custom field from a task
165
- * @param taskId - ID of the task
166
- * @param valueId - ID of the custom field value
167
- * @returns Success indicator
168
- */
169
51
  removeCustomFieldFromTask(taskId: string, valueId: string): Promise<{
170
52
  success: boolean;
171
53
  }>;
172
- /**
173
- * Fetch recurring tasks from Motion API with automatic pagination
174
- * @param workspaceId - Optional workspace ID to filter recurring tasks
175
- * @param options - Optional configuration for maxPages and limit
176
- * @returns Array of recurring tasks from all pages
177
- */
178
54
  getRecurringTasks(workspaceId?: string, options?: {
179
55
  maxPages?: number;
180
56
  limit?: number;
181
57
  }): Promise<ListResult<MotionRecurringTask>>;
182
- /**
183
- * Create a new recurring task
184
- * @param taskData - Data for creating the recurring task
185
- * @returns The created recurring task
186
- */
187
58
  createRecurringTask(taskData: CreateRecurringTaskData): Promise<MotionRecurringTask>;
188
- /**
189
- * Delete a recurring task
190
- * @param recurringTaskId - ID of the recurring task to delete
191
- * @returns Success indicator
192
- */
193
59
  deleteRecurringTask(recurringTaskId: string): Promise<{
194
60
  success: boolean;
195
61
  }>;
196
- /**
197
- * Get available schedule names for auto-scheduling
198
- * @param workspaceId - Optional workspace ID to filter schedules (currently unused by Motion API)
199
- * @returns Array of schedule names
200
- */
201
62
  getAvailableScheduleNames(workspaceId?: string): Promise<string[]>;
202
- /**
203
- * Fetch schedules from Motion API.
204
- * The Motion API GET /schedules accepts no query parameters.
205
- * @returns Array of schedules
206
- */
207
63
  getSchedules(): Promise<MotionSchedule[]>;
208
- /**
209
- * Retrieves available workflow statuses from Motion
210
- * @param workspaceId - Optional workspace ID to filter statuses
211
- * @returns Promise resolving to array of Motion statuses
212
- * @throws {Error} If the API request fails
213
- */
214
64
  getStatuses(workspaceId?: string): Promise<MotionStatus[]>;
215
- /**
216
- * Get all uncompleted tasks across all workspaces and projects
217
- * Filters tasks where status.isResolvedStatus is false or undefined
218
- */
219
- 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>;
220
75
  }
221
- export {};
222
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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"}