@doist/todoist-ai 4.16.0 → 4.17.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 (178) hide show
  1. package/dist/filter-helpers.d.ts +1 -1
  2. package/dist/index.d.ts +1044 -196
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +61 -81
  5. package/dist/main.js +15 -23
  6. package/dist/mcp-helpers.d.ts +5 -5
  7. package/dist/mcp-helpers.d.ts.map +1 -1
  8. package/dist/mcp-server-BADReNAy.js +3092 -0
  9. package/dist/todoist-tool.d.ts +9 -3
  10. package/dist/todoist-tool.d.ts.map +1 -1
  11. package/dist/tool-helpers.d.ts +1 -1
  12. package/dist/tools/add-comments.d.ts +69 -3
  13. package/dist/tools/add-comments.d.ts.map +1 -1
  14. package/dist/tools/add-projects.d.ts +34 -3
  15. package/dist/tools/add-projects.d.ts.map +1 -1
  16. package/dist/tools/add-sections.d.ts +14 -1
  17. package/dist/tools/add-sections.d.ts.map +1 -1
  18. package/dist/tools/add-tasks.d.ts +65 -10
  19. package/dist/tools/add-tasks.d.ts.map +1 -1
  20. package/dist/tools/complete-tasks.d.ts +20 -1
  21. package/dist/tools/complete-tasks.d.ts.map +1 -1
  22. package/dist/tools/delete-object.d.ts +16 -3
  23. package/dist/tools/delete-object.d.ts.map +1 -1
  24. package/dist/tools/fetch.d.ts +8 -1
  25. package/dist/tools/fetch.d.ts.map +1 -1
  26. package/dist/tools/find-activity.d.ts +44 -7
  27. package/dist/tools/find-activity.d.ts.map +1 -1
  28. package/dist/tools/find-comments.d.ts +69 -3
  29. package/dist/tools/find-comments.d.ts.map +1 -1
  30. package/dist/tools/find-completed-tasks.d.ts +63 -5
  31. package/dist/tools/find-completed-tasks.d.ts.map +1 -1
  32. package/dist/tools/find-project-collaborators.d.ts +33 -2
  33. package/dist/tools/find-project-collaborators.d.ts.map +1 -1
  34. package/dist/tools/find-projects.d.ts +35 -1
  35. package/dist/tools/find-projects.d.ts.map +1 -1
  36. package/dist/tools/find-sections.d.ts +15 -1
  37. package/dist/tools/find-sections.d.ts.map +1 -1
  38. package/dist/tools/find-tasks-by-date.d.ts +61 -3
  39. package/dist/tools/find-tasks-by-date.d.ts.map +1 -1
  40. package/dist/tools/find-tasks.d.ts +63 -5
  41. package/dist/tools/find-tasks.d.ts.map +1 -1
  42. package/dist/tools/get-overview.d.ts +24 -1
  43. package/dist/tools/get-overview.d.ts.map +1 -1
  44. package/dist/tools/manage-assignments.d.ts +39 -2
  45. package/dist/tools/manage-assignments.d.ts.map +1 -1
  46. package/dist/tools/search.d.ts +17 -1
  47. package/dist/tools/search.d.ts.map +1 -1
  48. package/dist/tools/update-comments.d.ts +76 -3
  49. package/dist/tools/update-comments.d.ts.map +1 -1
  50. package/dist/tools/update-projects.d.ts +43 -1
  51. package/dist/tools/update-projects.d.ts.map +1 -1
  52. package/dist/tools/update-sections.d.ts +17 -3
  53. package/dist/tools/update-sections.d.ts.map +1 -1
  54. package/dist/tools/update-tasks.d.ts +79 -13
  55. package/dist/tools/update-tasks.d.ts.map +1 -1
  56. package/dist/tools/user-info.d.ts +19 -1
  57. package/dist/tools/user-info.d.ts.map +1 -1
  58. package/dist/utils/assignment-validator.d.ts +2 -2
  59. package/dist/utils/output-schemas.d.ts +233 -0
  60. package/dist/utils/output-schemas.d.ts.map +1 -0
  61. package/dist/utils/response-builders.d.ts +1 -3
  62. package/dist/utils/response-builders.d.ts.map +1 -1
  63. package/dist/utils/test-helpers.d.ts +1 -1
  64. package/dist/utils/user-resolver.d.ts +1 -1
  65. package/package.json +10 -8
  66. package/dist/filter-helpers.js +0 -79
  67. package/dist/mcp-helpers.js +0 -71
  68. package/dist/mcp-server.js +0 -142
  69. package/dist/todoist-tool.js +0 -1
  70. package/dist/tool-helpers.js +0 -125
  71. package/dist/tool-helpers.test.d.ts +0 -2
  72. package/dist/tool-helpers.test.d.ts.map +0 -1
  73. package/dist/tool-helpers.test.js +0 -223
  74. package/dist/tools/__tests__/add-comments.test.d.ts +0 -2
  75. package/dist/tools/__tests__/add-comments.test.d.ts.map +0 -1
  76. package/dist/tools/__tests__/add-comments.test.js +0 -241
  77. package/dist/tools/__tests__/add-projects.test.d.ts +0 -2
  78. package/dist/tools/__tests__/add-projects.test.d.ts.map +0 -1
  79. package/dist/tools/__tests__/add-projects.test.js +0 -174
  80. package/dist/tools/__tests__/add-sections.test.d.ts +0 -2
  81. package/dist/tools/__tests__/add-sections.test.d.ts.map +0 -1
  82. package/dist/tools/__tests__/add-sections.test.js +0 -185
  83. package/dist/tools/__tests__/add-tasks.test.d.ts +0 -2
  84. package/dist/tools/__tests__/add-tasks.test.d.ts.map +0 -1
  85. package/dist/tools/__tests__/add-tasks.test.js +0 -606
  86. package/dist/tools/__tests__/assignment-integration.test.d.ts +0 -2
  87. package/dist/tools/__tests__/assignment-integration.test.d.ts.map +0 -1
  88. package/dist/tools/__tests__/assignment-integration.test.js +0 -428
  89. package/dist/tools/__tests__/complete-tasks.test.d.ts +0 -2
  90. package/dist/tools/__tests__/complete-tasks.test.d.ts.map +0 -1
  91. package/dist/tools/__tests__/complete-tasks.test.js +0 -206
  92. package/dist/tools/__tests__/delete-object.test.d.ts +0 -2
  93. package/dist/tools/__tests__/delete-object.test.d.ts.map +0 -1
  94. package/dist/tools/__tests__/delete-object.test.js +0 -110
  95. package/dist/tools/__tests__/fetch.test.d.ts +0 -2
  96. package/dist/tools/__tests__/fetch.test.d.ts.map +0 -1
  97. package/dist/tools/__tests__/fetch.test.js +0 -279
  98. package/dist/tools/__tests__/find-activity.test.d.ts +0 -2
  99. package/dist/tools/__tests__/find-activity.test.d.ts.map +0 -1
  100. package/dist/tools/__tests__/find-activity.test.js +0 -229
  101. package/dist/tools/__tests__/find-comments.test.d.ts +0 -2
  102. package/dist/tools/__tests__/find-comments.test.d.ts.map +0 -1
  103. package/dist/tools/__tests__/find-comments.test.js +0 -236
  104. package/dist/tools/__tests__/find-completed-tasks.test.d.ts +0 -2
  105. package/dist/tools/__tests__/find-completed-tasks.test.d.ts.map +0 -1
  106. package/dist/tools/__tests__/find-completed-tasks.test.js +0 -423
  107. package/dist/tools/__tests__/find-projects.test.d.ts +0 -2
  108. package/dist/tools/__tests__/find-projects.test.d.ts.map +0 -1
  109. package/dist/tools/__tests__/find-projects.test.js +0 -154
  110. package/dist/tools/__tests__/find-sections.test.d.ts +0 -2
  111. package/dist/tools/__tests__/find-sections.test.d.ts.map +0 -1
  112. package/dist/tools/__tests__/find-sections.test.js +0 -313
  113. package/dist/tools/__tests__/find-tasks-by-date.test.d.ts +0 -2
  114. package/dist/tools/__tests__/find-tasks-by-date.test.d.ts.map +0 -1
  115. package/dist/tools/__tests__/find-tasks-by-date.test.js +0 -528
  116. package/dist/tools/__tests__/find-tasks.test.d.ts +0 -2
  117. package/dist/tools/__tests__/find-tasks.test.d.ts.map +0 -1
  118. package/dist/tools/__tests__/find-tasks.test.js +0 -771
  119. package/dist/tools/__tests__/get-overview.test.d.ts +0 -2
  120. package/dist/tools/__tests__/get-overview.test.d.ts.map +0 -1
  121. package/dist/tools/__tests__/get-overview.test.js +0 -225
  122. package/dist/tools/__tests__/search.test.d.ts +0 -2
  123. package/dist/tools/__tests__/search.test.d.ts.map +0 -1
  124. package/dist/tools/__tests__/search.test.js +0 -206
  125. package/dist/tools/__tests__/update-comments.test.d.ts +0 -2
  126. package/dist/tools/__tests__/update-comments.test.d.ts.map +0 -1
  127. package/dist/tools/__tests__/update-comments.test.js +0 -294
  128. package/dist/tools/__tests__/update-projects.test.d.ts +0 -2
  129. package/dist/tools/__tests__/update-projects.test.d.ts.map +0 -1
  130. package/dist/tools/__tests__/update-projects.test.js +0 -217
  131. package/dist/tools/__tests__/update-sections.test.d.ts +0 -2
  132. package/dist/tools/__tests__/update-sections.test.d.ts.map +0 -1
  133. package/dist/tools/__tests__/update-sections.test.js +0 -169
  134. package/dist/tools/__tests__/update-tasks.test.d.ts +0 -2
  135. package/dist/tools/__tests__/update-tasks.test.d.ts.map +0 -1
  136. package/dist/tools/__tests__/update-tasks.test.js +0 -788
  137. package/dist/tools/__tests__/user-info.test.d.ts +0 -2
  138. package/dist/tools/__tests__/user-info.test.d.ts.map +0 -1
  139. package/dist/tools/__tests__/user-info.test.js +0 -139
  140. package/dist/tools/add-comments.js +0 -89
  141. package/dist/tools/add-projects.js +0 -63
  142. package/dist/tools/add-sections.js +0 -74
  143. package/dist/tools/add-tasks.js +0 -169
  144. package/dist/tools/complete-tasks.js +0 -68
  145. package/dist/tools/delete-object.js +0 -79
  146. package/dist/tools/fetch.js +0 -102
  147. package/dist/tools/find-activity.js +0 -221
  148. package/dist/tools/find-comments.js +0 -148
  149. package/dist/tools/find-completed-tasks.js +0 -168
  150. package/dist/tools/find-project-collaborators.js +0 -151
  151. package/dist/tools/find-projects.js +0 -101
  152. package/dist/tools/find-sections.js +0 -101
  153. package/dist/tools/find-tasks-by-date.js +0 -198
  154. package/dist/tools/find-tasks.js +0 -329
  155. package/dist/tools/get-overview.js +0 -249
  156. package/dist/tools/manage-assignments.js +0 -337
  157. package/dist/tools/search.js +0 -65
  158. package/dist/tools/update-comments.js +0 -82
  159. package/dist/tools/update-projects.js +0 -84
  160. package/dist/tools/update-sections.js +0 -70
  161. package/dist/tools/update-tasks.js +0 -179
  162. package/dist/tools/user-info.js +0 -142
  163. package/dist/utils/assignment-validator.js +0 -253
  164. package/dist/utils/constants.js +0 -45
  165. package/dist/utils/duration-parser.js +0 -96
  166. package/dist/utils/duration-parser.test.d.ts +0 -2
  167. package/dist/utils/duration-parser.test.d.ts.map +0 -1
  168. package/dist/utils/duration-parser.test.js +0 -147
  169. package/dist/utils/labels.js +0 -18
  170. package/dist/utils/priorities.js +0 -20
  171. package/dist/utils/response-builders.js +0 -210
  172. package/dist/utils/sanitize-data.js +0 -37
  173. package/dist/utils/sanitize-data.test.d.ts +0 -2
  174. package/dist/utils/sanitize-data.test.d.ts.map +0 -1
  175. package/dist/utils/sanitize-data.test.js +0 -93
  176. package/dist/utils/test-helpers.js +0 -237
  177. package/dist/utils/tool-names.js +0 -40
  178. package/dist/utils/user-resolver.js +0 -179
