@doist/todoist-ai 8.10.0 → 8.11.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 +5 -28
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/main-http.js +2 -2
- package/dist/main.js +1 -1
- package/dist/{mcp-server-DcDkgkMt.js → mcp-server-mgPWVnTW.js} +109 -134
- package/dist/{require-valid-todoist-token-DAY-GxlD.js → require-valid-todoist-token-DlP0RT-l.js} +1 -1
- package/dist/todoist-tool.d.ts +2 -2
- package/dist/todoist-tool.d.ts.map +1 -1
- package/dist/tools/get-productivity-stats.d.ts +4 -4
- package/dist/tools/view-attachment.d.ts +1 -24
- package/dist/tools/view-attachment.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -1447,18 +1447,7 @@ declare const tools: {
|
|
|
1447
1447
|
name: "view-attachment";
|
|
1448
1448
|
description: string;
|
|
1449
1449
|
parameters: {
|
|
1450
|
-
fileUrl: import('zod').
|
|
1451
|
-
};
|
|
1452
|
-
outputSchema: {
|
|
1453
|
-
fileName: import('zod').ZodOptional<import('zod').ZodString>;
|
|
1454
|
-
fileType: import('zod').ZodOptional<import('zod').ZodString>;
|
|
1455
|
-
fileSize: import('zod').ZodOptional<import('zod').ZodNumber>;
|
|
1456
|
-
contentDelivery: import('zod').ZodEnum<{
|
|
1457
|
-
text: "text";
|
|
1458
|
-
image: "image";
|
|
1459
|
-
embedded_resource: "embedded_resource";
|
|
1460
|
-
metadata_only: "metadata_only";
|
|
1461
|
-
}>;
|
|
1450
|
+
fileUrl: import('zod').ZodURL;
|
|
1462
1451
|
};
|
|
1463
1452
|
annotations: {
|
|
1464
1453
|
readOnlyHint: true;
|
|
@@ -1469,21 +1458,9 @@ declare const tools: {
|
|
|
1469
1458
|
fileUrl: string;
|
|
1470
1459
|
}, client: import('@doist/todoist-sdk').TodoistApi): Promise<{
|
|
1471
1460
|
textContent: string;
|
|
1472
|
-
structuredContent: {
|
|
1473
|
-
fileName: string | undefined;
|
|
1474
|
-
fileType: string;
|
|
1475
|
-
fileSize: number;
|
|
1476
|
-
contentDelivery: "metadata_only";
|
|
1477
|
-
};
|
|
1478
1461
|
contentItems?: undefined;
|
|
1479
1462
|
} | {
|
|
1480
1463
|
textContent: string;
|
|
1481
|
-
structuredContent: {
|
|
1482
|
-
fileName: string | undefined;
|
|
1483
|
-
fileType: string;
|
|
1484
|
-
fileSize: number;
|
|
1485
|
-
contentDelivery: "text" | "image" | "embedded_resource";
|
|
1486
|
-
};
|
|
1487
1464
|
contentItems: import('@modelcontextprotocol/sdk/types.js').ContentBlock[];
|
|
1488
1465
|
}>;
|
|
1489
1466
|
};
|
|
@@ -2171,8 +2148,8 @@ declare const tools: {
|
|
|
2171
2148
|
start: import('zod').ZodString;
|
|
2172
2149
|
end: import('zod').ZodString;
|
|
2173
2150
|
}, import('zod/v4/core').$strip>;
|
|
2174
|
-
vacationMode: import('zod').
|
|
2175
|
-
karmaDisabled: import('zod').
|
|
2151
|
+
vacationMode: import('zod').ZodBoolean;
|
|
2152
|
+
karmaDisabled: import('zod').ZodBoolean;
|
|
2176
2153
|
}, import('zod/v4/core').$strip>;
|
|
2177
2154
|
karma: import('zod').ZodNumber;
|
|
2178
2155
|
karmaTrend: import('zod').ZodString;
|
|
@@ -2250,8 +2227,8 @@ declare const tools: {
|
|
|
2250
2227
|
start: string;
|
|
2251
2228
|
end: string;
|
|
2252
2229
|
};
|
|
2253
|
-
vacationMode:
|
|
2254
|
-
karmaDisabled:
|
|
2230
|
+
vacationMode: boolean;
|
|
2231
|
+
karmaDisabled: boolean;
|
|
2255
2232
|
};
|
|
2256
2233
|
karma: number;
|
|
2257
2234
|
karmaTrend: string;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC/F,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EACH,wBAAwB,EACxB,KAAK,+BAA+B,EACvC,MAAM,6CAA6C,CAAA;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAErD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAA;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAEnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAA;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAA;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAA;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAA;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAA;AAExE,QAAA,MAAM,KAAK
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC/F,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EACH,wBAAwB,EACxB,KAAK,+BAA+B,EACvC,MAAM,6CAA6C,CAAA;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAErD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAA;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAEnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAA;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAA;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAA;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAA;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAA;AAExE,QAAA,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsDV,CAAA;AAED,OAAO,EAEH,WAAW,EACX,UAAU,EAEV,SAAS,EAET,WAAW,EAEX,WAAW,EAEX,QAAQ,EACR,oBAAoB,EACpB,aAAa,EACb,YAAY,EACZ,aAAa,EACb,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,EAEL,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAElB,WAAW,EACX,UAAU,EAEV,wBAAwB,EACxB,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,eAAe,EACf,YAAY,EAEZ,WAAW,EACX,oBAAoB,EACpB,uBAAuB,EAEvB,gBAAgB,EAChB,oBAAoB,EAEpB,cAAc,EACd,iBAAiB,EACjB,cAAc,EAEd,wBAAwB,EACxB,KAAK,+BAA+B,EACpC,eAAe,EAEf,MAAM,EACN,KAAK,EACL,eAAe,EACf,cAAc,EACd,aAAa,EACb,YAAY,EACZ,cAAc,EACd,cAAc,EACd,WAAW,EACX,QAAQ,EAER,oBAAoB,EAEpB,cAAc,GACjB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { f as s, s as a, l as e, m as t, a as o, u as d, r, d as i, b as n, c, e as l, h as m, i as p, j as f, k, n as T, o as u, p as g, q as j, t as v, v as h, w as P, x as b, y as A, z as S, A as y, B as C, C as F, D as x, E, F as L, G as O, H as w, I as H, J as I, K as M, L as q, M as z, N as B } from "./mcp-server-
|
|
2
|
-
import { O as J, g as K } from "./mcp-server-
|
|
3
|
-
import { r as U, v as V } from "./require-valid-todoist-token-
|
|
1
|
+
import { f as s, s as a, l as e, m as t, a as o, u as d, r, d as i, b as n, c, e as l, h as m, i as p, j as f, k, n as T, o as u, p as g, q as j, t as v, v as h, w as P, x as b, y as A, z as S, A as y, B as C, C as F, D as x, E, F as L, G as O, H as w, I as H, J as I, K as M, L as q, M as z, N as B } from "./mcp-server-mgPWVnTW.js";
|
|
2
|
+
import { O as J, g as K } from "./mcp-server-mgPWVnTW.js";
|
|
3
|
+
import { r as U, v as V } from "./require-valid-todoist-token-DlP0RT-l.js";
|
|
4
4
|
const N = {
|
|
5
5
|
// Task management tools
|
|
6
6
|
addTasks: B,
|
package/dist/main-http.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import { StreamableHTTPServerTransport as i } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
|
|
3
3
|
import p from "dotenv";
|
|
4
4
|
import c from "express";
|
|
5
|
-
import { g as l } from "./mcp-server-
|
|
6
|
-
import { r as d } from "./require-valid-todoist-token-
|
|
5
|
+
import { g as l } from "./mcp-server-mgPWVnTW.js";
|
|
6
|
+
import { r as d } from "./require-valid-todoist-token-DlP0RT-l.js";
|
|
7
7
|
p.config({ quiet: !0 });
|
|
8
8
|
const s = Number.parseInt(process.env.PORT || "3000", 10);
|
|
9
9
|
function m() {
|
package/dist/main.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { StdioServerTransport as s } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
3
3
|
import c from "dotenv";
|
|
4
|
-
import { g as i } from "./mcp-server-
|
|
4
|
+
import { g as i } from "./mcp-server-mgPWVnTW.js";
|
|
5
5
|
function p() {
|
|
6
6
|
const e = process.env.TODOIST_BASE_URL, r = process.env.TODOIST_API_KEY;
|
|
7
7
|
if (!r)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isWorkspaceProject as me, isPersonalProject as ne, colors as xe, LOCATION_TRIGGERS as pt, REMINDER_TYPES as Ht, createCommand as
|
|
1
|
+
import { isWorkspaceProject as me, isPersonalProject as ne, colors as xe, LOCATION_TRIGGERS as pt, REMINDER_TYPES as Ht, createCommand as z, REMINDER_DELIVERY_SERVICES as Wt, HEALTH_STATUSES as _e, getTaskUrl as mt, getProjectUrl as ht, WORKSPACE_ROLES as Bt, WORKSPACE_PLANS as Yt, TodoistApi as zt } from "@doist/todoist-sdk";
|
|
2
2
|
import { McpServer as Gt } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
3
|
import { createHash as qt } from "node:crypto";
|
|
4
4
|
import { readFileSync as Kt } from "node:fs";
|
|
@@ -70,7 +70,7 @@ function G(e) {
|
|
|
70
70
|
function Oe(...e) {
|
|
71
71
|
return e.find(G);
|
|
72
72
|
}
|
|
73
|
-
function
|
|
73
|
+
function _(...e) {
|
|
74
74
|
return e.find((t) => t !== void 0);
|
|
75
75
|
}
|
|
76
76
|
function E(e) {
|
|
@@ -112,7 +112,7 @@ function je(e) {
|
|
|
112
112
|
if (t?.[1])
|
|
113
113
|
return E(t[1]);
|
|
114
114
|
}
|
|
115
|
-
function
|
|
115
|
+
function Y(e) {
|
|
116
116
|
const t = k(e);
|
|
117
117
|
if (t)
|
|
118
118
|
return U(t);
|
|
@@ -122,7 +122,7 @@ function z(e) {
|
|
|
122
122
|
}
|
|
123
123
|
if (!G(e))
|
|
124
124
|
return;
|
|
125
|
-
const r =
|
|
125
|
+
const r = _(
|
|
126
126
|
k(e.detail),
|
|
127
127
|
k(e.details),
|
|
128
128
|
k(e.message),
|
|
@@ -144,7 +144,7 @@ function cs(e) {
|
|
|
144
144
|
return [];
|
|
145
145
|
const t = /* @__PURE__ */ new Set(), r = (i) => {
|
|
146
146
|
i && t.add(U(i, 120));
|
|
147
|
-
}, o =
|
|
147
|
+
}, o = _(
|
|
148
148
|
k(e.field),
|
|
149
149
|
k(e.parameter),
|
|
150
150
|
k(e.param),
|
|
@@ -158,7 +158,7 @@ function cs(e) {
|
|
|
158
158
|
e.error_extra
|
|
159
159
|
);
|
|
160
160
|
if (n) {
|
|
161
|
-
const i =
|
|
161
|
+
const i = _(
|
|
162
162
|
k(n.field),
|
|
163
163
|
k(n.parameter),
|
|
164
164
|
k(n.param),
|
|
@@ -174,13 +174,13 @@ function cs(e) {
|
|
|
174
174
|
r(k(i));
|
|
175
175
|
continue;
|
|
176
176
|
}
|
|
177
|
-
const c =
|
|
177
|
+
const c = _(
|
|
178
178
|
k(i.field),
|
|
179
179
|
k(i.parameter),
|
|
180
180
|
k(i.param),
|
|
181
181
|
k(i.path),
|
|
182
182
|
k(i.name)
|
|
183
|
-
), d =
|
|
183
|
+
), d = _(
|
|
184
184
|
k(i.message),
|
|
185
185
|
k(i.error),
|
|
186
186
|
k(i.detail),
|
|
@@ -226,7 +226,7 @@ function ps(e) {
|
|
|
226
226
|
t?.data,
|
|
227
227
|
r?.responseData,
|
|
228
228
|
r?.data
|
|
229
|
-
), a =
|
|
229
|
+
), a = _(
|
|
230
230
|
E(t?.httpStatusCode),
|
|
231
231
|
E(t?.statusCode),
|
|
232
232
|
E(t?.status),
|
|
@@ -239,14 +239,14 @@ function ps(e) {
|
|
|
239
239
|
je(k(t?.message)),
|
|
240
240
|
je(k(r?.message)),
|
|
241
241
|
je(typeof e == "string" ? e : void 0)
|
|
242
|
-
), i =
|
|
242
|
+
), i = _(
|
|
243
243
|
Q(n?.errorCode),
|
|
244
244
|
Q(n?.error_code),
|
|
245
245
|
Q(n?.code),
|
|
246
246
|
Q(t?.errorCode),
|
|
247
247
|
Q(t?.error_code),
|
|
248
248
|
Q(t?.code)
|
|
249
|
-
), c =
|
|
249
|
+
), c = _(
|
|
250
250
|
k(n?.errorTag),
|
|
251
251
|
k(n?.error_tag),
|
|
252
252
|
k(n?.tag),
|
|
@@ -256,17 +256,17 @@ function ps(e) {
|
|
|
256
256
|
), d = [
|
|
257
257
|
k(n?.error),
|
|
258
258
|
k(n?.message),
|
|
259
|
-
|
|
259
|
+
Y(n?.message),
|
|
260
260
|
k(t?.message),
|
|
261
261
|
k(r?.message),
|
|
262
262
|
e instanceof Error ? e.message : k(e)
|
|
263
|
-
].filter((h) => !!h), l = d.find((h) => !et(h)) || d[0], u =
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
263
|
+
].filter((h) => !!h), l = d.find((h) => !et(h)) || d[0], u = _(
|
|
264
|
+
Y(n?.errorExtra),
|
|
265
|
+
Y(n?.error_extra),
|
|
266
|
+
Y(n?.details),
|
|
267
|
+
Y(n?.errorDetails),
|
|
268
|
+
Y(n?.errors),
|
|
269
|
+
Y(t?.details)
|
|
270
270
|
), p = cs(n);
|
|
271
271
|
return a !== void 0 || ls(n) || c !== void 0 || i !== void 0 || (l ? et(l) : !1) ? {
|
|
272
272
|
statusCode: a,
|
|
@@ -421,7 +421,7 @@ const f = {
|
|
|
421
421
|
// OpenAI MCP tools
|
|
422
422
|
SEARCH: "search",
|
|
423
423
|
FETCH: "fetch"
|
|
424
|
-
},
|
|
424
|
+
}, Gi = {
|
|
425
425
|
/**
|
|
426
426
|
* Strips email addresses from tool outputs that expose user data.
|
|
427
427
|
* Affects: find-project-collaborators, find-completed-tasks
|
|
@@ -500,7 +500,7 @@ function y({
|
|
|
500
500
|
}, i = {
|
|
501
501
|
description: e.description,
|
|
502
502
|
inputSchema: e.parameters,
|
|
503
|
-
outputSchema: e.outputSchema,
|
|
503
|
+
...e.outputSchema ? { outputSchema: e.outputSchema } : {},
|
|
504
504
|
annotations: Ds(e),
|
|
505
505
|
...e._meta ? { _meta: e._meta } : {}
|
|
506
506
|
};
|
|
@@ -574,7 +574,7 @@ function Ps(e, t = /* @__PURE__ */ new Date()) {
|
|
|
574
574
|
}
|
|
575
575
|
}
|
|
576
576
|
}
|
|
577
|
-
function
|
|
577
|
+
function Rs(e) {
|
|
578
578
|
const t = {
|
|
579
579
|
goals: `### Goal Tracking
|
|
580
580
|
- Compare tasks completed today vs the daily goal
|
|
@@ -605,7 +605,7 @@ function _s(e) {
|
|
|
605
605
|
|
|
606
606
|
`) : t[e] ?? "";
|
|
607
607
|
}
|
|
608
|
-
function
|
|
608
|
+
function _s(e) {
|
|
609
609
|
const { since: t, until: r, periodDescription: o } = Ps(e.period), n = e.projectId ? `
|
|
610
610
|
Scope this analysis to project ID: ${e.projectId}. Pass this projectId when calling find-completed-tasks and get-overview.` : "";
|
|
611
611
|
return `Analyze my Todoist productivity for ${o} (${t} to ${r}).${n}
|
|
@@ -627,7 +627,7 @@ ${e.focus === "overall" || e.focus === "projects" ? `4. **get-overview** — Get
|
|
|
627
627
|
|
|
628
628
|
Using the collected data, produce an analysis covering the following sections:
|
|
629
629
|
|
|
630
|
-
${
|
|
630
|
+
${Rs(e.focus)}
|
|
631
631
|
|
|
632
632
|
### Step 3: Format
|
|
633
633
|
|
|
@@ -644,7 +644,7 @@ function Ns(e) {
|
|
|
644
644
|
role: "user",
|
|
645
645
|
content: {
|
|
646
646
|
type: "text",
|
|
647
|
-
text:
|
|
647
|
+
text: _s(e)
|
|
648
648
|
}
|
|
649
649
|
}
|
|
650
650
|
]
|
|
@@ -901,7 +901,7 @@ function Tt({
|
|
|
901
901
|
}) {
|
|
902
902
|
return e && t ? `assigned to: ${t}` : r === "unassignedOrMe" ? "!assigned to: others" : r === "assigned" ? "assigned to: others" : "";
|
|
903
903
|
}
|
|
904
|
-
function
|
|
904
|
+
function Ys({
|
|
905
905
|
tasks: e,
|
|
906
906
|
resolvedAssigneeId: t,
|
|
907
907
|
currentUserId: r,
|
|
@@ -944,7 +944,7 @@ async function wt(e, t) {
|
|
|
944
944
|
limit: C.PROJECTS_MAX
|
|
945
945
|
});
|
|
946
946
|
}
|
|
947
|
-
async function
|
|
947
|
+
async function zs(e, t) {
|
|
948
948
|
return q({
|
|
949
949
|
apiMethod: e.searchLabels.bind(e),
|
|
950
950
|
args: { query: Fe(t) },
|
|
@@ -1303,7 +1303,7 @@ const cr = {
|
|
|
1303
1303
|
search: s.string().optional().describe(
|
|
1304
1304
|
"Search for a filter by name (partial and case insensitive match). If omitted, all filters are returned."
|
|
1305
1305
|
)
|
|
1306
|
-
},
|
|
1306
|
+
}, Ye = s.object({
|
|
1307
1307
|
id: s.string().describe("The unique ID of the filter."),
|
|
1308
1308
|
name: s.string().describe("The name of the filter."),
|
|
1309
1309
|
query: s.string().describe('The filter query string (e.g. "today & p1", "#Work & overdue").'),
|
|
@@ -1311,7 +1311,7 @@ const cr = {
|
|
|
1311
1311
|
isFavorite: s.boolean().describe("Whether the filter is marked as favorite."),
|
|
1312
1312
|
itemOrder: s.number().describe("The display order of the filter.")
|
|
1313
1313
|
}), dr = {
|
|
1314
|
-
filters: s.array(
|
|
1314
|
+
filters: s.array(Ye).describe("The found filters."),
|
|
1315
1315
|
totalCount: s.number().describe("The total number of filters returned.")
|
|
1316
1316
|
}, lr = {
|
|
1317
1317
|
name: f.FIND_FILTERS,
|
|
@@ -1374,7 +1374,7 @@ const pr = s.object({
|
|
|
1374
1374
|
}), mr = {
|
|
1375
1375
|
filters: s.array(pr).min(1).describe("The array of filters to add.")
|
|
1376
1376
|
}, hr = {
|
|
1377
|
-
filters: s.array(
|
|
1377
|
+
filters: s.array(Ye).describe("The created filters."),
|
|
1378
1378
|
totalCount: s.number().describe("The total number of filters created.")
|
|
1379
1379
|
}, fr = {
|
|
1380
1380
|
name: f.ADD_FILTERS,
|
|
@@ -1383,7 +1383,7 @@ const pr = s.object({
|
|
|
1383
1383
|
outputSchema: hr,
|
|
1384
1384
|
annotations: { readOnlyHint: !1, destructiveHint: !1, idempotentHint: !1 },
|
|
1385
1385
|
async execute({ filters: e }, t) {
|
|
1386
|
-
const r = Date.now(), o = e.map((p, m) => `tempFilterAdd${m}${r}`), n = e.map((p, m) =>
|
|
1386
|
+
const r = Date.now(), o = e.map((p, m) => `tempFilterAdd${m}${r}`), n = e.map((p, m) => z(
|
|
1387
1387
|
"filter_add",
|
|
1388
1388
|
{
|
|
1389
1389
|
name: p.name,
|
|
@@ -1602,7 +1602,7 @@ const he = 25, ke = s.enum(Wt), jt = s.object({
|
|
|
1602
1602
|
reminders: s.array(We).describe("The created reminders."),
|
|
1603
1603
|
totalCount: s.number().describe("Total number of reminders created."),
|
|
1604
1604
|
addedReminderIds: s.array(s.string()).describe("IDs of the created reminders.")
|
|
1605
|
-
},
|
|
1605
|
+
}, Rr = {
|
|
1606
1606
|
name: f.ADD_REMINDERS,
|
|
1607
1607
|
description: 'Add reminders to tasks. Supports three types: "relative" (minutes before due), "absolute" (specific date/time), or "location" (geofence-triggered). Each reminder must specify a taskId.',
|
|
1608
1608
|
parameters: Ur,
|
|
@@ -1639,7 +1639,7 @@ const he = 25, ke = s.enum(Wt), jt = s.object({
|
|
|
1639
1639
|
}
|
|
1640
1640
|
}), a = (await Promise.all(o)).map(ue);
|
|
1641
1641
|
return {
|
|
1642
|
-
textContent:
|
|
1642
|
+
textContent: _r(a),
|
|
1643
1643
|
structuredContent: {
|
|
1644
1644
|
reminders: a,
|
|
1645
1645
|
totalCount: a.length,
|
|
@@ -1648,7 +1648,7 @@ const he = 25, ke = s.enum(Wt), jt = s.object({
|
|
|
1648
1648
|
};
|
|
1649
1649
|
}
|
|
1650
1650
|
};
|
|
1651
|
-
function
|
|
1651
|
+
function _r(e) {
|
|
1652
1652
|
const { timeBasedCount: t, locationCount: r } = It(e), o = [];
|
|
1653
1653
|
if (t > 0) {
|
|
1654
1654
|
const n = t > 1 ? "reminders" : "reminder";
|
|
@@ -1922,7 +1922,7 @@ class Wr {
|
|
|
1922
1922
|
};
|
|
1923
1923
|
}
|
|
1924
1924
|
}
|
|
1925
|
-
const
|
|
1925
|
+
const ze = new Wr();
|
|
1926
1926
|
function re(e = /* @__PURE__ */ new Date()) {
|
|
1927
1927
|
const t = e.getFullYear(), r = String(e.getMonth() + 1).padStart(2, "0"), o = String(e.getDate()).padStart(2, "0");
|
|
1928
1928
|
return `${t}-${r}-${o}`;
|
|
@@ -1961,11 +1961,11 @@ function Br(e) {
|
|
|
1961
1961
|
const t = e.content || e.title || "Untitled", r = e.dueDate ? ` • due ${e.dueDate}` : "", o = e.priority ? ` • ${e.priority.toUpperCase()}` : "", n = e.projectName ? ` • ${e.projectName}` : "", a = e.id ? ` • id=${e.id}` : "";
|
|
1962
1962
|
return ` ${t}${r}${o}${n}${a}`;
|
|
1963
1963
|
}
|
|
1964
|
-
function
|
|
1964
|
+
function Yr(e) {
|
|
1965
1965
|
const t = ` (${e.color})`, r = e.isFavorite ? " • ⭐" : "", o = ` • id=${e.id}`;
|
|
1966
1966
|
return ` ${e.name}${t}${r}${o}`;
|
|
1967
1967
|
}
|
|
1968
|
-
function
|
|
1968
|
+
function zr(e) {
|
|
1969
1969
|
const t = e.inboxProject ? " • Inbox" : "", r = e.isFavorite ? " • ⭐" : "", o = e.isShared ? " • Shared" : "", n = e.viewStyle && e.viewStyle !== "list" ? ` • ${e.viewStyle}` : "", a = ` • id=${e.id}`;
|
|
1970
1970
|
return ` ${e.name}${t}${r}${o}${n}${a}`;
|
|
1971
1971
|
}
|
|
@@ -2158,7 +2158,7 @@ async function Jr(e, t) {
|
|
|
2158
2158
|
throw new Error(
|
|
2159
2159
|
`Task "${e.content}": Cannot determine target project for assignment validation`
|
|
2160
2160
|
);
|
|
2161
|
-
const I = await
|
|
2161
|
+
const I = await ze.validateTaskCreationAssignment(
|
|
2162
2162
|
t,
|
|
2163
2163
|
b,
|
|
2164
2164
|
c
|
|
@@ -2205,7 +2205,7 @@ const Zr = {
|
|
|
2205
2205
|
}, Qr = {
|
|
2206
2206
|
projectId: s.string().describe("The project ID."),
|
|
2207
2207
|
health: s.object({
|
|
2208
|
-
status: s.enum(
|
|
2208
|
+
status: s.enum(_e).describe("The health status after triggering analysis."),
|
|
2209
2209
|
isStale: s.boolean().describe("Whether the health data is still stale after the request."),
|
|
2210
2210
|
updateInProgress: s.boolean().describe("Whether an analysis update is currently in progress.")
|
|
2211
2211
|
}).describe("The health response returned after triggering analysis."),
|
|
@@ -2341,7 +2341,7 @@ const $t = [
|
|
|
2341
2341
|
break;
|
|
2342
2342
|
case "filter":
|
|
2343
2343
|
await t.sync({
|
|
2344
|
-
commands: [
|
|
2344
|
+
commands: [z("filter_delete", { id: e.id })]
|
|
2345
2345
|
});
|
|
2346
2346
|
break;
|
|
2347
2347
|
case "reminder":
|
|
@@ -2811,7 +2811,7 @@ const Eo = {
|
|
|
2811
2811
|
since: a,
|
|
2812
2812
|
until: i,
|
|
2813
2813
|
userGmtOffset: I
|
|
2814
|
-
}), N = `${D.since}T00:00:00${I}`, T = `${D.until}T23:59:59${I}`, g = new Date(N).toISOString(), S = new Date(T).toISOString(),
|
|
2814
|
+
}), N = `${D.since}T00:00:00${I}`, T = `${D.until}T23:59:59${I}`, g = new Date(N).toISOString(), S = new Date(T).toISOString(), R = {
|
|
2815
2815
|
...e,
|
|
2816
2816
|
since: D.since,
|
|
2817
2817
|
until: D.until
|
|
@@ -2831,7 +2831,7 @@ const Eo = {
|
|
|
2831
2831
|
return {
|
|
2832
2832
|
textContent: Po({
|
|
2833
2833
|
tasks: v,
|
|
2834
|
-
args:
|
|
2834
|
+
args: R,
|
|
2835
2835
|
nextCursor: j,
|
|
2836
2836
|
assigneeEmail: p
|
|
2837
2837
|
}),
|
|
@@ -2840,7 +2840,7 @@ const Eo = {
|
|
|
2840
2840
|
nextCursor: j ?? void 0,
|
|
2841
2841
|
totalCount: v.length,
|
|
2842
2842
|
hasMore: !!j,
|
|
2843
|
-
appliedFilters:
|
|
2843
|
+
appliedFilters: R
|
|
2844
2844
|
}
|
|
2845
2845
|
};
|
|
2846
2846
|
}
|
|
@@ -2871,7 +2871,7 @@ function Po({
|
|
|
2871
2871
|
zeroReasonHints: c
|
|
2872
2872
|
});
|
|
2873
2873
|
}
|
|
2874
|
-
const
|
|
2874
|
+
const Ro = {
|
|
2875
2875
|
searchText: s.string().optional().describe(
|
|
2876
2876
|
'Search for a label by name (partial and case insensitive match). Supports wildcards (e.g. "work*" for prefix match). Use "\\*" for a literal asterisk. If omitted, all labels are returned.'
|
|
2877
2877
|
),
|
|
@@ -2879,7 +2879,7 @@ const _o = {
|
|
|
2879
2879
|
cursor: s.string().optional().describe(
|
|
2880
2880
|
"The cursor to get the next page of labels (cursor is obtained from the previous call to this tool, with the same parameters). Ignored when searchText is provided."
|
|
2881
2881
|
)
|
|
2882
|
-
},
|
|
2882
|
+
}, _o = {
|
|
2883
2883
|
labels: s.array(de).describe("The found personal labels."),
|
|
2884
2884
|
nextCursor: s.string().optional().describe("Cursor for the next page of results."),
|
|
2885
2885
|
totalCount: s.number().describe("The total number of labels in this page."),
|
|
@@ -2891,12 +2891,12 @@ const _o = {
|
|
|
2891
2891
|
}, No = {
|
|
2892
2892
|
name: f.FIND_LABELS,
|
|
2893
2893
|
description: "List personal labels and shared labels. Personal labels have full metadata (id, name, color, order, isFavorite) and support pagination and name search (partial, case insensitive). Shared labels are labels used on tasks shared with you — they are returned as names only (no IDs or metadata). When searching, all matching personal labels are fetched across all pages and returned as a single result set (limit and cursor are ignored). When not searching, personal labels are returned with pagination.",
|
|
2894
|
-
parameters:
|
|
2895
|
-
outputSchema:
|
|
2894
|
+
parameters: Ro,
|
|
2895
|
+
outputSchema: _o,
|
|
2896
2896
|
annotations: { readOnlyHint: !0, destructiveHint: !1, idempotentHint: !0 },
|
|
2897
2897
|
async execute(e, t) {
|
|
2898
2898
|
const [r, o] = await Promise.all([
|
|
2899
|
-
e.searchText ?
|
|
2899
|
+
e.searchText ? zs(t, e.searchText).then((c) => ({
|
|
2900
2900
|
results: c,
|
|
2901
2901
|
nextCursor: null
|
|
2902
2902
|
})) : t.getLabels({ limit: e.limit, cursor: e.cursor ?? null }),
|
|
@@ -2923,7 +2923,7 @@ function Lo({
|
|
|
2923
2923
|
}) {
|
|
2924
2924
|
const n = t.searchText ? `All labels matching "${t.searchText}"` : "Labels", a = [];
|
|
2925
2925
|
t.searchText && a.push(`searchText: "${t.searchText}"`);
|
|
2926
|
-
const i = 10, d = e.slice(0, i).map(
|
|
2926
|
+
const i = 10, d = e.slice(0, i).map(Yr).join(`
|
|
2927
2927
|
`), l = e.length - i, u = l > 0 ? `${d}
|
|
2928
2928
|
…and ${l} more` : d, p = [];
|
|
2929
2929
|
e.length === 0 && (t.searchText ? (p.push("Try broader search terms"), p.push("Check spelling"), p.push("Remove searchText to see all labels")) : p.push("No personal labels created yet"));
|
|
@@ -3120,7 +3120,7 @@ function Pt({
|
|
|
3120
3120
|
nextSteps: u
|
|
3121
3121
|
});
|
|
3122
3122
|
}
|
|
3123
|
-
const { ADD_PROJECTS:
|
|
3123
|
+
const { ADD_PROJECTS: Yo } = f, zo = {
|
|
3124
3124
|
searchText: s.string().optional().describe(
|
|
3125
3125
|
'Search for a project by name (partial and case insensitive match). Supports wildcards (e.g. "work*" for prefix match). Use "\\*" for a literal asterisk. If omitted, all projects are returned.'
|
|
3126
3126
|
),
|
|
@@ -3137,7 +3137,7 @@ const { ADD_PROJECTS: zo } = f, Yo = {
|
|
|
3137
3137
|
}, qo = {
|
|
3138
3138
|
name: f.FIND_PROJECTS,
|
|
3139
3139
|
description: "List all projects or search for projects by name. When searching, all matching projects are returned (pagination is ignored). When not searching, projects are returned with pagination.",
|
|
3140
|
-
parameters:
|
|
3140
|
+
parameters: zo,
|
|
3141
3141
|
outputSchema: Go,
|
|
3142
3142
|
annotations: { readOnlyHint: !0, destructiveHint: !1, idempotentHint: !0 },
|
|
3143
3143
|
async execute(e, t) {
|
|
@@ -3171,10 +3171,10 @@ function Ko({
|
|
|
3171
3171
|
}) {
|
|
3172
3172
|
const o = t.searchText ? `All projects matching "${t.searchText}"` : "Projects", n = [];
|
|
3173
3173
|
t.searchText && n.push(`searchText: "${t.searchText}"`);
|
|
3174
|
-
const a = 10, c = e.slice(0, a).map(
|
|
3174
|
+
const a = 10, c = e.slice(0, a).map(zr).join(`
|
|
3175
3175
|
`), d = e.length - a, l = d > 0 ? `${c}
|
|
3176
3176
|
…and ${d} more` : c, u = [];
|
|
3177
|
-
return e.length === 0 && (t.searchText ? (u.push("Try broader search terms"), u.push("Check spelling"), u.push("Remove searchText to see all projects")) : (u.push("No projects created yet"), u.push(`Use ${
|
|
3177
|
+
return e.length === 0 && (t.searchText ? (u.push("Try broader search terms"), u.push("Check spelling"), u.push("Remove searchText to see all projects")) : (u.push("No projects created yet"), u.push(`Use ${Yo} to create a project`))), W({
|
|
3178
3178
|
subject: o,
|
|
3179
3179
|
count: e.length,
|
|
3180
3180
|
limit: t.searchText ? void 0 : t.limit,
|
|
@@ -3328,7 +3328,7 @@ function rn({
|
|
|
3328
3328
|
zeroReasonHints: o
|
|
3329
3329
|
});
|
|
3330
3330
|
}
|
|
3331
|
-
function
|
|
3331
|
+
function Rt(e) {
|
|
3332
3332
|
return /* @__PURE__ */ new Date(`${e}T00:00:00`);
|
|
3333
3333
|
}
|
|
3334
3334
|
const on = {
|
|
@@ -3378,7 +3378,7 @@ const on = {
|
|
|
3378
3378
|
} else
|
|
3379
3379
|
a = e.overdueOption === "exclude-overdue" ? "today" : "(today | overdue)";
|
|
3380
3380
|
else if (e.startDate) {
|
|
3381
|
-
const p = e.startDate, m = Ae(
|
|
3381
|
+
const p = e.startDate, m = Ae(Rt(p), e.daysCount), h = Xe(m, { representation: "date" });
|
|
3382
3382
|
a = `(due after: ${p} | due: ${p}) & due before: ${h}`;
|
|
3383
3383
|
}
|
|
3384
3384
|
const i = Ve(e.labels, e.labelsOperator);
|
|
@@ -3422,7 +3422,7 @@ function cn({
|
|
|
3422
3422
|
`today${c}${t.daysCount > 1 ? ` + ${t.daysCount - 1} more days` : ""}`
|
|
3423
3423
|
);
|
|
3424
3424
|
} else if (t.startDate) {
|
|
3425
|
-
const c = t.daysCount > 1 ? ` to ${re(Ae(
|
|
3425
|
+
const c = t.daysCount > 1 ? ` to ${re(Ae(Rt(t.startDate), t.daysCount))}` : "";
|
|
3426
3426
|
n.push(`${t.startDate}${c}`);
|
|
3427
3427
|
}
|
|
3428
3428
|
if (t.labels && t.labels.length > 0) {
|
|
@@ -3594,7 +3594,7 @@ const un = new ln(), { FIND_COMPLETED_TASKS: nt, ADD_TASKS: at } = f, pn = {
|
|
|
3594
3594
|
let M = r ? Ie.filter(
|
|
3595
3595
|
(X) => X.content.toLowerCase().includes(r.toLowerCase()) || X.description?.toLowerCase().includes(r.toLowerCase())
|
|
3596
3596
|
) : Ie;
|
|
3597
|
-
return M =
|
|
3597
|
+
return M = Ys({
|
|
3598
3598
|
tasks: M,
|
|
3599
3599
|
resolvedAssigneeId: N,
|
|
3600
3600
|
currentUserId: b.id,
|
|
@@ -3747,7 +3747,7 @@ const bn = {
|
|
|
3747
3747
|
projectId: s.string().min(1).optional().describe(
|
|
3748
3748
|
"Optional project ID. If provided, shows detailed overview of that project. If omitted, shows overview of all projects."
|
|
3749
3749
|
)
|
|
3750
|
-
},
|
|
3750
|
+
}, _t = s.lazy(
|
|
3751
3751
|
() => s.object({
|
|
3752
3752
|
id: s.string().describe("The project ID."),
|
|
3753
3753
|
name: s.string().describe("The project name."),
|
|
@@ -3760,7 +3760,7 @@ const bn = {
|
|
|
3760
3760
|
name: s.string()
|
|
3761
3761
|
})
|
|
3762
3762
|
),
|
|
3763
|
-
children: s.array(
|
|
3763
|
+
children: s.array(_t).describe("Nested child projects.")
|
|
3764
3764
|
})
|
|
3765
3765
|
), gn = {
|
|
3766
3766
|
type: s.enum(["account_overview", "project_overview"]).describe("The type of overview returned."),
|
|
@@ -3786,7 +3786,7 @@ const bn = {
|
|
|
3786
3786
|
})
|
|
3787
3787
|
).describe("Sections in the inbox project.")
|
|
3788
3788
|
}).nullable().optional().describe("Inbox information (account overview only)."),
|
|
3789
|
-
projects: s.array(s.lazy(() =>
|
|
3789
|
+
projects: s.array(s.lazy(() => _t)).optional().describe(
|
|
3790
3790
|
"List of projects with hierarchy, folders, and ordering (account overview only)."
|
|
3791
3791
|
),
|
|
3792
3792
|
project: s.object({
|
|
@@ -3867,11 +3867,11 @@ function it(e) {
|
|
|
3867
3867
|
}
|
|
3868
3868
|
return r;
|
|
3869
3869
|
}
|
|
3870
|
-
function
|
|
3870
|
+
function Re(e, t = "") {
|
|
3871
3871
|
const r = [];
|
|
3872
3872
|
for (const o of e) {
|
|
3873
3873
|
const n = `id=${o.id}`, a = o.dueDate ? `; due=${o.dueDate}` : "", i = `; content=${o.content}`;
|
|
3874
|
-
r.push(`${t}- ${n}${a}${i}`), o.children.length > 0 && r.push(...
|
|
3874
|
+
r.push(`${t}- ${n}${a}${i}`), o.children.length > 0 && r.push(...Re(o.children, `${t} `));
|
|
3875
3875
|
}
|
|
3876
3876
|
return r;
|
|
3877
3877
|
}
|
|
@@ -3957,7 +3957,7 @@ async function vn(e, t) {
|
|
|
3957
3957
|
if (i.length > 0) {
|
|
3958
3958
|
c.push("");
|
|
3959
3959
|
const u = it(i);
|
|
3960
|
-
c.push(...
|
|
3960
|
+
c.push(...Re(u));
|
|
3961
3961
|
}
|
|
3962
3962
|
for (const u of o) {
|
|
3963
3963
|
c.push(""), c.push(`## ${u.name}`);
|
|
@@ -3965,7 +3965,7 @@ async function vn(e, t) {
|
|
|
3965
3965
|
if (!p?.length)
|
|
3966
3966
|
continue;
|
|
3967
3967
|
const m = it(p);
|
|
3968
|
-
c.push(...
|
|
3968
|
+
c.push(...Re(m));
|
|
3969
3969
|
}
|
|
3970
3970
|
const d = c.join(`
|
|
3971
3971
|
`), l = {
|
|
@@ -4034,8 +4034,8 @@ const jn = {
|
|
|
4034
4034
|
lastWeeklyStreak: se.describe("Previous weekly goal streak."),
|
|
4035
4035
|
maxDailyStreak: se.describe("Best daily goal streak ever."),
|
|
4036
4036
|
maxWeeklyStreak: se.describe("Best weekly goal streak ever."),
|
|
4037
|
-
vacationMode: s.
|
|
4038
|
-
karmaDisabled: s.
|
|
4037
|
+
vacationMode: s.boolean().describe("Whether vacation mode is enabled."),
|
|
4038
|
+
karmaDisabled: s.boolean().describe("Whether karma tracking is disabled.")
|
|
4039
4039
|
}).describe("Goal and streak information."),
|
|
4040
4040
|
karma: s.number().describe("Current karma score."),
|
|
4041
4041
|
karmaTrend: s.string().describe('Karma trend direction (e.g., "up" or "down").'),
|
|
@@ -4195,7 +4195,7 @@ const On = {
|
|
|
4195
4195
|
}, Pn = s.object({
|
|
4196
4196
|
taskId: s.string().describe("The ID of the task this recommendation is for."),
|
|
4197
4197
|
recommendation: s.string().describe("The recommendation for this task.")
|
|
4198
|
-
}),
|
|
4198
|
+
}), Rn = s.object({
|
|
4199
4199
|
id: s.string().describe("The task ID."),
|
|
4200
4200
|
content: s.string().describe("The task content/title."),
|
|
4201
4201
|
priority: s.string().describe("The task priority (1-4)."),
|
|
@@ -4203,7 +4203,7 @@ const On = {
|
|
|
4203
4203
|
deadline: s.string().nullable().optional().describe("The deadline date string, if set."),
|
|
4204
4204
|
isCompleted: s.boolean().describe("Whether the task is completed."),
|
|
4205
4205
|
labels: s.array(s.string()).describe("Labels applied to this task.")
|
|
4206
|
-
}),
|
|
4206
|
+
}), _n = {
|
|
4207
4207
|
projectId: s.string().describe("The project ID."),
|
|
4208
4208
|
projectName: s.string().describe("The project name."),
|
|
4209
4209
|
progress: s.object({
|
|
@@ -4212,7 +4212,7 @@ const On = {
|
|
|
4212
4212
|
progressPercent: s.number().describe("Completion percentage (0-100).")
|
|
4213
4213
|
}).describe("Project completion progress."),
|
|
4214
4214
|
health: s.object({
|
|
4215
|
-
status: s.enum(
|
|
4215
|
+
status: s.enum(_e).describe("The overall health status of the project."),
|
|
4216
4216
|
description: s.string().nullable().optional().describe("Detailed description of the health assessment."),
|
|
4217
4217
|
descriptionSummary: s.string().nullable().optional().describe("Brief summary of the health assessment."),
|
|
4218
4218
|
taskRecommendations: s.array(Pn).nullable().optional().describe("Specific recommendations for individual tasks."),
|
|
@@ -4230,7 +4230,7 @@ const On = {
|
|
|
4230
4230
|
tasksCompletedThisWeek: s.number().describe("Tasks completed in the current week."),
|
|
4231
4231
|
averageCompletionTime: s.number().nullable().describe("Average task completion time in days, if available.")
|
|
4232
4232
|
}).describe("Aggregated project metrics."),
|
|
4233
|
-
tasks: s.array(
|
|
4233
|
+
tasks: s.array(Rn).describe("Tasks in the project.")
|
|
4234
4234
|
}).optional().describe(
|
|
4235
4235
|
"Detailed project context with metrics and task data. Only included when includeContext is true."
|
|
4236
4236
|
)
|
|
@@ -4277,7 +4277,7 @@ const Mn = {
|
|
|
4277
4277
|
name: f.GET_PROJECT_HEALTH,
|
|
4278
4278
|
description: "Get a comprehensive health assessment for a project including completion progress, health status (EXCELLENT, ON_TRACK, AT_RISK, CRITICAL), and optional detailed context with project metrics and task-level recommendations. Use includeContext=true for full detail including task data.",
|
|
4279
4279
|
parameters: Un,
|
|
4280
|
-
outputSchema:
|
|
4280
|
+
outputSchema: _n,
|
|
4281
4281
|
annotations: {
|
|
4282
4282
|
readOnlyHint: !0,
|
|
4283
4283
|
destructiveHint: !1,
|
|
@@ -4328,7 +4328,7 @@ const Mn = {
|
|
|
4328
4328
|
}, Hn = s.object({
|
|
4329
4329
|
projectId: s.string().describe("The project ID."),
|
|
4330
4330
|
health: s.object({
|
|
4331
|
-
status: s.enum(
|
|
4331
|
+
status: s.enum(_e).describe("The health status of the project."),
|
|
4332
4332
|
isStale: s.boolean().describe("Whether the health data is stale."),
|
|
4333
4333
|
updateInProgress: s.boolean().describe("Whether a health analysis update is in progress.")
|
|
4334
4334
|
}).nullable().describe("Health data for this project, if available."),
|
|
@@ -4386,10 +4386,10 @@ const Mn = {
|
|
|
4386
4386
|
}
|
|
4387
4387
|
};
|
|
4388
4388
|
}
|
|
4389
|
-
},
|
|
4389
|
+
}, Yn = {}, zn = {
|
|
4390
4390
|
id: s.string().describe("The unique identifier for the workspace."),
|
|
4391
4391
|
name: s.string().describe("The name of the workspace."),
|
|
4392
|
-
plan: s.enum(
|
|
4392
|
+
plan: s.enum(Yt).describe("The workspace plan type."),
|
|
4393
4393
|
role: s.enum(Bt).optional().describe("The user's role in the workspace, if available."),
|
|
4394
4394
|
isLinkSharingEnabled: s.boolean().describe("Whether link sharing is enabled for the workspace."),
|
|
4395
4395
|
isGuestAllowed: s.boolean().describe("Whether guests are allowed in the workspace."),
|
|
@@ -4397,7 +4397,7 @@ const Mn = {
|
|
|
4397
4397
|
creatorId: s.string().describe("The ID of the user who created the workspace.")
|
|
4398
4398
|
}, Gn = {
|
|
4399
4399
|
type: s.literal("workspaces").describe("The type of the response."),
|
|
4400
|
-
workspaces: s.array(s.object(
|
|
4400
|
+
workspaces: s.array(s.object(zn)).describe("List of workspaces."),
|
|
4401
4401
|
count: s.number().describe("The total number of workspaces.")
|
|
4402
4402
|
};
|
|
4403
4403
|
async function qn(e) {
|
|
@@ -4434,7 +4434,7 @@ async function qn(e) {
|
|
|
4434
4434
|
const Kn = {
|
|
4435
4435
|
name: f.LIST_WORKSPACES,
|
|
4436
4436
|
description: "Get all workspaces for the authenticated user. Returns workspace details including ID, name, plan type (STARTER/BUSINESS), user role (ADMIN/MEMBER/GUEST), link sharing settings, guest permissions, creation date, and creator ID.",
|
|
4437
|
-
parameters:
|
|
4437
|
+
parameters: Yn,
|
|
4438
4438
|
outputSchema: Gn,
|
|
4439
4439
|
annotations: { readOnlyHint: !0, destructiveHint: !1, idempotentHint: !0 },
|
|
4440
4440
|
async execute(e, t) {
|
|
@@ -4576,7 +4576,7 @@ const Kn = {
|
|
|
4576
4576
|
}
|
|
4577
4577
|
};
|
|
4578
4578
|
}
|
|
4579
|
-
const m = await
|
|
4579
|
+
const m = await ze.validateBulkAssignment(
|
|
4580
4580
|
t,
|
|
4581
4581
|
p
|
|
4582
4582
|
), h = [], b = [];
|
|
@@ -4606,7 +4606,7 @@ const Kn = {
|
|
|
4606
4606
|
newAssigneeId: j.resolvedUser.userId
|
|
4607
4607
|
};
|
|
4608
4608
|
});
|
|
4609
|
-
const
|
|
4609
|
+
const R = S.map(
|
|
4610
4610
|
async ({ assignment: w, validation: j }) => {
|
|
4611
4611
|
const v = d.find((x) => x.id === w.taskId);
|
|
4612
4612
|
if (!w.taskId || !j.resolvedUser?.userId)
|
|
@@ -4635,7 +4635,7 @@ const Kn = {
|
|
|
4635
4635
|
}
|
|
4636
4636
|
}
|
|
4637
4637
|
);
|
|
4638
|
-
return Promise.all(
|
|
4638
|
+
return Promise.all(R);
|
|
4639
4639
|
}
|
|
4640
4640
|
const $ = await I(h, !i), D = [...$, ...b, ...l];
|
|
4641
4641
|
if (D.length > 0 && D.every((T) => !T.success)) {
|
|
@@ -4817,7 +4817,7 @@ const ta = {
|
|
|
4817
4817
|
for (const p of i) {
|
|
4818
4818
|
const m = p.parentId;
|
|
4819
4819
|
a.push(
|
|
4820
|
-
|
|
4820
|
+
z("project_move", {
|
|
4821
4821
|
id: p.id,
|
|
4822
4822
|
parentId: m === "root" ? null : m
|
|
4823
4823
|
})
|
|
@@ -4827,14 +4827,14 @@ const ta = {
|
|
|
4827
4827
|
(p) => p.order !== void 0
|
|
4828
4828
|
);
|
|
4829
4829
|
c.length > 0 && (r === "project" ? a.push(
|
|
4830
|
-
|
|
4830
|
+
z("project_reorder", {
|
|
4831
4831
|
projects: c.map((p) => ({
|
|
4832
4832
|
id: p.id,
|
|
4833
4833
|
childOrder: p.order
|
|
4834
4834
|
}))
|
|
4835
4835
|
})
|
|
4836
4836
|
) : a.push(
|
|
4837
|
-
|
|
4837
|
+
z("section_reorder", {
|
|
4838
4838
|
sections: c.map((p) => ({
|
|
4839
4839
|
id: p.id,
|
|
4840
4840
|
sectionOrder: p.order
|
|
@@ -4888,7 +4888,7 @@ const ta = {
|
|
|
4888
4888
|
`Task "${l.content}" (${l.id}) has no due date. Rescheduling requires an existing due date.`
|
|
4889
4889
|
);
|
|
4890
4890
|
const u = ha(d.date, l.due);
|
|
4891
|
-
return
|
|
4891
|
+
return z("item_update", {
|
|
4892
4892
|
id: d.id,
|
|
4893
4893
|
due: {
|
|
4894
4894
|
date: u,
|
|
@@ -5083,7 +5083,7 @@ const $a = s.object({
|
|
|
5083
5083
|
}), Da = {
|
|
5084
5084
|
filters: s.array($a).min(1).describe("The filters to update.")
|
|
5085
5085
|
}, xa = {
|
|
5086
|
-
filters: s.array(
|
|
5086
|
+
filters: s.array(Ye).describe("The updated filters."),
|
|
5087
5087
|
totalCount: s.number().describe("The total number of filters updated."),
|
|
5088
5088
|
updatedFilterIds: s.array(s.string()).describe("The IDs of the updated filters."),
|
|
5089
5089
|
appliedOperations: s.object({
|
|
@@ -5113,7 +5113,7 @@ const $a = s.object({
|
|
|
5113
5113
|
};
|
|
5114
5114
|
const i = o.map((m) => {
|
|
5115
5115
|
const { id: h, color: b, ...I } = m;
|
|
5116
|
-
return
|
|
5116
|
+
return z("filter_update", {
|
|
5117
5117
|
id: h,
|
|
5118
5118
|
...I,
|
|
5119
5119
|
...b !== void 0 ? { color: b } : {}
|
|
@@ -5172,11 +5172,11 @@ const Ua = s.object({
|
|
|
5172
5172
|
),
|
|
5173
5173
|
name: s.string().min(1).describe("The current name of the shared label."),
|
|
5174
5174
|
newName: s.string().min(1).describe("The new name for the shared label.")
|
|
5175
|
-
}),
|
|
5175
|
+
}), Ra = s.discriminatedUnion("labelType", [
|
|
5176
5176
|
Ua,
|
|
5177
5177
|
Pa
|
|
5178
|
-
]),
|
|
5179
|
-
labels: s.array(
|
|
5178
|
+
]), _a = {
|
|
5179
|
+
labels: s.array(Ra).min(1).describe(
|
|
5180
5180
|
'The labels to update. Use labelType="personal" with an ID to update a personal label, or labelType="shared" with name+newName to rename a shared label.'
|
|
5181
5181
|
)
|
|
5182
5182
|
}, Na = s.object({
|
|
@@ -5194,7 +5194,7 @@ const Ua = s.object({
|
|
|
5194
5194
|
}, Ma = {
|
|
5195
5195
|
name: f.UPDATE_LABELS,
|
|
5196
5196
|
description: "Update one or more existing labels. Personal labels (identified by ID) can have their name, color, order, and favorite flag updated. Shared labels (identified by name) can only be renamed.",
|
|
5197
|
-
parameters:
|
|
5197
|
+
parameters: _a,
|
|
5198
5198
|
outputSchema: La,
|
|
5199
5199
|
annotations: { readOnlyHint: !1, destructiveHint: !0, idempotentHint: !1 },
|
|
5200
5200
|
async execute(e, t) {
|
|
@@ -5275,7 +5275,7 @@ const Wa = s.object({
|
|
|
5275
5275
|
color: ae
|
|
5276
5276
|
}), Ba = {
|
|
5277
5277
|
projects: s.array(Wa).min(1).describe("The projects to update.")
|
|
5278
|
-
},
|
|
5278
|
+
}, Ya = {
|
|
5279
5279
|
projects: s.array(ce).describe("The updated projects."),
|
|
5280
5280
|
totalCount: s.number().describe("The total number of projects updated."),
|
|
5281
5281
|
updatedProjectIds: s.array(s.string()).describe("The IDs of the updated projects."),
|
|
@@ -5283,11 +5283,11 @@ const Wa = s.object({
|
|
|
5283
5283
|
updateCount: s.number().describe("The number of projects actually updated."),
|
|
5284
5284
|
skippedCount: s.number().describe("The number of projects skipped (no changes).")
|
|
5285
5285
|
}).describe("Summary of operations performed.")
|
|
5286
|
-
},
|
|
5286
|
+
}, za = {
|
|
5287
5287
|
name: f.UPDATE_PROJECTS,
|
|
5288
5288
|
description: "Update multiple existing projects with new values.",
|
|
5289
5289
|
parameters: Ba,
|
|
5290
|
-
outputSchema:
|
|
5290
|
+
outputSchema: Ya,
|
|
5291
5291
|
annotations: { readOnlyHint: !1, destructiveHint: !0, idempotentHint: !1 },
|
|
5292
5292
|
async execute(e, t) {
|
|
5293
5293
|
const { projects: r } = e, o = await Promise.all(
|
|
@@ -5533,12 +5533,12 @@ const ai = s.object({
|
|
|
5533
5533
|
di
|
|
5534
5534
|
);
|
|
5535
5535
|
S !== void 0 && (g = { ...g, dueString: S });
|
|
5536
|
-
const
|
|
5536
|
+
const R = lt(
|
|
5537
5537
|
D,
|
|
5538
5538
|
ci,
|
|
5539
5539
|
null
|
|
5540
5540
|
);
|
|
5541
|
-
if (
|
|
5541
|
+
if (R !== void 0 && (g = { ...g, deadlineDate: R }), h)
|
|
5542
5542
|
try {
|
|
5543
5543
|
const { minutes: v } = gt(h);
|
|
5544
5544
|
g = {
|
|
@@ -5553,7 +5553,7 @@ const ai = s.object({
|
|
|
5553
5553
|
if (b === null || b === "unassign")
|
|
5554
5554
|
g = { ...g, assigneeId: null };
|
|
5555
5555
|
else {
|
|
5556
|
-
const v = await
|
|
5556
|
+
const v = await ze.validateTaskUpdateAssignment(
|
|
5557
5557
|
t,
|
|
5558
5558
|
d,
|
|
5559
5559
|
b
|
|
@@ -5780,19 +5780,13 @@ function Oi(e) {
|
|
|
5780
5780
|
}
|
|
5781
5781
|
}
|
|
5782
5782
|
const Ui = {
|
|
5783
|
-
fileUrl: s.
|
|
5783
|
+
fileUrl: s.url().describe(
|
|
5784
5784
|
"The URL of the attachment file to view. Get this from the fileUrl field in a comment's fileAttachment."
|
|
5785
5785
|
)
|
|
5786
5786
|
}, Pi = {
|
|
5787
|
-
fileName: s.string().optional().describe("The name of the file."),
|
|
5788
|
-
fileType: s.string().optional().describe("The MIME type of the file."),
|
|
5789
|
-
fileSize: s.number().optional().describe("The size of the file in bytes."),
|
|
5790
|
-
contentDelivery: s.enum(["image", "text", "embedded_resource", "metadata_only"]).describe("How the content was delivered.")
|
|
5791
|
-
}, _i = {
|
|
5792
5787
|
name: f.VIEW_ATTACHMENT,
|
|
5793
5788
|
description: "View a file attachment from a Todoist comment. Pass the fileUrl from a comment's fileAttachment field. Supports images (returned inline), text files (returned as text), and binary files like PDFs (returned as embedded resources).",
|
|
5794
5789
|
parameters: Ui,
|
|
5795
|
-
outputSchema: Pi,
|
|
5796
5790
|
annotations: {
|
|
5797
5791
|
readOnlyHint: !0,
|
|
5798
5792
|
destructiveHint: !1,
|
|
@@ -5802,49 +5796,30 @@ const Ui = {
|
|
|
5802
5796
|
const r = await t.viewAttachment(e), o = r.headers["content-length"], n = o ? Number.parseInt(o, 10) : void 0, a = Oi(e), i = r.headers["content-type"], c = i ? Ai(i) : void 0, d = c && c !== "application/octet-stream" ? c : Ei(e) ?? c ?? "application/octet-stream";
|
|
5803
5797
|
if (n && n > ut)
|
|
5804
5798
|
return {
|
|
5805
|
-
textContent: `Attachment "${a ?? e}" is too large to display inline (${(n / 1024 / 1024).toFixed(1)}MB, limit is 10MB). File type: ${d}
|
|
5806
|
-
structuredContent: {
|
|
5807
|
-
fileName: a,
|
|
5808
|
-
fileType: d,
|
|
5809
|
-
fileSize: n,
|
|
5810
|
-
contentDelivery: "metadata_only"
|
|
5811
|
-
}
|
|
5799
|
+
textContent: `Attachment "${a ?? e}" is too large to display inline (${(n / 1024 / 1024).toFixed(1)}MB, limit is 10MB). File type: ${d}`
|
|
5812
5800
|
};
|
|
5813
5801
|
const l = Buffer.from(await r.arrayBuffer()), u = l.byteLength;
|
|
5814
5802
|
if (u > ut)
|
|
5815
5803
|
return {
|
|
5816
|
-
textContent: `Attachment "${a ?? e}" is too large to display inline (${(u / 1024 / 1024).toFixed(1)}MB, limit is 10MB). File type: ${d}
|
|
5817
|
-
structuredContent: {
|
|
5818
|
-
fileName: a,
|
|
5819
|
-
fileType: d,
|
|
5820
|
-
fileSize: u,
|
|
5821
|
-
contentDelivery: "metadata_only"
|
|
5822
|
-
}
|
|
5804
|
+
textContent: `Attachment "${a ?? e}" is too large to display inline (${(u / 1024 / 1024).toFixed(1)}MB, limit is 10MB). File type: ${d}`
|
|
5823
5805
|
};
|
|
5824
5806
|
const p = xi(d), m = [];
|
|
5825
|
-
|
|
5826
|
-
return p === "image" ? (m.push({
|
|
5807
|
+
return p === "image" ? m.push({
|
|
5827
5808
|
type: "image",
|
|
5828
5809
|
data: l.toString("base64"),
|
|
5829
5810
|
mimeType: d
|
|
5830
|
-
})
|
|
5811
|
+
}) : p === "text" ? m.push({
|
|
5831
5812
|
type: "text",
|
|
5832
5813
|
text: l.toString("utf-8")
|
|
5833
|
-
})
|
|
5814
|
+
}) : m.push({
|
|
5834
5815
|
type: "resource",
|
|
5835
5816
|
resource: {
|
|
5836
5817
|
uri: e,
|
|
5837
5818
|
mimeType: d,
|
|
5838
5819
|
blob: l.toString("base64")
|
|
5839
5820
|
}
|
|
5840
|
-
}),
|
|
5821
|
+
}), {
|
|
5841
5822
|
textContent: `Attachment: ${a ?? "unknown"} (${d}, ${(u / 1024).toFixed(1)}KB)`,
|
|
5842
|
-
structuredContent: {
|
|
5843
|
-
fileName: a,
|
|
5844
|
-
fileType: d,
|
|
5845
|
-
fileSize: u,
|
|
5846
|
-
contentDelivery: h
|
|
5847
|
-
},
|
|
5848
5823
|
contentItems: m
|
|
5849
5824
|
};
|
|
5850
5825
|
}
|
|
@@ -5946,7 +5921,7 @@ You have access to comprehensive Todoist management tools for personal productiv
|
|
|
5946
5921
|
|
|
5947
5922
|
Always provide clear, actionable task titles and descriptions. Use the overview tools to give users context about their workload and project status.
|
|
5948
5923
|
`;
|
|
5949
|
-
function
|
|
5924
|
+
function qi({
|
|
5950
5925
|
todoistApiKey: e,
|
|
5951
5926
|
baseUrl: t,
|
|
5952
5927
|
features: r = []
|
|
@@ -5960,7 +5935,7 @@ function Ki({
|
|
|
5960
5935
|
},
|
|
5961
5936
|
instructions: Ri
|
|
5962
5937
|
}
|
|
5963
|
-
), n = new
|
|
5938
|
+
), n = new zt(e, { baseUrl: t }), a = {
|
|
5964
5939
|
...an,
|
|
5965
5940
|
_meta: {
|
|
5966
5941
|
ui: {
|
|
@@ -5970,7 +5945,7 @@ function Ki({
|
|
|
5970
5945
|
};
|
|
5971
5946
|
as(o);
|
|
5972
5947
|
const i = { server: o, client: n, features: r };
|
|
5973
|
-
return y({ tool: Kr, ...i }), y({ tool: ro, ...i }), y({ tool: Ta, ...i }), y({ tool: pi, ...i }), y({ tool: ma, ...i }), y({ tool: hn, ...i }), y({ tool: a, ...i }), y({ tool: Uo, ...i }), y({ tool: $r, ...i }), y({ tool:
|
|
5948
|
+
return y({ tool: Kr, ...i }), y({ tool: ro, ...i }), y({ tool: Ta, ...i }), y({ tool: pi, ...i }), y({ tool: ma, ...i }), y({ tool: hn, ...i }), y({ tool: a, ...i }), y({ tool: Uo, ...i }), y({ tool: $r, ...i }), y({ tool: za, ...i }), y({ tool: qo, ...i }), y({ tool: ra, ...i }), y({ tool: aa, ...i }), y({ tool: Fr, ...i }), y({ tool: oi, ...i }), y({ tool: sn, ...i }), y({ tool: ar, ...i }), y({ tool: jo, ...i }), y({ tool: Sa, ...i }), y({ tool: Rr, ...i }), y({ tool: Xo, ...i }), y({ tool: ei, ...i }), y({ tool: Pi, ...i }), y({ tool: kr, ...i }), y({ tool: Ma, ...i }), y({ tool: No, ...i }), y({ tool: lr, ...i }), y({ tool: fr, ...i }), y({ tool: Aa, ...i }), y({ tool: go, ...i }), y({ tool: $n, ...i }), y({ tool: Mn, ...i }), y({ tool: On, ...i }), y({ tool: eo, ...i }), y({ tool: Bn, ...i }), y({ tool: jn, ...i }), y({ tool: io, ...i }), y({ tool: uo, ...i }), y({ tool: da, ...i }), y({ tool: Si, ...i }), y({ tool: Ho, ...i }), y({ tool: ea, ...i }), y({ tool: Kn, ...i }), y({ tool: ga, ...i }), y({ tool: ho, ...i }), o.registerPrompt(
|
|
5974
5949
|
le.name,
|
|
5975
5950
|
{
|
|
5976
5951
|
title: le.title,
|
|
@@ -5985,7 +5960,7 @@ export {
|
|
|
5985
5960
|
oi as B,
|
|
5986
5961
|
Fr as C,
|
|
5987
5962
|
qo as D,
|
|
5988
|
-
|
|
5963
|
+
za as E,
|
|
5989
5964
|
$r as F,
|
|
5990
5965
|
ma as G,
|
|
5991
5966
|
Uo as H,
|
|
@@ -5995,7 +5970,7 @@ export {
|
|
|
5995
5970
|
Ta as L,
|
|
5996
5971
|
ro as M,
|
|
5997
5972
|
Kr as N,
|
|
5998
|
-
|
|
5973
|
+
Gi as O,
|
|
5999
5974
|
Ts as P,
|
|
6000
5975
|
Ho as a,
|
|
6001
5976
|
jn as b,
|
|
@@ -6003,7 +5978,7 @@ export {
|
|
|
6003
5978
|
io as d,
|
|
6004
5979
|
eo as e,
|
|
6005
5980
|
ho as f,
|
|
6006
|
-
|
|
5981
|
+
qi as g,
|
|
6007
5982
|
On as h,
|
|
6008
5983
|
Mn as i,
|
|
6009
5984
|
$n as j,
|
|
@@ -6019,7 +5994,7 @@ export {
|
|
|
6019
5994
|
Ma as t,
|
|
6020
5995
|
Si as u,
|
|
6021
5996
|
kr as v,
|
|
6022
|
-
|
|
5997
|
+
Pi as w,
|
|
6023
5998
|
jo as x,
|
|
6024
5999
|
Sa as y,
|
|
6025
6000
|
ar as z
|
package/dist/todoist-tool.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ type RequiredToolAnnotations = ToolAnnotations & {
|
|
|
14
14
|
/**
|
|
15
15
|
* A Todoist tool that can be used in an MCP server or other conversational AI interfaces.
|
|
16
16
|
*/
|
|
17
|
-
type TodoistTool<Params extends z.ZodRawShape, Output extends z.ZodRawShape
|
|
17
|
+
type TodoistTool<Params extends z.ZodRawShape, Output extends z.ZodRawShape = Record<string, never>> = {
|
|
18
18
|
/**
|
|
19
19
|
* The name of the tool.
|
|
20
20
|
*/
|
|
@@ -36,7 +36,7 @@ type TodoistTool<Params extends z.ZodRawShape, Output extends z.ZodRawShape> = {
|
|
|
36
36
|
*
|
|
37
37
|
* This is used to describe the structured output format that the tool will return.
|
|
38
38
|
*/
|
|
39
|
-
outputSchema
|
|
39
|
+
outputSchema?: Output;
|
|
40
40
|
/**
|
|
41
41
|
* MCP ToolAnnotations hints for this tool.
|
|
42
42
|
*/
|
|
@@ -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,oBAAoB,CAAA;AACpD,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,
|
|
1
|
+
{"version":3,"file":"todoist-tool.d.ts","sourceRoot":"","sources":["../src/todoist-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpD,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,CACZ,MAAM,SAAS,CAAC,CAAC,WAAW,EAC5B,MAAM,SAAS,CAAC,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IACpD;IACA;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAA;IAEnB;;;;;OAKG;IACH,UAAU,EAAE,MAAM,CAAA;IAElB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;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"}
|
|
@@ -55,8 +55,8 @@ declare const getProductivityStats: {
|
|
|
55
55
|
start: z.ZodString;
|
|
56
56
|
end: z.ZodString;
|
|
57
57
|
}, z.core.$strip>;
|
|
58
|
-
vacationMode: z.
|
|
59
|
-
karmaDisabled: z.
|
|
58
|
+
vacationMode: z.ZodBoolean;
|
|
59
|
+
karmaDisabled: z.ZodBoolean;
|
|
60
60
|
}, z.core.$strip>;
|
|
61
61
|
karma: z.ZodNumber;
|
|
62
62
|
karmaTrend: z.ZodString;
|
|
@@ -134,8 +134,8 @@ declare const getProductivityStats: {
|
|
|
134
134
|
start: string;
|
|
135
135
|
end: string;
|
|
136
136
|
};
|
|
137
|
-
vacationMode:
|
|
138
|
-
karmaDisabled:
|
|
137
|
+
vacationMode: boolean;
|
|
138
|
+
karmaDisabled: boolean;
|
|
139
139
|
};
|
|
140
140
|
karma: number;
|
|
141
141
|
karmaTrend: string;
|
|
@@ -4,18 +4,7 @@ declare const viewAttachment: {
|
|
|
4
4
|
name: "view-attachment";
|
|
5
5
|
description: string;
|
|
6
6
|
parameters: {
|
|
7
|
-
fileUrl: z.
|
|
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
|
-
}>;
|
|
7
|
+
fileUrl: z.ZodURL;
|
|
19
8
|
};
|
|
20
9
|
annotations: {
|
|
21
10
|
readOnlyHint: true;
|
|
@@ -26,21 +15,9 @@ declare const viewAttachment: {
|
|
|
26
15
|
fileUrl: string;
|
|
27
16
|
}, client: import('@doist/todoist-sdk').TodoistApi): Promise<{
|
|
28
17
|
textContent: string;
|
|
29
|
-
structuredContent: {
|
|
30
|
-
fileName: string | undefined;
|
|
31
|
-
fileType: string;
|
|
32
|
-
fileSize: number;
|
|
33
|
-
contentDelivery: "metadata_only";
|
|
34
|
-
};
|
|
35
18
|
contentItems?: undefined;
|
|
36
19
|
} | {
|
|
37
20
|
textContent: string;
|
|
38
|
-
structuredContent: {
|
|
39
|
-
fileName: string | undefined;
|
|
40
|
-
fileType: string;
|
|
41
|
-
fileSize: number;
|
|
42
|
-
contentDelivery: "text" | "image" | "embedded_resource";
|
|
43
|
-
};
|
|
44
21
|
contentItems: ContentBlock[];
|
|
45
22
|
}>;
|
|
46
23
|
};
|
|
@@ -1 +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;
|
|
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;AAoFvB,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;CAuEsB,CAAA;AAE1C,OAAO,EAAE,cAAc,EAAE,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@doist/todoist-ai",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.11.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"prepare": "husky"
|
|
60
60
|
},
|
|
61
61
|
"dependencies": {
|
|
62
|
-
"@doist/todoist-sdk": "
|
|
62
|
+
"@doist/todoist-sdk": "10.1.0",
|
|
63
63
|
"@modelcontextprotocol/ext-apps": "1.2.2",
|
|
64
64
|
"date-fns": "4.1.0",
|
|
65
65
|
"dompurify": "3.3.3",
|