@vllnt/convex-helpers 0.1.0-canary.d8af8ef → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,10 @@
1
1
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  import { ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
3
3
  import type { ConvexClient } from "../types.js";
4
+ import { convexArgsToZod } from "../validators.js";
4
5
  import type { ResourceDef } from "./types.js";
5
6
  type PreparedResource = {
7
+ argsSchema: ReturnType<typeof convexArgsToZod> | undefined;
6
8
  description: string | undefined;
7
9
  resourceDef: ResourceDef;
8
10
  template: ResourceTemplate;
@@ -1 +1 @@
1
- {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/mcp/resources/register.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAE3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,KAAK,gBAAgB,GAAG;IACtB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GACrC,gBAAgB,EAAE,CAOpB;AAED,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,gBAAgB,EAAE,GAC5B,IAAI,CAiCN"}
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/mcp/resources/register.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAG3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,KAAK,gBAAgB,GAAG;IACtB,UAAU,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,GAAG,SAAS,CAAC;IAC3D,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GACrC,gBAAgB,EAAE,CAUpB;AAED,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,gBAAgB,EAAE,GAC5B,IAAI,CA4CN"}
@@ -1,6 +1,11 @@
1
1
  import { ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { stringifyConvex } from "../serialization.js";
3
+ import { convexArgsToZod } from "../validators.js";
2
4
  export function prepareResources(resources) {
3
5
  return Object.entries(resources).map(([uriPattern, resourceDef]) => ({
6
+ argsSchema: resourceDef.args
7
+ ? convexArgsToZod(resourceDef.args)
8
+ : undefined,
4
9
  description: resourceDef.description,
5
10
  resourceDef,
6
11
  template: new ResourceTemplate(uriPattern, { list: undefined }),
@@ -8,18 +13,19 @@ export function prepareResources(resources) {
8
13
  }));
9
14
  }
10
15
  export function registerResources(mcpServer, client, resources) {
11
- for (const { description, resourceDef, template, uriPattern } of resources) {
16
+ for (const { argsSchema, description, resourceDef, template, uriPattern, } of resources) {
12
17
  mcpServer.resource(uriPattern, template, {
13
18
  description,
14
19
  mimeType: "application/json",
15
20
  }, async (uri, parameters) => {
16
21
  try {
17
- const result = await client.query(resourceDef.ref, parameters);
22
+ const validatedParameters = argsSchema?.parse(parameters) ?? parameters;
23
+ const result = await client.query(resourceDef.ref, validatedParameters);
18
24
  return {
19
25
  contents: [
20
26
  {
21
27
  mimeType: "application/json",
22
- text: JSON.stringify(result ?? null, null, 2),
28
+ text: stringifyConvex(result),
23
29
  uri: uri.href,
24
30
  },
25
31
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/mcp/resources/register.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAa3E,MAAM,UAAU,gBAAgB,CAC9B,SAAsC;IAEtC,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;QACnE,WAAW,EAAE,WAAW,CAAC,WAAW;QACpC,WAAW;QACX,QAAQ,EAAE,IAAI,gBAAgB,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC/D,UAAU;KACX,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,SAAoB,EACpB,MAAoB,EACpB,SAA6B;IAE7B,KAAK,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,SAAS,EAAE,CAAC;QAC3E,SAAS,CAAC,QAAQ,CAChB,UAAU,EACV,QAAQ,EACR;YACE,WAAW;YACX,QAAQ,EAAE,kBAAkB;SAC7B,EACD,KAAK,EAAE,GAAG,EAAE,UAAmC,EAAE,EAAE;YACjD,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;gBAC/D,OAAO;oBACL,QAAQ,EAAE;wBACR;4BACE,QAAQ,EAAE,kBAAkB;4BAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;4BAC7C,GAAG,EAAE,GAAG,CAAC,IAAI;yBACd;qBACF;iBACF,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE;oBACjD,KAAK;oBACL,QAAQ,EAAE,UAAU;iBACrB,CAAC,CAAC;gBACH,kEAAkE;gBAClE,wDAAwD;gBACxD,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/mcp/resources/register.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAE3E,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAYnD,MAAM,UAAU,gBAAgB,CAC9B,SAAsC;IAEtC,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;QACnE,UAAU,EAAE,WAAW,CAAC,IAAI;YAC1B,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC;YACnC,CAAC,CAAC,SAAS;QACb,WAAW,EAAE,WAAW,CAAC,WAAW;QACpC,WAAW;QACX,QAAQ,EAAE,IAAI,gBAAgB,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC/D,UAAU;KACX,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,SAAoB,EACpB,MAAoB,EACpB,SAA6B;IAE7B,KAAK,MAAM,EACT,UAAU,EACV,WAAW,EACX,WAAW,EACX,QAAQ,EACR,UAAU,GACX,IAAI,SAAS,EAAE,CAAC;QACf,SAAS,CAAC,QAAQ,CAChB,UAAU,EACV,QAAQ,EACR;YACE,WAAW;YACX,QAAQ,EAAE,kBAAkB;SAC7B,EACD,KAAK,EAAE,GAAG,EAAE,UAAmC,EAAE,EAAE;YACjD,IAAI,CAAC;gBACH,MAAM,mBAAmB,GACvB,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC;gBAC9C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAC/B,WAAW,CAAC,GAAG,EACf,mBAAmB,CACpB,CAAC;gBACF,OAAO;oBACL,QAAQ,EAAE;wBACR;4BACE,QAAQ,EAAE,kBAAkB;4BAC5B,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC;4BAC7B,GAAG,EAAE,GAAG,CAAC,IAAI;yBACd;qBACF;iBACF,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE;oBACjD,KAAK;oBACL,QAAQ,EAAE,UAAU;iBACrB,CAAC,CAAC;gBACH,kEAAkE;gBAClE,wDAAwD;gBACxD,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Serialize native Convex values using Convex's lossless tagged JSON format. */
2
+ export declare function stringifyConvex(value: unknown): string;
3
+ //# sourceMappingURL=serialization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../../src/mcp/serialization.ts"],"names":[],"mappings":"AAEA,iFAAiF;AACjF,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEtD"}
@@ -0,0 +1,6 @@
1
+ import { convexToJson } from "convex/values";
2
+ /** Serialize native Convex values using Convex's lossless tagged JSON format. */
3
+ export function stringifyConvex(value) {
4
+ return JSON.stringify(convexToJson((value ?? null)), null, 2);
5
+ }
6
+ //# sourceMappingURL=serialization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialization.js","sourceRoot":"","sources":["../../src/mcp/serialization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAc,MAAM,eAAe,CAAC;AAEzD,iFAAiF;AACjF,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,KAAK,IAAI,IAAI,CAAU,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACzE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/register.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,OAAO,KAAK,EAEV,cAAc,EAEd,OAAO,EACR,MAAM,YAAY,CAAC;AAEpB,KAAK,YAAY,GAAG;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;CACxC,CAAC;AA0BF,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY,EAAE,CAa3E;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAQvB;AAiDD,wBAAgB,aAAa,CAC3B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,YAAY,EAAE,EACrB,KAAK,EAAE,cAAc,GAAG,SAAS,EACjC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,IAAI,CA0HN"}
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/register.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAG7B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,OAAO,KAAK,EAEV,cAAc,EAEd,OAAO,EACR,MAAM,YAAY,CAAC;AAEpB,KAAK,YAAY,GAAG;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;CACxC,CAAC;AA0BF,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY,EAAE,CAkB3E;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAQvB;AAiDD,wBAAgB,aAAa,CAC3B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,YAAY,EAAE,EACrB,KAAK,EAAE,cAAc,GAAG,SAAS,EACjC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,IAAI,CA0HN"}
@@ -1,3 +1,4 @@
1
+ import { stringifyConvex } from "../serialization.js";
1
2
  import { convexArgsToZod as convexArgumentsToZod } from "../validators.js";
2
3
  /**
3
4
  * Underscore-prefixed arg keys are reserved for framework-injected context.
@@ -21,6 +22,9 @@ function stripReservedFromShape(shape) {
21
22
  }
22
23
  export function prepareTools(tools) {
23
24
  return Object.entries(tools).map(([name, toolDef]) => {
25
+ if (toolDef.timeout !== undefined && toolDef.type !== "query") {
26
+ throw new Error(`Tool "${name}" cannot set a timeout on ${toolDef.type}: Convex execution cannot be cancelled safely`);
27
+ }
24
28
  const zodSchema = toolDef.args
25
29
  ? convexArgumentsToZod(toolDef.args)
26
30
  : undefined;
@@ -162,7 +166,7 @@ export function registerTools(mcpServer, client, tools, hooks, requestId, apiKey
162
166
  return {
163
167
  content: [
164
168
  {
165
- text: JSON.stringify(result ?? null, null, 2),
169
+ text: stringifyConvex(result),
166
170
  type: "text",
167
171
  },
168
172
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/mcp/tools/register.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/mcp/tools/register.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/mcp/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,YAAY,IAAI,EAAE,MAAM,EAKvB;CACF;AA6ID,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,eAAe,GAAG,CAAC,CAAC,UAAU,CAMzE;AAED,wBAAgB,eAAe,CAC7B,kBAAkB,EAAE,eAAe,GAClC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAY3C"}
1
+ {"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/mcp/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,YAAY,IAAI,EAAE,MAAM,EAKvB;CACF;AAkKD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,eAAe,GAAG,CAAC,CAAC,UAAU,CAMzE;AAED,wBAAgB,eAAe,CAC7B,kBAAkB,EAAE,eAAe,GAClC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAY3C"}
@@ -43,9 +43,28 @@ function convertKind(validator) {
43
43
  case "int64":
44
44
  return z
45
45
  .string()
46
- .describe("64-bit integer as string (BigInt — JSON cannot represent bigint)");
46
+ .regex(/^-?\d+$/, "Expected a decimal 64-bit integer string")
47
+ .refine((value) => {
48
+ const parsed = BigInt(value);
49
+ return parsed >= -(1n << 63n) && parsed <= (1n << 63n) - 1n;
50
+ }, "Integer is outside the signed 64-bit range")
51
+ .transform(BigInt)
52
+ .describe("64-bit integer as string (converted to BigInt before Convex dispatch)");
47
53
  case "bytes":
48
- return z.string().describe("Binary data as base64-encoded string");
54
+ return z
55
+ .string()
56
+ .refine((value) => {
57
+ try {
58
+ atob(value);
59
+ return true;
60
+ }
61
+ catch {
62
+ return false;
63
+ }
64
+ }, "Expected base64-encoded binary data")
65
+ .transform((value) => Uint8Array.from(atob(value), (character) => character.charCodeAt(0))
66
+ .buffer)
67
+ .describe("Binary data as base64-encoded string");
49
68
  case "id":
50
69
  return z
51
70
  .string()
@@ -1 +1 @@
1
- {"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/mcp/validators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/mcp/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAClD,YAAY,IAAY;QACtB,KAAK,CACH,uCAAuC,IAAI,gDAAgD,CAC5F,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;IAC1C,CAAC;CACF;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACf,YAAY,IAAI,KAAK,CACtB,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CACrB,KAAc;IAEd,MAAM,CAAC,GAAG,OAAO,KAAK,CAAC;IACvB,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;AAC/E,CAAC;AAED,SAAS,uBAAuB,CAC9B,OAA0B;IAE1B,OAAO,CACL,OAAO,CAAC,MAAM,GAAG,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAC1E,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAI,KAAU;IAClC,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED,0GAA0G;AAC1G,SAAS,OAAO,CAAI,KAAU;IAC5B,sDAAsD;IACtD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC3E,oBAAoB;IACpB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAAC,SAA0B;IAC7C,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;QACvB,KAAK,QAAQ;YACX,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;QAEpB,KAAK,SAAS;YACZ,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;QAEpB,KAAK,SAAS;YACZ,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;QAErB,KAAK,MAAM;YACT,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAElB,KAAK,OAAO;YACV,OAAO,CAAC;iBACL,MAAM,EAAE;iBACR,KAAK,CAAC,SAAS,EAAE,0CAA0C,CAAC;iBAC5D,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;gBAChB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC7B,OAAO,MAAM,IAAI,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;YAC9D,CAAC,EAAE,4CAA4C,CAAC;iBAC/C,SAAS,CAAC,MAAM,CAAC;iBACjB,QAAQ,CACP,uEAAuE,CACxE,CAAC;QAEN,KAAK,OAAO;YACV,OAAO,CAAC;iBACL,MAAM,EAAE;iBACR,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;gBAChB,IAAI,CAAC;oBACH,IAAI,CAAC,KAAK,CAAC,CAAC;oBACZ,OAAO,IAAI,CAAC;gBACd,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC,EAAE,qCAAqC,CAAC;iBACxC,SAAS,CACR,CAAC,KAAK,EAAE,EAAE,CACR,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;iBACjE,MAAM,CACZ;iBACA,QAAQ,CAAC,sCAAsC,CAAC,CAAC;QAEtD,KAAK,IAAI;YACP,OAAO,CAAC;iBACL,MAAM,EAAE;iBACR,QAAQ,CACP,SAAS,CAAC,SAAS;gBACjB,CAAC,CAAC,iCAAiC,SAAS,CAAC,SAAS,GAAG;gBACzD,CAAC,CAAC,oBAAoB,CACzB,CAAC;QAEN,KAAK,SAAS;YACZ,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrC,MAAM,IAAI,yBAAyB,CAAC,kCAAkC,CAAC,CAAC;YAC1E,CAAC;YACD,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAEpC,KAAK,OAAO;YACV,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;gBACvB,MAAM,IAAI,yBAAyB,CAAC,yBAAyB,CAAC,CAAC;YACjE,CAAC;YACD,OAAO,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QAEtD,KAAK,QAAQ,EAAE,CAAC;YACd,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;gBACtB,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACtB,CAAC;YACD,MAAM,KAAK,GAAiC,EAAE,CAAC;YAC/C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5D,KAAK,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACvC,CAAC;YACD,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QAED,KAAK,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzD,MAAM,IAAI,yBAAyB,CAAC,yBAAyB,CAAC,CAAC;YACjE,CAAC;YACD,IAAI,uBAAuB,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/C,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBACrD,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YACjC,CAAC;YACD,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;YACpE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;gBAC3B,qGAAqG;gBACrG,IAAI,CAAC,MAAM;oBACT,MAAM,IAAI,yBAAyB,CAAC,wBAAwB,CAAC,CAAC;gBAChE,oBAAoB;gBACpB,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QACrC,CAAC;QAED,KAAK,QAAQ,EAAE,CAAC;YACd,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;gBACvC,MAAM,IAAI,yBAAyB,CAAC,+BAA+B,CAAC,CAAC;YACvE,CAAC;YACD,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;YACnC,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBAC7C,MAAM,IAAI,yBAAyB,CACjC,yCAAyC,OAAO,GAAG,CACpD,CAAC;YACJ,CAAC;YACD,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC;YACvC,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE,CAAC;gBACvC,MAAM,IAAI,yBAAyB,CAAC,kCAAkC,CAAC,CAAC;YAC1E,CAAC;YACD,0EAA0E;YAC1E,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC;QAChE,CAAC;QAED,KAAK,KAAK;YACR,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;QAEjB;YACE,MAAM,IAAI,yBAAyB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,SAA0B;IACzD,MAAM,IAAI,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACpC,IAAI,SAAS,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,kBAAmC;IAEnC,IAAI,kBAAkB,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC;QAC/B,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC;IACD,MAAM,KAAK,GAAiC,EAAE,CAAC;IAC/C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;QACrE,KAAK,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vllnt/convex-helpers",
3
- "version": "0.1.0-canary.d8af8ef",
3
+ "version": "0.1.0",
4
4
  "description": "Typed host-side helpers for Convex backends — builders, errors, validators, relationships, pagination, HTTP, env, and observability.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -27,12 +27,13 @@
27
27
  "build": "tsc --project ./tsconfig.build.json",
28
28
  "typecheck": "tsc --noEmit && tsc --noEmit --project tsconfig.test.json",
29
29
  "typecheck:ci": "tsc --noEmit --project tsconfig.ci.json && tsc --noEmit --project tsconfig.test.json",
30
- "lint": "eslint .",
30
+ "lint": "pnpm check:agents && eslint .",
31
31
  "test": "vitest run --passWithNoTests",
32
32
  "test:watch": "vitest --typecheck --clearScreen false",
33
33
  "test:coverage": "vitest run --coverage --coverage.reporter=text",
34
34
  "generate:llms": "node scripts/generate-llms.mjs",
35
- "preversion": "pnpm install --frozen-lockfile && pnpm build && pnpm test && pnpm typecheck && pnpm generate:llms"
35
+ "preversion": "pnpm install --frozen-lockfile && pnpm build && pnpm test && pnpm typecheck && pnpm generate:llms",
36
+ "check:agents": "node -e \"const f=require('node:fs');if(!f.existsSync('AGENTS.md')||f.existsSync('CLAUDE.md')||f.existsSync('.claude'))process.exit(1)\""
36
37
  },
37
38
  "peerDependencies": {
38
39
  "@modelcontextprotocol/sdk": "^1.29.0",
@@ -48,19 +49,19 @@
48
49
  }
49
50
  },
50
51
  "devDependencies": {
51
- "@modelcontextprotocol/sdk": "^1.29.0",
52
- "@types/node": "^25.6.0",
52
+ "@modelcontextprotocol/sdk": "^1.30.0",
53
+ "@types/node": "^26.4.0",
53
54
  "@typescript/native": "npm:typescript@7.0.2",
54
- "@vitest/coverage-v8": "^3.0.0",
55
- "@vllnt/eslint-config": "2.0.0-canary.87019a5",
55
+ "@vitest/coverage-v8": "^4.1.11",
56
+ "@vllnt/eslint-config": "2.0.0",
56
57
  "@vllnt/typescript": "2.0.0",
57
58
  "convex": "^1.45.0",
58
59
  "convex-test": "^0.0.56",
59
- "eslint": "^9.0.0",
60
- "prettier": "^3.4.0",
60
+ "eslint": "^9.39.5",
61
+ "prettier": "^3.9.6",
61
62
  "typescript": "npm:@typescript/typescript6@^6.0.2",
62
- "vitest": "^3.0.0",
63
- "zod": "^4.3.6"
63
+ "vitest": "^4.1.11",
64
+ "zod": "^4.5.4"
64
65
  },
65
66
  "engines": {
66
67
  "node": ">=18"
@@ -1,11 +1,14 @@
1
1
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  import { ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
3
3
 
4
+ import { stringifyConvex } from "../serialization.js";
4
5
  import type { ConvexClient } from "../types.js";
6
+ import { convexArgsToZod } from "../validators.js";
5
7
 
6
8
  import type { ResourceDef } from "./types.js";
7
9
 
8
10
  type PreparedResource = {
11
+ argsSchema: ReturnType<typeof convexArgsToZod> | undefined;
9
12
  description: string | undefined;
10
13
  resourceDef: ResourceDef;
11
14
  template: ResourceTemplate;
@@ -16,6 +19,9 @@ export function prepareResources(
16
19
  resources: Record<string, ResourceDef>,
17
20
  ): PreparedResource[] {
18
21
  return Object.entries(resources).map(([uriPattern, resourceDef]) => ({
22
+ argsSchema: resourceDef.args
23
+ ? convexArgsToZod(resourceDef.args)
24
+ : undefined,
19
25
  description: resourceDef.description,
20
26
  resourceDef,
21
27
  template: new ResourceTemplate(uriPattern, { list: undefined }),
@@ -28,7 +34,13 @@ export function registerResources(
28
34
  client: ConvexClient,
29
35
  resources: PreparedResource[],
30
36
  ): void {
31
- for (const { description, resourceDef, template, uriPattern } of resources) {
37
+ for (const {
38
+ argsSchema,
39
+ description,
40
+ resourceDef,
41
+ template,
42
+ uriPattern,
43
+ } of resources) {
32
44
  mcpServer.resource(
33
45
  uriPattern,
34
46
  template,
@@ -38,12 +50,17 @@ export function registerResources(
38
50
  },
39
51
  async (uri, parameters: Record<string, unknown>) => {
40
52
  try {
41
- const result = await client.query(resourceDef.ref, parameters);
53
+ const validatedParameters =
54
+ argsSchema?.parse(parameters) ?? parameters;
55
+ const result = await client.query(
56
+ resourceDef.ref,
57
+ validatedParameters,
58
+ );
42
59
  return {
43
60
  contents: [
44
61
  {
45
62
  mimeType: "application/json",
46
- text: JSON.stringify(result ?? null, null, 2),
63
+ text: stringifyConvex(result),
47
64
  uri: uri.href,
48
65
  },
49
66
  ],
@@ -0,0 +1,6 @@
1
+ import { convexToJson, type Value } from "convex/values";
2
+
3
+ /** Serialize native Convex values using Convex's lossless tagged JSON format. */
4
+ export function stringifyConvex(value: unknown): string {
5
+ return JSON.stringify(convexToJson((value ?? null) as Value), null, 2);
6
+ }
@@ -1,6 +1,7 @@
1
1
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  import type { z } from "zod";
3
3
 
4
+ import { stringifyConvex } from "../serialization.js";
4
5
  import type { ConvexClient } from "../types.js";
5
6
  import { convexArgsToZod as convexArgumentsToZod } from "../validators.js";
6
7
 
@@ -44,6 +45,11 @@ function stripReservedFromShape(
44
45
 
45
46
  export function prepareTools(tools: Record<string, ToolDef>): PreparedTool[] {
46
47
  return Object.entries(tools).map(([name, toolDef]) => {
48
+ if (toolDef.timeout !== undefined && toolDef.type !== "query") {
49
+ throw new Error(
50
+ `Tool "${name}" cannot set a timeout on ${toolDef.type}: Convex execution cannot be cancelled safely`,
51
+ );
52
+ }
47
53
  const zodSchema = toolDef.args
48
54
  ? convexArgumentsToZod(toolDef.args)
49
55
  : undefined;
@@ -220,7 +226,7 @@ export function registerTools(
220
226
  return {
221
227
  content: [
222
228
  {
223
- text: JSON.stringify(result ?? null, null, 2),
229
+ text: stringifyConvex(result),
224
230
  type: "text" as const,
225
231
  },
226
232
  ],
@@ -65,12 +65,33 @@ function convertKind(validator: ConvexValidator): z.ZodTypeAny {
65
65
  case "int64":
66
66
  return z
67
67
  .string()
68
+ .regex(/^-?\d+$/, "Expected a decimal 64-bit integer string")
69
+ .refine((value) => {
70
+ const parsed = BigInt(value);
71
+ return parsed >= -(1n << 63n) && parsed <= (1n << 63n) - 1n;
72
+ }, "Integer is outside the signed 64-bit range")
73
+ .transform(BigInt)
68
74
  .describe(
69
- "64-bit integer as string (BigInt JSON cannot represent bigint)",
75
+ "64-bit integer as string (converted to BigInt before Convex dispatch)",
70
76
  );
71
77
 
72
78
  case "bytes":
73
- return z.string().describe("Binary data as base64-encoded string");
79
+ return z
80
+ .string()
81
+ .refine((value) => {
82
+ try {
83
+ atob(value);
84
+ return true;
85
+ } catch {
86
+ return false;
87
+ }
88
+ }, "Expected base64-encoded binary data")
89
+ .transform(
90
+ (value) =>
91
+ Uint8Array.from(atob(value), (character) => character.charCodeAt(0))
92
+ .buffer,
93
+ )
94
+ .describe("Binary data as base64-encoded string");
74
95
 
75
96
  case "id":
76
97
  return z