@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,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":""}