@doist/todoist-ai 8.4.2 → 8.6.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 (40) hide show
  1. package/dist/index.d.ts +274 -10
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +67 -58
  4. package/dist/main-http.js +1 -1
  5. package/dist/main.js +1 -1
  6. package/dist/{mcp-server-DbJt0ye-.js → mcp-server-CYpy6_9b.js} +1582 -924
  7. package/dist/mcp-server.d.ts +1 -1
  8. package/dist/mcp-server.d.ts.map +1 -1
  9. package/dist/tool-helpers.d.ts +51 -3
  10. package/dist/tool-helpers.d.ts.map +1 -1
  11. package/dist/tools/add-comments.d.ts +2 -2
  12. package/dist/tools/add-reminders.d.ts +141 -0
  13. package/dist/tools/add-reminders.d.ts.map +1 -0
  14. package/dist/tools/analyze-project-health.d.ts +45 -0
  15. package/dist/tools/analyze-project-health.d.ts.map +1 -0
  16. package/dist/tools/delete-object.d.ts +6 -2
  17. package/dist/tools/delete-object.d.ts.map +1 -1
  18. package/dist/tools/fetch-object.d.ts +2 -2
  19. package/dist/tools/find-comments.d.ts +2 -2
  20. package/dist/tools/find-reminders.d.ts +92 -0
  21. package/dist/tools/find-reminders.d.ts.map +1 -0
  22. package/dist/tools/get-project-activity-stats.d.ts +48 -0
  23. package/dist/tools/get-project-activity-stats.d.ts.map +1 -0
  24. package/dist/tools/get-project-health.d.ts +112 -0
  25. package/dist/tools/get-project-health.d.ts.map +1 -0
  26. package/dist/tools/get-workspace-insights.d.ts +65 -0
  27. package/dist/tools/get-workspace-insights.d.ts.map +1 -0
  28. package/dist/tools/update-comments.d.ts +2 -2
  29. package/dist/tools/update-reminders.d.ts +141 -0
  30. package/dist/tools/update-reminders.d.ts.map +1 -0
  31. package/dist/utils/constants.d.ts +4 -0
  32. package/dist/utils/constants.d.ts.map +1 -1
  33. package/dist/utils/output-schemas.d.ts +30 -2
  34. package/dist/utils/output-schemas.d.ts.map +1 -1
  35. package/dist/utils/reminder-schemas.d.ts +29 -0
  36. package/dist/utils/reminder-schemas.d.ts.map +1 -0
  37. package/dist/utils/tool-names.d.ts +7 -0
  38. package/dist/utils/tool-names.d.ts.map +1 -1
  39. package/package.json +13 -4
  40. package/scripts/run-tool.ts +8 -0
