@doist/todoist-ai 4.15.1 → 4.16.1

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