@doist/todoist-ai 2.0.0 → 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 (96) hide show
  1. package/README.md +7 -0
  2. package/dist/index.d.ts +29 -18
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +31 -48
  5. package/dist/main.js +6 -11
  6. package/dist/mcp-helpers.d.ts +2 -2
  7. package/dist/mcp-helpers.d.ts.map +1 -1
  8. package/dist/mcp-helpers.js +1 -4
  9. package/dist/mcp-server.d.ts +1 -1
  10. package/dist/mcp-server.d.ts.map +1 -1
  11. package/dist/mcp-server.js +34 -36
  12. package/dist/todoist-tool.js +1 -2
  13. package/dist/tool-helpers.d.ts +13 -1
  14. package/dist/tool-helpers.d.ts.map +1 -1
  15. package/dist/tool-helpers.js +43 -22
  16. package/dist/tool-helpers.test.js +55 -14
  17. package/dist/tools/__tests__/delete-one.test.d.ts +2 -0
  18. package/dist/tools/__tests__/delete-one.test.d.ts.map +1 -0
  19. package/dist/tools/__tests__/delete-one.test.js +90 -0
  20. package/dist/tools/__tests__/overview.test.d.ts +2 -0
  21. package/dist/tools/__tests__/overview.test.d.ts.map +1 -0
  22. package/dist/tools/__tests__/overview.test.js +163 -0
  23. package/dist/tools/__tests__/projects-list.test.d.ts +2 -0
  24. package/dist/tools/__tests__/projects-list.test.d.ts.map +1 -0
  25. package/dist/tools/__tests__/projects-list.test.js +140 -0
  26. package/dist/tools/__tests__/projects-manage.test.d.ts +2 -0
  27. package/dist/tools/__tests__/projects-manage.test.d.ts.map +1 -0
  28. package/dist/tools/__tests__/projects-manage.test.js +106 -0
  29. package/dist/tools/__tests__/sections-manage.test.d.ts +2 -0
  30. package/dist/tools/__tests__/sections-manage.test.d.ts.map +1 -0
  31. package/dist/tools/__tests__/sections-manage.test.js +138 -0
  32. package/dist/tools/__tests__/sections-search.test.d.ts +2 -0
  33. package/dist/tools/__tests__/sections-search.test.d.ts.map +1 -0
  34. package/dist/tools/__tests__/sections-search.test.js +235 -0
  35. package/dist/tools/__tests__/tasks-add-multiple.test.d.ts +2 -0
  36. package/dist/tools/__tests__/tasks-add-multiple.test.d.ts.map +1 -0
  37. package/dist/tools/__tests__/tasks-add-multiple.test.js +274 -0
  38. package/dist/tools/__tests__/tasks-complete-multiple.test.d.ts +2 -0
  39. package/dist/tools/__tests__/tasks-complete-multiple.test.d.ts.map +1 -0
  40. package/dist/tools/__tests__/tasks-complete-multiple.test.js +146 -0
  41. package/dist/tools/__tests__/tasks-list-by-date.test.d.ts +2 -0
  42. package/dist/tools/__tests__/tasks-list-by-date.test.d.ts.map +1 -0
  43. package/dist/tools/__tests__/tasks-list-by-date.test.js +192 -0
  44. package/dist/tools/__tests__/tasks-list-completed.test.d.ts +2 -0
  45. package/dist/tools/__tests__/tasks-list-completed.test.d.ts.map +1 -0
  46. package/dist/tools/__tests__/tasks-list-completed.test.js +154 -0
  47. package/dist/tools/__tests__/tasks-list-for-container.test.d.ts +2 -0
  48. package/dist/tools/__tests__/tasks-list-for-container.test.d.ts.map +1 -0
  49. package/dist/tools/__tests__/tasks-list-for-container.test.js +232 -0
  50. package/dist/tools/__tests__/tasks-organize-multiple.test.d.ts +2 -0
  51. package/dist/tools/__tests__/tasks-organize-multiple.test.d.ts.map +1 -0
  52. package/dist/tools/__tests__/tasks-organize-multiple.test.js +245 -0
  53. package/dist/tools/__tests__/tasks-search.test.d.ts +2 -0
  54. package/dist/tools/__tests__/tasks-search.test.d.ts.map +1 -0
  55. package/dist/tools/__tests__/tasks-search.test.js +106 -0
  56. package/dist/tools/__tests__/tasks-update-one.test.d.ts +2 -0
  57. package/dist/tools/__tests__/tasks-update-one.test.d.ts.map +1 -0
  58. package/dist/tools/__tests__/tasks-update-one.test.js +251 -0
  59. package/dist/tools/delete-one.js +4 -7
  60. package/dist/tools/overview.js +8 -11
  61. package/dist/tools/projects-list.js +7 -10
  62. package/dist/tools/projects-manage.js +6 -9
  63. package/dist/tools/sections-manage.js +7 -10
  64. package/dist/tools/sections-search.js +4 -7
  65. package/dist/tools/tasks-add-multiple.d.ts +5 -0
  66. package/dist/tools/tasks-add-multiple.d.ts.map +1 -1
  67. package/dist/tools/tasks-add-multiple.js +37 -17
  68. package/dist/tools/tasks-complete-multiple.js +3 -6
  69. package/dist/tools/tasks-list-by-date.d.ts +1 -0
  70. package/dist/tools/tasks-list-by-date.d.ts.map +1 -1
  71. package/dist/tools/tasks-list-by-date.js +12 -15
  72. package/dist/tools/tasks-list-completed.d.ts +2 -1
  73. package/dist/tools/tasks-list-completed.d.ts.map +1 -1
  74. package/dist/tools/tasks-list-completed.js +13 -16
  75. package/dist/tools/tasks-list-for-container.d.ts +1 -0
  76. package/dist/tools/tasks-list-for-container.d.ts.map +1 -1
  77. package/dist/tools/tasks-list-for-container.js +8 -11
  78. package/dist/tools/tasks-organize-multiple.d.ts.map +1 -1
  79. package/dist/tools/tasks-organize-multiple.js +20 -14
  80. package/dist/tools/tasks-search.d.ts +1 -0
  81. package/dist/tools/tasks-search.d.ts.map +1 -1
  82. package/dist/tools/tasks-search.js +7 -10
  83. package/dist/tools/tasks-update-one.d.ts +4 -2
  84. package/dist/tools/tasks-update-one.d.ts.map +1 -1
  85. package/dist/tools/tasks-update-one.js +45 -15
  86. package/dist/tools/test-helpers.d.ts +80 -0
  87. package/dist/tools/test-helpers.d.ts.map +1 -0
  88. package/dist/tools/test-helpers.js +140 -0
  89. package/dist/utils/duration-parser.d.ts +36 -0
  90. package/dist/utils/duration-parser.d.ts.map +1 -0
  91. package/dist/utils/duration-parser.js +96 -0
  92. package/dist/utils/duration-parser.test.d.ts +2 -0
  93. package/dist/utils/duration-parser.test.d.ts.map +1 -0
  94. package/dist/utils/duration-parser.test.js +147 -0
  95. package/package.json +6 -2
  96. package/scripts/test-executable.cjs +69 -0
