@actuarial-ts/agents 0.3.0 → 0.5.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.
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +49 -22
- package/dist/tools.js.map +1 -1
- package/package.json +7 -7
- package/src/tools.ts +62 -21
package/dist/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAM7B,gFAAgF;AAChF,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1C,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,YAAY,SAAe,GAAG,mBAAmB,CAyB9F;AAKD;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,cAAc,CAAC,EAAE;QAAE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;CAChD;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,SAAS,EAAE,GAAG,SAAc,GAAG,MAAM,CAE1F;AAED,+EAA+E;AAC/E,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEtD,yEAAyE;AACzE,MAAM,WAAW,cAAc;IAC7B,cAAc,CAAC,EAAE;QAAE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IAC/C,GAAG,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE;YAAE,QAAQ,CAAC,EAAE,eAAe,CAAA;SAAE,CAAA;KAAE,CAAC;CAClD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc,GAAG,SAAS,GAAG,eAAe,GAAG,SAAS,CAsBnG;AAED,wDAAwD;AACxD,MAAM,MAAM,YAAY,GAAG,iBAAiB,GAAG,UAAU,CAAC;AAE1D,MAAM,WAAW,oBAAoB;IACnC,kFAAkF;IAClF,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,0DAA0D;IAC1D,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,iBAAiB,GAAG,cAAc,GAAG,SAAS,EACvD,OAAO,GAAE,oBAAyB,GACjC,MAAM,CAgBR;AASD,sFAAsF;AACtF,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAO9E;
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
package/dist/tools.js
CHANGED
|
@@ -170,15 +170,41 @@ const OPAQUE_TYPE_NAMES = new Set(["ZodAny", "ZodUnknown", "ZodMap"]);
|
|
|
170
170
|
* each smuggled a nested tenant id straight past it. On a security seam,
|
|
171
171
|
* "I don't know what this is" has to mean "refused", not "fine".
|
|
172
172
|
*/
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
173
|
+
/**
|
|
174
|
+
* Frame budget for the tenant lint. Cycles are caught exactly by the on-stack
|
|
175
|
+
* set below; this cap only terminates GENERATIVE schemas (a z.lazy() whose
|
|
176
|
+
* getter builds a fresh node every resolution, so no node ever repeats) and
|
|
177
|
+
* absurd finite nesting. 256 frames is far beyond any real tool input —
|
|
178
|
+
* wrappers (.optional(), .default(), z.lazy resolution) each cost one frame.
|
|
179
|
+
*/
|
|
180
|
+
const MAX_LINT_FRAMES = 256;
|
|
181
|
+
function assertNoTenantKeys(schema, toolId, path, allowUninspected, usedAllowances, stack = new Set(), depth = 0) {
|
|
182
|
+
// Cycle guard by node identity, NOT by counting dots in `path`: only the
|
|
183
|
+
// object branch appends ".", so a cycle routed purely through lazy/union/
|
|
184
|
+
// array/set/tuple/intersection/pipeline used to recurse with a frozen dot
|
|
185
|
+
// count straight into a RangeError. `stack` holds the nodes on the CURRENT
|
|
186
|
+
// recursion path (added on entry, removed on exit), so meeting one again is
|
|
187
|
+
// a true cycle; shared non-cyclic subschemas are deliberately re-visited so
|
|
188
|
+
// per-path allowUninspected accounting keeps working.
|
|
189
|
+
if (depth > MAX_LINT_FRAMES) {
|
|
190
|
+
throw new AgentsError("BAD_INPUT_SCHEMA", `Tool "${toolId}": the input schema nests deeper than the tenant lint's ${MAX_LINT_FRAMES}-frame budget at "${path.slice(0, 120)}..." ` +
|
|
191
|
+
"(likely a z.lazy() that constructs a fresh schema on every resolution); the tenant lint cannot verify unbounded schemas");
|
|
179
192
|
}
|
|
180
193
|
if (typeof schema !== "object" || schema === null)
|
|
181
194
|
return;
|
|
195
|
+
if (stack.has(schema)) {
|
|
196
|
+
throw new AgentsError("BAD_INPUT_SCHEMA", `Tool "${toolId}": the input schema is self-referential at "${path.slice(0, 120)}" ` +
|
|
197
|
+
"(a cyclic z.lazy()); the tenant lint cannot verify unbounded schemas");
|
|
198
|
+
}
|
|
199
|
+
stack.add(schema);
|
|
200
|
+
try {
|
|
201
|
+
lintSchemaNode(schema, toolId, path, allowUninspected, usedAllowances, stack, depth);
|
|
202
|
+
}
|
|
203
|
+
finally {
|
|
204
|
+
stack.delete(schema);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
function lintSchemaNode(schema, toolId, path, allowUninspected, usedAllowances, stack, depth) {
|
|
182
208
|
const def = schema._def;
|
|
183
209
|
if (!def)
|
|
184
210
|
return;
|
|
@@ -196,7 +222,7 @@ function assertNoTenantKeys(schema, toolId, path, allowUninspected, usedAllowanc
|
|
|
196
222
|
if (TENANT_KEY_PATTERN.test(key)) {
|
|
197
223
|
throw new AgentsError("TENANT_IN_SCHEMA", `Tool "${toolId}" declares input key "${path}.${key}": tenant ids travel only via the server-set RequestContext (read them with tenantOf), never through the model-facing input schema`);
|
|
198
224
|
}
|
|
199
|
-
assertNoTenantKeys(value, toolId, `${path}.${key}`, allowUninspected, usedAllowances);
|
|
225
|
+
assertNoTenantKeys(value, toolId, `${path}.${key}`, allowUninspected, usedAllowances, stack, depth + 1);
|
|
200
226
|
}
|
|
201
227
|
return;
|
|
202
228
|
}
|
|
@@ -222,7 +248,7 @@ function assertNoTenantKeys(schema, toolId, path, allowUninspected, usedAllowanc
|
|
|
222
248
|
"exception is deliberate and greppable");
|
|
223
249
|
}
|
|
224
250
|
if (typeName === "ZodArray") {
|
|
225
|
-
assertNoTenantKeys(def.type, toolId, `${path}[]`, allowUninspected, usedAllowances);
|
|
251
|
+
assertNoTenantKeys(def.type, toolId, `${path}[]`, allowUninspected, usedAllowances, stack, depth + 1);
|
|
226
252
|
return;
|
|
227
253
|
}
|
|
228
254
|
if (typeName === "ZodOptional" ||
|
|
@@ -230,49 +256,50 @@ function assertNoTenantKeys(schema, toolId, path, allowUninspected, usedAllowanc
|
|
|
230
256
|
typeName === "ZodDefault" ||
|
|
231
257
|
typeName === "ZodCatch" ||
|
|
232
258
|
typeName === "ZodReadonly") {
|
|
233
|
-
assertNoTenantKeys(def.innerType, toolId, path, allowUninspected, usedAllowances);
|
|
259
|
+
assertNoTenantKeys(def.innerType, toolId, path, allowUninspected, usedAllowances, stack, depth + 1);
|
|
234
260
|
return;
|
|
235
261
|
}
|
|
236
262
|
if (typeName === "ZodPromise" || typeName === "ZodBranded") {
|
|
237
|
-
assertNoTenantKeys(def.type, toolId, path, allowUninspected, usedAllowances);
|
|
263
|
+
assertNoTenantKeys(def.type, toolId, path, allowUninspected, usedAllowances, stack, depth + 1);
|
|
238
264
|
return;
|
|
239
265
|
}
|
|
240
266
|
if (typeName === "ZodEffects") {
|
|
241
|
-
assertNoTenantKeys(def.schema, toolId, path, allowUninspected, usedAllowances);
|
|
267
|
+
assertNoTenantKeys(def.schema, toolId, path, allowUninspected, usedAllowances, stack, depth + 1);
|
|
242
268
|
return;
|
|
243
269
|
}
|
|
244
270
|
if (typeName === "ZodUnion" || typeName === "ZodDiscriminatedUnion") {
|
|
245
271
|
for (const opt of def.options ?? [])
|
|
246
|
-
assertNoTenantKeys(opt, toolId, path, allowUninspected, usedAllowances);
|
|
272
|
+
assertNoTenantKeys(opt, toolId, path, allowUninspected, usedAllowances, stack, depth + 1);
|
|
247
273
|
return;
|
|
248
274
|
}
|
|
249
275
|
if (typeName === "ZodTuple") {
|
|
250
276
|
for (const [index, item] of (def.items ?? []).entries()) {
|
|
251
|
-
assertNoTenantKeys(item, toolId, `${path}[${index}]`, allowUninspected, usedAllowances);
|
|
277
|
+
assertNoTenantKeys(item, toolId, `${path}[${index}]`, allowUninspected, usedAllowances, stack, depth + 1);
|
|
252
278
|
}
|
|
253
279
|
if (def.rest !== undefined && def.rest !== null) {
|
|
254
|
-
assertNoTenantKeys(def.rest, toolId, `${path}[rest]`, allowUninspected, usedAllowances);
|
|
280
|
+
assertNoTenantKeys(def.rest, toolId, `${path}[rest]`, allowUninspected, usedAllowances, stack, depth + 1);
|
|
255
281
|
}
|
|
256
282
|
return;
|
|
257
283
|
}
|
|
258
284
|
if (typeName === "ZodIntersection") {
|
|
259
|
-
assertNoTenantKeys(def.left, toolId, path, allowUninspected, usedAllowances);
|
|
260
|
-
assertNoTenantKeys(def.right, toolId, path, allowUninspected, usedAllowances);
|
|
285
|
+
assertNoTenantKeys(def.left, toolId, path, allowUninspected, usedAllowances, stack, depth + 1);
|
|
286
|
+
assertNoTenantKeys(def.right, toolId, path, allowUninspected, usedAllowances, stack, depth + 1);
|
|
261
287
|
return;
|
|
262
288
|
}
|
|
263
289
|
if (typeName === "ZodPipeline") {
|
|
264
|
-
assertNoTenantKeys(def.in, toolId, path, allowUninspected, usedAllowances);
|
|
265
|
-
assertNoTenantKeys(def.out, toolId, path, allowUninspected, usedAllowances);
|
|
290
|
+
assertNoTenantKeys(def.in, toolId, path, allowUninspected, usedAllowances, stack, depth + 1);
|
|
291
|
+
assertNoTenantKeys(def.out, toolId, path, allowUninspected, usedAllowances, stack, depth + 1);
|
|
266
292
|
return;
|
|
267
293
|
}
|
|
268
294
|
if (typeName === "ZodSet") {
|
|
269
|
-
assertNoTenantKeys(def.valueType, toolId, `${path}[]`, allowUninspected, usedAllowances);
|
|
295
|
+
assertNoTenantKeys(def.valueType, toolId, `${path}[]`, allowUninspected, usedAllowances, stack, depth + 1);
|
|
270
296
|
return;
|
|
271
297
|
}
|
|
272
298
|
if (typeName === "ZodLazy") {
|
|
273
|
-
// Resolve once. A
|
|
274
|
-
//
|
|
275
|
-
|
|
299
|
+
// Resolve once. A self-referential lazy resolves to a node already on the
|
|
300
|
+
// recursion stack and is caught by the cycle guard in assertNoTenantKeys;
|
|
301
|
+
// a generative lazy (fresh node per resolution) hits the frame budget.
|
|
302
|
+
assertNoTenantKeys(def.getter?.(), toolId, path, allowUninspected, usedAllowances, stack, depth + 1);
|
|
276
303
|
return;
|
|
277
304
|
}
|
|
278
305
|
// Fail closed: a typeName this lint has never heard of gets refused, not
|
package/dist/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@actuarial-ts/agents",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Mastra agent toolkit for the actuarial-ts SDK: typed actuarial tools with a hard tenant seam, human-gated judgment workflows that write the compliance assumption ledger, a reserving advisor factory, and a golden-prompt eval harness.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -46,10 +46,10 @@
|
|
|
46
46
|
"prepack": "tsc -p tsconfig.build.json"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@actuarial-ts/compliance": "^0.
|
|
50
|
-
"@actuarial-ts/core": "^0.
|
|
51
|
-
"@actuarial-ts/data": "^0.
|
|
52
|
-
"@actuarial-ts/interchange": "^0.
|
|
49
|
+
"@actuarial-ts/compliance": "^0.5.0",
|
|
50
|
+
"@actuarial-ts/core": "^0.5.0",
|
|
51
|
+
"@actuarial-ts/data": "^0.5.0",
|
|
52
|
+
"@actuarial-ts/interchange": "^0.5.0"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
55
|
"@mastra/core": "^1.49.0",
|
|
@@ -61,8 +61,8 @@
|
|
|
61
61
|
},
|
|
62
62
|
"peerDependencies": {
|
|
63
63
|
"@mastra/core": ">=1.49.0 <2",
|
|
64
|
-
"
|
|
65
|
-
"
|
|
64
|
+
"@mastra/mcp": ">=1.14.0 <2",
|
|
65
|
+
"zod": "^3.25.0"
|
|
66
66
|
},
|
|
67
67
|
"publishConfig": {
|
|
68
68
|
"access": "public"
|
package/src/tools.ts
CHANGED
|
@@ -239,23 +239,63 @@ const OPAQUE_TYPE_NAMES = new Set(["ZodAny", "ZodUnknown", "ZodMap"]);
|
|
|
239
239
|
* each smuggled a nested tenant id straight past it. On a security seam,
|
|
240
240
|
* "I don't know what this is" has to mean "refused", not "fine".
|
|
241
241
|
*/
|
|
242
|
+
/**
|
|
243
|
+
* Frame budget for the tenant lint. Cycles are caught exactly by the on-stack
|
|
244
|
+
* set below; this cap only terminates GENERATIVE schemas (a z.lazy() whose
|
|
245
|
+
* getter builds a fresh node every resolution, so no node ever repeats) and
|
|
246
|
+
* absurd finite nesting. 256 frames is far beyond any real tool input —
|
|
247
|
+
* wrappers (.optional(), .default(), z.lazy resolution) each cost one frame.
|
|
248
|
+
*/
|
|
249
|
+
const MAX_LINT_FRAMES = 256;
|
|
250
|
+
|
|
242
251
|
function assertNoTenantKeys(
|
|
243
252
|
schema: unknown,
|
|
244
253
|
toolId: string,
|
|
245
254
|
path: string,
|
|
246
255
|
allowUninspected?: ReadonlySet<string>,
|
|
247
256
|
usedAllowances?: Set<string>,
|
|
257
|
+
stack: Set<unknown> = new Set(),
|
|
258
|
+
depth = 0,
|
|
248
259
|
): void {
|
|
249
|
-
//
|
|
250
|
-
//
|
|
251
|
-
|
|
260
|
+
// Cycle guard by node identity, NOT by counting dots in `path`: only the
|
|
261
|
+
// object branch appends ".", so a cycle routed purely through lazy/union/
|
|
262
|
+
// array/set/tuple/intersection/pipeline used to recurse with a frozen dot
|
|
263
|
+
// count straight into a RangeError. `stack` holds the nodes on the CURRENT
|
|
264
|
+
// recursion path (added on entry, removed on exit), so meeting one again is
|
|
265
|
+
// a true cycle; shared non-cyclic subschemas are deliberately re-visited so
|
|
266
|
+
// per-path allowUninspected accounting keeps working.
|
|
267
|
+
if (depth > MAX_LINT_FRAMES) {
|
|
252
268
|
throw new AgentsError(
|
|
253
269
|
"BAD_INPUT_SCHEMA",
|
|
254
|
-
`Tool "${toolId}": the input schema nests deeper than
|
|
255
|
-
"(likely a
|
|
270
|
+
`Tool "${toolId}": the input schema nests deeper than the tenant lint's ${MAX_LINT_FRAMES}-frame budget at "${path.slice(0, 120)}..." ` +
|
|
271
|
+
"(likely a z.lazy() that constructs a fresh schema on every resolution); the tenant lint cannot verify unbounded schemas",
|
|
256
272
|
);
|
|
257
273
|
}
|
|
258
274
|
if (typeof schema !== "object" || schema === null) return;
|
|
275
|
+
if (stack.has(schema)) {
|
|
276
|
+
throw new AgentsError(
|
|
277
|
+
"BAD_INPUT_SCHEMA",
|
|
278
|
+
`Tool "${toolId}": the input schema is self-referential at "${path.slice(0, 120)}" ` +
|
|
279
|
+
"(a cyclic z.lazy()); the tenant lint cannot verify unbounded schemas",
|
|
280
|
+
);
|
|
281
|
+
}
|
|
282
|
+
stack.add(schema);
|
|
283
|
+
try {
|
|
284
|
+
lintSchemaNode(schema, toolId, path, allowUninspected, usedAllowances, stack, depth);
|
|
285
|
+
} finally {
|
|
286
|
+
stack.delete(schema);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
function lintSchemaNode(
|
|
291
|
+
schema: object,
|
|
292
|
+
toolId: string,
|
|
293
|
+
path: string,
|
|
294
|
+
allowUninspected: ReadonlySet<string> | undefined,
|
|
295
|
+
usedAllowances: Set<string> | undefined,
|
|
296
|
+
stack: Set<unknown>,
|
|
297
|
+
depth: number,
|
|
298
|
+
): void {
|
|
259
299
|
const def = (schema as { _def?: ZodDefLike })._def;
|
|
260
300
|
if (!def) return;
|
|
261
301
|
const typeName = def.typeName;
|
|
@@ -282,7 +322,7 @@ function assertNoTenantKeys(
|
|
|
282
322
|
`Tool "${toolId}" declares input key "${path}.${key}": tenant ids travel only via the server-set RequestContext (read them with tenantOf), never through the model-facing input schema`,
|
|
283
323
|
);
|
|
284
324
|
}
|
|
285
|
-
assertNoTenantKeys(value, toolId, `${path}.${key}`, allowUninspected, usedAllowances);
|
|
325
|
+
assertNoTenantKeys(value, toolId, `${path}.${key}`, allowUninspected, usedAllowances, stack, depth + 1);
|
|
286
326
|
}
|
|
287
327
|
return;
|
|
288
328
|
}
|
|
@@ -314,7 +354,7 @@ function assertNoTenantKeys(
|
|
|
314
354
|
);
|
|
315
355
|
}
|
|
316
356
|
if (typeName === "ZodArray") {
|
|
317
|
-
assertNoTenantKeys(def.type, toolId, `${path}[]`, allowUninspected, usedAllowances);
|
|
357
|
+
assertNoTenantKeys(def.type, toolId, `${path}[]`, allowUninspected, usedAllowances, stack, depth + 1);
|
|
318
358
|
return;
|
|
319
359
|
}
|
|
320
360
|
if (
|
|
@@ -324,48 +364,49 @@ function assertNoTenantKeys(
|
|
|
324
364
|
typeName === "ZodCatch" ||
|
|
325
365
|
typeName === "ZodReadonly"
|
|
326
366
|
) {
|
|
327
|
-
assertNoTenantKeys(def.innerType, toolId, path, allowUninspected, usedAllowances);
|
|
367
|
+
assertNoTenantKeys(def.innerType, toolId, path, allowUninspected, usedAllowances, stack, depth + 1);
|
|
328
368
|
return;
|
|
329
369
|
}
|
|
330
370
|
if (typeName === "ZodPromise" || typeName === "ZodBranded") {
|
|
331
|
-
assertNoTenantKeys(def.type, toolId, path, allowUninspected, usedAllowances);
|
|
371
|
+
assertNoTenantKeys(def.type, toolId, path, allowUninspected, usedAllowances, stack, depth + 1);
|
|
332
372
|
return;
|
|
333
373
|
}
|
|
334
374
|
if (typeName === "ZodEffects") {
|
|
335
|
-
assertNoTenantKeys(def.schema, toolId, path, allowUninspected, usedAllowances);
|
|
375
|
+
assertNoTenantKeys(def.schema, toolId, path, allowUninspected, usedAllowances, stack, depth + 1);
|
|
336
376
|
return;
|
|
337
377
|
}
|
|
338
378
|
if (typeName === "ZodUnion" || typeName === "ZodDiscriminatedUnion") {
|
|
339
|
-
for (const opt of def.options ?? []) assertNoTenantKeys(opt, toolId, path, allowUninspected, usedAllowances);
|
|
379
|
+
for (const opt of def.options ?? []) assertNoTenantKeys(opt, toolId, path, allowUninspected, usedAllowances, stack, depth + 1);
|
|
340
380
|
return;
|
|
341
381
|
}
|
|
342
382
|
if (typeName === "ZodTuple") {
|
|
343
383
|
for (const [index, item] of (def.items ?? []).entries()) {
|
|
344
|
-
assertNoTenantKeys(item, toolId, `${path}[${index}]`, allowUninspected, usedAllowances);
|
|
384
|
+
assertNoTenantKeys(item, toolId, `${path}[${index}]`, allowUninspected, usedAllowances, stack, depth + 1);
|
|
345
385
|
}
|
|
346
386
|
if (def.rest !== undefined && def.rest !== null) {
|
|
347
|
-
assertNoTenantKeys(def.rest, toolId, `${path}[rest]`, allowUninspected, usedAllowances);
|
|
387
|
+
assertNoTenantKeys(def.rest, toolId, `${path}[rest]`, allowUninspected, usedAllowances, stack, depth + 1);
|
|
348
388
|
}
|
|
349
389
|
return;
|
|
350
390
|
}
|
|
351
391
|
if (typeName === "ZodIntersection") {
|
|
352
|
-
assertNoTenantKeys(def.left, toolId, path, allowUninspected, usedAllowances);
|
|
353
|
-
assertNoTenantKeys(def.right, toolId, path, allowUninspected, usedAllowances);
|
|
392
|
+
assertNoTenantKeys(def.left, toolId, path, allowUninspected, usedAllowances, stack, depth + 1);
|
|
393
|
+
assertNoTenantKeys(def.right, toolId, path, allowUninspected, usedAllowances, stack, depth + 1);
|
|
354
394
|
return;
|
|
355
395
|
}
|
|
356
396
|
if (typeName === "ZodPipeline") {
|
|
357
|
-
assertNoTenantKeys(def.in, toolId, path, allowUninspected, usedAllowances);
|
|
358
|
-
assertNoTenantKeys(def.out, toolId, path, allowUninspected, usedAllowances);
|
|
397
|
+
assertNoTenantKeys(def.in, toolId, path, allowUninspected, usedAllowances, stack, depth + 1);
|
|
398
|
+
assertNoTenantKeys(def.out, toolId, path, allowUninspected, usedAllowances, stack, depth + 1);
|
|
359
399
|
return;
|
|
360
400
|
}
|
|
361
401
|
if (typeName === "ZodSet") {
|
|
362
|
-
assertNoTenantKeys(def.valueType, toolId, `${path}[]`, allowUninspected, usedAllowances);
|
|
402
|
+
assertNoTenantKeys(def.valueType, toolId, `${path}[]`, allowUninspected, usedAllowances, stack, depth + 1);
|
|
363
403
|
return;
|
|
364
404
|
}
|
|
365
405
|
if (typeName === "ZodLazy") {
|
|
366
|
-
// Resolve once. A
|
|
367
|
-
//
|
|
368
|
-
|
|
406
|
+
// Resolve once. A self-referential lazy resolves to a node already on the
|
|
407
|
+
// recursion stack and is caught by the cycle guard in assertNoTenantKeys;
|
|
408
|
+
// a generative lazy (fresh node per resolution) hits the frame budget.
|
|
409
|
+
assertNoTenantKeys(def.getter?.(), toolId, path, allowUninspected, usedAllowances, stack, depth + 1);
|
|
369
410
|
return;
|
|
370
411
|
}
|
|
371
412
|
|