@doist/todoist-ai 8.4.2 → 8.5.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.
@@ -12,5 +12,5 @@ declare function getMcpServer({ todoistApiKey, baseUrl, features, }: {
12
12
  baseUrl?: string;
13
13
  features?: Features;
14
14
  }): McpServer;
15
- export { getMcpServer, FEATURE_NAMES, type Feature, type FeatureName, type Features };
15
+ export { FEATURE_NAMES, type Feature, type FeatureName, type Features, getMcpServer };
16
16
  //# sourceMappingURL=mcp-server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAEnE,OAAO,EAEH,aAAa,EACb,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,QAAQ,EAGhB,MAAM,kBAAkB,CAAA;AAkIzB;;;;;;GAMG;AACH,iBAAS,YAAY,CAAC,EAClB,aAAa,EACb,OAAO,EACP,QAAa,GAChB,EAAE;IACC,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAA;CACtB,aA+GA;AAED,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,QAAQ,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;AAEnE,OAAO,EAEH,aAAa,EACb,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,QAAQ,EAGhB,MAAM,kBAAkB,CAAA;AA6IzB;;;;;;GAMG;AACH,iBAAS,YAAY,CAAC,EAClB,aAAa,EACb,OAAO,EACP,QAAa,GAChB,EAAE;IACC,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAA;CACtB,aAqHA;AAED,OAAO,EAAE,aAAa,EAAE,KAAK,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,QAAQ,EAAE,YAAY,EAAE,CAAA"}