@@ -1,185 +0,0 @@
1
- import { jest } from '@jest/globals';
2
- import { createMockSection, extractStructuredContent, extractTextContent, TEST_IDS, } from '../../utils/test-helpers.js';
3
- import { ToolNames } from '../../utils/tool-names.js';
4
- import { addSections } from '../add-sections.js';
5
- // Mock the Todoist API
6
- const mockTodoistApi = {
7
- addSection: jest.fn(),
8
- };
9
- const { ADD_TASKS, ADD_SECTIONS, FIND_TASKS } = ToolNames;
10
- describe(`${ADD_SECTIONS} tool`, () => {
11
- beforeEach(() => {
12
- jest.clearAllMocks();
13
- });
14
- describe('creating a single section', () => {
15
- it('should create a section and return mapped result', async () => {
16
- const mockApiResponse = createMockSection({
17
- id: TEST_IDS.SECTION_1,
18
- projectId: TEST_IDS.PROJECT_TEST,
19
- name: 'test-abc123def456-section',
20
- });
21
- mockTodoistApi.addSection.mockResolvedValue(mockApiResponse);
22
- const result = await addSections.execute({
23
- sections: [
24
- { name: 'test-abc123def456-section', projectId: TEST_IDS.PROJECT_TEST },
25
- ],
26
- }, mockTodoistApi);
27
- // Verify API was called correctly
28
- expect(mockTodoistApi.addSection).toHaveBeenCalledWith({
29
- name: 'test-abc123def456-section',
30
- projectId: TEST_IDS.PROJECT_TEST,
31
- });
32
- const textContent = extractTextContent(result);
33
- expect(textContent).toMatchSnapshot();
34
- expect(textContent).toContain('Added 1 section:');
35
- expect(textContent).toContain('test-abc123def456-section');
36
- expect(textContent).toContain(`id=${TEST_IDS.SECTION_1}`);
37
- expect(textContent).toContain(`Use ${ADD_TASKS} with sectionId`);
38
- // Verify structured content
39
- const structuredContent = extractStructuredContent(result);
40
- expect(structuredContent).toEqual(expect.objectContaining({
41
- sections: [
42
- expect.objectContaining({
43
- id: TEST_IDS.SECTION_1,
44
- name: 'test-abc123def456-section',
45
- }),
46
- ],
47
- totalCount: 1,
48
- }));
49
- });
50
- it('should handle different section properties from API', async () => {
51
- const mockApiResponse = createMockSection({
52
- id: TEST_IDS.SECTION_2,
53
- projectId: 'project-789',
54
- sectionOrder: 2,
55
- name: 'My Section Name',
56
- });
57
- mockTodoistApi.addSection.mockResolvedValue(mockApiResponse);
58
- const result = await addSections.execute({ sections: [{ name: 'My Section Name', projectId: 'project-789' }] }, mockTodoistApi);
59
- expect(mockTodoistApi.addSection).toHaveBeenCalledWith({
60
- name: 'My Section Name',
61
- projectId: 'project-789',
62
- });
63
- const textContent = extractTextContent(result);
64
- expect(textContent).toMatchSnapshot();
65
- expect(textContent).toContain('Added 1 section:');
66
- expect(textContent).toContain('My Section Name');
67
- expect(textContent).toContain(`id=${TEST_IDS.SECTION_2}`);
68
- expect(textContent).toContain(`Use ${FIND_TASKS} with sectionId`);
69
- });
70
- });
71
- describe('creating multiple sections', () => {
72
- it('should create multiple sections and return mapped results', async () => {
73
- const mockSections = [
74
- createMockSection({
75
- id: 'section-1',
76
- projectId: TEST_IDS.PROJECT_TEST,
77
- name: 'First Section',
78
- }),
79
- createMockSection({
80
- id: 'section-2',
81
- projectId: TEST_IDS.PROJECT_TEST,
82
- name: 'Second Section',
83
- }),
84
- createMockSection({
85
- id: 'section-3',
86
- projectId: 'different-project',
87
- name: 'Third Section',
88
- }),
89
- ];
90
- const [section1, section2, section3] = mockSections;
91
- mockTodoistApi.addSection
92
- .mockResolvedValueOnce(section1)
93
- .mockResolvedValueOnce(section2)
94
- .mockResolvedValueOnce(section3);
95
- const result = await addSections.execute({
96
- sections: [
97
- { name: 'First Section', projectId: TEST_IDS.PROJECT_TEST },
98
- { name: 'Second Section', projectId: TEST_IDS.PROJECT_TEST },
99
- { name: 'Third Section', projectId: 'different-project' },
100
- ],
101
- }, mockTodoistApi);
102
- // Verify API was called correctly for each section
103
- expect(mockTodoistApi.addSection).toHaveBeenCalledTimes(3);
104
- expect(mockTodoistApi.addSection).toHaveBeenNthCalledWith(1, {
105
- name: 'First Section',
106
- projectId: TEST_IDS.PROJECT_TEST,
107
- });
108
- expect(mockTodoistApi.addSection).toHaveBeenNthCalledWith(2, {
109
- name: 'Second Section',
110
- projectId: TEST_IDS.PROJECT_TEST,
111
- });
112
- expect(mockTodoistApi.addSection).toHaveBeenNthCalledWith(3, {
113
- name: 'Third Section',
114
- projectId: 'different-project',
115
- });
116
- const textContent = extractTextContent(result);
117
- expect(textContent).toMatchSnapshot();
118
- expect(textContent).toContain('Added 3 sections:');
119
- expect(textContent).toContain('First Section (id=section-1, projectId=');
120
- expect(textContent).toContain('Second Section (id=section-2, projectId=');
121
- expect(textContent).toContain('Third Section (id=section-3, projectId=different-project)');
122
- // Verify structured content
123
- const structuredContent = extractStructuredContent(result);
124
- expect(structuredContent).toEqual(expect.objectContaining({
125
- sections: expect.arrayContaining([
126
- expect.objectContaining({ id: 'section-1', name: 'First Section' }),
127
- expect.objectContaining({ id: 'section-2', name: 'Second Section' }),
128
- expect.objectContaining({ id: 'section-3', name: 'Third Section' }),
129
- ]),
130
- totalCount: 3,
131
- }));
132
- });
133
- it('should handle sections for the same project', async () => {
134
- const mockSections = [
135
- createMockSection({
136
- id: 'section-1',
137
- projectId: TEST_IDS.PROJECT_TEST,
138
- name: 'To Do',
139
- }),
140
- createMockSection({
141
- id: 'section-2',
142
- projectId: TEST_IDS.PROJECT_TEST,
143
- name: 'In Progress',
144
- }),
145
- ];
146
- const [section1, section2] = mockSections;
147
- mockTodoistApi.addSection
148
- .mockResolvedValueOnce(section1)
149
- .mockResolvedValueOnce(section2);
150
- const result = await addSections.execute({
151
- sections: [
152
- { name: 'To Do', projectId: TEST_IDS.PROJECT_TEST },
153
- { name: 'In Progress', projectId: TEST_IDS.PROJECT_TEST },
154
- ],
155
- }, mockTodoistApi);
156
- const textContent = extractTextContent(result);
157
- expect(textContent).toMatchSnapshot();
158
- expect(textContent).toContain('Added 2 sections:');
159
- expect(textContent).toContain(`Use ${ADD_TASKS} to add tasks to these new sections`);
160
- });
161
- });
162
- describe('error handling', () => {
163
- it('should propagate API errors', async () => {
164
- const apiError = new Error('API Error: Section name is required');
165
- mockTodoistApi.addSection.mockRejectedValue(apiError);
166
- await expect(addSections.execute({ sections: [{ name: '', projectId: TEST_IDS.PROJECT_TEST }] }, mockTodoistApi)).rejects.toThrow('API Error: Section name is required');
167
- });
168
- it('should handle partial failures in multiple sections', async () => {
169
- const mockSection = createMockSection({
170
- id: 'section-1',
171
- projectId: TEST_IDS.PROJECT_TEST,
172
- name: 'First Section',
173
- });
174
- mockTodoistApi.addSection
175
- .mockResolvedValueOnce(mockSection)
176
- .mockRejectedValueOnce(new Error('API Error: Invalid project ID'));
177
- await expect(addSections.execute({
178
- sections: [
179
- { name: 'First Section', projectId: TEST_IDS.PROJECT_TEST },
180
- { name: 'Second Section', projectId: 'invalid-project' },
181
- ],
182
- }, mockTodoistApi)).rejects.toThrow('API Error: Invalid project ID');
183
- });
184
- });
185
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=add-tasks.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"add-tasks.test.d.ts","sourceRoot":"","sources":["../../../src/tools/__tests__/add-tasks.test.ts"],"names":[],"mappings":""}