@doist/todoist-ai 8.3.0 → 8.4.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.
- package/dist/index.d.ts +48 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -35
- package/dist/main-http.js +1 -1
- package/dist/main.js +1 -1
- package/dist/mcp-helpers.d.ts.map +1 -1
- package/dist/{mcp-server-CmK25-kD.js → mcp-server-CpknpMVT.js} +758 -631
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/todoist-tool.d.ts +2 -1
- package/dist/todoist-tool.d.ts.map +1 -1
- package/dist/tools/list-workspaces.d.ts +4 -4
- package/dist/tools/list-workspaces.d.ts.map +1 -1
- package/dist/tools/update-tasks.d.ts +2 -2
- package/dist/tools/update-tasks.d.ts.map +1 -1
- package/dist/tools/view-attachment.d.ts +48 -0
- package/dist/tools/view-attachment.d.ts.map +1 -0
- package/dist/utils/tool-names.d.ts +1 -0
- package/dist/utils/tool-names.d.ts.map +1 -1
- package/package.json +8 -8
- package/scripts/run-tool.ts +25 -1
- package/scripts/validate-schemas.ts +4 -1
package/dist/mcp-server.d.ts.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/todoist-tool.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { TodoistApi } from '@doist/todoist-api-typescript';
|
|
2
|
-
import { ToolAnnotations } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import { ContentBlock, ToolAnnotations } from '@modelcontextprotocol/sdk/types.js';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
type ExecuteResult<Output extends z.ZodRawShape> = Promise<{
|
|
5
5
|
textContent?: string;
|
|
6
6
|
structuredContent?: z.infer<z.ZodObject<Output>>;
|
|
7
|
+
contentItems?: ContentBlock[];
|
|
7
8
|
}>;
|
|
8
9
|
type RequiredToolAnnotations = ToolAnnotations & {
|
|
9
10
|
readOnlyHint: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"todoist-tool.d.ts","sourceRoot":"","sources":["../src/todoist-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;
|
|
1
|
+
{"version":3,"file":"todoist-tool.d.ts","sourceRoot":"","sources":["../src/todoist-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AACvF,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAE5B,KAAK,aAAa,CAAC,MAAM,SAAS,CAAC,CAAC,WAAW,IAAI,OAAO,CAAC;IACvD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iBAAiB,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;IAChD,YAAY,CAAC,EAAE,YAAY,EAAE,CAAA;CAChC,CAAC,CAAA;AAEF,KAAK,uBAAuB,GAAG,eAAe,GAAG;IAC7C,YAAY,EAAE,OAAO,CAAA;IACrB,eAAe,EAAE,OAAO,CAAA;IACxB,cAAc,EAAE,OAAO,CAAA;CAC1B,CAAA;AAED;;GAEG;AACH,KAAK,WAAW,CAAC,MAAM,SAAS,CAAC,CAAC,WAAW,EAAE,MAAM,SAAS,CAAC,CAAC,WAAW,IAAI;IAC3E;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAA;IAEnB;;;;;OAKG;IACH,UAAU,EAAE,MAAM,CAAA;IAElB;;;;OAIG;IACH,YAAY,EAAE,MAAM,CAAA;IAEpB;;OAEG;IACH,WAAW,EAAE,uBAAuB,CAAA;IAEpC;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAE/B;;;;;;;;OAQG;IACH,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,KAAK,aAAa,CAAC,MAAM,CAAC,CAAA;CAC7F,CAAA;AAED,YAAY,EAAE,uBAAuB,EAAE,WAAW,EAAE,CAAA"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { TodoistApi } from '@doist/todoist-api-typescript';
|
|
1
|
+
import { TodoistApi, WorkspacePlan, WorkspaceRole } from '@doist/todoist-api-typescript';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
type WorkspaceOutput = {
|
|
4
4
|
id: string;
|
|
5
5
|
name: string;
|
|
6
|
-
plan:
|
|
7
|
-
role:
|
|
6
|
+
plan: WorkspacePlan;
|
|
7
|
+
role: WorkspaceRole;
|
|
8
8
|
isLinkSharingEnabled: boolean;
|
|
9
9
|
isGuestAllowed: boolean;
|
|
10
10
|
createdAt: string;
|
|
@@ -50,5 +50,5 @@ declare const listWorkspaces: {
|
|
|
50
50
|
structuredContent: WorkspacesStructured;
|
|
51
51
|
}>;
|
|
52
52
|
};
|
|
53
|
-
export { listWorkspaces, type
|
|
53
|
+
export { listWorkspaces, type WorkspaceOutput, type WorkspacesStructured };
|
|
54
54
|
//# sourceMappingURL=list-workspaces.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-workspaces.d.ts","sourceRoot":"","sources":["../../src/tools/list-workspaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"list-workspaces.d.ts","sourceRoot":"","sources":["../../src/tools/list-workspaces.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,UAAU,EAGf,KAAK,aAAa,EAClB,KAAK,aAAa,EACrB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAyBvB,KAAK,eAAe,GAAG;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,aAAa,CAAA;IACnB,IAAI,EAAE,aAAa,CAAA;IACnB,oBAAoB,EAAE,OAAO,CAAA;IAC7B,cAAc,EAAE,OAAO,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,KAAK,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAClD,IAAI,EAAE,YAAY,CAAA;IAClB,UAAU,EAAE,eAAe,EAAE,CAAA;IAC7B,KAAK,EAAE,MAAM,CAAA;CAChB,CAAA;AAuDD,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAe2C,CAAA;AAE/D,OAAO,EAAE,cAAc,EAAE,KAAK,eAAe,EAAE,KAAK,oBAAoB,EAAE,CAAA"}
|
|
@@ -17,8 +17,8 @@ declare const updateTasks: {
|
|
|
17
17
|
p3: "p3";
|
|
18
18
|
p4: "p4";
|
|
19
19
|
}>>;
|
|
20
|
-
dueString: z.ZodPipe<z.ZodTransform<{} | undefined, unknown>, z.
|
|
21
|
-
deadlineDate: z.ZodPipe<z.ZodTransform<{} | undefined, unknown>, z.
|
|
20
|
+
dueString: z.ZodOptional<z.ZodPipe<z.ZodTransform<{} | undefined, unknown>, z.ZodString>>;
|
|
21
|
+
deadlineDate: z.ZodOptional<z.ZodPipe<z.ZodTransform<{} | undefined, unknown>, z.ZodString>>;
|
|
22
22
|
duration: z.ZodOptional<z.ZodString>;
|
|
23
23
|
responsibleUser: z.ZodOptional<z.ZodString>;
|
|
24
24
|
labels: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-tasks.d.ts","sourceRoot":"","sources":["../../src/tools/update-tasks.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"update-tasks.d.ts","sourceRoot":"","sources":["../../src/tools/update-tasks.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AA0GvB,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgJ8C,CAAA;AAiD/D,OAAO,EAAE,WAAW,EAAE,CAAA"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { ContentBlock } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
declare const viewAttachment: {
|
|
4
|
+
name: "view-attachment";
|
|
5
|
+
description: string;
|
|
6
|
+
parameters: {
|
|
7
|
+
fileUrl: z.ZodString;
|
|
8
|
+
};
|
|
9
|
+
outputSchema: {
|
|
10
|
+
fileName: z.ZodOptional<z.ZodString>;
|
|
11
|
+
fileType: z.ZodOptional<z.ZodString>;
|
|
12
|
+
fileSize: z.ZodOptional<z.ZodNumber>;
|
|
13
|
+
contentDelivery: z.ZodEnum<{
|
|
14
|
+
text: "text";
|
|
15
|
+
image: "image";
|
|
16
|
+
embedded_resource: "embedded_resource";
|
|
17
|
+
metadata_only: "metadata_only";
|
|
18
|
+
}>;
|
|
19
|
+
};
|
|
20
|
+
annotations: {
|
|
21
|
+
readOnlyHint: true;
|
|
22
|
+
destructiveHint: false;
|
|
23
|
+
idempotentHint: true;
|
|
24
|
+
};
|
|
25
|
+
execute({ fileUrl }: {
|
|
26
|
+
fileUrl: string;
|
|
27
|
+
}, client: import('@doist/todoist-api-typescript').TodoistApi): Promise<{
|
|
28
|
+
textContent: string;
|
|
29
|
+
structuredContent: {
|
|
30
|
+
fileName: string | undefined;
|
|
31
|
+
fileType: string;
|
|
32
|
+
fileSize: number;
|
|
33
|
+
contentDelivery: "metadata_only";
|
|
34
|
+
};
|
|
35
|
+
contentItems?: undefined;
|
|
36
|
+
} | {
|
|
37
|
+
textContent: string;
|
|
38
|
+
structuredContent: {
|
|
39
|
+
fileName: string | undefined;
|
|
40
|
+
fileType: string;
|
|
41
|
+
fileSize: number;
|
|
42
|
+
contentDelivery: "text" | "image" | "embedded_resource";
|
|
43
|
+
};
|
|
44
|
+
contentItems: ContentBlock[];
|
|
45
|
+
}>;
|
|
46
|
+
};
|
|
47
|
+
export { viewAttachment };
|
|
48
|
+
//# sourceMappingURL=view-attachment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view-attachment.d.ts","sourceRoot":"","sources":["../../src/tools/view-attachment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAA;AACtE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AA8FvB,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiG2C,CAAA;AAE/D,OAAO,EAAE,cAAc,EAAE,CAAA"}
|
|
@@ -25,6 +25,7 @@ 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 VIEW_ATTACHMENT: "view-attachment";
|
|
28
29
|
readonly FIND_PROJECT_COLLABORATORS: "find-project-collaborators";
|
|
29
30
|
readonly MANAGE_ASSIGNMENTS: "manage-assignments";
|
|
30
31
|
readonly FIND_ACTIVITY: "find-activity";
|
|
@@ -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
|
|
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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@doist/todoist-ai",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.4.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -49,15 +49,15 @@
|
|
|
49
49
|
"lint:write": "biome lint --write",
|
|
50
50
|
"format:check": "biome format",
|
|
51
51
|
"format:write": "biome format --write",
|
|
52
|
-
"lint:schemas": "npm run build && npx
|
|
52
|
+
"lint:schemas": "npm run build && npx tsx scripts/validate-schemas.ts",
|
|
53
53
|
"check": "biome check && npm run lint:schemas",
|
|
54
54
|
"check:fix": "biome check --fix --unsafe",
|
|
55
55
|
"prepare": "husky"
|
|
56
56
|
},
|
|
57
57
|
"dependencies": {
|
|
58
|
-
"@doist/todoist-api-typescript": "7.
|
|
58
|
+
"@doist/todoist-api-typescript": "7.3.0",
|
|
59
59
|
"date-fns": "4.1.0",
|
|
60
|
-
"dompurify": "3.3.
|
|
60
|
+
"dompurify": "3.3.3",
|
|
61
61
|
"dotenv": "17.3.1",
|
|
62
62
|
"express": "5.2.1",
|
|
63
63
|
"zod": "4.3.6"
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"@modelcontextprotocol/sdk": "^1.25.0"
|
|
67
67
|
},
|
|
68
68
|
"devDependencies": {
|
|
69
|
-
"@biomejs/biome": "2.4.
|
|
69
|
+
"@biomejs/biome": "2.4.7",
|
|
70
70
|
"@types/dompurify": "3.2.0",
|
|
71
71
|
"@types/express": "5.0.6",
|
|
72
72
|
"@types/morgan": "1.9.10",
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
"@types/react-dom": "19.2.3",
|
|
76
76
|
"concurrently": "9.2.1",
|
|
77
77
|
"husky": "9.1.7",
|
|
78
|
-
"lint-staged": "16.
|
|
78
|
+
"lint-staged": "16.4.0",
|
|
79
79
|
"morgan": "1.10.1",
|
|
80
80
|
"nodemon": "3.1.14",
|
|
81
81
|
"react": "19.2.4",
|
|
@@ -83,10 +83,10 @@
|
|
|
83
83
|
"rimraf": "6.1.3",
|
|
84
84
|
"snarkdown": "2.0.0",
|
|
85
85
|
"tsx": "4.21.0",
|
|
86
|
-
"typescript": "
|
|
86
|
+
"typescript": "6.0.2",
|
|
87
87
|
"vite": "7.3.1",
|
|
88
88
|
"vite-plugin-dts": "4.5.4",
|
|
89
|
-
"vitest": "4.0
|
|
89
|
+
"vitest": "4.1.0"
|
|
90
90
|
},
|
|
91
91
|
"lint-staged": {
|
|
92
92
|
"*": [
|
package/scripts/run-tool.ts
CHANGED
|
@@ -52,6 +52,7 @@ import { updateProjects } from '../src/tools/update-projects.js'
|
|
|
52
52
|
import { updateSections } from '../src/tools/update-sections.js'
|
|
53
53
|
import { updateTasks } from '../src/tools/update-tasks.js'
|
|
54
54
|
import { userInfo } from '../src/tools/user-info.js'
|
|
55
|
+
import { viewAttachment } from '../src/tools/view-attachment.js'
|
|
55
56
|
|
|
56
57
|
config()
|
|
57
58
|
|
|
@@ -63,7 +64,7 @@ type ExecutableTool = {
|
|
|
63
64
|
// biome-ignore lint/suspicious/noExplicitAny: tools have varying parameter schemas
|
|
64
65
|
args: any,
|
|
65
66
|
client: TodoistApi,
|
|
66
|
-
) => Promise<{ textContent?: string; structuredContent?: unknown }>
|
|
67
|
+
) => Promise<{ textContent?: string; structuredContent?: unknown; contentItems?: unknown[] }>
|
|
67
68
|
}
|
|
68
69
|
|
|
69
70
|
const tools: Record<string, ExecutableTool> = {
|
|
@@ -102,6 +103,7 @@ const tools: Record<string, ExecutableTool> = {
|
|
|
102
103
|
'update-sections': updateSections,
|
|
103
104
|
'update-tasks': updateTasks,
|
|
104
105
|
'user-info': userInfo,
|
|
106
|
+
'view-attachment': viewAttachment,
|
|
105
107
|
}
|
|
106
108
|
|
|
107
109
|
function printUsage() {
|
|
@@ -190,6 +192,28 @@ async function main() {
|
|
|
190
192
|
console.log('\nStructured output:')
|
|
191
193
|
console.log(JSON.stringify(result.structuredContent, null, 2))
|
|
192
194
|
}
|
|
195
|
+
|
|
196
|
+
if (result.contentItems?.length) {
|
|
197
|
+
console.log(`\nContent items: ${result.contentItems.length}`)
|
|
198
|
+
for (const item of result.contentItems) {
|
|
199
|
+
const entry = item as Record<string, unknown>
|
|
200
|
+
if (entry.type === 'image') {
|
|
201
|
+
const data = entry.data as string
|
|
202
|
+
console.log(
|
|
203
|
+
` [image] ${entry.mimeType} (${Math.round((data.length * 0.75) / 1024)}KB base64)`,
|
|
204
|
+
)
|
|
205
|
+
} else if (entry.type === 'text') {
|
|
206
|
+
const text = entry.text as string
|
|
207
|
+
console.log(` [text] ${text.length > 200 ? `${text.slice(0, 200)}...` : text}`)
|
|
208
|
+
} else if (entry.type === 'resource') {
|
|
209
|
+
const resource = entry.resource as Record<string, unknown>
|
|
210
|
+
const blob = resource.blob as string
|
|
211
|
+
console.log(
|
|
212
|
+
` [resource] ${resource.mimeType} (${Math.round((blob.length * 0.75) / 1024)}KB base64)`,
|
|
213
|
+
)
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
193
217
|
} catch (error) {
|
|
194
218
|
console.error('Tool execution failed:', error)
|
|
195
219
|
process.exit(1)
|
|
@@ -273,7 +273,10 @@ async function main() {
|
|
|
273
273
|
}
|
|
274
274
|
|
|
275
275
|
// Run if this script is executed directly
|
|
276
|
-
if (
|
|
276
|
+
if (
|
|
277
|
+
process.argv[1]?.endsWith('validate-schemas.ts') ||
|
|
278
|
+
process.argv[1]?.endsWith('validate-schemas.js')
|
|
279
|
+
) {
|
|
277
280
|
main()
|
|
278
281
|
}
|
|
279
282
|
|