package/README.md CHANGED
@@ -71,6 +71,13 @@ See [docs/mcp-server.md](docs/mcp-server.md) for full instructions on setting up
71
71
 
72
72
  See [docs/dev-setup.md](docs/dev-setup.md) for full instructions on setting up this repository locally for development and contributing.
73
73
 
74
+ ### Quick Start
75
+
76
+ After cloning and setting up the repository:
77
+
78
+ - `npm start` - Build and run the MCP inspector for testing
79
+ - `npm run dev` - Development mode with auto-rebuild and restart
80
+
74
81
  ## Releasing
75
82
 
76
83
  This project uses [release-please](https://github.com/googleapis/release-please) to automate version management and package publishing.
package/dist/index.d.ts CHANGED
@@ -1,18 +1,18 @@
1
- import { getMcpServer } from './mcp-server';
2
- import { deleteOne } from './tools/delete-one';
3
- import { projectsList } from './tools/projects-list';
4
- import { projectsManage } from './tools/projects-manage';
5
- import { sectionsManage } from './tools/sections-manage';
6
- import { sectionsSearch } from './tools/sections-search';
7
- import { overview } from './tools/overview';
8
- import { tasksAddMultiple } from './tools/tasks-add-multiple';
9
- import { tasksCompleteMultiple } from './tools/tasks-complete-multiple';
10
- import { tasksListByDate } from './tools/tasks-list-by-date';
11
- import { tasksListCompleted } from './tools/tasks-list-completed';
12
- import { tasksListForContainer } from './tools/tasks-list-for-container';
13
- import { tasksOrganizeMultiple } from './tools/tasks-organize-multiple';
14
- import { tasksSearch } from './tools/tasks-search';
15
- import { tasksUpdateOne } from './tools/tasks-update-one';
1
+ import { getMcpServer } from './mcp-server.js';
2
+ import { deleteOne } from './tools/delete-one.js';
3
+ import { projectsList } from './tools/projects-list.js';
4
+ import { projectsManage } from './tools/projects-manage.js';
5
+ import { sectionsManage } from './tools/sections-manage.js';
6
+ import { sectionsSearch } from './tools/sections-search.js';
7
+ import { overview } from './tools/overview.js';
8
+ import { tasksAddMultiple } from './tools/tasks-add-multiple.js';
9
+ import { tasksCompleteMultiple } from './tools/tasks-complete-multiple.js';
10
+ import { tasksListByDate } from './tools/tasks-list-by-date.js';
11
+ import { tasksListCompleted } from './tools/tasks-list-completed.js';
12
+ import { tasksListForContainer } from './tools/tasks-list-for-container.js';
13
+ import { tasksOrganizeMultiple } from './tools/tasks-organize-multiple.js';
14
+ import { tasksSearch } from './tools/tasks-search.js';
15
+ import { tasksUpdateOne } from './tools/tasks-update-one.js';
16
16
  declare const tools: {
17
17
  projectsList: {
18
18
  name: string;
@@ -136,6 +136,7 @@ declare const tools: {
136
136
  sectionId: string | null;
137
137
  parentId: string | null;
138
138
  labels: string[];
139
+ duration: string | null;
139
140
  }[];
140
141
  nextCursor: string | null;
141
142
  }>;
@@ -161,9 +162,9 @@ declare const tools: {
161
162
  until: string;
162
163
  parentId?: string | undefined;
163
164
  workspaceId?: string | undefined;
164
- cursor?: string | undefined;
165
165
  projectId?: string | undefined;
166
166
  sectionId?: string | undefined;
167
+ cursor?: string | undefined;
167
168
  }, client: import("@doist/todoist-api-typescript").TodoistApi): Promise<{
168
169
  tasks: {
169
170
  id: string;
@@ -176,6 +177,7 @@ declare const tools: {
176
177
  sectionId: string | null;
177
178
  parentId: string | null;
178
179
  labels: string[];
180
+ duration: string | null;
179
181
  }[];
180
182
  nextCursor: string | null;
181
183
  }>;
@@ -206,6 +208,7 @@ declare const tools: {
206
208
  sectionId: string | null;
207
209
  parentId: string | null;
208
210
  labels: string[];
211
+ duration: string | null;
209
212
  }[];
210
213
  nextCursor: string | null;
211
214
  }>;
@@ -247,6 +250,7 @@ declare const tools: {
247
250
  sectionId: string | null;
248
251
  parentId: string | null;
249
252
  labels: string[];
253
+ duration: string | null;
250
254
  }[];
251
255
  nextCursor: string | null;
252
256
  }>;