@@ -0,0 +1,65 @@
1
+ import { z } from 'zod';
2
+ declare const getWorkspaceInsights: {
3
+ name: "get-workspace-insights";
4
+ description: string;
5
+ parameters: {
6
+ workspaceIdOrName: z.ZodString;
7
+ projectIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
8
+ };
9
+ outputSchema: {
10
+ workspaceId: z.ZodString;
11
+ workspaceName: z.ZodString;
12
+ folderId: z.ZodNullable<z.ZodString>;
13
+ projectInsights: z.ZodArray<z.ZodObject<{
14
+ projectId: z.ZodString;
15
+ health: z.ZodNullable<z.ZodObject<{
16
+ status: z.ZodEnum<{
17
+ UNKNOWN: "UNKNOWN";
18
+ ON_TRACK: "ON_TRACK";
19
+ AT_RISK: "AT_RISK";
20
+ CRITICAL: "CRITICAL";
21
+ EXCELLENT: "EXCELLENT";
22
+ ERROR: "ERROR";
23
+ }>;
24
+ isStale: z.ZodBoolean;
25
+ updateInProgress: z.ZodBoolean;
26
+ }, z.core.$strip>>;
27
+ progress: z.ZodNullable<z.ZodObject<{
28
+ completedCount: z.ZodNumber;
29
+ activeCount: z.ZodNumber;
30
+ progressPercent: z.ZodNumber;
31
+ }, z.core.$strip>>;
32
+ }, z.core.$strip>>;
33
+ };
34
+ annotations: {
35
+ readOnlyHint: true;
36
+ destructiveHint: false;
37
+ idempotentHint: true;
38
+ };
39
+ execute(args: {
40
+ workspaceIdOrName: string;
41
+ projectIds?: string[] | undefined;
42
+ }, client: import('@doist/todoist-api-typescript').TodoistApi): Promise<{
43
+ textContent: string;
44
+ structuredContent: {
45
+ workspaceId: string;
46
+ workspaceName: string;
47
+ folderId: string | null;
48
+ projectInsights: {
49
+ projectId: string;
50
+ health: {
51
+ status: "UNKNOWN" | "ON_TRACK" | "AT_RISK" | "CRITICAL" | "EXCELLENT" | "ERROR";
52
+ isStale: boolean;
53
+ updateInProgress: boolean;
54
+ } | null;
55
+ progress: {
56
+ completedCount: number;
57
+ activeCount: number;
58
+ progressPercent: number;
59
+ } | null;
60
+ }[];
61
+ };
62
+ }>;
63
+ };
64
+ export { getWorkspaceInsights };
65
+ //# sourceMappingURL=get-workspace-insights.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-workspace-insights.d.ts","sourceRoot":"","sources":["../../src/tools/get-workspace-insights.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAkDvB,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0DqC,CAAA;AAE/D,OAAO,EAAE,oBAAoB,EAAE,CAAA"}
@@ -24,8 +24,8 @@ declare const updateComments: {
24
24
  fileUrl: z.ZodOptional<z.ZodString>;
25
25
  fileDuration: z.ZodOptional<z.ZodNumber>;
26
26
  uploadState: z.ZodOptional<z.ZodEnum<{
27
- pending: "pending";
28
27
  completed: "completed";
28
+ pending: "pending";
29
29
  }>>;
30
30
  url: z.ZodOptional<z.ZodString>;
31
31
  title: z.ZodOptional<z.ZodString>;
@@ -67,7 +67,7 @@ declare const updateComments: {
67
67
  fileType: string | undefined;
68
68
  fileUrl: string | undefined;
69
69
  fileDuration: number | undefined;
70
- uploadState: "pending" | "completed" | undefined;
70
+ uploadState: "completed" | "pending" | undefined;
71
71
  url: string | undefined;
72
72
  title: string | undefined;
73
73
  image: string | undefined;
@@ -0,0 +1,141 @@
1
+ import { z } from 'zod';
2
+ declare const updateReminders: {
3
+ name: "update-reminders";
4
+ description: string;
5
+ parameters: {
6
+ reminders: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
7
+ type: z.ZodLiteral<"relative">;
8
+ id: z.ZodString;
9
+ minuteOffset: z.ZodOptional<z.ZodNumber>;
10
+ service: z.ZodOptional<z.ZodEnum<{
11
+ email: "email";
12
+ push: "push";
13
+ }>>;
14
+ }, z.core.$strip>, z.ZodObject<{
15
+ type: z.ZodLiteral<"absolute">;
16
+ id: z.ZodString;
17
+ due: z.ZodOptional<z.ZodObject<{
18
+ date: z.ZodOptional<z.ZodString>;
19
+ string: z.ZodOptional<z.ZodString>;
20
+ timezone: z.ZodOptional<z.ZodString>;
21
+ lang: z.ZodOptional<z.ZodString>;
22
+ }, z.core.$strip>>;
23
+ service: z.ZodOptional<z.ZodEnum<{
24
+ email: "email";
25
+ push: "push";
26
+ }>>;
27
+ }, z.core.$strip>, z.ZodObject<{
28
+ type: z.ZodLiteral<"location">;
29
+ id: z.ZodString;
30
+ name: z.ZodOptional<z.ZodString>;
31
+ locLat: z.ZodOptional<z.ZodString>;
32
+ locLong: z.ZodOptional<z.ZodString>;
33
+ locTrigger: z.ZodOptional<z.ZodEnum<{
34
+ on_enter: "on_enter";
35
+ on_leave: "on_leave";
36
+ }>>;
37
+ radius: z.ZodOptional<z.ZodNumber>;
38
+ }, z.core.$strip>], "type">>;
39
+ };
40
+ outputSchema: {
41
+ reminders: z.ZodArray<z.ZodObject<{
42
+ id: z.ZodString;
43
+ taskId: z.ZodString;
44
+ type: z.ZodEnum<{
45
+ location: "location";
46
+ absolute: "absolute";
47
+ relative: "relative";
48
+ }>;
49
+ minuteOffset: z.ZodOptional<z.ZodNumber>;
50
+ due: z.ZodOptional<z.ZodObject<{
51
+ isRecurring: z.ZodBoolean;
52
+ string: z.ZodString;
53
+ date: z.ZodString;
54
+ datetime: z.ZodOptional<z.ZodString>;
55
+ timezone: z.ZodOptional<z.ZodString>;
56
+ }, z.core.$strip>>;
57
+ name: z.ZodOptional<z.ZodString>;
58
+ locLat: z.ZodOptional<z.ZodString>;
59
+ locLong: z.ZodOptional<z.ZodString>;
60
+ locTrigger: z.ZodOptional<z.ZodEnum<{
61
+ on_enter: "on_enter";
62
+ on_leave: "on_leave";
63
+ }>>;
64
+ radius: z.ZodOptional<z.ZodNumber>;
65
+ }, z.core.$strip>>;
66
+ totalCount: z.ZodNumber;
67
+ updatedReminderIds: z.ZodArray<z.ZodString>;
68
+ };
69
+ annotations: {
70
+ readOnlyHint: false;
71
+ destructiveHint: true;
72
+ idempotentHint: true;
73
+ };
74
+ execute(args: {
75
+ reminders: ({
76
+ type: "relative";
77
+ id: string;
78
+ minuteOffset?: number | undefined;
79
+ service?: "email" | "push" | undefined;
80
+ } | {
81
+ type: "absolute";
82
+ id: string;
83
+ due?: {
84
+ date?: string | undefined;
85
+ string?: string | undefined;
86
+ timezone?: string | undefined;
87
+ lang?: string | undefined;
88
+ } | undefined;
89
+ service?: "email" | "push" | undefined;
90
+ } | {
91
+ type: "location";
92
+ id: string;
93
+ name?: string | undefined;
94
+ locLat?: string | undefined;
95
+ locLong?: string | undefined;
96
+ locTrigger?: "on_enter" | "on_leave" | undefined;
97
+ radius?: number | undefined;
98
+ })[];
99
+ }, client: import('@doist/todoist-api-typescript').TodoistApi): Promise<{
100
+ textContent: string;
101
+ structuredContent: {
102
+ reminders: ({
103
+ minuteOffset: number;
104
+ due: {
105
+ isRecurring: boolean;
106
+ string: string;
107
+ date: string;
108
+ datetime: string | undefined;
109
+ timezone: string | undefined;
110
+ } | undefined;
111
+ id: string;
112
+ taskId: string;
113
+ type: "location" | "absolute" | "relative";
114
+ } | {
115
+ due: {
116
+ isRecurring: boolean;
117
+ string: string;
118
+ date: string;
119
+ datetime: string | undefined;
120
+ timezone: string | undefined;
121
+ };
122
+ id: string;
123
+ taskId: string;
124
+ type: "location" | "absolute" | "relative";
125
+ } | {
126
+ name: string;
127
+ locLat: string;
128
+ locLong: string;
129
+ locTrigger: "on_enter" | "on_leave";
130
+ radius: number;
131
+ id: string;
132
+ taskId: string;
133
+ type: "location" | "absolute" | "relative";
134
+ })[];
135
+ totalCount: number;
136
+ updatedReminderIds: string[];
137
+ };
138
+ }>;
139
+ };
140
+ export { updateReminders };
141
+ //# sourceMappingURL=update-reminders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-reminders.d.ts","sourceRoot":"","sources":["../../src/tools/update-reminders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAiEvB,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgD0C,CAAA;AAE/D,OAAO,EAAE,eAAe,EAAE,CAAA"}
@@ -33,6 +33,10 @@ export declare const ApiLimits: {
33
33
  readonly LABELS_DEFAULT: 50;
34
34
  /** Maximum limit for label listings */
35
35
  readonly LABELS_MAX: 200;
36
+ /** Default limit for reminder listings */
37
+ readonly REMINDERS_DEFAULT: 50;
38
+ /** Maximum limit for reminder search operations */
39
+ readonly REMINDERS_MAX: 200;
36
40
  };
