apple-notes-mcp 2.15.8 → 2.15.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/build/index.js +91 -28
  2. package/package.json +2 -1
package/build/index.js CHANGED
@@ -32569,7 +32569,7 @@ function object(shape, params) {
32569
32569
  return new ZodMiniObject(def);
32570
32570
  }
32571
32571
 
32572
- // node_modules/.pnpm/@modelcontextprotocol+sdk@1.31.0_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js
32572
+ // node_modules/.pnpm/@modelcontextprotocol+sdk@1.32.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js
32573
32573
  function isZ4Schema(s) {
32574
32574
  const schema = s;
32575
32575
  return !!schema._zod;
@@ -33424,7 +33424,7 @@ function preprocess(fn, schema) {
33424
33424
  // node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/external.js
33425
33425
  config(en_default2());
33426
33426
 
33427
- // node_modules/.pnpm/@modelcontextprotocol+sdk@1.31.0_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js
33427
+ // node_modules/.pnpm/@modelcontextprotocol+sdk@1.32.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js
33428
33428
  var LATEST_PROTOCOL_VERSION = "2025-11-25";
33429
33429
  var SUPPORTED_PROTOCOL_VERSIONS = [LATEST_PROTOCOL_VERSION, "2025-06-18", "2025-03-26", "2024-11-05", "2024-10-07"];
33430
33430
  var RELATED_TASK_META_KEY = "io.modelcontextprotocol/related-task";
@@ -34955,7 +34955,7 @@ var UrlElicitationRequiredError = class extends McpError {
34955
34955
  }
34956
34956
  };
34957
34957
 
34958
- // node_modules/.pnpm/@modelcontextprotocol+sdk@1.31.0_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/interfaces.js
34958
+ // node_modules/.pnpm/@modelcontextprotocol+sdk@1.32.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/interfaces.js
34959
34959
  function isTerminal(status) {
34960
34960
  return status === "completed" || status === "failed" || status === "cancelled";
34961
34961
  }
@@ -36244,7 +36244,7 @@ var zodToJsonSchema = (schema, options) => {
36244
36244
  return combined;
36245
36245
  };
36246
36246
 
36247
- // node_modules/.pnpm/@modelcontextprotocol+sdk@1.31.0_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js
36247
+ // node_modules/.pnpm/@modelcontextprotocol+sdk@1.32.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js
36248
36248
  function mapMiniTarget(t) {
36249
36249
  if (!t)
36250
36250
  return "draft-7";
@@ -36286,7 +36286,7 @@ function parseWithCompat(schema, data) {
36286
36286
  return result.data;
36287
36287
  }
36288
36288
 
36289
- // node_modules/.pnpm/@modelcontextprotocol+sdk@1.31.0_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js
36289
+ // node_modules/.pnpm/@modelcontextprotocol+sdk@1.32.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js
36290
36290
  var DEFAULT_REQUEST_TIMEOUT_MSEC = 6e4;
36291
36291
  var Protocol = class {
36292
36292
  constructor(_options) {
@@ -36327,6 +36327,9 @@ var Protocol = class {
36327
36327
  this.setRequestHandler(GetTaskPayloadRequestSchema, async (request, extra) => {
36328
36328
  const handleTaskResult = async () => {
36329
36329
  const taskId = request.params.taskId;
36330
+ if (!await this._taskStore.getTask(taskId, extra.sessionId)) {
36331
+ throw new McpError(ErrorCode.InvalidParams, `Task not found: ${taskId}`);
36332
+ }
36330
36333
  if (this._taskMessageQueue) {
36331
36334
  let queuedMessage;
36332
36335
  while (queuedMessage = await this._taskMessageQueue.dequeue(taskId, extra.sessionId)) {
@@ -36357,12 +36360,12 @@ var Protocol = class {
36357
36360
  throw new McpError(ErrorCode.InvalidParams, `Task not found: ${taskId}`);
36358
36361
  }
36359
36362
  if (!isTerminal(task.status)) {
36360
- await this._waitForTaskUpdate(taskId, extra.signal);
36363
+ await this._waitForTaskUpdate(taskId, extra.signal, extra.sessionId);
36361
36364
  return await handleTaskResult();
36362
36365
  }
36363
36366
  if (isTerminal(task.status)) {
36364
36367
  const result = await this._taskStore.getTaskResult(taskId, extra.sessionId);
36365
- this._clearTaskQueue(taskId);
36368
+ this._clearTaskQueue(taskId, extra.sessionId);
36366
36369
  return {
36367
36370
  ...result,
36368
36371
  _meta: {
@@ -36399,7 +36402,7 @@ var Protocol = class {
36399
36402
  throw new McpError(ErrorCode.InvalidParams, `Cannot cancel task in terminal status: ${task.status}`);
36400
36403
  }
36401
36404
  await this._taskStore.updateTaskStatus(request.params.taskId, "cancelled", "Client cancelled task execution.", extra.sessionId);
36402
- this._clearTaskQueue(request.params.taskId);
36405
+ this._clearTaskQueue(request.params.taskId, extra.sessionId);
36403
36406
  const cancelledTask = await this._taskStore.getTask(request.params.taskId, extra.sessionId);
36404
36407
  if (!cancelledTask) {
36405
36408
  throw new McpError(ErrorCode.InvalidParams, `Task not found after cancellation: ${request.params.taskId}`);
@@ -36527,6 +36530,19 @@ var Protocol = class {
36527
36530
  const handler = this._requestHandlers.get(request.method) ?? this.fallbackRequestHandler;
36528
36531
  const capturedTransport = this._transport;
36529
36532
  const relatedTaskId = request.params?._meta?.[RELATED_TASK_META_KEY]?.taskId;
36533
+ const sessionId = capturedTransport?.sessionId;
36534
+ const store = this._taskStore;
36535
+ let relatedTaskFound = true;
36536
+ let relatedTaskLookup;
36537
+ if (relatedTaskId && store && this._taskMessageQueue && sessionId !== void 0) {
36538
+ relatedTaskFound = false;
36539
+ relatedTaskLookup = (async () => {
36540
+ if (!await store.getTask(relatedTaskId, sessionId)) {
36541
+ throw new McpError(ErrorCode.InvalidParams, `Task not found: ${relatedTaskId}`);
36542
+ }
36543
+ relatedTaskFound = true;
36544
+ })();
36545
+ }
36530
36546
  if (handler === void 0) {
36531
36547
  const errorResponse2 = {
36532
36548
  jsonrpc: "2.0",
@@ -36536,7 +36552,10 @@ var Protocol = class {
36536
36552
  message: "Method not found"
36537
36553
  }
36538
36554
  };
36539
- if (relatedTaskId && this._taskMessageQueue) {
36555
+ if (relatedTaskId && relatedTaskLookup) {
36556
+ const queuedError = { type: "error", message: errorResponse2, timestamp: Date.now() };
36557
+ relatedTaskLookup.then(() => this._enqueueTaskMessage(relatedTaskId, queuedError, sessionId), () => capturedTransport?.send(errorResponse2)).catch((error2) => this._onerror(new Error(`Failed to send an error response: ${error2}`)));
36558
+ } else if (relatedTaskId && this._taskMessageQueue) {
36540
36559
  this._enqueueTaskMessage(relatedTaskId, {
36541
36560
  type: "error",
36542
36561
  message: errorResponse2,
@@ -36587,7 +36606,10 @@ var Protocol = class {
36587
36606
  closeSSEStream: extra?.closeSSEStream,
36588
36607
  closeStandaloneSSEStream: extra?.closeStandaloneSSEStream
36589
36608
  };
36590
- Promise.resolve().then(() => {
36609
+ (relatedTaskLookup ?? Promise.resolve()).then(() => {
36610
+ if (relatedTaskLookup && abortController.signal.aborted) {
36611
+ throw new McpError(ErrorCode.ConnectionClosed, "Request was cancelled");
36612
+ }
36591
36613
  if (taskCreationParams) {
36592
36614
  this.assertTaskHandlerCapability(request.method);
36593
36615
  }
@@ -36622,7 +36644,7 @@ var Protocol = class {
36622
36644
  ...error2["data"] !== void 0 && { data: error2["data"] }
36623
36645
  }
36624
36646
  };
36625
- if (relatedTaskId && this._taskMessageQueue) {
36647
+ if (relatedTaskId && this._taskMessageQueue && relatedTaskFound) {
36626
36648
  await this._enqueueTaskMessage(relatedTaskId, {
36627
36649
  type: "error",
36628
36650
  message: errorResponse2,
@@ -37102,7 +37124,7 @@ var Protocol = class {
37102
37124
  throw new Error("Cannot enqueue task message: taskStore and taskMessageQueue are not configured");
37103
37125
  }
37104
37126
  const maxQueueSize = this._options?.maxTaskQueueSize;
37105
- await this._taskMessageQueue.enqueue(taskId, message, sessionId, maxQueueSize);
37127
+ await this._taskMessageQueue.enqueue(taskId, message, sessionId ?? this._transport?.sessionId, maxQueueSize);
37106
37128
  }
37107
37129
  /**
37108
37130
  * Clears the message queue for a task and rejects any pending request resolvers.
@@ -37131,12 +37153,13 @@ var Protocol = class {
37131
37153
  * Uses polling to check for updates at the task's configured poll interval.
37132
37154
  * @param taskId The task ID to wait for
37133
37155
  * @param signal Abort signal to cancel the wait
37156
+ * @param sessionId Session of the request that waits, passed to the task store
37134
37157
  * @returns Promise that resolves when an update occurs or rejects if aborted
37135
37158
  */
37136
- async _waitForTaskUpdate(taskId, signal) {
37159
+ async _waitForTaskUpdate(taskId, signal, sessionId) {
37137
37160
  let interval = this._options?.defaultTaskPollInterval ?? 1e3;
37138
37161
  try {
37139
- const task = await this._taskStore?.getTask(taskId);
37162
+ const task = await this._taskStore?.getTask(taskId, sessionId);
37140
37163
  if (task?.pollInterval) {
37141
37164
  interval = task.pollInterval;
37142
37165
  }
@@ -37240,7 +37263,7 @@ function mergeCapabilities(base, additional) {
37240
37263
  return result;
37241
37264
  }
37242
37265
 
37243
- // node_modules/.pnpm/@modelcontextprotocol+sdk@1.31.0_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js
37266
+ // node_modules/.pnpm/@modelcontextprotocol+sdk@1.32.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js
37244
37267
  var import_ajv = __toESM(require_ajv(), 1);
37245
37268
  var import_ajv_formats = __toESM(require_dist(), 1);
37246
37269
  function createDefaultAjvInstance() {
@@ -37308,7 +37331,7 @@ var AjvJsonSchemaValidator = class {
37308
37331
  }
37309
37332
  };
37310
37333
 
37311
- // node_modules/.pnpm/@modelcontextprotocol+sdk@1.31.0_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/server.js
37334
+ // node_modules/.pnpm/@modelcontextprotocol+sdk@1.32.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/server.js
37312
37335
  var ExperimentalServerTasks = class {
37313
37336
  constructor(_server) {
37314
37337
  this._server = _server;
@@ -37521,7 +37544,7 @@ var ExperimentalServerTasks = class {
37521
37544
  }
37522
37545
  };
37523
37546
 
37524
- // node_modules/.pnpm/@modelcontextprotocol+sdk@1.31.0_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/helpers.js
37547
+ // node_modules/.pnpm/@modelcontextprotocol+sdk@1.32.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/helpers.js
37525
37548
  function assertToolsCallTaskCapability(requests, method, entityName) {
37526
37549
  if (!requests) {
37527
37550
  throw new Error(`${entityName} does not support task creation (required for ${method})`);
@@ -37556,7 +37579,7 @@ function assertClientRequestTaskCapability(requests, method, entityName) {
37556
37579
  }
37557
37580
  }
37558
37581
 
37559
- // node_modules/.pnpm/@modelcontextprotocol+sdk@1.31.0_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js
37582
+ // node_modules/.pnpm/@modelcontextprotocol+sdk@1.32.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js
37560
37583
  var Server = class extends Protocol {
37561
37584
  /**
37562
37585
  * Initializes this server with the given name and version information.
@@ -37927,7 +37950,7 @@ var Server = class extends Protocol {
37927
37950
  }
37928
37951
  };
37929
37952
 
37930
- // node_modules/.pnpm/@modelcontextprotocol+sdk@1.31.0_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/server/completable.js
37953
+ // node_modules/.pnpm/@modelcontextprotocol+sdk@1.32.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/server/completable.js
37931
37954
  var COMPLETABLE_SYMBOL = /* @__PURE__ */ Symbol.for("mcp.completable");
37932
37955
  function isCompletable(schema) {
37933
37956
  return !!schema && typeof schema === "object" && COMPLETABLE_SYMBOL in schema;
@@ -37941,7 +37964,7 @@ var McpZodTypeKind;
37941
37964
  McpZodTypeKind2["Completable"] = "McpCompletable";
37942
37965
  })(McpZodTypeKind || (McpZodTypeKind = {}));
37943
37966
 
37944
- // node_modules/.pnpm/@modelcontextprotocol+sdk@1.31.0_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/uriTemplate.js
37967
+ // node_modules/.pnpm/@modelcontextprotocol+sdk@1.32.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/uriTemplate.js
37945
37968
  var MAX_TEMPLATE_LENGTH = 1e6;
37946
37969
  var MAX_VARIABLE_LENGTH = 1e6;
37947
37970
  var MAX_TEMPLATE_EXPRESSIONS = 1e4;
@@ -38163,7 +38186,7 @@ var UriTemplate = class _UriTemplate {
38163
38186
  }
38164
38187
  };
38165
38188
 
38166
- // node_modules/.pnpm/@modelcontextprotocol+sdk@1.31.0_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/toolNameValidation.js
38189
+ // node_modules/.pnpm/@modelcontextprotocol+sdk@1.32.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/toolNameValidation.js
38167
38190
  var TOOL_NAME_REGEX = /^[A-Za-z0-9._-]{1,128}$/;
38168
38191
  function validateToolName(name) {
38169
38192
  const warnings = [];
@@ -38221,7 +38244,7 @@ function validateAndWarnToolName(name) {
38221
38244
  return result.isValid;
38222
38245
  }
38223
38246
 
38224
- // node_modules/.pnpm/@modelcontextprotocol+sdk@1.31.0_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/mcp-server.js
38247
+ // node_modules/.pnpm/@modelcontextprotocol+sdk@1.32.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/mcp-server.js
38225
38248
  var ExperimentalMcpServerTasks = class {
38226
38249
  constructor(_mcpServer) {
38227
38250
  this._mcpServer = _mcpServer;
@@ -38236,7 +38259,43 @@ var ExperimentalMcpServerTasks = class {
38236
38259
  }
38237
38260
  };
38238
38261
 
38239
- // node_modules/.pnpm/@modelcontextprotocol+sdk@1.31.0_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js
38262
+ // node_modules/.pnpm/@modelcontextprotocol+sdk@1.32.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js
38263
+ function toolInputElementCount(value, max) {
38264
+ let count = 0;
38265
+ const stack = [value];
38266
+ while (stack.length > 0) {
38267
+ const node = stack.pop();
38268
+ if (node === null || typeof node !== "object")
38269
+ continue;
38270
+ if (Array.isArray(node)) {
38271
+ for (const child2 of node) {
38272
+ if (++count > max)
38273
+ return count;
38274
+ if (child2 !== null && typeof child2 === "object")
38275
+ stack.push(child2);
38276
+ }
38277
+ } else {
38278
+ for (const key in node) {
38279
+ if (!Object.prototype.hasOwnProperty.call(node, key))
38280
+ continue;
38281
+ if (++count > max)
38282
+ return count;
38283
+ const child2 = node[key];
38284
+ if (child2 !== null && typeof child2 === "object")
38285
+ stack.push(child2);
38286
+ }
38287
+ }
38288
+ }
38289
+ return count;
38290
+ }
38291
+ function resolveMaxToolInputElements(value) {
38292
+ if (value === void 0 || value === Infinity)
38293
+ return void 0;
38294
+ if (typeof value !== "number" || Number.isNaN(value) || value < 1) {
38295
+ throw new RangeError(`maxToolInputElements must be a number of at least 1, or Infinity, got ${String(value)}`);
38296
+ }
38297
+ return value;
38298
+ }
38240
38299
  var McpServer = class {
38241
38300
  constructor(serverInfo, options) {
38242
38301
  this._registeredResources = {};
@@ -38248,6 +38307,7 @@ var McpServer = class {
38248
38307
  this._resourceHandlersInitialized = false;
38249
38308
  this._promptHandlersInitialized = false;
38250
38309
  this.server = new Server(serverInfo, options);
38310
+ this._maxToolInputElements = resolveMaxToolInputElements(options?.maxToolInputElements);
38251
38311
  }
38252
38312
  /**
38253
38313
  * Access experimental features.
@@ -38378,12 +38438,15 @@ var McpServer = class {
38378
38438
  * Validates tool input arguments against the tool's input schema.
38379
38439
  */
38380
38440
  async validateToolInput(tool, args, toolName) {
38441
+ if (this._maxToolInputElements !== void 0 && toolInputElementCount(args, this._maxToolInputElements) > this._maxToolInputElements) {
38442
+ throw new McpError(ErrorCode.InvalidParams, `Invalid arguments for tool ${toolName}: arguments contain more than the maximum of ${this._maxToolInputElements} elements`);
38443
+ }
38381
38444
  if (!tool.inputSchema) {
38382
38445
  return void 0;
38383
38446
  }
38384
38447
  const inputObj = normalizeObjectSchema(tool.inputSchema);
38385
38448
  const schemaToParse = inputObj ?? tool.inputSchema;
38386
- const parseResult = await safeParseAsync2(schemaToParse, args);
38449
+ const parseResult = await safeParseAsync2(schemaToParse, args ?? {});
38387
38450
  if (!parseResult.success) {
38388
38451
  const error2 = "error" in parseResult ? parseResult.error : "Unknown error";
38389
38452
  const errorMessage = getParseErrorMessage(error2);
@@ -38621,7 +38684,7 @@ var McpServer = class {
38621
38684
  }
38622
38685
  if (prompt.argsSchema) {
38623
38686
  const argsObj = normalizeObjectSchema(prompt.argsSchema);
38624
- const parseResult = await safeParseAsync2(argsObj, request.params.arguments);
38687
+ const parseResult = await safeParseAsync2(argsObj, request.params.arguments ?? {});
38625
38688
  if (!parseResult.success) {
38626
38689
  const error2 = "error" in parseResult ? parseResult.error : "Unknown error";
38627
38690
  const errorMessage = getParseErrorMessage(error2);
@@ -39052,10 +39115,10 @@ var EMPTY_COMPLETION_RESULT = {
39052
39115
  }
39053
39116
  };
39054
39117
 
39055
- // node_modules/.pnpm/@modelcontextprotocol+sdk@1.31.0_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js
39118
+ // node_modules/.pnpm/@modelcontextprotocol+sdk@1.32.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js
39056
39119
  import process2 from "node:process";
39057
39120
 
39058
- // node_modules/.pnpm/@modelcontextprotocol+sdk@1.31.0_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.js
39121
+ // node_modules/.pnpm/@modelcontextprotocol+sdk@1.32.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.js
39059
39122
  var STDIO_DEFAULT_MAX_BUFFER_SIZE = 10 * 1024 * 1024;
39060
39123
  var ReadBuffer = class {
39061
39124
  constructor(options) {
@@ -39092,7 +39155,7 @@ function serializeMessage(message) {
39092
39155
  return JSON.stringify(message) + "\n";
39093
39156
  }
39094
39157
 
39095
- // node_modules/.pnpm/@modelcontextprotocol+sdk@1.31.0_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js
39158
+ // node_modules/.pnpm/@modelcontextprotocol+sdk@1.32.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js
39096
39159
  var StdioServerTransport = class {
39097
39160
  constructor(_stdin = process2.stdin, _stdout = process2.stdout, options) {
39098
39161
  this._stdin = _stdin;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "apple-notes-mcp",
3
- "version": "2.15.8",
3
+ "version": "2.15.10",
4
4
  "description": "MCP server for Apple Notes - read, search, create, edit, organize, and export notes on macOS via Claude and other AI assistants",
5
5
  "type": "module",
6
6
  "main": "build/index.js",
@@ -74,6 +74,7 @@
74
74
  "tsconfig-paths": "^4.2.0",
75
75
  "typescript": "^5.0.0",
76
76
  "typescript-eslint": "^8.51.0",
77
+ "vite": ">=7.3.7 <8",
77
78
  "vitest": "^4.1.11"
78
79
  },
79
80
  "volta": {