@@ -161,7 +161,7 @@ declare function mapComment(comment: Comment): {
161
161
  fileType: string | undefined;
162
162
  fileUrl: string | undefined;
163
163
  fileDuration: number | undefined;
164
- uploadState: "pending" | "completed" | undefined;
164
+ uploadState: "completed" | "pending" | undefined;
165
165
  url: string | undefined;
166
166
  title: string | undefined;
167
167
  image: string | undefined;
@@ -25,8 +25,8 @@ declare const addComments: {
25
25
  fileUrl: z.ZodOptional<z.ZodString>;
26
26
  fileDuration: z.ZodOptional<z.ZodNumber>;
27
27
  uploadState: z.ZodOptional<z.ZodEnum<{
28
- pending: "pending";
29
28
  completed: "completed";
29
+ pending: "pending";
30
30
  }>>;
31
31
  url: z.ZodOptional<z.ZodString>;
32
32
  title: z.ZodOptional<z.ZodString>;
@@ -66,7 +66,7 @@ declare const addComments: {
66
66
  fileType: string | undefined;
67
67
  fileUrl: string | undefined;
68
68
  fileDuration: number | undefined;
69
- uploadState: "pending" | "completed" | undefined;
69
+ uploadState: "completed" | "pending" | undefined;
70
70
  url: string | undefined;
71
71
  title: string | undefined;
72
72
  image: string | undefined;
@@ -0,0 +1,45 @@
1
+ import { z } from 'zod';
2
+ declare const analyzeProjectHealth: {
3
+ name: "analyze-project-health";
4
+ description: string;
5
+ parameters: {
6
+ projectId: z.ZodString;
7
+ };
8
+ outputSchema: {
9
+ projectId: z.ZodString;
10
+ health: z.ZodObject<{
11
+ status: z.ZodEnum<{
12
+ UNKNOWN: "UNKNOWN";
13
+ ON_TRACK: "ON_TRACK";
14
+ AT_RISK: "AT_RISK";
15
+ CRITICAL: "CRITICAL";
16
+ EXCELLENT: "EXCELLENT";
17
+ ERROR: "ERROR";
18
+ }>;
19
+ isStale: z.ZodBoolean;
20
+ updateInProgress: z.ZodBoolean;
21
+ }, z.core.$strip>;
22
+ message: z.ZodString;
23
+ };
24
+ annotations: {
25
+ readOnlyHint: false;
26
+ destructiveHint: false;
27
+ idempotentHint: true;
28
+ };
29
+ execute(args: {
30
+ projectId: string;
31
+ }, client: import('@doist/todoist-api-typescript').TodoistApi): Promise<{
32
+ textContent: string;
33
+ structuredContent: {
34
+ projectId: string;
35
+ health: {
36
+ status: "UNKNOWN" | "ON_TRACK" | "AT_RISK" | "CRITICAL" | "EXCELLENT" | "ERROR";
37
+ isStale: boolean;
38
+ updateInProgress: boolean;
39
+ };
40
+ message: string;
41
+ };
42
+ }>;
43
+ };
44
+ export { analyzeProjectHealth };
45
+ //# sourceMappingURL=analyze-project-health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze-project-health.d.ts","sourceRoot":"","sources":["../../src/tools/analyze-project-health.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AA+BvB,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCqC,CAAA;AAE/D,OAAO,EAAE,oBAAoB,EAAE,CAAA"}
@@ -90,8 +90,8 @@ declare const fetchObject: {
90
90
  fileUrl: z.ZodOptional<z.ZodString>;
91
91
  fileDuration: z.ZodOptional<z.ZodNumber>;
92
92
  uploadState: z.ZodOptional<z.ZodEnum<{
93
- pending: "pending";
94
93
  completed: "completed";
94
+ pending: "pending";
95
95
  }>>;
96
96
  url: z.ZodOptional<z.ZodString>;
97
97
  title: z.ZodOptional<z.ZodString>;
@@ -174,7 +174,7 @@ declare const fetchObject: {
174
174
  fileType: string | undefined;
175
175
  fileUrl: string | undefined;
176
176
  fileDuration: number | undefined;
177
- uploadState: "pending" | "completed" | undefined;
177
+ uploadState: "completed" | "pending" | undefined;
178
178
  url: string | undefined;
179
179
  title: string | undefined;
180
180
  image: string | undefined;
@@ -25,8 +25,8 @@ declare const findComments: {
25
25
  fileUrl: z.ZodOptional<z.ZodString>;
26
26
  fileDuration: z.ZodOptional<z.ZodNumber>;
27
27
  uploadState: z.ZodOptional<z.ZodEnum<{
28
- pending: "pending";
29
28
  completed: "completed";
29
+ pending: "pending";
30
30
  }>>;
31
31
  url: z.ZodOptional<z.ZodString>;
32
32
  title: z.ZodOptional<z.ZodString>;
@@ -69,7 +69,7 @@ declare const findComments: {
69
69
  fileType: string | undefined;
70
70
  fileUrl: string | undefined;
71
71
  fileDuration: number | undefined;
72
- uploadState: "pending" | "completed" | undefined;
72
+ uploadState: "completed" | "pending" | undefined;
73
73
  url: string | undefined;
74
74
  title: string | undefined;
75
75
  image: string | undefined;
@@ -0,0 +1,48 @@
1
+ import { z } from 'zod';
2
+ declare const getProjectActivityStats: {
3
+ name: "get-project-activity-stats";
4
+ description: string;
5
+ parameters: {
6
+ projectId: z.ZodString;
7
+ weeks: z.ZodOptional<z.ZodNumber>;
8
+ includeWeeklyCounts: z.ZodOptional<z.ZodBoolean>;
9
+ };
10
+ outputSchema: {
11
+ projectId: z.ZodString;
12
+ dayItems: z.ZodArray<z.ZodObject<{
13
+ date: z.ZodString;
14
+ totalCount: z.ZodNumber;
15
+ }, z.core.$strip>>;
16
+ weekItems: z.ZodNullable<z.ZodArray<z.ZodObject<{
17
+ fromDate: z.ZodString;
18
+ toDate: z.ZodString;
19
+ totalCount: z.ZodNumber;
20
+ }, z.core.$strip>>>;
21
+ };
22
+ annotations: {
23
+ readOnlyHint: true;
24
+ destructiveHint: false;
25
+ idempotentHint: true;
26
+ };
27
+ execute(args: {
28
+ projectId: string;
29
+ weeks?: number | undefined;
30
+ includeWeeklyCounts?: boolean | undefined;
31
+ }, client: import('@doist/todoist-api-typescript').TodoistApi): Promise<{
32
+ textContent: string;
33
+ structuredContent: {
34
+ projectId: string;
35
+ dayItems: {
36
+ date: string;
37
+ totalCount: number;
38
+ }[];
39
+ weekItems: {
40
+ fromDate: string;
41
+ toDate: string;
42
+ totalCount: number;
43
+ }[] | null;
44
+ };
45
+ }>;
46
+ };
47
+ export { getProjectActivityStats };
48
+ //# sourceMappingURL=get-project-activity-stats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-project-activity-stats.d.ts","sourceRoot":"","sources":["../../src/tools/get-project-activity-stats.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAgEvB,QAAA,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BkC,CAAA;AAE/D,OAAO,EAAE,uBAAuB,EAAE,CAAA"}
@@ -0,0 +1,112 @@
1
+ import { TodoistApi } from '@doist/todoist-api-typescript';
2
+ import { z } from 'zod';
3
+ declare const getProjectHealth: {
4
+ name: "get-project-health";
5
+ description: string;
6
+ parameters: {
7
+ projectId: z.ZodString;
8
+ includeContext: z.ZodDefault<z.ZodBoolean>;
9
+ };
10
+ outputSchema: {
11
+ projectId: z.ZodString;
12
+ projectName: z.ZodString;
13
+ progress: z.ZodObject<{
14
+ completedCount: z.ZodNumber;
15
+ activeCount: z.ZodNumber;
16
+ progressPercent: z.ZodNumber;
17
+ }, z.core.$strip>;
18
+ health: z.ZodObject<{
19
+ status: z.ZodEnum<{
20
+ UNKNOWN: "UNKNOWN";
21
+ ON_TRACK: "ON_TRACK";
22
+ AT_RISK: "AT_RISK";
23
+ CRITICAL: "CRITICAL";
24
+ EXCELLENT: "EXCELLENT";
25
+ ERROR: "ERROR";
26
+ }>;
27
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
28
+ descriptionSummary: z.ZodOptional<z.ZodNullable<z.ZodString>>;
29
+ taskRecommendations: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
30
+ taskId: z.ZodString;
31
+ recommendation: z.ZodString;
32
+ }, z.core.$strip>>>>;
33
+ isStale: z.ZodBoolean;
34
+ updateInProgress: z.ZodBoolean;
35
+ updatedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
36
+ }, z.core.$strip>;
37
+ context: z.ZodOptional<z.ZodObject<{
38
+ projectDescription: z.ZodNullable<z.ZodString>;
39
+ projectMetrics: z.ZodObject<{
40
+ totalTasks: z.ZodNumber;
41
+ completedTasks: z.ZodNumber;
42
+ overdueTasks: z.ZodNumber;
43
+ tasksCreatedThisWeek: z.ZodNumber;
44
+ tasksCompletedThisWeek: z.ZodNumber;
45
+ averageCompletionTime: z.ZodNullable<z.ZodNumber>;
46
+ }, z.core.$strip>;
47
+ tasks: z.ZodArray<z.ZodObject<{
48
+ id: z.ZodString;
49
+ content: z.ZodString;
50
+ priority: z.ZodString;
51
+ due: z.ZodOptional<z.ZodNullable<z.ZodString>>;
52
+ deadline: z.ZodOptional<z.ZodNullable<z.ZodString>>;
53
+ isCompleted: z.ZodBoolean;
54
+ labels: z.ZodArray<z.ZodString>;
55
+ }, z.core.$strip>>;
56
+ }, z.core.$strip>>;
57
+ };
58
+ annotations: {
59
+ readOnlyHint: true;
60
+ destructiveHint: false;
61
+ idempotentHint: true;
62
+ };
63
+ execute(args: {
64
+ projectId: string;
65
+ includeContext: boolean;
66
+ }, client: TodoistApi): Promise<{
67
+ textContent: string;
68
+ structuredContent: {
69
+ projectId: string;
70
+ projectName: string;
71
+ progress: {
72
+ completedCount: number;
73
+ activeCount: number;
74
+ progressPercent: number;
75
+ };
76
+ health: {
77
+ status: "UNKNOWN" | "ON_TRACK" | "AT_RISK" | "CRITICAL" | "EXCELLENT" | "ERROR";
78
+ description: string | null;
79
+ descriptionSummary: string | null;
80
+ taskRecommendations: {
81
+ taskId: string;
82
+ recommendation: string;
83
+ }[] | null;
84
+ isStale: boolean;
85
+ updateInProgress: boolean;
86
+ updatedAt: string | null;
87
+ };
88
+ context: {
89
+ projectDescription: string | null;
90
+ projectMetrics: {
91
+ totalTasks: number;
92
+ completedTasks: number;
93
+ overdueTasks: number;
94
+ tasksCreatedThisWeek: number;
95
+ tasksCompletedThisWeek: number;
96
+ averageCompletionTime: number | null;
97
+ };
98
+ tasks: {
99
+ id: string;
100
+ content: string;
101
+ priority: string;
102
+ due: string | null;
103
+ deadline: string | null;
104
+ isCompleted: boolean;
105
+ labels: string[];
106
+ }[];
107
+ } | undefined;
108
+ };
109
+ }>;
110
+ };
111
+ export { getProjectHealth };
112
+ //# sourceMappingURL=get-project-health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-project-health.d.ts","sourceRoot":"","sources":["../../src/tools/get-project-health.ts"],"names":[],"mappings":"AAAA,OAAO,EAKH,KAAK,UAAU,EAClB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAkMvB,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4DyC,CAAA;AAE/D,OAAO,EAAE,gBAAgB,EAAE,CAAA"}
@@ -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;
@@ -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>;
@@ -30,6 +30,10 @@ export declare const ToolNames: {
30
30
  readonly MANAGE_ASSIGNMENTS: "manage-assignments";
31
31
  readonly FIND_ACTIVITY: "find-activity";
32
32
  readonly GET_PRODUCTIVITY_STATS: "get-productivity-stats";
33
+ readonly GET_PROJECT_HEALTH: "get-project-health";
34
+ readonly GET_PROJECT_ACTIVITY_STATS: "get-project-activity-stats";
35
+ readonly ANALYZE_PROJECT_HEALTH: "analyze-project-health";
36
+ readonly GET_WORKSPACE_INSIGHTS: "get-workspace-insights";
33
37
  readonly GET_OVERVIEW: "get-overview";
34
38
  readonly DELETE_OBJECT: "delete-object";
35
39
  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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmEZ,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.5.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",
@@ -67,6 +72,8 @@
67
72
  },
68
73
  "devDependencies": {
69
74
  "@biomejs/biome": "2.4.7",
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,6 +89,7 @@
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",
@@ -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,