@@ -263,16 +267,19 @@ declare const tools: {
263
267
  description: import("zod").ZodOptional<import("zod").ZodString>;
264
268
  priority: import("zod").ZodOptional<import("zod").ZodNumber>;
265
269
  dueString: import("zod").ZodOptional<import("zod").ZodString>;
270
+ duration: import("zod").ZodOptional<import("zod").ZodString>;
266
271
  }, "strip", import("zod").ZodTypeAny, {
267
272
  content: string;
268
273
  description?: string | undefined;
269
274
  priority?: number | undefined;
270
275
  dueString?: string | undefined;
276
+ duration?: string | undefined;
271
277
  }, {
272
278
  content: string;
273
279
  description?: string | undefined;
274
280
  priority?: number | undefined;
275
281
  dueString?: string | undefined;
282
+ duration?: string | undefined;
276
283
  }>, "many">;
277
284
  };
278
285
  execute(args: {
@@ -281,6 +288,7 @@ declare const tools: {
281
288
  description?: string | undefined;
282
289
  priority?: number | undefined;
283
290
  dueString?: string | undefined;
291
+ duration?: string | undefined;
284
292
  }[];
285
293
  parentId?: string | undefined;
286
294
  projectId?: string | undefined;
@@ -296,6 +304,7 @@ declare const tools: {
296
304
  sectionId: string | null;
297
305
  parentId: string | null;
298
306
  labels: string[];
307
+ duration: string | null;
299
308
  }[]>;
300
309
  };
301
310
  tasksUpdateOne: {
@@ -310,6 +319,7 @@ declare const tools: {
310
319
  parentId: import("zod").ZodOptional<import("zod").ZodString>;
311
320
  priority: import("zod").ZodOptional<import("zod").ZodNumber>;
312
321
  dueString: import("zod").ZodOptional<import("zod").ZodString>;
322
+ duration: import("zod").ZodOptional<import("zod").ZodString>;
313
323
  };
314
324
  execute(args: {
315
325
  id: string;
@@ -317,10 +327,11 @@ declare const tools: {
317
327
  description?: string | undefined;
318
328
  parentId?: string | undefined;
319
329
  projectId?: string | undefined;
330
+ sectionId?: string | undefined;
320
331
  priority?: number | undefined;
321
332
  dueString?: string | undefined;
322
- sectionId?: string | undefined;
323
- }, client: import("@doist/todoist-api-typescript").TodoistApi): Promise<import("@doist/todoist-api-typescript").Task>;
333
+ duration?: string | undefined;
334
+ }, client: import("@doist/todoist-api-typescript").TodoistApi): Promise<import("@doist/todoist-api-typescript").Task | undefined>;
324
335
  };