37
41
  export declare const DisplayLimits: {
38
42
  /** Maximum number of failures to show in detailed error messages */
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,eAAO,MAAM,SAAS;IAClB,sCAAsC;;IAEtC,wDAAwD;;IAExD,wCAAwC;;IAExC,wCAAwC;;IAExC,yCAAyC;;IAEzC,yCAAyC;;IAEzC,yCAAyC;;IAEzC,qDAAqD;;IAErD,yCAAyC;;IAEzC,2DAA2D;;IAE3D,8CAA8C;;IAE9C,gEAAgE;;IAEhE,uCAAuC;;IAEvC,uCAAuC;;CAEjC,CAAA;AAGV,eAAO,MAAM,aAAa;IACtB,oEAAoE;;IAEpE,gDAAgD;;CAE1C,CAAA;AAGV,eAAO,MAAM,cAAc;IACvB,oDAAoD;;IAEpD,mCAAmC;;CAE7B,CAAA"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,eAAO,MAAM,SAAS;IAClB,sCAAsC;;IAEtC,wDAAwD;;IAExD,wCAAwC;;IAExC,wCAAwC;;IAExC,yCAAyC;;IAEzC,yCAAyC;;IAEzC,yCAAyC;;IAEzC,qDAAqD;;IAErD,yCAAyC;;IAEzC,2DAA2D;;IAE3D,8CAA8C;;IAE9C,gEAAgE;;IAEhE,uCAAuC;;IAEvC,uCAAuC;;IAEvC,0CAA0C;;IAE1C,mDAAmD;;CAE7C,CAAA;AAGV,eAAO,MAAM,aAAa;IACtB,oEAAoE;;IAEpE,gDAAgD;;CAE1C,CAAA;AAGV,eAAO,MAAM,cAAc;IACvB,oDAAoD;;IAEpD,mCAAmC;;CAE7B,CAAA"}
@@ -88,8 +88,8 @@ declare const CommentSchema: z.ZodObject<{
88
88
  fileUrl: z.ZodOptional<z.ZodString>;
89
89
  fileDuration: z.ZodOptional<z.ZodNumber>;
90
90
  uploadState: z.ZodOptional<z.ZodEnum<{
91
- pending: "pending";
92
91
  completed: "completed";
92
+ pending: "pending";
93
93
  }>>;
94
94
  url: z.ZodOptional<z.ZodString>;
95
95
  title: z.ZodOptional<z.ZodString>;
@@ -151,6 +151,34 @@ declare const LabelSchema: z.ZodObject<{
151
151
  order: z.ZodCatch<z.ZodOptional<z.ZodNumber>>;
152
152
  isFavorite: z.ZodBoolean;
153
153
  }, z.core.$strip>;
154
+ /**
155
+ * Schema for a mapped reminder object returned by tools
156
+ */
157
+ declare const ReminderSchema: z.ZodObject<{
158
+ id: z.ZodString;
159
+ taskId: z.ZodString;
160
+ type: z.ZodEnum<{
161
+ location: "location";
162
+ absolute: "absolute";
163
+ relative: "relative";
164
+ }>;
165
+ minuteOffset: z.ZodOptional<z.ZodNumber>;
166
+ due: z.ZodOptional<z.ZodObject<{
167
+ isRecurring: z.ZodBoolean;
168
+ string: z.ZodString;
169
+ date: z.ZodString;
170
+ datetime: z.ZodOptional<z.ZodString>;
171
+ timezone: z.ZodOptional<z.ZodString>;
172
+ }, z.core.$strip>>;
173
+ name: z.ZodOptional<z.ZodString>;
174
+ locLat: z.ZodOptional<z.ZodString>;
175
+ locLong: z.ZodOptional<z.ZodString>;
176
+ locTrigger: z.ZodOptional<z.ZodEnum<{
177
+ on_enter: "on_enter";
178
+ on_leave: "on_leave";
179
+ }>>;
180
+ radius: z.ZodOptional<z.ZodNumber>;
181
+ }, z.core.$strip>;
154
182
  /**
155
183
  * Schema for batch operation failure
156
184
  */
@@ -159,5 +187,5 @@ declare const FailureSchema: z.ZodObject<{
159
187
  error: z.ZodString;
160
188
  code: z.ZodOptional<z.ZodString>;
161
189
  }, z.core.$strip>;
162
- export { ActivityEventSchema, CollaboratorSchema, CommentSchema, FailureSchema, LabelSchema, ProjectSchema, SectionSchema, TaskSchema, };
190
+ export { ActivityEventSchema, CollaboratorSchema, CommentSchema, FailureSchema, LabelSchema, ProjectSchema, ReminderSchema, SectionSchema, TaskSchema, };
163
191
  //# sourceMappingURL=output-schemas.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"output-schemas.d.ts","sourceRoot":"","sources":["../../src/utils/output-schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB;;GAEG;AACH,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;iBA+Bd,CAAA;AAEF;;GAEG;AACH,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAoBjB,CAAA;AAEF;;GAEG;AACH,QAAA,MAAM,aAAa;;;iBAGjB,CAAA;AA0BF;;GAEG;AACH,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;iBAQjB,CAAA;AAEF;;GAEG;AACH,QAAA,MAAM,mBAAmB;;;;;;;;;;iBAYvB,CAAA;AAEF;;GAEG;AACH,QAAA,MAAM,kBAAkB;;;;iBAItB,CAAA;AAEF;;GAEG;AACH,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAMf,CAAA;AAEF;;GAEG;AACH,QAAA,MAAM,aAAa;;;;iBAIjB,CAAA;AAEF,OAAO,EACH,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,WAAW,EACX,aAAa,EACb,aAAa,EACb,UAAU,GACb,CAAA"}
1
+ {"version":3,"file":"output-schemas.d.ts","sourceRoot":"","sources":["../../src/utils/output-schemas.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB;;GAEG;AACH,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;iBA+Bd,CAAA;AAEF;;GAEG;AACH,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAoBjB,CAAA;AAEF;;GAEG;AACH,QAAA,MAAM,aAAa;;;iBAGjB,CAAA;AA0BF;;GAEG;AACH,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;iBAQjB,CAAA;AAEF;;GAEG;AACH,QAAA,MAAM,mBAAmB;;;;;;;;;;iBAYvB,CAAA;AAEF;;GAEG;AACH,QAAA,MAAM,kBAAkB;;;;iBAItB,CAAA;AAEF;;GAEG;AACH,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAMf,CAAA;AAaF;;GAEG;AACH,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;iBAmBlB,CAAA;AAEF;;GAEG;AACH,QAAA,MAAM,aAAa;;;;iBAIjB,CAAA;AAEF,OAAO,EACH,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,WAAW,EACX,aAAa,EACb,cAAc,EACd,aAAa,EACb,UAAU,GACb,CAAA"}
@@ -0,0 +1,29 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Maximum number of reminders per add/update operation.
4
+ */
5
+ export declare const MAX_REMINDERS_PER_OPERATION = 25;
6
+ /**
7
+ * Shared schema for reminder delivery service (email or push).
8
+ */
9
+ export declare const ReminderServiceSchema: z.ZodEnum<{
10
+ email: "email";
11
+ push: "push";
12
+ }>;
13
+ /**
14
+ * Shared schema for reminder due date input.
15
+ */
16
+ export declare const ReminderDueInputSchema: z.ZodObject<{
17
+ date: z.ZodOptional<z.ZodString>;
18
+ string: z.ZodOptional<z.ZodString>;
19
+ timezone: z.ZodOptional<z.ZodString>;
20
+ lang: z.ZodOptional<z.ZodString>;
21
+ }, z.core.$strip>;
22
+ /**
23
+ * Shared schema for location trigger (on_enter or on_leave).
24
+ */
25
+ export declare const LocationTriggerSchema: z.ZodEnum<{
26
+ on_enter: "on_enter";
27
+ on_leave: "on_leave";
28
+ }>;
29
+ //# sourceMappingURL=reminder-schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reminder-schemas.d.ts","sourceRoot":"","sources":["../../src/utils/reminder-schemas.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;GAEG;AACH,eAAO,MAAM,2BAA2B,KAAK,CAAA;AAE7C;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;EAAqC,CAAA;AAEvE;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;iBAKjC,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;EAA4B,CAAA"}
@@ -25,11 +25,18 @@ export declare const ToolNames: {
25
25
  readonly ADD_COMMENTS: "add-comments";
26
26
  readonly UPDATE_COMMENTS: "update-comments";
27
27
  readonly FIND_COMMENTS: "find-comments";
28
+ readonly ADD_REMINDERS: "add-reminders";
29
+ readonly UPDATE_REMINDERS: "update-reminders";
30
+ readonly FIND_REMINDERS: "find-reminders";
28
31
  readonly VIEW_ATTACHMENT: "view-attachment";
29
32
  readonly FIND_PROJECT_COLLABORATORS: "find-project-collaborators";
30
33
  readonly MANAGE_ASSIGNMENTS: "manage-assignments";
31
34
  readonly FIND_ACTIVITY: "find-activity";
32
35
  readonly GET_PRODUCTIVITY_STATS: "get-productivity-stats";
36
+ readonly GET_PROJECT_HEALTH: "get-project-health";
37
+ readonly GET_PROJECT_ACTIVITY_STATS: "get-project-activity-stats";
38
+ readonly ANALYZE_PROJECT_HEALTH: "analyze-project-health";
39
+ readonly GET_WORKSPACE_INSIGHTS: "get-workspace-insights";
33
40
  readonly GET_OVERVIEW: "get-overview";
34
41
  readonly DELETE_OBJECT: "delete-object";
35
42
  readonly FETCH_OBJECT: "fetch-object";
@@ -1 +1 @@
1
- {"version":3,"file":"tool-names.d.ts","sourceRoot":"","sources":["../../src/utils/tool-names.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6DZ,CAAA;AAGV,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAA"}
1
+ {"version":3,"file":"tool-names.d.ts","sourceRoot":"","sources":["../../src/utils/tool-names.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwEZ,CAAA;AAGV,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@doist/todoist-ai",
3
- "version": "8.4.2",
3
+ "version": "8.6.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -28,6 +28,10 @@
28
28
  "ai",
29
29
  "tools"
30
30
  ],
31
+ "publishConfig": {
32
+ "access": "public",
33
+ "provenance": true
34
+ },
31
35
  "scripts": {
32
36
  "test": "vitest run",
33
37
  "test:watch": "vitest",
@@ -52,10 +56,11 @@
52
56
  "lint:schemas": "npm run build && npx tsx scripts/validate-schemas.ts",
53
57
  "check": "biome check && npm run lint:schemas",
54
58
  "check:fix": "biome check --fix --unsafe",
59
+ "prepublishOnly": "npm run build && npm test",
55
60
  "prepare": "husky"
56
61
  },
57
62
  "dependencies": {
58
- "@doist/todoist-api-typescript": "7.3.0",
63
+ "@doist/todoist-api-typescript": "7.8.0",
59
64
  "date-fns": "4.1.0",
60
65
  "dompurify": "3.3.3",
61
66
  "dotenv": "17.3.1",
@@ -66,7 +71,9 @@
66
71
  "@modelcontextprotocol/sdk": "^1.25.0"
67
72
  },
68
73
  "devDependencies": {
69
- "@biomejs/biome": "2.4.7",
74
+ "@biomejs/biome": "2.4.8",
75
+ "@semantic-release/changelog": "6.0.3",
76
+ "@semantic-release/git": "10.0.1",
70
77
  "@types/dompurify": "3.2.0",
71
78
  "@types/express": "5.0.6",
72
79
  "@types/morgan": "1.9.10",
@@ -74,6 +81,7 @@
74
81
  "@types/react": "19.2.14",
75
82
  "@types/react-dom": "19.2.3",
76
83
  "concurrently": "9.2.1",
84
+ "conventional-changelog-conventionalcommits": "9.3.0",
77
85
  "husky": "9.1.7",
78
86
  "lint-staged": "16.4.0",
79
87
  "morgan": "1.10.1",
@@ -81,12 +89,13 @@
81
89
  "react": "19.2.4",
82
90
  "react-dom": "19.2.4",
83
91
  "rimraf": "6.1.3",
92
+ "semantic-release": "25.0.3",
84
93
  "snarkdown": "2.0.0",
85
94
  "tsx": "4.21.0",
86
95
  "typescript": "6.0.2",
87
96
  "vite": "7.3.1",
88
97
  "vite-plugin-dts": "4.5.4",
89
- "vitest": "4.1.0"
98
+ "vitest": "4.1.1"
90
99
  },
91
100
  "lint-staged": {
92
101
  "*": [
@@ -23,6 +23,7 @@ import { addLabels } from '../src/tools/add-labels.js'
23
23
  import { addProjects } from '../src/tools/add-projects.js'
24
24
  import { addSections } from '../src/tools/add-sections.js'
25
25
  import { addTasks } from '../src/tools/add-tasks.js'
26
+ import { analyzeProjectHealth } from '../src/tools/analyze-project-health.js'
26
27
  import { completeTasks } from '../src/tools/complete-tasks.js'
27
28
  import { deleteObject } from '../src/tools/delete-object.js'
28
29
  import { fetch } from '../src/tools/fetch.js'
@@ -38,6 +39,9 @@ import { findSections } from '../src/tools/find-sections.js'
38
39
  import { findTasks } from '../src/tools/find-tasks.js'
39
40
  import { findTasksByDate } from '../src/tools/find-tasks-by-date.js'
40
41
  import { getOverview } from '../src/tools/get-overview.js'
42
+ import { getProjectActivityStats } from '../src/tools/get-project-activity-stats.js'
43
+ import { getProjectHealth } from '../src/tools/get-project-health.js'
44
+ import { getWorkspaceInsights } from '../src/tools/get-workspace-insights.js'
41
45
  import { listWorkspaces } from '../src/tools/list-workspaces.js'
42
46
  import { manageAssignments } from '../src/tools/manage-assignments.js'
43
47
  import { projectManagement } from '../src/tools/project-management.js'
@@ -90,6 +94,10 @@ const tools: Record<string, ExecutableTool> = {
90
94
  'find-tasks': findTasks,
91
95
  'find-tasks-by-date': findTasksByDate,
92
96
  'get-overview': getOverview,
97
+ 'get-project-health': getProjectHealth,
98
+ 'get-project-activity-stats': getProjectActivityStats,
99
+ 'analyze-project-health': analyzeProjectHealth,
100
+ 'get-workspace-insights': getWorkspaceInsights,
93
101
  'list-workspaces': listWorkspaces,
94
102
  'manage-assignments': manageAssignments,
95
103
  'project-management': projectManagement,