@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 CHANGED
@@ -1447,18 +1447,7 @@ declare const tools: {
1447
1447
  name: "view-attachment";
1448
1448
  description: string;
1449
1449
  parameters: {
1450
- fileUrl: import('zod').ZodString;
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').ZodNumber;
2175
- karmaDisabled: import('zod').ZodNumber;
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: number;
2254
- karmaDisabled: number;
2230
+ vacationMode: boolean;
2231
+ karmaDisabled: boolean;
2255
2232
  };
2256
2233
  karma: number;
2257
2234
  karmaTrend: string;
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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-DcDkgkMt.js";
2
- import { O as J, g as K } from "./mcp-server-DcDkgkMt.js";
3
- import { r as U, v as V } from "./require-valid-todoist-token-DAY-GxlD.js";
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-DcDkgkMt.js";
6
- import { r as d } from "./require-valid-todoist-token-DAY-GxlD.js";
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-DcDkgkMt.js";
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 Y, REMINDER_DELIVERY_SERVICES as Wt, HEALTH_STATUSES as Re, getTaskUrl as mt, getProjectUrl as ht, WORKSPACE_ROLES as Bt, WORKSPACE_PLANS as zt, TodoistApi as Yt } from "@doist/todoist-sdk";
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 R(...e) {
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 z(e) {
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 = 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 = R(
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 = R(
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 = R(
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 = R(
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 = R(
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 = R(
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 = R(
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
- z(n?.message),
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 = R(
264
- z(n?.errorExtra),
265
- z(n?.error_extra),
266
- z(n?.details),
267
- z(n?.errorDetails),
268
- z(n?.errors),
269
- z(t?.details)
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
- }, qi = {
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 _s(e) {
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 Rs(e) {
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
- ${_s(e.focus)}
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: Rs(e)
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 zs({
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 Ys(e, t) {
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
- }, ze = s.object({
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(ze).describe("The found filters."),
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(ze).describe("The created filters."),
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) => Y(
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
- }, _r = {
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: Rr(a),
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 Rr(e) {
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 Ye = new Wr();
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 zr(e) {
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 Yr(e) {
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 Ye.validateTaskCreationAssignment(
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(Re).describe("The health status after triggering analysis."),
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: [Y("filter_delete", { id: e.id })]
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 _o = {
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
- }, Ro = {
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: _o,
2895
- outputSchema: Ro,
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 ? Ys(t, e.searchText).then((c) => ({
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(zr).join(`
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: zo } = f, Yo = {
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: Yo,
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(Yr).join(`
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 ${zo} to create a project`))), W({
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 _t(e) {
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(_t(p), e.daysCount), h = Xe(m, { representation: "date" });
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(_t(t.startDate), t.daysCount))}` : "";
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 = zs({
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
- }, Rt = s.lazy(
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(Rt).describe("Nested child projects.")
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(() => Rt)).optional().describe(
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 _e(e, t = "") {
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(..._e(o.children, `${t} `));
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(..._e(u));
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(..._e(m));
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.number().describe("Whether vacation mode is enabled (0 or 1)."),
4038
- karmaDisabled: s.number().describe("Whether karma tracking is disabled (0 or 1).")
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
- }), _n = s.object({
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
- }), Rn = {
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(Re).describe("The overall health status of the project."),
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(_n).describe("Tasks in the project.")
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: Rn,
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(Re).describe("The health status of the project."),
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
- }, zn = {}, Yn = {
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(zt).describe("The workspace plan type."),
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(Yn)).describe("List of workspaces."),
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: zn,
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 Ye.validateBulkAssignment(
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 _ = S.map(
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
- Y("project_move", {
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
- Y("project_reorder", {
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
- Y("section_reorder", {
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 Y("item_update", {
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(ze).describe("The updated filters."),
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 Y("filter_update", {
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
- }), _a = s.discriminatedUnion("labelType", [
5175
+ }), Ra = s.discriminatedUnion("labelType", [
5176
5176
  Ua,
5177
5177
  Pa
5178
- ]), Ra = {
5179
- labels: s.array(_a).min(1).describe(
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: Ra,
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
- }, za = {
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
- }, Ya = {
5286
+ }, za = {
5287
5287
  name: f.UPDATE_PROJECTS,
5288
5288
  description: "Update multiple existing projects with new values.",
5289
5289
  parameters: Ba,
5290
- outputSchema: za,
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 _ = lt(
5536
+ const R = lt(
5537
5537
  D,
5538
5538
  ci,
5539
5539
  null
5540
5540
  );
5541
- if (_ !== void 0 && (g = { ...g, deadlineDate: _ }), h)
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 Ye.validateTaskUpdateAssignment(
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.string().url().describe(
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
- let h;
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
- }), h = "image") : p === "text" ? (m.push({
5811
+ }) : p === "text" ? m.push({
5831
5812
  type: "text",
5832
5813
  text: l.toString("utf-8")
5833
- }), h = "text") : (m.push({
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
- }), h = "embedded_resource"), {
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 Ki({
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 Yt(e, { baseUrl: t }), a = {
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: Ya, ...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: _r, ...i }), y({ tool: Xo, ...i }), y({ tool: ei, ...i }), y({ tool: _i, ...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(
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
- Ya as E,
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
- qi as O,
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
- Ki as g,
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
- _i as w,
5997
+ Pi as w,
6023
5998
  jo as x,
6024
5999
  Sa as y,
6025
6000
  ar as z
@@ -1,5 +1,5 @@
1
1
  import { TodoistApi as h } from "@doist/todoist-sdk";
2
- import { P as T } from "./mcp-server-DcDkgkMt.js";
2
+ import { P as T } from "./mcp-server-mgPWVnTW.js";
3
3
  const p = /* @__PURE__ */ new Set([401, 403]);
4
4
  function w(e) {
5
5
  const t = T(e);
@@ -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: Output;
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,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
+ {"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.ZodNumber;
59
- karmaDisabled: z.ZodNumber;
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: number;
138
- karmaDisabled: number;
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.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
- }>;
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;AA8FvB,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiG2C,CAAA;AAE/D,OAAO,EAAE,cAAc,EAAE,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.10.0",
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": "9.8.0",
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",