325
336
  tasksOrganizeMultiple: {
326
337
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE3C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAExD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAEzD,QAAA,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAeV,CAAA;AAED,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAA;AAE9B,OAAO,EACH,YAAY,EACZ,cAAc,EACd,SAAS,EACT,cAAc,EACd,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACrB,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,QAAQ,GACX,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAE3D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAA;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAA;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAA;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAE5D,QAAA,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAeV,CAAA;AAED,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAA;AAE9B,OAAO,EACH,YAAY,EACZ,cAAc,EACd,SAAS,EACT,cAAc,EACd,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACrB,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,QAAQ,GACX,CAAA"}
package/dist/index.js CHANGED
@@ -1,50 +1,33 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.overview = exports.tasksOrganizeMultiple = exports.tasksUpdateOne = exports.tasksAddMultiple = exports.tasksSearch = exports.tasksCompleteMultiple = exports.tasksListCompleted = exports.tasksListForContainer = exports.tasksListByDate = exports.sectionsManage = exports.sectionsSearch = exports.deleteOne = exports.projectsManage = exports.projectsList = exports.getMcpServer = exports.tools = void 0;
4
- const mcp_server_1 = require("./mcp-server");
5
- Object.defineProperty(exports, "getMcpServer", { enumerable: true, get: function () { return mcp_server_1.getMcpServer; } });
6
- const delete_one_1 = require("./tools/delete-one");
7
- Object.defineProperty(exports, "deleteOne", { enumerable: true, get: function () { return delete_one_1.deleteOne; } });
8
- const projects_list_1 = require("./tools/projects-list");
9
- Object.defineProperty(exports, "projectsList", { enumerable: true, get: function () { return projects_list_1.projectsList; } });
10
- const projects_manage_1 = require("./tools/projects-manage");
11
- Object.defineProperty(exports, "projectsManage", { enumerable: true, get: function () { return projects_manage_1.projectsManage; } });
12
- const sections_manage_1 = require("./tools/sections-manage");
13
- Object.defineProperty(exports, "sectionsManage", { enumerable: true, get: function () { return sections_manage_1.sectionsManage; } });
14
- const sections_search_1 = require("./tools/sections-search");
15
- Object.defineProperty(exports, "sectionsSearch", { enumerable: true, get: function () { return sections_search_1.sectionsSearch; } });
16
- const overview_1 = require("./tools/overview");
17
- Object.defineProperty(exports, "overview", { enumerable: true, get: function () { return overview_1.overview; } });
18
- const tasks_add_multiple_1 = require("./tools/tasks-add-multiple");
19
- Object.defineProperty(exports, "tasksAddMultiple", { enumerable: true, get: function () { return tasks_add_multiple_1.tasksAddMultiple; } });
20
- const tasks_complete_multiple_1 = require("./tools/tasks-complete-multiple");
21
- Object.defineProperty(exports, "tasksCompleteMultiple", { enumerable: true, get: function () { return tasks_complete_multiple_1.tasksCompleteMultiple; } });
22
- const tasks_list_by_date_1 = require("./tools/tasks-list-by-date");
23
- Object.defineProperty(exports, "tasksListByDate", { enumerable: true, get: function () { return tasks_list_by_date_1.tasksListByDate; } });
24
- const tasks_list_completed_1 = require("./tools/tasks-list-completed");
25
- Object.defineProperty(exports, "tasksListCompleted", { enumerable: true, get: function () { return tasks_list_completed_1.tasksListCompleted; } });
26
- const tasks_list_for_container_1 = require("./tools/tasks-list-for-container");
27
- Object.defineProperty(exports, "tasksListForContainer", { enumerable: true, get: function () { return tasks_list_for_container_1.tasksListForContainer; } });
28
- const tasks_organize_multiple_1 = require("./tools/tasks-organize-multiple");
29
- Object.defineProperty(exports, "tasksOrganizeMultiple", { enumerable: true, get: function () { return tasks_organize_multiple_1.tasksOrganizeMultiple; } });
30
- const tasks_search_1 = require("./tools/tasks-search");
31
- Object.defineProperty(exports, "tasksSearch", { enumerable: true, get: function () { return tasks_search_1.tasksSearch; } });
32
- const tasks_update_one_1 = require("./tools/tasks-update-one");
33
- Object.defineProperty(exports, "tasksUpdateOne", { enumerable: true, get: function () { return tasks_update_one_1.tasksUpdateOne; } });
1
+ import { getMcpServer } from './mcp-server.js';
2
+ import { deleteOne } from './tools/delete-one.js';
3
+ import { projectsList } from './tools/projects-list.js';
4
+ import { projectsManage } from './tools/projects-manage.js';
5
+ import { sectionsManage } from './tools/sections-manage.js';
6
+ import { sectionsSearch } from './tools/sections-search.js';
7
+ import { overview } from './tools/overview.js';
8
+ import { tasksAddMultiple } from './tools/tasks-add-multiple.js';
9
+ import { tasksCompleteMultiple } from './tools/tasks-complete-multiple.js';
10
+ import { tasksListByDate } from './tools/tasks-list-by-date.js';
11
+ import { tasksListCompleted } from './tools/tasks-list-completed.js';
12
+ import { tasksListForContainer } from './tools/tasks-list-for-container.js';
13
+ import { tasksOrganizeMultiple } from './tools/tasks-organize-multiple.js';
14
+ import { tasksSearch } from './tools/tasks-search.js';
15
+ import { tasksUpdateOne } from './tools/tasks-update-one.js';
34
16
  const tools = {
35
- projectsList: projects_list_1.projectsList,
36
- projectsManage: projects_manage_1.projectsManage,
37
- deleteOne: delete_one_1.deleteOne,
38
- sectionsSearch: sections_search_1.sectionsSearch,
39
- sectionsManage: sections_manage_1.sectionsManage,
40
- tasksListByDate: tasks_list_by_date_1.tasksListByDate,
41
- tasksListCompleted: tasks_list_completed_1.tasksListCompleted,
42
- tasksListForContainer: tasks_list_for_container_1.tasksListForContainer,
43
- tasksCompleteMultiple: tasks_complete_multiple_1.tasksCompleteMultiple,
44
- tasksSearch: tasks_search_1.tasksSearch,
45
- tasksAddMultiple: tasks_add_multiple_1.tasksAddMultiple,
46
- tasksUpdateOne: tasks_update_one_1.tasksUpdateOne,
47
- tasksOrganizeMultiple: tasks_organize_multiple_1.tasksOrganizeMultiple,
48
- overview: overview_1.overview,
17
+ projectsList,
18
+ projectsManage,
19
+ deleteOne,
20
+ sectionsSearch,
21
+ sectionsManage,
22
+ tasksListByDate,
23
+ tasksListCompleted,
24
+ tasksListForContainer,
25
+ tasksCompleteMultiple,
26
+ tasksSearch,
27
+ tasksAddMultiple,
28
+ tasksUpdateOne,
29
+ tasksOrganizeMultiple,
30
+ overview,
49
31
  };
50
- exports.tools = tools;
32
+ export { tools, getMcpServer };
33
+ export { projectsList, projectsManage, deleteOne, sectionsSearch, sectionsManage, tasksListByDate, tasksListForContainer, tasksListCompleted, tasksCompleteMultiple, tasksSearch, tasksAddMultiple, tasksUpdateOne, tasksOrganizeMultiple, overview, };
package/dist/main.js CHANGED
@@ -1,18 +1,13 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const stdio_1 = require("@modelcontextprotocol/sdk/server/stdio");
7
- const dotenv_1 = __importDefault(require("dotenv"));
8
- const mcp_server_1 = require("./mcp-server");
1
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
2
+ import dotenv from 'dotenv';
3
+ import { getMcpServer } from './mcp-server.js';
9
4
  function main() {
10
5
  const todoistApiKey = process.env.TODOIST_API_KEY;
11
6
  if (!todoistApiKey) {
12
7
  throw new Error('TODOIST_API_KEY is not set');
13
8
  }
14
- const server = (0, mcp_server_1.getMcpServer)({ todoistApiKey });
15
- const transport = new stdio_1.StdioServerTransport();
9
+ const server = getMcpServer({ todoistApiKey });
10
+ const transport = new StdioServerTransport();
16
11
  server
17
12
  .connect(transport)
18
13
  .then(() => {
@@ -24,5 +19,5 @@ function main() {
24
19
  process.exit(1);
25
20
  });
26
21
  }
27
- dotenv_1.default.config();
22
+ dotenv.config();
28
23
  main();
@@ -1,7 +1,7 @@
1
1
  import type { TodoistApi } from '@doist/todoist-api-typescript';
2
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp';
2
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
3
  import type { z } from 'zod';
4
- import type { TodoistTool } from './todoist-tool';
4
+ import type { TodoistTool } from './todoist-tool.js';
5
5
  declare function errorContent(error: string): {
6
6
  isError: boolean;
7
7
  content: {
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-helpers.d.ts","sourceRoot":"","sources":["../src/mcp-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAgB,MAAM,sCAAsC,CAAA;AACnF,OAAO,KAAK,EAAc,CAAC,EAAE,MAAM,KAAK,CAAA;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAwBjD,iBAAS,YAAY,CAAC,KAAK,EAAE,MAAM;;;;;;EAKlC;AAED;;;;;GAKG;AACH,iBAAS,YAAY,CAAC,MAAM,SAAS,CAAC,CAAC,WAAW,EAC9C,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,EACzB,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,UAAU,QAqBrB;AAED,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,CAAA"}
1
+ {"version":3,"file":"mcp-helpers.d.ts","sourceRoot":"","sources":["../src/mcp-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAgB,MAAM,yCAAyC,CAAA;AACtF,OAAO,KAAK,EAAc,CAAC,EAAE,MAAM,KAAK,CAAA;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAwBpD,iBAAS,YAAY,CAAC,KAAK,EAAE,MAAM;;;;;;EAKlC;AAED;;;;;GAKG;AACH,iBAAS,YAAY,CAAC,MAAM,SAAS,CAAC,CAAC,WAAW,EAC9C,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,EACzB,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,UAAU,QAqBrB;AAED,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,CAAA"}
@@ -1,7 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.registerTool = registerTool;
4
- exports.errorContent = errorContent;
5
1
  function textContent(text) {
6
2
  return {
7
3
  content: [{ type: 'text', text }],
@@ -51,3 +47,4 @@ function registerTool(tool, server, client) {
51
47
  };
52
48
  server.tool(tool.name, tool.description, tool.parameters, cb);
53
49
  }
50
+ export { registerTool, errorContent };
@@ -1,4 +1,4 @@
1
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp';
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  /**
3
3
  * Create the MCP server.
4
4
  * @param todoistApiKey - The API key for the todoist account.
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAA;AAwBhE;;;;;GAKG;AACH,iBAAS,YAAY,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,aA6B5F;AAED,OAAO,EAAE,YAAY,EAAE,CAAA"}
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAwBnE;;;;;GAKG;AACH,iBAAS,YAAY,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,aA6B5F;AAED,OAAO,EAAE,YAAY,EAAE,CAAA"}
@@ -1,23 +1,20 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getMcpServer = getMcpServer;
4
- const todoist_api_typescript_1 = require("@doist/todoist-api-typescript");
5
- const mcp_1 = require("@modelcontextprotocol/sdk/server/mcp");
6
- const mcp_helpers_1 = require("./mcp-helpers");
7
- const delete_one_1 = require("./tools/delete-one");
8
- const projects_list_1 = require("./tools/projects-list");
9
- const projects_manage_1 = require("./tools/projects-manage");
10
- const sections_manage_1 = require("./tools/sections-manage");
11
- const sections_search_1 = require("./tools/sections-search");
12
- const overview_1 = require("./tools/overview");
13
- const tasks_add_multiple_1 = require("./tools/tasks-add-multiple");
14
- const tasks_complete_multiple_1 = require("./tools/tasks-complete-multiple");
15
- const tasks_list_by_date_1 = require("./tools/tasks-list-by-date");
16
- const tasks_list_completed_1 = require("./tools/tasks-list-completed");
17
- const tasks_list_for_container_1 = require("./tools/tasks-list-for-container");
18
- const tasks_organize_multiple_1 = require("./tools/tasks-organize-multiple");
19
- const tasks_search_1 = require("./tools/tasks-search");
20
- const tasks_update_one_1 = require("./tools/tasks-update-one");
1
+ import { TodoistApi } from '@doist/todoist-api-typescript';
2
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
+ import { registerTool } from './mcp-helpers.js';
4
+ import { deleteOne } from './tools/delete-one.js';
5
+ import { projectsList } from './tools/projects-list.js';
6
+ import { projectsManage } from './tools/projects-manage.js';
7
+ import { sectionsManage } from './tools/sections-manage.js';
8
+ import { sectionsSearch } from './tools/sections-search.js';
9
+ import { overview } from './tools/overview.js';
10
+ import { tasksAddMultiple } from './tools/tasks-add-multiple.js';
11
+ import { tasksCompleteMultiple } from './tools/tasks-complete-multiple.js';
12
+ import { tasksListByDate } from './tools/tasks-list-by-date.js';
13
+ import { tasksListCompleted } from './tools/tasks-list-completed.js';
14
+ import { tasksListForContainer } from './tools/tasks-list-for-container.js';
15
+ import { tasksOrganizeMultiple } from './tools/tasks-organize-multiple.js';
16
+ import { tasksSearch } from './tools/tasks-search.js';
17
+ import { tasksUpdateOne } from './tools/tasks-update-one.js';
21
18
  const instructions = `
22
19
  Tools to help you manage your todoist tasks.
23
20
  `;
@@ -28,26 +25,27 @@ Tools to help you manage your todoist tasks.
28
25
  * @returns the MCP server.
29
26
  */
30
27
  function getMcpServer({ todoistApiKey, baseUrl }) {
31
- const server = new mcp_1.McpServer({ name: 'todoist-mcp-server', version: '0.1.0' }, {
28
+ const server = new McpServer({ name: 'todoist-mcp-server', version: '0.1.0' }, {
32
29
  capabilities: {
33
30
  tools: { listChanged: true },
34
31
  },
35
32
  instructions,
36
33
  });
37
- const todoist = new todoist_api_typescript_1.TodoistApi(todoistApiKey, baseUrl);
38
- (0, mcp_helpers_1.registerTool)(tasks_list_completed_1.tasksListCompleted, server, todoist);
39
- (0, mcp_helpers_1.registerTool)(tasks_list_by_date_1.tasksListByDate, server, todoist);
40
- (0, mcp_helpers_1.registerTool)(tasks_search_1.tasksSearch, server, todoist);
41
- (0, mcp_helpers_1.registerTool)(projects_list_1.projectsList, server, todoist);
42
- (0, mcp_helpers_1.registerTool)(tasks_add_multiple_1.tasksAddMultiple, server, todoist);
43
- (0, mcp_helpers_1.registerTool)(tasks_update_one_1.tasksUpdateOne, server, todoist);
44
- (0, mcp_helpers_1.registerTool)(delete_one_1.deleteOne, server, todoist);
45
- (0, mcp_helpers_1.registerTool)(tasks_complete_multiple_1.tasksCompleteMultiple, server, todoist);
46
- (0, mcp_helpers_1.registerTool)(projects_manage_1.projectsManage, server, todoist);
47
- (0, mcp_helpers_1.registerTool)(sections_manage_1.sectionsManage, server, todoist);
48
- (0, mcp_helpers_1.registerTool)(tasks_organize_multiple_1.tasksOrganizeMultiple, server, todoist);
49
- (0, mcp_helpers_1.registerTool)(sections_search_1.sectionsSearch, server, todoist);
50
- (0, mcp_helpers_1.registerTool)(overview_1.overview, server, todoist);
51
- (0, mcp_helpers_1.registerTool)(tasks_list_for_container_1.tasksListForContainer, server, todoist);
34
+ const todoist = new TodoistApi(todoistApiKey, baseUrl);
35
+ registerTool(tasksListCompleted, server, todoist);
36
+ registerTool(tasksListByDate, server, todoist);
37
+ registerTool(tasksSearch, server, todoist);
38
+ registerTool(projectsList, server, todoist);
39
+ registerTool(tasksAddMultiple, server, todoist);
40
+ registerTool(tasksUpdateOne, server, todoist);
41
+ registerTool(deleteOne, server, todoist);
42
+ registerTool(tasksCompleteMultiple, server, todoist);
43
+ registerTool(projectsManage, server, todoist);
44
+ registerTool(sectionsManage, server, todoist);
45
+ registerTool(tasksOrganizeMultiple, server, todoist);
46
+ registerTool(sectionsSearch, server, todoist);
47
+ registerTool(overview, server, todoist);
48
+ registerTool(tasksListForContainer, server, todoist);
52
49
  return server;
53
50
  }
51
+ export { getMcpServer };
@@ -1,2 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
@@ -1,7 +1,17 @@
1
- import { type PersonalProject, type Task, type TodoistApi, type WorkspaceProject } from '@doist/todoist-api-typescript';
1
+ import { type MoveTaskArgs, type PersonalProject, type Task, type TodoistApi, type WorkspaceProject } from '@doist/todoist-api-typescript';
2
2
  export type Project = PersonalProject | WorkspaceProject;
3
3
  export declare function isPersonalProject(project: Project): project is PersonalProject;
4
4
  export declare function isWorkspaceProject(project: Project): project is WorkspaceProject;
5
+ /**
6
+ * Creates a MoveTaskArgs object from move parameters, validating that exactly one is provided.
7
+ * @param taskId - The task ID (used for error messages)
8
+ * @param projectId - Optional project ID to move to
9
+ * @param sectionId - Optional section ID to move to
10
+ * @param parentId - Optional parent ID to move to
11
+ * @returns MoveTaskArgs object with exactly one destination
12
+ * @throws Error if multiple move parameters are provided or none are provided
13
+ */
14
+ export declare function createMoveTaskArgs(taskId: string, projectId?: string, sectionId?: string, parentId?: string): MoveTaskArgs;
5
15
  /**
6
16
  * Map a single Todoist task to a more structured format, for LLM consumption.
7
17
  * @param task - The task to map.
@@ -18,6 +28,7 @@ declare function mapTask(task: Task): {
18
28
  sectionId: string | null;
19
29
  parentId: string | null;
20
30
  labels: string[];
31
+ duration: string | null;
21
32
  };
22
33
  /**
23
34
  * Map a single Todoist project to a more structured format, for LLM consumption.
@@ -51,6 +62,7 @@ declare function getTasksByFilter({ client, query, limit, cursor, }: {
51
62
  sectionId: string | null;
52
63
  parentId: string | null;
53
64
  labels: string[];
65
+ duration: string | null;
54
66
  }[];
55
67
  nextCursor: string | null;
56
68
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"tool-helpers.d.ts","sourceRoot":"","sources":["../src/tool-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,eAAe,EACpB,KAAK,IAAI,EACT,KAAK,UAAU,EACf,KAAK,gBAAgB,EAExB,MAAM,+BAA+B,CAAA;AAGtC,MAAM,MAAM,OAAO,GAAG,eAAe,GAAG,gBAAgB,CAAA;AAExD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,eAAe,CAE9E;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,gBAAgB,CAEhF;AAED;;;;GAIG;AACH,iBAAS,OAAO,CAAC,IAAI,EAAE,IAAI;;;;;;;;;;;EAa1B;AAED;;;;GAIG;AACH,iBAAS,UAAU,CAAC,OAAO,EAAE,OAAO;;;;;;;;;EAWnC;AAWD,iBAAe,gBAAgB,CAAC,EAC5B,MAAM,EACN,KAAK,EACL,KAAK,EACL,MAAM,GACT,EAAE;IACC,MAAM,EAAE,UAAU,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IACzB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;CAC7B;;;;;;;;;;;;;;GAyBA;AAED,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,UAAU,EAAE,CAAA"}
1
+ {"version":3,"file":"tool-helpers.d.ts","sourceRoot":"","sources":["../src/tool-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,IAAI,EACT,KAAK,UAAU,EACf,KAAK,gBAAgB,EAExB,MAAM,+BAA+B,CAAA;AAItC,MAAM,MAAM,OAAO,GAAG,eAAe,GAAG,gBAAgB,CAAA;AAExD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,eAAe,CAE9E;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,gBAAgB,CAEhF;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAC9B,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,GAClB,YAAY,CAsBd;AAED;;;;GAIG;AACH,iBAAS,OAAO,CAAC,IAAI,EAAE,IAAI;;;;;;;;;;;;EAc1B;AAED;;;;GAIG;AACH,iBAAS,UAAU,CAAC,OAAO,EAAE,OAAO;;;;;;;;;EAWnC;AAWD,iBAAe,gBAAgB,CAAC,EAC5B,MAAM,EACN,KAAK,EACL,KAAK,EACL,MAAM,GACT,EAAE;IACC,MAAM,EAAE,UAAU,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IACzB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;CAC7B;;;;;;;;;;;;;;;GAyBA;AAED,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,UAAU,EAAE,CAAA"}
@@ -1,21 +1,40 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.isPersonalProject = isPersonalProject;
7
- exports.isWorkspaceProject = isWorkspaceProject;
8
- exports.getTasksByFilter = getTasksByFilter;
9
- exports.mapTask = mapTask;
10
- exports.mapProject = mapProject;
11
- const todoist_api_typescript_1 = require("@doist/todoist-api-typescript");
12
- const zod_1 = __importDefault(require("zod"));
13
- function isPersonalProject(project) {
1
+ import { getSanitizedContent, } from '@doist/todoist-api-typescript';
2
+ import z from 'zod';
3
+ import { formatDuration } from './utils/duration-parser.js';
4
+ export function isPersonalProject(project) {
14
5
  return 'inboxProject' in project;
15
6
  }
16
- function isWorkspaceProject(project) {
7
+ export function isWorkspaceProject(project) {
17
8
  return 'accessLevel' in project;
18
9
  }
10
+ /**
11
+ * Creates a MoveTaskArgs object from move parameters, validating that exactly one is provided.
12
+ * @param taskId - The task ID (used for error messages)
13
+ * @param projectId - Optional project ID to move to
14
+ * @param sectionId - Optional section ID to move to
15
+ * @param parentId - Optional parent ID to move to
16
+ * @returns MoveTaskArgs object with exactly one destination
17
+ * @throws Error if multiple move parameters are provided or none are provided
18
+ */
19
+ export function createMoveTaskArgs(taskId, projectId, sectionId, parentId) {
20
+ // Validate that only one move parameter is provided (RequireExactlyOne constraint)
21
+ const moveParams = [projectId, sectionId, parentId].filter(Boolean);
22
+ if (moveParams.length > 1) {
23
+ throw new Error(`Task ${taskId}: Only one of projectId, sectionId, or parentId can be specified at a time. The Todoist API requires exactly one destination for move operations.`);
24
+ }
25
+ if (moveParams.length === 0) {
26
+ throw new Error(`Task ${taskId}: At least one of projectId, sectionId, or parentId must be provided for move operations.`);
27
+ }
28
+ // Build moveArgs with the single defined value
29
+ if (projectId)
30
+ return { projectId };
31
+ if (sectionId)
32
+ return { sectionId };
33
+ if (parentId)
34
+ return { parentId };
35
+ // This should never be reached due to the validation above
36
+ throw new Error('Unexpected error: No valid move parameter found');
37
+ }
19
38
  /**
20
39
  * Map a single Todoist task to a more structured format, for LLM consumption.
21
40
  * @param task - The task to map.
@@ -24,8 +43,8 @@ function isWorkspaceProject(project) {
24
43
  function mapTask(task) {
25
44
  return {
26
45
  id: task.id,
27
- content: (0, todoist_api_typescript_1.getSanitizedContent)(task.content),
28
- description: (0, todoist_api_typescript_1.getSanitizedContent)(task.description),
46
+ content: getSanitizedContent(task.content),
47
+ description: getSanitizedContent(task.description),
29
48
  dueDate: task.due?.date,
30
49
  recurring: task.due?.isRecurring && task.due.string ? task.due.string : false,
31
50
  priority: task.priority,
@@ -33,6 +52,7 @@ function mapTask(task) {
33
52
  sectionId: task.sectionId,
34
53
  parentId: task.parentId,
35
54
  labels: task.labels,
55
+ duration: task.duration ? formatDuration(task.duration.amount) : null,
36
56
  };
37
57
  }
38
58
  /**
@@ -52,12 +72,12 @@ function mapProject(project) {
52
72
  viewStyle: project.viewStyle,
53
73
  };
54
74
  }
55
- const ErrorSchema = zod_1.default.object({
56
- httpStatusCode: zod_1.default.number(),
57
- responseData: zod_1.default.object({
58
- error: zod_1.default.string(),
59
- errorCode: zod_1.default.number(),
60
- errorTag: zod_1.default.string(),
75
+ const ErrorSchema = z.object({
76
+ httpStatusCode: z.number(),
77
+ responseData: z.object({
78
+ error: z.string(),
79
+ errorCode: z.number(),
80
+ errorTag: z.string(),
61
81
  }),
62
82
  });
63
83
  async function getTasksByFilter({ client, query, limit, cursor, }) {
@@ -84,3 +104,4 @@ async function getTasksByFilter({ client, query, limit, cursor, }) {
84
104
  throw new Error(`${responseData.error} (tag: ${responseData.errorTag}, code: ${responseData.errorCode})`);
85
105
  }
86
106
  }
107
+ export { getTasksByFilter, mapTask, mapProject };