@probelabs/visor 0.1.180-ee → 0.1.181-ee
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/agent-protocol/track-execution.d.ts +1 -1
- package/dist/agent-protocol/track-execution.d.ts.map +1 -1
- package/dist/ai-review-service.d.ts +17 -1
- package/dist/ai-review-service.d.ts.map +1 -1
- package/dist/cli-main.d.ts.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/docs/commands.md +34 -1
- package/dist/email/polling-runner.d.ts +3 -1
- package/dist/email/polling-runner.d.ts.map +1 -1
- package/dist/frontends/github-frontend.d.ts.map +1 -1
- package/dist/index.js +1555 -752
- package/dist/mcp-server.d.ts +50 -6
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/providers/mcp-custom-sse-server.d.ts.map +1 -1
- package/dist/providers/workflow-check-provider.d.ts.map +1 -1
- package/dist/runners/mcp-server-runner.d.ts +66 -0
- package/dist/runners/mcp-server-runner.d.ts.map +1 -0
- package/dist/runners/runner-factory.d.ts +12 -0
- package/dist/runners/runner-factory.d.ts.map +1 -0
- package/dist/runners/runner-host.d.ts +30 -0
- package/dist/runners/runner-host.d.ts.map +1 -0
- package/dist/runners/runner.d.ts +21 -0
- package/dist/runners/runner.d.ts.map +1 -0
- package/dist/runners/telemetry-init.d.ts +10 -0
- package/dist/runners/telemetry-init.d.ts.map +1 -0
- package/dist/sdk/{a2a-frontend-6FNPD53G.mjs → a2a-frontend-BDACLGMA.mjs} +2 -2
- package/dist/sdk/{check-provider-registry-Z4MVXFLJ.mjs → check-provider-registry-4YKTEDKF.mjs} +8 -8
- package/dist/sdk/{check-provider-registry-T4HIUBMT.mjs → check-provider-registry-Z7EHECLC.mjs} +7 -7
- package/dist/sdk/{chunk-NBUN22ZG.mjs → chunk-3JFK6KCD.mjs} +4 -10
- package/dist/sdk/chunk-3JFK6KCD.mjs.map +1 -0
- package/dist/sdk/{chunk-STAAKOPU.mjs → chunk-6HLDM4OB.mjs} +218 -48
- package/dist/sdk/chunk-6HLDM4OB.mjs.map +1 -0
- package/dist/sdk/{chunk-F25U4YWJ.mjs → chunk-7XRSCOKE.mjs} +3 -3
- package/dist/sdk/{chunk-ANCIFGQH.mjs.map → chunk-7XRSCOKE.mjs.map} +1 -1
- package/dist/sdk/{chunk-MWUQFSEK.mjs → chunk-7YZSSO4X.mjs} +213 -43
- package/dist/sdk/chunk-7YZSSO4X.mjs.map +1 -0
- package/dist/sdk/{chunk-3ZKBUWDB.mjs → chunk-KBGQJKIZ.mjs} +3 -3
- package/dist/sdk/{chunk-5DQY4LTK.mjs → chunk-U6K5SK7X.mjs} +2 -2
- package/dist/sdk/{chunk-KAVOGMLR.mjs → chunk-VMVIM4JB.mjs} +2 -1
- package/dist/sdk/{chunk-KAVOGMLR.mjs.map → chunk-VMVIM4JB.mjs.map} +1 -1
- package/dist/sdk/{config-ZZKC47SV.mjs → config-TSA5FUOM.mjs} +2 -2
- package/dist/sdk/dist-3UGGEZB3.mjs +8008 -0
- package/dist/sdk/dist-3UGGEZB3.mjs.map +1 -0
- package/dist/sdk/email-frontend-WSNADJPI.mjs +701 -0
- package/dist/sdk/email-frontend-WSNADJPI.mjs.map +1 -0
- package/dist/sdk/{failure-condition-evaluator-WNCCIP6N.mjs → failure-condition-evaluator-FFWJRAEQ.mjs} +3 -3
- package/dist/sdk/{github-frontend-QVMVUL3Y.mjs → github-frontend-KGV2R5Z6.mjs} +4 -4
- package/dist/sdk/github-frontend-KGV2R5Z6.mjs.map +1 -0
- package/dist/sdk/{host-5TJBWGGH.mjs → host-6QBBL3QW.mjs} +3 -3
- package/dist/sdk/{host-RVLIZMTE.mjs → host-CVH2CSHM.mjs} +4 -4
- package/dist/sdk/{routing-5DHNS7IW.mjs → routing-XALEDC2G.mjs} +4 -4
- package/dist/sdk/{schedule-tool-25CFKVOI.mjs → schedule-tool-5XBASQVY.mjs} +7 -7
- package/dist/sdk/{schedule-tool-UGWYLGJK.mjs → schedule-tool-ADUXTCY7.mjs} +8 -8
- package/dist/sdk/{schedule-tool-handler-VWBX4JEF.mjs → schedule-tool-handler-GBIJS376.mjs} +7 -7
- package/dist/sdk/{schedule-tool-handler-WK22RO3M.mjs → schedule-tool-handler-N7UNABOA.mjs} +8 -8
- package/dist/sdk/sdk.js +792 -6339
- package/dist/sdk/sdk.js.map +1 -1
- package/dist/sdk/sdk.mjs +7 -7
- package/dist/sdk/{trace-helpers-GCLQ3YKO.mjs → trace-helpers-3FFAI7X3.mjs} +2 -2
- package/dist/sdk/{track-execution-GCGJKMAO.mjs → track-execution-AMQQNXKE.mjs} +1 -1
- package/dist/sdk/track-execution-AMQQNXKE.mjs.map +1 -0
- package/dist/sdk/{utcp-check-provider-HT2MA5SS.mjs → utcp-check-provider-JLIYF5HH.mjs} +2 -2
- package/dist/sdk/{workflow-check-provider-I732XE7D.mjs → workflow-check-provider-3IXIADSV.mjs} +7 -7
- package/dist/sdk/{workflow-check-provider-T4PFK2EG.mjs → workflow-check-provider-SRIMWKLQ.mjs} +8 -8
- package/dist/slack/socket-runner.d.ts +3 -1
- package/dist/slack/socket-runner.d.ts.map +1 -1
- package/dist/state-machine/dispatch/template-renderer.d.ts.map +1 -1
- package/dist/state-machine/runner.d.ts.map +1 -1
- package/dist/teams/webhook-runner.d.ts +3 -1
- package/dist/teams/webhook-runner.d.ts.map +1 -1
- package/dist/telegram/polling-runner.d.ts +3 -1
- package/dist/telegram/polling-runner.d.ts.map +1 -1
- package/dist/types/cli.d.ts +6 -0
- package/dist/types/cli.d.ts.map +1 -1
- package/dist/whatsapp/webhook-runner.d.ts +3 -1
- package/dist/whatsapp/webhook-runner.d.ts.map +1 -1
- package/package.json +4 -10
- package/dist/sdk/chunk-ANCIFGQH.mjs +0 -825
- package/dist/sdk/chunk-F25U4YWJ.mjs.map +0 -1
- package/dist/sdk/chunk-MWUQFSEK.mjs.map +0 -1
- package/dist/sdk/chunk-NBUN22ZG.mjs.map +0 -1
- package/dist/sdk/chunk-STAAKOPU.mjs.map +0 -1
- package/dist/sdk/dist-X4HSBKSA.mjs +0 -5716
- package/dist/sdk/dist-X4HSBKSA.mjs.map +0 -1
- package/dist/sdk/dist-XF2FTM6E.mjs +0 -5716
- package/dist/sdk/dist-XF2FTM6E.mjs.map +0 -1
- package/dist/sdk/github-frontend-QVMVUL3Y.mjs.map +0 -1
- package/dist/sdk/track-execution-GCGJKMAO.mjs.map +0 -1
- package/dist/sdk/utcp-check-provider-6YTBN5WQ.mjs +0 -16
- package/dist/sdk/workflow-check-provider-T4PFK2EG.mjs.map +0 -1
- /package/dist/sdk/{a2a-frontend-6FNPD53G.mjs.map → a2a-frontend-BDACLGMA.mjs.map} +0 -0
- /package/dist/sdk/{check-provider-registry-T4HIUBMT.mjs.map → check-provider-registry-4YKTEDKF.mjs.map} +0 -0
- /package/dist/sdk/{check-provider-registry-Z4MVXFLJ.mjs.map → check-provider-registry-Z7EHECLC.mjs.map} +0 -0
- /package/dist/sdk/{chunk-3ZKBUWDB.mjs.map → chunk-KBGQJKIZ.mjs.map} +0 -0
- /package/dist/sdk/{chunk-5DQY4LTK.mjs.map → chunk-U6K5SK7X.mjs.map} +0 -0
- /package/dist/sdk/{config-ZZKC47SV.mjs.map → config-TSA5FUOM.mjs.map} +0 -0
- /package/dist/sdk/{failure-condition-evaluator-WNCCIP6N.mjs.map → failure-condition-evaluator-FFWJRAEQ.mjs.map} +0 -0
- /package/dist/sdk/{host-5TJBWGGH.mjs.map → host-6QBBL3QW.mjs.map} +0 -0
- /package/dist/sdk/{host-RVLIZMTE.mjs.map → host-CVH2CSHM.mjs.map} +0 -0
- /package/dist/sdk/{routing-5DHNS7IW.mjs.map → routing-XALEDC2G.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-25CFKVOI.mjs.map → schedule-tool-5XBASQVY.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-UGWYLGJK.mjs.map → schedule-tool-ADUXTCY7.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-handler-VWBX4JEF.mjs.map → schedule-tool-handler-GBIJS376.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-handler-WK22RO3M.mjs.map → schedule-tool-handler-N7UNABOA.mjs.map} +0 -0
- /package/dist/sdk/{trace-helpers-GCLQ3YKO.mjs.map → trace-helpers-3FFAI7X3.mjs.map} +0 -0
- /package/dist/sdk/{utcp-check-provider-6YTBN5WQ.mjs.map → utcp-check-provider-JLIYF5HH.mjs.map} +0 -0
- /package/dist/sdk/{utcp-check-provider-HT2MA5SS.mjs.map → workflow-check-provider-3IXIADSV.mjs.map} +0 -0
- /package/dist/sdk/{workflow-check-provider-I732XE7D.mjs.map → workflow-check-provider-SRIMWKLQ.mjs.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../node_modules/@utcp/sdk/node_modules/zod/v3/helpers/util.js","../../node_modules/@utcp/sdk/node_modules/zod/v3/ZodError.js","../../node_modules/@utcp/sdk/node_modules/zod/v3/locales/en.js","../../node_modules/@utcp/sdk/node_modules/zod/v3/errors.js","../../node_modules/@utcp/sdk/node_modules/zod/v3/helpers/parseUtil.js","../../node_modules/@utcp/sdk/node_modules/zod/v3/helpers/typeAliases.js","../../node_modules/@utcp/sdk/node_modules/zod/v3/helpers/errorUtil.js","../../node_modules/@utcp/sdk/node_modules/zod/v3/types.js","../../node_modules/@utcp/sdk/node_modules/zod/v3/external.js","../../node_modules/@utcp/sdk/node_modules/zod/index.js","../../node_modules/@utcp/sdk/src/data/call_template.ts","../../node_modules/@utcp/sdk/src/interfaces/serializer.ts","../../node_modules/@utcp/sdk/src/data/utcp_manual.ts","../../node_modules/@utcp/sdk/src/data/tool.ts","../../node_modules/@utcp/sdk/src/version.ts","../../node_modules/@utcp/sdk/src/interfaces/communication_protocol.ts","../../node_modules/@utcp/sdk/src/client/utcp_client_config.ts","../../node_modules/@utcp/sdk/src/data/auth.ts","../../node_modules/@utcp/sdk/src/data/auth_implementations/api_key_auth.ts","../../node_modules/@utcp/sdk/src/data/auth_implementations/basic_auth.ts","../../node_modules/@utcp/sdk/src/data/auth_implementations/oauth2_auth.ts","../../node_modules/@utcp/sdk/src/implementations/in_mem_concurrent_tool_repository.ts","../../node_modules/@utcp/sdk/src/interfaces/concurrent_tool_repository.ts","../../node_modules/@utcp/sdk/src/implementations/tag_search_strategy.ts","../../node_modules/@utcp/sdk/src/interfaces/tool_search_strategy.ts","../../node_modules/@utcp/sdk/src/implementations/post_processors/filter_dict_post_processor.ts","../../node_modules/@utcp/sdk/src/implementations/post_processors/limit_strings_post_processor.ts","../../node_modules/@utcp/sdk/src/interfaces/tool_post_processor.ts","../../node_modules/@utcp/sdk/src/plugins/plugin_loader.ts","../../node_modules/@utcp/sdk/src/data/variable_loader.ts","../../node_modules/@utcp/sdk/src/exceptions/utcp_variable_not_found_error.ts","../../node_modules/@utcp/sdk/src/implementations/default_variable_substitutor.ts","../../node_modules/@utcp/sdk/src/client/utcp_client.ts"],"sourcesContent":["export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n","import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n","import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nexport default errorMap;\n","import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n overrideErrorMap = map;\n}\nexport function getErrorMap() {\n return overrideErrorMap;\n}\n","import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexport const INVALID = Object.freeze({\n status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n","export {};\n","export var errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n","import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nexport class ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nexport class ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nexport class ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nexport class ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nexport class ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nexport class ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nexport class ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nexport class ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nexport class ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nexport class ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nexport class ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nexport class ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexport class ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nexport class ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nexport class ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexport class ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nexport class ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nexport class ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nexport class ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nexport class ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nexport class ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nexport class ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nexport class ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nexport class ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexport class ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexport class ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n","export * from \"./errors.js\";\nexport * from \"./helpers/parseUtil.js\";\nexport * from \"./helpers/typeAliases.js\";\nexport * from \"./helpers/util.js\";\nexport * from \"./types.js\";\nexport * from \"./ZodError.js\";\n","import * as z from \"./v3/external.js\";\nexport * from \"./v3/external.js\";\nexport { z };\nexport default z;\n","// packages/core/src/data/call_template.ts\r\nimport { z } from 'zod';\r\nimport { Auth, AuthSchema } from './auth';\r\nimport { Serializer } from '../interfaces/serializer';\r\n\r\n/**\r\n * Base interface for all CallTemplates. Each protocol plugin will implement this structure.\r\n * It provides the common fields every call template must have.\r\n */\r\nexport interface CallTemplate {\r\n /**\r\n * Unique identifier for the CallTemplate/Manual. Recommended to be a human-readable name.\r\n */\r\n name?: string;\r\n\r\n /**\r\n * The transport protocol type used by this call template (e.g., 'http', 'mcp', 'text').\r\n */\r\n call_template_type: string;\r\n\r\n /**\r\n * Optional authentication configuration for the provider.\r\n */\r\n auth?: Auth;\r\n\r\n /**\r\n * Optional list of allowed communication protocol types for tools within this manual.\r\n * \r\n * Behavior:\r\n * - If undefined, null, or empty array → defaults to only allowing the manual's own call_template_type\r\n * - If set to a non-empty array → only those protocol types are allowed\r\n * \r\n * This provides secure-by-default behavior where a manual can only register/call tools\r\n * that use its own protocol unless explicitly configured otherwise.\r\n */\r\n allowed_communication_protocols?: string[];\r\n\r\n [key: string]: any;\r\n}\r\n\r\nexport class CallTemplateSerializer extends Serializer<CallTemplate> {\r\n private static serializers: Record<string, Serializer<CallTemplate>> = {};\r\n\r\n // No need for the whole plugin registry. Plugins just need to call this to register a new call template type\r\n static registerCallTemplate(\r\n callTemplateType: string,\r\n serializer: Serializer<CallTemplate>,\r\n override = false\r\n ): boolean {\r\n if (!override && CallTemplateSerializer.serializers[callTemplateType]) {\r\n return false;\r\n }\r\n CallTemplateSerializer.serializers[callTemplateType] = serializer;\r\n return true;\r\n }\r\n\r\n toDict(obj: CallTemplate): Record<string, unknown> {\r\n const serializer = CallTemplateSerializer.serializers[obj.call_template_type];\r\n if (!serializer) {\r\n throw new Error(`No serializer found for call_template_type: ${obj.call_template_type}`);\r\n }\r\n return serializer.toDict(obj);\r\n }\r\n\r\n validateDict(obj: Record<string, unknown>): CallTemplate {\r\n const serializer = CallTemplateSerializer.serializers[obj.call_template_type as string];\r\n if (!serializer) {\r\n throw new Error(`Invalid call_template_type: ${obj.call_template_type}`);\r\n }\r\n return serializer.validateDict(obj);\r\n }\r\n}\r\n\r\nexport const CallTemplateSchema = z\r\n .custom<CallTemplate>((obj) => {\r\n try {\r\n // Use the centralized serializer to validate & return the correct subtype\r\n const validated = new CallTemplateSerializer().validateDict(obj as Record<string, unknown>);\r\n return validated;\r\n } catch (e) {\r\n return false; // z.custom treats false as validation failure\r\n }\r\n }, {\r\n message: \"Invalid CallTemplate object\",\r\n });","let ensurePluginsInitialized: (() => void) | null = null;\r\n\r\nexport function setPluginInitializer(fn: () => void): void {\r\n ensurePluginsInitialized = fn;\r\n}\r\n\r\nexport abstract class Serializer<T> {\r\n constructor() {\r\n // Use lazy initialization to avoid circular dependency during module loading\r\n if (ensurePluginsInitialized) {\r\n ensurePluginsInitialized();\r\n }\r\n }\r\n\r\n abstract toDict(obj: T): { [key: string]: any };\r\n\r\n abstract validateDict(obj: { [key: string]: any }): T;\r\n\r\n copy(obj: T): T {\r\n return this.validateDict(this.toDict(obj));\r\n }\r\n}","// packages/core/src/data/utcp_manual.ts\r\nimport { z } from 'zod';\r\nimport { ToolSchema, Tool } from './tool';\r\nimport { Serializer } from '../interfaces/serializer';\r\nimport { LIB_VERSION } from '../version';\r\n\r\n/**\r\n * The default UTCP protocol version used throughout the library.\r\n * This is replaced at build time with the actual package version.\r\n * Use this constant when creating UtcpManual objects to ensure version consistency.\r\n */\r\nexport const UTCP_PACKAGE_VERSION = LIB_VERSION;\r\n\r\n/**\r\n * Interface for the standard format for tool provider responses during discovery.\r\n * Represents the complete set of tools available from a provider, along\r\n * with version information for compatibility checking.\r\n */\r\nexport interface UtcpManual {\r\n /**\r\n * The UTCP protocol version supported by the provider.\r\n */\r\n utcp_version: string;\r\n\r\n /**\r\n * The version of this specific manual/specification.\r\n */\r\n manual_version: string;\r\n\r\n /**\r\n * List of available tools with their complete configurations.\r\n */\r\n tools: Tool[];\r\n}\r\n\r\n/**\r\n * The standard format for tool provider responses during discovery.\r\n * This schema is used for runtime validation and parsing of UTCP manuals.\r\n */\r\nexport const UtcpManualSchema: z.ZodType<UtcpManual> = z.object({\r\n // Use .optional() to allow missing in input, then .default() to satisfy the interface.\r\n utcp_version: z.string().optional().default(UTCP_PACKAGE_VERSION)\r\n .describe('UTCP protocol version supported by the provider.'),\r\n manual_version: z.string().optional().default('1.0.0')\r\n .describe('Version of this specific manual.'),\r\n tools: z.array(ToolSchema)\r\n .describe('List of available tools with their complete configurations.'),\r\n}).strict() as z.ZodType<UtcpManual>;\r\n\r\n/**\r\n * Serializer for UtcpManual objects.\r\n * Handles serialization and deserialization of complete UTCP manual definitions.\r\n */\r\nexport class UtcpManualSerializer extends Serializer<UtcpManual> {\r\n toDict(obj: UtcpManual): Record<string, unknown> {\r\n return {\r\n utcp_version: obj.utcp_version,\r\n manual_version: obj.manual_version,\r\n tools: obj.tools,\r\n };\r\n }\r\n\r\n validateDict(obj: Record<string, unknown>): UtcpManual {\r\n return UtcpManualSchema.parse(obj);\r\n }\r\n}","// packages/core/src/data/tool.ts\nimport { z } from 'zod';\nimport { CallTemplate, CallTemplateSchema } from './call_template';\nimport { Serializer } from '../interfaces/serializer';\n\n// Define a recursive type for basic JSON values\n/**\n * A recursive type representing any valid JSON value: string, number, boolean, null, object, or array.\n */\ntype JsonValue = string | number | boolean | null | { [key: string]: JsonValue } | JsonValue[];\n\n// --- JSON Schema Typing and Validation ---\n\n/**\n * Zod type for basic JSON primitive or recursive structure.\n */\nexport const JsonTypeSchema: z.ZodType<JsonValue> = z.lazy(() => z.union([\n z.string(),\n z.number(),\n z.boolean(),\n z.null(),\n z.record(z.string(), JsonTypeSchema),\n z.array(JsonTypeSchema),\n]));\nexport type JsonType = z.infer<typeof JsonTypeSchema>;\n\n\n/**\n * Interface for a JSON Schema definition (based on draft-07).\n * This defines the structure for tool inputs and outputs.\n */\nexport interface JsonSchema {\n /**\n * Optional schema identifier.\n */\n $schema?: string;\n /**\n * Optional schema identifier.\n */\n $id?: string;\n /**\n * Optional schema title.\n */\n title?: string;\n /**\n * Optional schema description.\n */\n description?: string;\n /**\n * The JSON data type (e.g., 'object', 'string', 'number').\n */\n type?: 'string' | 'number' | 'integer' | 'boolean' | 'object' | 'array' | 'null' | string[];\n /**\n * Defines properties if type is 'object'.\n */\n properties?: { [key: string]: JsonSchema };\n /**\n * Defines item structure if type is 'array'.\n */\n items?: JsonSchema | JsonSchema[];\n /**\n * List of required properties if type is 'object'.\n */\n required?: string[];\n /**\n * List of allowable values.\n */\n enum?: JsonType[];\n /**\n * The exact required value.\n */\n const?: JsonType;\n /**\n * A default value for the property.\n */\n default?: JsonType;\n /**\n * Optional format hint (e.g., 'date-time', 'email').\n */\n format?: string;\n /**\n * Allows or specifies schema for additional properties.\n */\n additionalProperties?: boolean | JsonSchema;\n /**\n * Regex pattern for string validation.\n */\n pattern?: string;\n /**\n * Minimum numeric value.\n */\n minimum?: number;\n /**\n * Maximum numeric value.\n */\n maximum?: number;\n /**\n * Minimum string length.\n */\n minLength?: number;\n /**\n * Maximum string length.\n */\n maxLength?: number;\n [k: string]: unknown;\n}\n\n\n/**\n * Zod schema corresponding to the JsonSchema interface.\n */\nexport const JsonSchemaSchema: z.ZodType<JsonSchema> = z.lazy(() => z.object({\n $schema: z.string().optional().describe('JSON Schema version URI.'),\n $id: z.string().optional().describe('A URI for the schema.'),\n title: z.string().optional().describe('A short explanation about the purpose of the data described by this schema.'),\n description: z.string().optional().describe('A more lengthy explanation about the purpose of the data described by this schema.'),\n type: z.union([\n z.literal('string'), z.literal('number'), z.literal('integer'), z.literal('boolean'),\n z.literal('object'), z.literal('array'), z.literal('null'), z.array(z.string())\n ]).optional(),\n properties: z.record(z.string(), z.lazy(() => JsonSchemaSchema)).optional(),\n items: z.union([z.lazy(() => JsonSchemaSchema), z.array(z.lazy(() => JsonSchemaSchema))]).optional(),\n required: z.array(z.string()).optional(),\n enum: z.array(JsonTypeSchema).optional(),\n const: JsonTypeSchema.optional(),\n default: JsonTypeSchema.optional(),\n format: z.string().optional(),\n additionalProperties: z.union([z.boolean(), z.lazy(() => JsonSchemaSchema)]).optional(),\n pattern: z.string().optional(),\n minimum: z.number().optional(),\n maximum: z.number().optional(),\n minLength: z.number().optional(),\n maxLength: z.number().optional(),\n}).catchall(z.unknown()));\n\n\n// --- Tool Typing and Validation ---\n\n/**\n * Interface for a UTCP Tool.\n * Represents a callable tool with its metadata, input/output schemas,\n * and associated call template. Tools are the fundamental units of\n * functionality in the UTCP ecosystem.\n */\nexport interface Tool {\n /**\n * Unique identifier for the tool, typically in format \"manual_name.tool_name\".\n */\n name: string;\n /**\n * Human-readable description of what the tool does.\n */\n description: string;\n /**\n * JSON Schema defining the tool's input parameters.\n */\n inputs: JsonSchema;\n /**\n * JSON Schema defining the tool's return value structure.\n */\n outputs: JsonSchema;\n /**\n * List of tags for categorization and search.\n */\n tags: string[];\n /**\n * Optional hint about typical response size in bytes.\n */\n average_response_size?: number;\n /**\n * CallTemplate configuration for accessing this tool.\n */\n tool_call_template: CallTemplate;\n}\n\n/**\n * Zod schema corresponding to the Tool interface.\n */\nexport const ToolSchema: z.ZodType<Tool> = z.object({\n name: z.string().describe('Unique identifier for the tool, typically in format \"manual_name.tool_name\".'),\n description: z.string().default('').describe('Human-readable description of what the tool does.'),\n inputs: JsonSchemaSchema.default({}).describe('JSON Schema defining the tool\\'s input parameters.'),\n outputs: JsonSchemaSchema.default({}).describe('JSON Schema defining the tool\\'s return value structure.'),\n tags: z.array(z.string()).default([]).describe('List of tags for categorization and search.'),\n average_response_size: z.number().optional().describe('Optional hint about typical response size in bytes.'),\n tool_call_template: CallTemplateSchema.describe('CallTemplate configuration for accessing this tool.'),\n}).strict() as z.ZodType<Tool>;\n\n/**\n * Serializer for JsonSchema objects.\n * Since JsonSchema is a standard format without subtypes, this is a simple passthrough serializer.\n */\nexport class JsonSchemaSerializer extends Serializer<JsonSchema> {\n toDict(obj: JsonSchema): Record<string, unknown> {\n return { ...obj };\n }\n\n validateDict(obj: Record<string, unknown>): JsonSchema {\n return JsonSchemaSchema.parse(obj);\n }\n}\n\n/**\n * Serializer for Tool objects.\n * Handles serialization and deserialization of complete tool definitions.\r\n */\r\nexport class ToolSerializer extends Serializer<Tool> {\r\n toDict(obj: Tool): Record<string, unknown> {\r\n return {\r\n name: obj.name,\r\n description: obj.description,\r\n inputs: obj.inputs,\r\n outputs: obj.outputs,\r\n tags: obj.tags,\r\n ...(obj.average_response_size !== undefined && { average_response_size: obj.average_response_size }),\r\n tool_call_template: obj.tool_call_template,\r\n };\r\n }\r\n\r\n validateDict(obj: Record<string, unknown>): Tool {\r\n return ToolSchema.parse(obj);\r\n }\r\n}","/**\r\n * Library version - replaced during build process.\r\n * Do not modify this file manually.\r\n */\r\nconst _VERSION = \"__LIB_VERSION__\";\r\n\r\n/**\r\n * The library version. Falls back to \"1.0.0\" if the build script hasn't replaced the placeholder.\r\n */\r\nexport const LIB_VERSION = _VERSION === \"__LIB_VERSION__\" ? \"1.0.0\" : _VERSION;\r\n","// packages/core/src/interfaces/communication_protocol.ts\nimport { CallTemplate } from '../data/call_template';\nimport { RegisterManualResult } from '../data/register_manual_result';\nimport { IUtcpClient } from './utcp_client_interface';\n\n/**\n * Abstract interface for UTCP client transport implementations (Communication Protocols).\n *\n * Defines the contract that all transport implementations must follow to\n * integrate with the UTCP client. Each transport handles communication\n * with a specific type of provider (HTTP, CLI, WebSocket, etc.).\n */\nexport abstract class CommunicationProtocol {\n\n /**\n * Mapping of communication protocol types to their respective implementations.\n */\n static communicationProtocols: { [type: string]: CommunicationProtocol } = {};\n\n /**\n * Registers a manual and its tools.\n *\n * Connects to the provider and retrieves the list of tools it offers.\n * This may involve making discovery requests, parsing configuration files,\n * or initializing connections depending on the provider type.\n *\n * @param caller The UTCP client that is calling this method. (Type will be properly defined in UtcpClient).\n * @param manualCallTemplate The call template of the manual to register.\n * @returns A RegisterManualResult object containing the call template and manual.\n */\n abstract registerManual(caller: IUtcpClient, manualCallTemplate: CallTemplate): Promise<RegisterManualResult>;\n\n /**\n * Deregisters a manual and its tools.\n *\n * Cleanly disconnects from the provider and releases any associated\n * resources such as connections, processes, or file handles.\n *\n * @param caller The UTCP client that is calling this method.\n * @param manualCallTemplate The call template of the manual to deregister.\n */\n abstract deregisterManual(caller: IUtcpClient, manualCallTemplate: CallTemplate): Promise<void>;\n\n /**\n * Executes a tool call through this transport.\n *\n * Sends a tool invocation request to the provider using the appropriate\n * protocol and returns the result. Handles serialization of arguments\n * and deserialization of responses according to the transport type.\n *\n * @param caller The UTCP client that is calling this method.\n * @param toolName Name of the tool to call (may include provider prefix).\n * @param toolArgs Dictionary of arguments to pass to the tool.\n * @param toolCallTemplate Call template of the tool to call.\n * @returns The tool's response.\n */\n abstract callTool(caller: IUtcpClient, toolName: string, toolArgs: Record<string, any>, toolCallTemplate: CallTemplate): Promise<any>;\n\n /**\n * Executes a tool call through this transport streamingly.\n *\n * Sends a tool invocation request to the provider using the appropriate\n * protocol and returns an async generator for streaming results.\n *\n * @param caller The UTCP client that is calling this method.\n * @param toolName Name of the tool to call.\n * @param toolArgs Arguments to pass to the tool.\n * @param toolCallTemplate Call template of the tool to call.\n * @returns An async generator that yields chunks of the tool's response.\n */\n abstract callToolStreaming(caller: IUtcpClient, toolName: string, toolArgs: Record<string, any>, toolCallTemplate: CallTemplate): AsyncGenerator<any, void, unknown>;\n\n /**\n * Closes any persistent connections or resources held by the communication protocol.\n * This is a cleanup method that should be called when the client is shut down.\n */\n async close(): Promise<void> {}\n}","// packages/core/src/client/utcp_client_config.ts\nimport { z } from 'zod';\nimport { ensureCorePluginsInitialized } from '../plugins/plugin_loader';\nimport { CallTemplate, CallTemplateSchema, CallTemplateSerializer } from '../data/call_template';\nimport { ToolSearchStrategy, ToolSearchStrategyConfigSerializer } from '../interfaces/tool_search_strategy';\nimport { VariableLoader, VariableLoaderSchema, VariableLoaderSerializer } from '../data/variable_loader';\nimport { ConcurrentToolRepository, ConcurrentToolRepositoryConfigSerializer } from '../interfaces/concurrent_tool_repository';\nimport { ToolPostProcessor, ToolPostProcessorConfigSerializer } from '../interfaces/tool_post_processor';\nimport { Serializer } from '../interfaces/serializer';\n\n// Ensure core plugins are initialized before this module uses any serializers\nensureCorePluginsInitialized();\n\n/**\n * REQUIRED\n * Configuration model for UTCP client setup.\n *\n * Provides comprehensive configuration options for UTCP clients including\n * variable definitions, provider file locations, and variable loading\n * mechanisms. Supports hierarchical variable resolution with multiple\n * sources.\n *\n * Variable Resolution Order:\n * 1. Direct variables dictionary\n * 2. Custom variable loaders (in order)\n * 3. Environment variables\n *\n * Attributes:\n * variables: A dictionary of directly-defined\n * variables for substitution.\n * load_variables_from: A list of\n * variable loader configurations for loading variables from external\n * sources like .env files or remote services.\n * tool_repository: Configuration for the tool\n * repository, which manages the storage and retrieval of tools.\n * Defaults to an in-memory repository.\n * tool_search_strategy: Configuration for the tool\n * search strategy, defining how tools are looked up. Defaults to a\n * tag and description-based search.\n * post_processing: A list of tool post-processor\n * configurations to be applied after a tool call.\n * manual_call_templates: A list of manually defined\n * call templates for registering tools that don't have a provider.\n *\n * Example:\n * ```typescript\n * const config: UtcpClientConfig = {\n * variables: {\"MANUAL__NAME_API_KEY_NAME\": \"$REMAPPED_API_KEY\"},\n * load_variables_from: [\n * new VariableLoaderSerializer().validateDict({\"variable_loader_type\": \"dotenv\", \"env_file_path\": \".env\"})\n * ],\n * tool_repository: new ConcurrentToolRepositoryConfigSerializer().validateDict({\n * \"tool_repository_type\": \"in_memory\"\n * }),\n * tool_search_strategy: new ToolSearchStrategyConfigSerializer().validateDict({\n * \"tool_search_strategy_type\": \"tag_and_description_word_match\"\n * }),\n * post_processing: [],\n * manual_call_templates: []\n * };\n * ```\n */\nexport interface UtcpClientConfig {\n /**\n * A dictionary of directly-defined variables for substitution.\n */\n variables: Record<string, string>;\n\n /**\n * A list of variable loader configurations for loading variables from external\n * sources like .env files. Loaders are processed in order.\n */\n load_variables_from: VariableLoader[] | null;\n\n /**\n * Configuration for the tool repository.\n * Defaults to an in-memory repository.\n */\n tool_repository: ConcurrentToolRepository;\n\n /**\n * Configuration for the tool search strategy.\n * Defaults to a tag and description-based search.\n */\n tool_search_strategy: ToolSearchStrategy;\n\n /**\n * A list of tool post-processor configurations to be applied after a tool call.\n */\n post_processing: ToolPostProcessor[];\n\n /**\n * A list of manually defined call templates for registering tools at client initialization.\n */\n manual_call_templates: CallTemplate[];\n}\n\n/**\n * The main configuration schema for the UTCP client.\n */\nexport const UtcpClientConfigSchema = z.object({\n variables: z.record(z.string(), z.string()).optional().default({}),\n \n load_variables_from: z.array(VariableLoaderSchema).nullable().optional().default(null)\n .transform((val) => {\n if (val === null) return null;\n return val.map(item => {\n if ('variable_loader_type' in item) {\n return new VariableLoaderSerializer().validateDict(item as Record<string, unknown>);\n }\n return item as VariableLoader;\n });\n }),\n \n tool_repository: z.any()\n .transform((val) => {\n if (typeof val === 'object' && val !== null && 'tool_repository_type' in val) {\n return new ConcurrentToolRepositoryConfigSerializer().validateDict(val as Record<string, unknown>);\n }\n return val as ConcurrentToolRepository;\n })\n .optional()\n .default(new ConcurrentToolRepositoryConfigSerializer().validateDict({\n tool_repository_type: ConcurrentToolRepositoryConfigSerializer.default_strategy,\n })),\n\n tool_search_strategy: z.any()\n .transform((val) => {\n if (typeof val === 'object' && val !== null && 'tool_search_strategy_type' in val) {\n return new ToolSearchStrategyConfigSerializer().validateDict(val as Record<string, unknown>);\n }\n return val as ToolSearchStrategy;\n })\n .optional()\n .default(new ToolSearchStrategyConfigSerializer().validateDict({\n tool_search_strategy_type: ToolSearchStrategyConfigSerializer.default_strategy,\n })),\n\n post_processing: z.array(z.any())\n .transform((val) => {\n return val.map(item => {\n if (typeof item === 'object' && item !== null && 'tool_post_processor_type' in item) {\n return new ToolPostProcessorConfigSerializer().validateDict(item as Record<string, unknown>);\n }\n return item as ToolPostProcessor;\n });\n })\n .optional()\n .default([]),\n\n manual_call_templates: z.array(CallTemplateSchema)\n .transform((val) => {\n return val.map(item => {\n if (typeof item === 'object' && item !== null && 'call_template_type' in item) {\n return new CallTemplateSerializer().validateDict(item as Record<string, unknown>);\n }\n return item as CallTemplate;\n });\n })\n .optional()\n .default([]),\n}).strict();\n\n/**\n * REQUIRED\n * Serializer for UTCP client configurations.\n *\n * Defines the contract for serializers that convert UTCP client configurations to and from\n * dictionaries for storage or transmission. Serializers are responsible for:\n * - Converting UTCP client configurations to dictionaries for storage or transmission\n * - Converting dictionaries back to UTCP client configurations\n * - Ensuring data consistency during serialization and deserialization\n */\nexport class UtcpClientConfigSerializer extends Serializer<UtcpClientConfig> {\n /**\n * REQUIRED\n * Convert a UtcpClientConfig object to a dictionary.\n *\n * @param obj The UtcpClientConfig object to convert.\n * @returns The dictionary converted from the UtcpClientConfig object.\n */\n toDict(obj: UtcpClientConfig): Record<string, unknown> {\n return {\n variables: obj.variables,\n load_variables_from: obj.load_variables_from === null ? null : \n obj.load_variables_from?.map(item => new VariableLoaderSerializer().toDict(item)),\n tool_repository: new ConcurrentToolRepositoryConfigSerializer().toDict(obj.tool_repository),\n tool_search_strategy: new ToolSearchStrategyConfigSerializer().toDict(obj.tool_search_strategy),\n post_processing: obj.post_processing.map(item => new ToolPostProcessorConfigSerializer().toDict(item)),\n manual_call_templates: obj.manual_call_templates.map(item => new CallTemplateSerializer().toDict(item)),\n };\n }\n \n /**\n * REQUIRED\n * Validate a dictionary and convert it to a UtcpClientConfig object.\n *\n * @param data The dictionary to validate and convert.\n * @returns The UtcpClientConfig object converted from the dictionary.\n * @throws Error if validation fails\n */\n validateDict(data: Record<string, unknown>): UtcpClientConfig {\n try {\n return UtcpClientConfigSchema.parse(data) as UtcpClientConfig;\n } catch (e: any) {\n throw new Error(`Invalid UtcpClientConfig: ${e.message}\\n${e.stack || ''}`);\n }\n }\n}","// packages/core/src/data/auth.ts\r\nimport { z } from 'zod';\r\nimport { Serializer } from '../interfaces/serializer';\r\n\r\nexport interface Auth {\r\n /** Authentication type identifier */\r\n auth_type: string;\r\n}\r\n\r\nexport class AuthSerializer extends Serializer<Auth> {\r\n private static serializers: Record<string, Serializer<Auth>> = {};\r\n\r\n // No need for the whole plugin registry. Plugins just need to call this to register a new auth type\r\n static registerAuth(\r\n authType: string,\r\n serializer: Serializer<Auth>,\r\n override = false\r\n ): boolean {\r\n if (!override && AuthSerializer.serializers[authType]) {\r\n return false;\r\n }\r\n AuthSerializer.serializers[authType] = serializer;\r\n return true;\r\n }\r\n\r\n toDict(obj: Auth): Record<string, unknown> {\r\n const serializer = AuthSerializer.serializers[obj.auth_type];\r\n if (!serializer) {\r\n throw new Error(`No serializer found for auth_type: ${obj.auth_type}`);\r\n }\r\n return serializer.toDict(obj);\r\n }\r\n\r\n validateDict(obj: Record<string, unknown>): Auth {\r\n const serializer = AuthSerializer.serializers[obj.auth_type as string];\r\n if (!serializer) {\r\n throw new Error(`Invalid auth_type: ${obj.auth_type}`);\r\n }\r\n return serializer.validateDict(obj);\r\n }\r\n}\r\n\r\nexport const AuthSchema = z\r\n .custom<Auth>((obj) => {\r\n try {\r\n // Use the centralized serializer to validate & return the correct subtype\r\n const validated = new AuthSerializer().validateDict(obj as Record<string, unknown>);\r\n return validated;\r\n } catch (e) {\r\n return false; // z.custom treats false as validation failure\r\n }\r\n }, {\r\n message: \"Invalid Auth object\",\r\n });","import { Auth } from \"../auth\";\r\nimport { Serializer } from \"../../interfaces/serializer\";\r\nimport { z } from \"zod\";\r\n\r\nexport interface ApiKeyAuth extends Auth {\r\n auth_type: \"api_key\";\r\n api_key: string;\r\n var_name: string; // header, query param, etc.\r\n location: \"header\" | \"query\" | \"cookie\";\r\n}\r\n\r\nexport class ApiKeyAuthSerializer extends Serializer<ApiKeyAuth> {\r\n toDict(obj: ApiKeyAuth): { [key: string]: any } {\r\n return { ...obj };\r\n }\r\n\r\n validateDict(obj: { [key: string]: any }): ApiKeyAuth {\r\n return ApiKeyAuthSchema.parse(obj);\r\n }\r\n}\r\n \r\nconst ApiKeyAuthSchema = z.object({\r\n auth_type: z.literal(\"api_key\"),\r\n api_key: z.string(),\r\n var_name: z.string().default(\"X-Api-Key\"),\r\n location: z.enum([\"header\", \"query\", \"cookie\"]).default(\"header\"),\r\n});","// packages/core/src/data/auth.ts\r\nimport { z } from 'zod';\r\nimport { Serializer } from '../../interfaces/serializer';\r\nimport { Auth } from '../auth';\r\n\r\n/**\r\n * Interface for Basic authentication details.\r\n */\r\nexport interface BasicAuth extends Auth {\r\n auth_type: 'basic';\r\n username: string;\r\n password: string;\r\n}\r\n\r\nexport class BasicAuthSerializer extends Serializer<BasicAuth> {\r\n toDict(obj: BasicAuth): { [key: string]: any } {\r\n // Just spread the object since it's already validated\r\n return { ...obj };\r\n }\r\n\r\n validateDict(obj: { [key: string]: any }): BasicAuth {\r\n return BasicAuthSchema.parse(obj);\r\n }\r\n}\r\n\r\n/**\r\n * Authentication using HTTP Basic Authentication.\r\n * Credentials typically contain variable placeholders for substitution.\r\n */\r\nconst BasicAuthSchema: z.ZodType<BasicAuth> = z.object({\r\n auth_type: z.literal('basic'),\r\n username: z.string().describe('The username for basic authentication. Recommended to use injected variables.'),\r\n password: z.string().describe('The password for basic authentication. Recommended to use injected variables.'),\r\n}).strict() as z.ZodType<BasicAuth>;\r\n","// packages/core/src/data/auth.ts\r\nimport { z } from 'zod';\r\nimport { Serializer } from '../../interfaces/serializer';\r\nimport { Auth } from '../auth';\r\n\r\n/**\r\n * Interface for OAuth2 authentication details (Client Credentials Flow).\r\n */\r\nexport interface OAuth2Auth extends Auth {\r\n auth_type: 'oauth2';\r\n token_url: string;\r\n client_id: string;\r\n client_secret: string;\r\n scope?: string;\r\n}\r\n\r\nexport class OAuth2AuthSerializer extends Serializer<OAuth2Auth> {\r\n toDict(obj: OAuth2Auth): { [key: string]: any } {\r\n // Just spread the object since it's already validated\r\n return { ...obj };\r\n }\r\n\r\n validateDict(obj: { [key: string]: any }): OAuth2Auth {\r\n return OAuth2AuthSchema.parse(obj);\r\n }\r\n}\r\n\r\n/**\r\n * Authentication using OAuth2 client credentials flow.\r\n * The client automatically handles token acquisition and refresh.\r\n */\r\nconst OAuth2AuthSchema: z.ZodType<OAuth2Auth> = z.object({\r\n auth_type: z.literal('oauth2'),\r\n token_url: z.string().describe('The URL to fetch the OAuth2 access token from. Recommended to use injected variables.'),\r\n client_id: z.string().describe('The OAuth2 client ID. Recommended to use injected variables.'),\r\n client_secret: z.string().describe('The OAuth2 client secret. Recommended to use injected variables.'),\r\n scope: z.string().optional().describe('Optional scope parameter to limit the access token\\'s permissions.'),\r\n}).strict() as z.ZodType<OAuth2Auth>;\r\n","// packages/core/src/implementations/in_mem_concurrent_tool_repository.ts\r\nimport { CallTemplate } from '../data/call_template';\r\nimport { Tool } from '../data/tool';\r\nimport { UtcpManual } from '../data/utcp_manual';\r\nimport { ConcurrentToolRepository } from '../interfaces/concurrent_tool_repository';\r\nimport { Serializer } from '../interfaces/serializer';\r\nimport { z } from 'zod';\r\n\r\n/**\r\n * An in-memory implementation of the ConcurrentToolRepository.\r\n * Stores tools, manuals, and manual call templates in local maps.\r\n * Uses an `AsyncMutex` to serialize write operations, ensuring data consistency\r\n * across concurrent asynchronous calls, and returns deep copies to prevent\r\n * external modification of internal state.\r\n */\r\nexport class InMemConcurrentToolRepository implements ConcurrentToolRepository {\r\n public readonly tool_repository_type: string = \"in_memory\";\r\n private _config: InMemConcurrentToolRepositoryConfig; // Store the config to return in toDict\r\n\r\n private _toolsByName: Map<string, Tool> = new Map();\r\n private _manuals: Map<string, UtcpManual> = new Map();\r\n private _manualCallTemplates: Map<string, CallTemplate> = new Map();\r\n private _writeMutex: AsyncMutex = new AsyncMutex();\r\n\r\n /**\r\n * The constructor must accept the config type to match the factory signature, \r\n * even if the implementation does not use it.\r\n */\r\n constructor(config: InMemConcurrentToolRepositoryConfig = { tool_repository_type: 'in_memory' }) {\r\n this._config = config;\r\n // Intentionally left empty as all state is initialized via field initializers.\r\n }\r\n\r\n /**\r\n * Converts the repository instance's configuration to a dictionary.\r\n */\r\n public toDict(): InMemConcurrentToolRepositoryConfig {\r\n return this._config;\r\n }\r\n\r\n /**\r\n * Saves a manual's call template and its associated tools in the repository.\r\n * This operation replaces any existing manual with the same name.\r\n * @param manualCallTemplate The call template associated with the manual to save.\r\n * @param manual The complete UTCP Manual object to save.\r\n */\r\n public async saveManual(manualCallTemplate: CallTemplate, manual: UtcpManual): Promise<void> {\r\n const release = await this._writeMutex.acquire();\r\n try {\r\n const manualName = manualCallTemplate.name!;\r\n const oldManual = this._manuals.get(manualName);\r\n if (oldManual) {\r\n for (const tool of oldManual.tools) {\r\n this._toolsByName.delete(tool.name);\r\n }\r\n }\r\n this._manualCallTemplates.set(manualName, { ...manualCallTemplate });\r\n this._manuals.set(manualName, { ...manual, tools: manual.tools.map(t => ({ ...t })) });\r\n for (const tool of manual.tools) {\r\n this._toolsByName.set(tool.name, { ...tool });\r\n }\r\n } finally {\r\n release();\r\n }\r\n }\r\n\r\n /**\r\n * Removes a manual and its tools from the repository.\r\n * @param manualName The name of the manual to remove.\r\n * @returns True if the manual was removed, False otherwise.\r\n */\r\n public async removeManual(manualName: string): Promise<boolean> {\r\n const release = await this._writeMutex.acquire();\r\n try {\r\n const oldManual = this._manuals.get(manualName);\r\n if (!oldManual) {\r\n return false;\r\n }\r\n\r\n for (const tool of oldManual.tools) {\r\n this._toolsByName.delete(tool.name);\r\n }\r\n\r\n this._manuals.delete(manualName);\r\n this._manualCallTemplates.delete(manualName);\r\n return true;\r\n } finally {\r\n release();\r\n }\r\n }\r\n\r\n /**\r\n * Removes a specific tool from the repository.\r\n * Note: This also attempts to remove the tool from any associated manual.\r\n * @param toolName The full namespaced name of the tool to remove.\r\n * @returns True if the tool was removed, False otherwise.\r\n */\r\n public async removeTool(toolName: string): Promise<boolean> {\r\n const release = await this._writeMutex.acquire();\r\n try {\r\n const toolRemoved = this._toolsByName.delete(toolName);\r\n if (!toolRemoved) {\r\n return false;\r\n }\r\n\r\n const manualName = toolName.split('.')[0];\r\n if (manualName) {\r\n const manual = this._manuals.get(manualName);\r\n if (manual) {\r\n manual.tools = manual.tools.filter(t => t.name !== toolName);\r\n }\r\n }\r\n return true;\r\n } finally {\r\n release();\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves a tool by its full namespaced name.\r\n * @param toolName The full namespaced name of the tool to retrieve.\r\n * @returns The tool if found, otherwise undefined.\r\n */\r\n public async getTool(toolName: string): Promise<Tool | undefined> {\r\n const tool = this._toolsByName.get(toolName);\r\n return tool ? { ...tool } : undefined;\r\n }\r\n\r\n /**\r\n * Retrieves all tools from the repository.\r\n * @returns A list of all registered tools.\r\n */\r\n public async getTools(): Promise<Tool[]> {\r\n return Array.from(this._toolsByName.values()).map(t => ({ ...t }));\r\n }\r\n\r\n /**\r\n * Retrieves all tools associated with a specific manual.\r\n * @param manualName The name of the manual.\r\n * @returns A list of tools associated with the manual, or undefined if the manual is not found.\r\n */\r\n public async getToolsByManual(manualName: string): Promise<Tool[] | undefined> {\r\n const manual = this._manuals.get(manualName);\r\n return manual ? manual.tools.map(t => ({ ...t })) : undefined;\r\n }\r\n\r\n /**\r\n * Retrieves a complete UTCP Manual object by its name.\r\n * @param manualName The name of the manual to retrieve.\r\n * @returns The manual if found, otherwise undefined.\r\n */\r\n public async getManual(manualName: string): Promise<UtcpManual | undefined> {\r\n const manual = this._manuals.get(manualName);\r\n return manual ? { ...manual, tools: manual.tools.map(t => ({ ...t })) } : undefined;\r\n }\r\n\r\n /**\r\n * Retrieves all registered manuals from the repository.\r\n * @returns A list of all registered UtcpManual objects.\r\n */\r\n public async getManuals(): Promise<UtcpManual[]> {\r\n return Array.from(this._manuals.values()).map(m => ({ ...m, tools: m.tools.map(t => ({ ...t })) }));\r\n }\r\n\r\n /**\r\n * Retrieves a manual's CallTemplate by its name.\r\n * @param manualCallTemplateName The name of the manual's CallTemplate to retrieve.\r\n * @returns The CallTemplate if found, otherwise undefined.\r\n */\r\n public async getManualCallTemplate(manualCallTemplateName: string): Promise<CallTemplate | undefined> {\r\n const template = this._manualCallTemplates.get(manualCallTemplateName);\r\n return template ? { ...template } : undefined;\r\n }\r\n\r\n /**\r\n * Retrieves all registered manual CallTemplates from the repository.\r\n * @returns A list of all registered CallTemplateBase objects.\r\n */\r\n public async getManualCallTemplates(): Promise<CallTemplate[]> {\r\n return Array.from(this._manualCallTemplates.values()).map(t => ({ ...t }));\r\n }\r\n}\r\n\r\nexport class InMemConcurrentToolRepositorySerializer extends Serializer<InMemConcurrentToolRepository> {\r\n toDict(obj: InMemConcurrentToolRepository): { [key: string]: any } {\r\n return {\r\n tool_repository_type: obj.tool_repository_type\r\n }\r\n }\r\n\r\n validateDict(data: { [key: string]: any }): InMemConcurrentToolRepository {\r\n try {\r\n return new InMemConcurrentToolRepository(InMemConcurrentToolRepositoryConfigSchema.parse(data));\r\n } catch (e) {\r\n if (e instanceof z.ZodError) {\r\n throw new Error(`Invalid configuration: ${e.message}`);\r\n }\r\n throw new Error(\"Unexpected error during validation\");\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * A simple asynchronous mutex to serialize write access to shared resources.\r\n * In a single-threaded JavaScript environment, this primarily ensures that\r\n * compound asynchronous operations on shared state do not interleave incorrectly.\r\n */\r\nclass AsyncMutex {\r\n private queue: (() => void)[] = [];\r\n private locked: boolean = false;\r\n\r\n /**\r\n * Acquires the mutex. If the mutex is already locked, waits until it's released.\r\n * @returns A function to call to release the mutex.\r\n */\r\n async acquire(): Promise<() => void> {\r\n if (!this.locked) {\r\n this.locked = true;\r\n return this._release.bind(this);\r\n } else {\r\n return new Promise<() => void>(resolve => {\r\n this.queue.push(() => {\r\n this.locked = true;\r\n resolve(this._release.bind(this));\r\n });\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Releases the mutex, allowing the next queued operation (if any) to proceed.\r\n */\r\n private _release(): void {\r\n this.locked = false;\r\n if (this.queue.length > 0) {\r\n const next = this.queue.shift();\r\n if (next) {\r\n next();\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Schema for the InMemConcurrentToolRepository configuration.\r\n */\r\nconst InMemConcurrentToolRepositoryConfigSchema = z.object({\r\n tool_repository_type: z.literal('in_memory'),\r\n}).passthrough();\r\n\r\ntype InMemConcurrentToolRepositoryConfig = z.infer<typeof InMemConcurrentToolRepositoryConfigSchema>;\r\n","// packages/core/src/interfaces/concurrent_tool_repository.ts\nimport { CallTemplate } from '../data/call_template';\nimport { Tool } from '../data/tool';\nimport { UtcpManual } from '../data/utcp_manual';\nimport { Serializer } from './serializer';\nimport z from 'zod';\n\n\n/**\n * Defines the contract for tool repositories that store and manage UTCP tools\n * and their associated call templates.\n *\n * Repositories are responsible for:\n * - Persisting call template configurations and their associated tools.\n * - Providing efficient lookup and retrieval operations.\n * - Managing relationships between call templates and tools.\n * - Ensuring data consistency across concurrent asynchronous calls.\n */\nexport interface ConcurrentToolRepository {\n /**\n * A string identifying the type of this tool repository (e.g., 'in_memory', 'database').\n * This is used for configuration and plugin lookup.\n */\n tool_repository_type: string;\n\n /**\n * Saves a manual's call template and its associated tools in the repository.\n * This operation replaces any existing manual with the same name.\n *\n * @param manualCallTemplate The call template associated with the manual to save.\n * @param manual The complete UTCP Manual object to save.\n * @returns A Promise that resolves when the operation is complete.\n */\n saveManual(manualCallTemplate: CallTemplate, manual: UtcpManual): Promise<void>;\n\n /**\n * Removes a manual and its tools from the repository.\n *\n * @param manualName The name of the manual (which corresponds to the CallTemplate name) to remove.\n * @returns A Promise resolving to true if the manual was removed, False otherwise.\n */\n removeManual(manualName: string): Promise<boolean>;\n\n /**\n * Removes a specific tool from the repository.\n *\n * @param toolName The full namespaced name of the tool to remove (e.g., \"my_manual.my_tool\").\n * @returns A Promise resolving to true if the tool was removed, False otherwise.\n */\n removeTool(toolName: string): Promise<boolean>;\n\n /**\n * Retrieves a tool by its full namespaced name.\n *\n * @param toolName The full namespaced name of the tool to retrieve.\n * @returns A Promise resolving to the tool if found, otherwise undefined.\n */\n getTool(toolName: string): Promise<Tool | undefined>;\n\n /**\n * Retrieves all tools from the repository.\n *\n * @returns A Promise resolving to a list of all registered tools.\n */\n getTools(): Promise<Tool[]>;\n\n /**\n * Retrieves all tools associated with a specific manual.\n *\n * @param manualName The name of the manual.\n * @returns A Promise resolving to a list of tools associated with the manual, or undefined if the manual is not found.\n */\n getToolsByManual(manualName: string): Promise<Tool[] | undefined>;\n\n /**\n * Retrieves a complete UTCP Manual object by its name.\n *\n * @param manualName The name of the manual to retrieve.\n * @returns A Promise resolving to the manual if found, otherwise undefined.\n */\n getManual(manualName: string): Promise<UtcpManual | undefined>;\n\n /**\n * Retrieves all registered manuals from the repository.\n *\n * @returns A Promise resolving to a list of all registered UtcpManual objects.\n */\n getManuals(): Promise<UtcpManual[]>;\n\n /**\n * Retrieves a manual's CallTemplate by its name.\n *\n * @param manualCallTemplateName The name of the manual's CallTemplate to retrieve.\n * @returns A Promise resolving to the CallTemplate if found, otherwise undefined.\n */\n getManualCallTemplate(manualCallTemplateName: string): Promise<CallTemplate | undefined>;\n\n /**\n * Retrieves all registered manual CallTemplates from the repository.\n *\n * @returns A Promise resolving to a list of all registered CallTemplateBase objects.\n */\n getManualCallTemplates(): Promise<CallTemplate[]>;\n}\n\nexport class ConcurrentToolRepositoryConfigSerializer extends Serializer<ConcurrentToolRepository> {\n private static implementations: Record<string, Serializer<ConcurrentToolRepository>> = {};\n static default_strategy = \"in_memory\";\n\n // No need for the whole plugin registry. Plugins just need to call this to register a new repository\n static registerRepository(type: string, serializer: Serializer<ConcurrentToolRepository>, override = false): boolean {\n if (!override && ConcurrentToolRepositoryConfigSerializer.implementations[type]) {\n return false;\n }\n ConcurrentToolRepositoryConfigSerializer.implementations[type] = serializer;\n return true;\n }\n\n toDict(obj: ConcurrentToolRepository): Record<string, unknown> {\n const serializer = ConcurrentToolRepositoryConfigSerializer.implementations[obj.tool_repository_type];\n if (!serializer) throw new Error(`No serializer for type: ${obj.tool_repository_type}`);\n return serializer.toDict(obj);\n }\n\n validateDict(data: Record<string, unknown>): ConcurrentToolRepository {\n const serializer = ConcurrentToolRepositoryConfigSerializer.implementations[data[\"tool_repository_type\"] as string];\n if (!serializer) throw new Error(`Invalid tool repository type: ${data[\"tool_repository_type\"]}`);\n return serializer.validateDict(data);\n }\n}\n\nexport const ConcurrentToolRepositorySchema = z\n .custom<ConcurrentToolRepository>((obj) => {\n try {\n // Use the centralized serializer to validate & return the correct subtype\n const validated = new ConcurrentToolRepositoryConfigSerializer().validateDict(obj as Record<string, unknown>);\n return validated;\n } catch (e) {\n return false; // z.custom treats false as validation failure\n }\n }, {\n message: \"Invalid ConcurrentToolRepository object\",\n });","// packages/core/src/implementations/tag_search_strategy.ts\r\nimport { Tool } from '../data/tool';\r\nimport { ConcurrentToolRepository } from '../interfaces/concurrent_tool_repository';\r\nimport { ToolSearchStrategy } from '../interfaces/tool_search_strategy';\r\nimport { z } from 'zod';\r\nimport { Serializer } from '../interfaces/serializer';\r\n\r\n/**\r\n * Implements a tool search strategy based on tag and description matching.\r\n * Tools are scored based on the occurrence of query words in their tags and description.\r\n */\r\nexport class TagSearchStrategy implements ToolSearchStrategy {\r\n public readonly tool_search_strategy_type: 'tag_and_description_word_match' = 'tag_and_description_word_match';\r\n public readonly descriptionWeight: number;\r\n public readonly tagWeight: number;\r\n private readonly _config: TagSearchStrategyConfig; \r\n\r\n /**\r\n * Creates an instance of TagSearchStrategy.\r\n *\r\n * @param descriptionWeight The weight to apply to words found in the tool's description.\r\n * @param tagWeight The weight to apply to words found in the tool's tags.\r\n */\r\n constructor(config: TagSearchStrategyConfig) {\r\n this._config = TagSearchStrategyConfigSchema.parse(config);\r\n this.descriptionWeight = this._config.description_weight;\r\n this.tagWeight = this._config.tag_weight;\r\n }\r\n\r\n /**\r\n * Converts the search strategy instance's configuration to a dictionary.\r\n */\r\n public toDict(): TagSearchStrategyConfig {\r\n return this._config;\r\n }\r\n\r\n /**\r\n * Searches for tools by matching tags and description content against a query.\r\n *\r\n * @param concurrentToolRepository The repository to search for tools.\r\n * @param query The search query string.\r\n * @param limit The maximum number of tools to return. If 0, all matched tools are returned.\r\n * @param anyOfTagsRequired Optional list of tags where one of them must be present in the tool's tags.\r\n * @returns A promise that resolves to a list of tools ordered by relevance.\r\n */\r\n public async searchTools(\r\n concurrentToolRepository: ConcurrentToolRepository,\r\n query: string,\r\n limit: number = 10,\r\n anyOfTagsRequired?: string[]\r\n ): Promise<Tool[]> {\r\n const queryLower = query.toLowerCase();\r\n const queryWords = new Set(queryLower.match(/\\w+/g) || []);\r\n\r\n let tools = await concurrentToolRepository.getTools();\r\n\r\n if (anyOfTagsRequired && anyOfTagsRequired.length > 0) {\r\n const requiredTagsLower = new Set(anyOfTagsRequired.map(tag => tag.toLowerCase()));\r\n tools = tools.filter(tool =>\r\n tool.tags && tool.tags.some(tag => requiredTagsLower.has(tag.toLowerCase()))\r\n );\r\n }\r\n\r\n const toolScores = tools.map(tool => {\r\n let score = 0.0;\r\n\r\n // Check tool name (highest priority)\r\n const toolNameLower = tool.name.toLowerCase();\r\n // Extract just the tool name without the manual prefix (e.g., \"manual.echo\" -> \"echo\")\r\n const toolNameOnly = toolNameLower.includes('.') \r\n ? toolNameLower.split('.').pop() || toolNameLower\r\n : toolNameLower;\r\n \r\n // Full match or substring match on tool name\r\n if (queryLower === toolNameOnly || queryLower.includes(toolNameOnly) || toolNameOnly.includes(queryLower)) {\r\n score += this.tagWeight * 2; // High weight for name matches\r\n }\r\n\r\n // Word-by-word match on tool name\r\n const toolNameWords = new Set(toolNameOnly.match(/\\w+/g) || []);\r\n for (const word of toolNameWords) {\r\n if (queryWords.has(word)) {\r\n score += this.tagWeight;\r\n }\r\n }\r\n\r\n if (tool.tags) {\r\n for (const tag of tool.tags) {\r\n const tagLower = tag.toLowerCase();\r\n if (queryLower.includes(tagLower) || tagLower.includes(queryLower)) {\r\n score += this.tagWeight;\r\n }\r\n\r\n const tagWords = new Set(tagLower.match(/\\w+/g) || []);\r\n \r\n // Exact word matches\r\n for (const word of tagWords) {\r\n if (queryWords.has(word)) {\r\n score += this.tagWeight * 0.5;\r\n }\r\n }\r\n \r\n // Partial/substring word matches (e.g., \"author\" matches \"authors\")\r\n for (const queryWord of queryWords) {\r\n if (queryWord.length > 2) {\r\n for (const tagWord of tagWords) {\r\n if (tagWord.length > 2 && (tagWord.includes(queryWord) || queryWord.includes(tagWord))) {\r\n score += this.tagWeight * 0.3; // Lower weight for partial matches in tags\r\n break; // Only count once per query word\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (tool.description) {\r\n const descriptionLower = tool.description.toLowerCase();\r\n const descriptionWords = new Set(\r\n descriptionLower.match(/\\w+/g) || []\r\n );\r\n \r\n // Exact word matches\r\n for (const word of descriptionWords) {\r\n if (queryWords.has(word) && word.length > 2) {\r\n score += this.descriptionWeight;\r\n }\r\n }\r\n \r\n // Partial/substring word matches (e.g., \"author\" matches \"authors\")\r\n for (const queryWord of queryWords) {\r\n if (queryWord.length > 2) {\r\n for (const descWord of descriptionWords) {\r\n if (descWord.length > 2 && (descWord.includes(queryWord) || queryWord.includes(descWord))) {\r\n score += this.descriptionWeight * 0.5; // Lower weight for partial matches\r\n break; // Only count once per query word\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return { tool, score };\r\n });\r\n\r\n const sortedTools = toolScores\r\n .sort((a, b) => b.score - a.score)\r\n .map(item => item.tool);\r\n\r\n return limit > 0 ? sortedTools.slice(0, limit) : sortedTools;\r\n }\r\n}\r\n\r\n\r\nexport class TagSearchStrategyConfigSerializer extends Serializer<TagSearchStrategy> {\r\n toDict(obj: TagSearchStrategy): { [key: string]: any } {\r\n return {\r\n tool_search_strategy_type: obj.tool_search_strategy_type,\r\n description_weight: obj.descriptionWeight,\r\n tag_weight: obj.tagWeight\r\n }\r\n }\r\n\r\n validateDict(data: { [key: string]: any }): TagSearchStrategy {\r\n try {\r\n return new TagSearchStrategy(TagSearchStrategyConfigSchema.parse(data));\r\n } catch (e) {\r\n if (e instanceof z.ZodError) {\r\n throw new Error(`Invalid configuration: ${e.message}`);\r\n }\r\n throw new Error(\"Unexpected error during validation\");\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Schema for the TagSearchStrategy configuration.\r\n */\r\nconst TagSearchStrategyConfigSchema = z.object({\r\n tool_search_strategy_type: z.literal('tag_and_description_word_match'),\r\n description_weight: z.number().optional().default(1),\r\n tag_weight: z.number().optional().default(3),\r\n}).passthrough();\r\n\r\ntype TagSearchStrategyConfig = z.infer<typeof TagSearchStrategyConfigSchema>;\r\n","// packages/core/src/interfaces/tool_search_strategy.ts\nimport { Tool } from '../data/tool';\nimport { ConcurrentToolRepository } from './concurrent_tool_repository';\nimport { Serializer } from './serializer';\nimport z from 'zod';\n\n\n/**\n * Defines the contract for tool search strategies that can be plugged into\n * the UTCP client. Implementations provide algorithms for searching and ranking tools.\n */\nexport interface ToolSearchStrategy {\n /**\n * A string identifying the type of this tool search strategy (e.g., 'tag_and_description_word_match', 'in_mem_embeddings').\n * This is used for configuration and plugin lookup.\n */\n tool_search_strategy_type: string;\n\n /**\n * Searches for tools relevant to the query within a given tool repository.\n *\n * @param toolRepository The repository to search within.\n * @param query The search query string. Format depends on the strategy (e.g., keywords, natural language).\n * @param limit Maximum number of tools to return. Use 0 for no limit.\n * @param anyOfTagsRequired Optional list of tags where one of them must be present in the tool's tags.\n * @returns A Promise resolving to a list of Tool objects ranked by relevance.\n */\n searchTools(\n toolRepository: ConcurrentToolRepository,\n query: string,\n limit?: number,\n anyOfTagsRequired?: string[]\n ): Promise<Tool[]>;\n}\n\nexport class ToolSearchStrategyConfigSerializer extends Serializer<ToolSearchStrategy> {\n private static implementations: Record<string, Serializer<ToolSearchStrategy>> = {};\n static default_strategy = \"tag_and_description_word_match\";\n\n // No need for the whole plugin registry. Plugins just need to call this to register a new strategy\n static registerStrategy(type: string, serializer: Serializer<ToolSearchStrategy>, override = false): boolean {\n if (!override && ToolSearchStrategyConfigSerializer.implementations[type]) {\n return false;\n }\n ToolSearchStrategyConfigSerializer.implementations[type] = serializer;\n return true;\n }\n\n toDict(obj: ToolSearchStrategy): Record<string, unknown> {\n const serializer = ToolSearchStrategyConfigSerializer.implementations[obj.tool_search_strategy_type];\n if (!serializer) throw new Error(`No serializer for type: ${obj.tool_search_strategy_type}`);\n return serializer.toDict(obj);\n }\n\n validateDict(data: Record<string, unknown>): ToolSearchStrategy {\n const serializer = ToolSearchStrategyConfigSerializer.implementations[data[\"tool_search_strategy_type\"] as string];\n if (!serializer) throw new Error(`Invalid tool search strategy type: ${data[\"tool_search_strategy_type\"]}`);\n return serializer.validateDict(data);\n }\n}\n\nexport const ToolSearchStrategySchema = z\n .custom<ToolSearchStrategy>((obj) => {\n try {\n // Use the centralized serializer to validate & return the correct subtype\n const validated = new ToolSearchStrategyConfigSerializer().validateDict(obj as Record<string, unknown>);\n return validated;\n } catch (e) {\n return false; // z.custom treats false as validation failure\n }\n }, {\n message: \"Invalid ToolSearchStrategy object\",\n });","// packages/core/src/implementations/post_processors/filter_dict_post_processor.ts\nimport { z } from 'zod';\nimport { ToolPostProcessor } from '../../interfaces/tool_post_processor';\nimport { Tool } from '../../data/tool';\nimport { CallTemplate } from '../../data/call_template';\nimport { IUtcpClient } from '../../interfaces/utcp_client_interface';\nimport { Serializer } from '../../interfaces/serializer';\n\n/**\n * Implements a tool post-processor that filters dictionary keys from tool results.\n * It can recursively process nested dictionaries and arrays.\n * Filtering can be configured to exclude specific keys, or only include specific keys.\n * Processing can also be conditional based on the tool's or manual's name.\n */\nexport class FilterDictPostProcessor implements ToolPostProcessor {\n public readonly tool_post_processor_type: 'filter_dict' = 'filter_dict';\n private readonly excludeKeys?: Set<string>;\n private readonly onlyIncludeKeys?: Set<string>;\n private readonly excludeTools?: Set<string>;\n private readonly onlyIncludeTools?: Set<string>;\n private readonly excludeManuals?: Set<string>;\n private readonly onlyIncludeManuals?: Set<string>;\n private readonly _config: FilterDictPostProcessorConfig; \n\n constructor(config: FilterDictPostProcessorConfig) {\n this._config = FilterDictPostProcessorConfigSchema.parse(config);\n this.excludeKeys = config.exclude_keys ? new Set(config.exclude_keys) : undefined;\n this.onlyIncludeKeys = config.only_include_keys ? new Set(config.only_include_keys) : undefined;\n this.excludeTools = config.exclude_tools ? new Set(config.exclude_tools) : undefined;\n this.onlyIncludeTools = config.only_include_tools ? new Set(config.only_include_tools) : undefined;\n this.excludeManuals = config.exclude_manuals ? new Set(config.exclude_manuals) : undefined;\n this.onlyIncludeManuals = config.only_include_manuals ? new Set(config.only_include_manuals) : undefined;\n \n\n if (this.excludeKeys && this.onlyIncludeKeys) {\n console.warn(\"FilterDictPostProcessor configured with both 'exclude_keys' and 'only_include_keys'. 'exclude_keys' will be ignored.\");\n }\n if (this.excludeTools && this.onlyIncludeTools) {\n console.warn(\"FilterDictPostProcessor configured with both 'exclude_tools' and 'only_include_tools'. 'exclude_tools' will be ignored.\");\n }\n if (this.excludeManuals && this.onlyIncludeManuals) {\n console.warn(\"FilterDictPostProcessor configured with both 'exclude_manuals' and 'only_include_manuals'. 'exclude_manuals' will be ignored.\");\n }\n }\n\n /**\n * Converts the post-processor instance's configuration to a dictionary.\n */\n public toDict(): FilterDictPostProcessorConfig {\n return this._config;\n }\n\n /**\n * Processes the result of a tool call, applying filtering logic.\n * @param caller The UTCP client instance.\n * @param tool The Tool object that was called.\n * @param manualCallTemplate The CallTemplateBase object of the manual that owns the tool.\n * @param result The raw result returned by the tool's communication protocol.\n * @returns The processed result.\n */\n public postProcess(caller: IUtcpClient, tool: Tool, manualCallTemplate: CallTemplate, result: any): any {\n if (this.shouldSkipProcessing(tool, manualCallTemplate)) {\n return result;\n }\n\n if (this.onlyIncludeKeys) {\n return this._filterDictOnlyIncludeKeys(result);\n }\n if (this.excludeKeys) {\n return this._filterDictExcludeKeys(result);\n }\n return result;\n }\n\n /**\n * Determines if processing should be skipped based on tool and manual filters.\n * @param tool The Tool object.\n * @param manualCallTemplate The CallTemplateBase object of the manual.\n * @returns True if processing should be skipped, false otherwise.\n */\n private shouldSkipProcessing(tool: Tool, manualCallTemplate: CallTemplate): boolean {\n if (this.onlyIncludeTools && !this.onlyIncludeTools.has(tool.name)) {\n return true;\n }\n if (this.excludeTools && this.excludeTools.has(tool.name)) {\n return true;\n }\n const manualName = manualCallTemplate.name;\n if (manualName) {\n if (this.onlyIncludeManuals && !this.onlyIncludeManuals.has(manualName)) {\n return true;\n }\n if (this.excludeManuals && this.excludeManuals.has(manualName)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Recursively filters a dictionary, keeping only specified keys.\n * @param data The data to filter.\n * @returns The filtered data.\n */\n private _filterDictOnlyIncludeKeys(data: any): any {\n if (typeof data !== 'object' || data === null) {\n return data;\n }\n\n if (Array.isArray(data)) {\n return data.map(item => this._filterDictOnlyIncludeKeys(item)).filter(item => {\n if (typeof item === 'object' && item !== null) {\n if (Array.isArray(item)) return item.length > 0;\n return Object.keys(item).length > 0;\n }\n return true;\n });\n }\n\n const newObject: { [key: string]: any } = {};\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n if (this.onlyIncludeKeys?.has(key)) {\n newObject[key] = this._filterDictOnlyIncludeKeys(data[key]);\n } else {\n const processedValue = this._filterDictOnlyIncludeKeys(data[key]);\n if (typeof processedValue === 'object' && processedValue !== null) {\n if (Array.isArray(processedValue) && processedValue.length > 0) {\n newObject[key] = processedValue;\n } else if (Object.keys(processedValue).length > 0) {\n newObject[key] = processedValue;\n }\n }\n }\n }\n }\n return newObject;\n }\n\n /**\n * Recursively filters a dictionary, excluding specified keys.\n * @param data The data to filter.\n * @returns The filtered data.\n */\n private _filterDictExcludeKeys(data: any): any {\n if (typeof data !== 'object' || data === null) {\n return data;\n }\n\n if (Array.isArray(data)) {\n return data.map(item => this._filterDictExcludeKeys(item)).filter(item => {\n if (typeof item === 'object' && item !== null) {\n if (Array.isArray(item)) return item.length > 0;\n return Object.keys(item).length > 0;\n }\n return true;\n });\n }\n\n const newObject: { [key: string]: any } = {};\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n if (!this.excludeKeys?.has(key)) {\n newObject[key] = this._filterDictExcludeKeys(data[key]);\n }\n }\n }\n return newObject;\n }\n}\n\n/**\n * Schema for the FilterDictPostProcessor configuration.\n */\nconst FilterDictPostProcessorConfigSchema = z.object({\n tool_post_processor_type: z.literal('filter_dict'),\n exclude_keys: z.array(z.string()).optional(),\n only_include_keys: z.array(z.string()).optional(),\n exclude_tools: z.array(z.string()).optional(),\n only_include_tools: z.array(z.string()).optional(),\n exclude_manuals: z.array(z.string()).optional(),\n only_include_manuals: z.array(z.string()).optional(),\n}).passthrough();\n\ntype FilterDictPostProcessorConfig = z.infer<typeof FilterDictPostProcessorConfigSchema>;\n\nexport class FilterDictPostProcessorSerializer extends Serializer<FilterDictPostProcessor> {\n toDict(obj: FilterDictPostProcessor): { [key: string]: any } {\n const filterDictConfig = obj.toDict()\n return {\n tool_post_processor_type: filterDictConfig.tool_post_processor_type,\n exclude_keys: filterDictConfig.exclude_keys,\n only_include_keys: filterDictConfig.only_include_keys,\n exclude_tools: filterDictConfig.exclude_tools,\n only_include_tools: filterDictConfig.only_include_tools,\n exclude_manuals: filterDictConfig.exclude_manuals,\n only_include_manuals: filterDictConfig.only_include_manuals,\n };\n }\n\n validateDict(data: { [key: string]: any }): FilterDictPostProcessor {\n try {\n return new FilterDictPostProcessor(FilterDictPostProcessorConfigSchema.parse(data));\n } catch (e) {\n if (e instanceof z.ZodError) {\n throw new Error(`Invalid configuration: ${e.message}`);\n }\n throw new Error(\"Unexpected error during validation\");\n }\n }\n}","// packages/core/src/implementations/post_processors/limit_strings_post_processor.ts\r\nimport { z } from 'zod';\r\nimport { ToolPostProcessor } from '../../interfaces/tool_post_processor';\r\nimport { Tool } from '../../data/tool';\r\nimport { CallTemplate } from '../../data/call_template';\r\nimport { IUtcpClient } from '../../interfaces/utcp_client_interface';\r\nimport { Serializer } from '../../interfaces/serializer';\r\n\r\n/**\r\n * Implements a tool post-processor that truncates string values within a tool's result.\r\n * It recursively processes nested objects and arrays, limiting the length of any string encountered.\r\n * Processing can be conditional based on the tool's or manual's name.\r\n */\r\nexport class LimitStringsPostProcessor implements ToolPostProcessor {\r\n public readonly tool_post_processor_type: 'limit_strings' = 'limit_strings';\r\n private readonly limit: number;\r\n private readonly excludeTools?: Set<string>;\r\n private readonly onlyIncludeTools?: Set<string>;\r\n private readonly excludeManuals?: Set<string>;\r\n private readonly onlyIncludeManuals?: Set<string>;\r\n private readonly _config: LimitStringsPostProcessorConfig; \r\n\r\n constructor(config: LimitStringsPostProcessorConfig) {\r\n this._config = LimitStringsPostProcessorConfigSchema.parse(config);\r\n this.limit = config.limit;\r\n this.excludeTools = config.exclude_tools ? new Set(config.exclude_tools) : undefined;\r\n this.onlyIncludeTools = config.only_include_tools ? new Set(config.only_include_tools) : undefined;\r\n this.excludeManuals = config.exclude_manuals ? new Set(config.exclude_manuals) : undefined;\r\n this.onlyIncludeManuals = config.only_include_manuals ? new Set(config.only_include_manuals) : undefined;\r\n\r\n if (this.excludeTools && this.onlyIncludeTools) {\r\n console.warn(\"LimitStringsPostProcessor configured with both 'exclude_tools' and 'only_include_tools'. 'exclude_tools' will be ignored.\");\r\n }\r\n if (this.excludeManuals && this.onlyIncludeManuals) {\r\n console.warn(\"LimitStringsPostProcessor configured with both 'exclude_manuals' and 'only_include_manuals'. 'exclude_manuals' will be ignored.\");\r\n }\r\n }\r\n\r\n /**\r\n * Converts the post-processor instance's configuration to a dictionary.\r\n */\r\n public toDict(): LimitStringsPostProcessorConfig {\r\n return this._config;\r\n }\r\n\r\n /**\r\n * Processes the result of a tool call, truncating string values if applicable.\r\n * @param caller The UTCP client instance.\r\n * @param tool The Tool object that was called.\r\n * @param manualCallTemplate The CallTemplateBase object of the manual that owns the tool.\r\n * @param result The raw result returned by the tool's communication protocol.\r\n * @returns The processed result.\r\n */\r\n public postProcess(caller: IUtcpClient, tool: Tool, manualCallTemplate: CallTemplate, result: any): any {\r\n if (this.shouldSkipProcessing(tool, manualCallTemplate)) {\r\n return result;\r\n }\r\n return this._processObject(result);\r\n }\r\n\r\n /**\r\n * Determines if processing should be skipped based on tool and manual filters.\r\n * @param tool The Tool object.\r\n * @param manualCallTemplate The CallTemplateBase object of the manual.\r\n * @returns True if processing should be skipped, false otherwise.\r\n */\r\n private shouldSkipProcessing(tool: Tool, manualCallTemplate: CallTemplate): boolean {\r\n if (this.onlyIncludeTools && !this.onlyIncludeTools.has(tool.name)) {\r\n return true;\r\n }\r\n if (this.excludeTools && this.excludeTools.has(tool.name)) {\r\n return true;\r\n }\r\n const manualName = manualCallTemplate.name;\r\n if (manualName) {\r\n if (this.onlyIncludeManuals && !this.onlyIncludeManuals.has(manualName)) {\r\n return true;\r\n }\r\n if (this.excludeManuals && this.excludeManuals.has(manualName)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Recursively processes an object, truncating strings.\r\n * @param obj The object to process.\r\n * @returns The processed object.\r\n */\r\n private _processObject(obj: any): any {\r\n if (typeof obj === 'string') {\r\n return obj.length > this.limit ? obj.substring(0, this.limit) : obj;\r\n }\r\n if (Array.isArray(obj)) {\r\n return obj.map(item => this._processObject(item));\r\n }\r\n if (typeof obj === 'object' && obj !== null) {\r\n const newObj: { [key: string]: any } = {};\r\n for (const key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n newObj[key] = this._processObject(obj[key]);\r\n }\r\n }\r\n return newObj;\r\n }\r\n return obj;\r\n }\r\n}\r\n\r\n/**\r\n * Schema for the LimitStringsPostProcessor configuration.\r\n */\r\nconst LimitStringsPostProcessorConfigSchema = z.object({\r\n tool_post_processor_type: z.literal('limit_strings'),\r\n limit: z.number().int().positive().default(10000), \r\n exclude_tools: z.array(z.string()).optional(),\r\n only_include_tools: z.array(z.string()).optional(),\r\n exclude_manuals: z.array(z.string()).optional(),\r\n only_include_manuals: z.array(z.string()).optional(),\r\n}).passthrough();\r\n\r\ntype LimitStringsPostProcessorConfig = z.infer<typeof LimitStringsPostProcessorConfigSchema>;\r\n\r\nexport class LimitStringsPostProcessorSerializer extends Serializer<LimitStringsPostProcessor> {\r\n toDict(obj: LimitStringsPostProcessor): { [key: string]: any } {\r\n const limitStringsConfig = obj.toDict()\r\n return {\r\n tool_post_processor_type: limitStringsConfig.tool_post_processor_type,\r\n limit: limitStringsConfig.limit,\r\n exclude_tools: limitStringsConfig.exclude_tools,\r\n only_include_tools: limitStringsConfig.only_include_tools,\r\n exclude_manuals: limitStringsConfig.exclude_manuals,\r\n only_include_manuals: limitStringsConfig.only_include_manuals,\r\n };\r\n }\r\n\r\n validateDict(data: { [key: string]: any }): LimitStringsPostProcessor {\r\n try {\r\n return new LimitStringsPostProcessor(LimitStringsPostProcessorConfigSchema.parse(data));\r\n } catch (e) {\r\n if (e instanceof z.ZodError) {\r\n throw new Error(`Invalid configuration: ${e.message}`);\r\n }\r\n throw new Error(\"Unexpected error during validation\");\r\n }\r\n }\r\n}\r\n","// packages/core/src/interfaces/tool_post_processor.ts\nimport { Tool } from '../data/tool';\nimport { CallTemplate } from '../data/call_template';\nimport { IUtcpClient } from './utcp_client_interface';\nimport { Serializer } from './serializer';\nimport z from 'zod';\n\n/**\n * Defines the contract for tool post-processors that can modify the result of a tool call.\n * Implementations can apply transformations, filtering, or other logic to the raw tool output.\n * Post-processors are configured in the UtcpClientConfig and executed in order after a successful tool call.\n */\nexport interface ToolPostProcessor {\n /**\n * A string identifying the type of this tool post-processor (e.g., 'filter_dict', 'limit_strings').\n * This is used for configuration and plugin lookup.\n */\n tool_post_processor_type: string;\n\n /**\n * Processes the result of a tool call.\n *\n * @param caller The UTCP client instance that initiated the tool call.\n * @param tool The Tool object that was called.\n * @param manualCallTemplate The CallTemplateBase object of the manual that owns the tool.\n * @param result The raw result returned by the tool's communication protocol (can be a final result or a chunk from a stream).\n * @returns The processed result, which is then passed to the next processor in the chain or returned to the caller.\n */\n postProcess(caller: IUtcpClient, tool: Tool, manualCallTemplate: CallTemplate, result: any): any;\n}\n\nexport class ToolPostProcessorConfigSerializer extends Serializer<ToolPostProcessor> {\n private static implementations: Record<string, Serializer<ToolPostProcessor>> = {};\n\n // No need for the whole plugin registry. Plugins just need to call this to register a new post-processor\n static registerPostProcessor(type: string, serializer: Serializer<ToolPostProcessor>, override = false): boolean {\n if (!override && ToolPostProcessorConfigSerializer.implementations[type]) {\n return false;\n }\n ToolPostProcessorConfigSerializer.implementations[type] = serializer;\n return true;\n }\n\n toDict(obj: ToolPostProcessor): Record<string, unknown> {\n const serializer = ToolPostProcessorConfigSerializer.implementations[obj.tool_post_processor_type];\n if (!serializer) throw new Error(`No serializer for type: ${obj.tool_post_processor_type}`);\n return serializer.toDict(obj);\n }\n\n validateDict(data: Record<string, unknown>): ToolPostProcessor {\n const serializer = ToolPostProcessorConfigSerializer.implementations[data[\"tool_post_processor_type\"] as string];\n if (!serializer) throw new Error(`Invalid tool post-processor type: ${data[\"tool_post_processor_type\"]}`);\n return serializer.validateDict(data);\n }\n}\n\nexport const ToolPostProcessorSchema = z\n .custom<ToolPostProcessor>((obj) => {\n try {\n // Use the centralized serializer to validate & return the correct subtype\n const validated = new ToolPostProcessorConfigSerializer().validateDict(obj as Record<string, unknown>);\n return validated;\n } catch (e) {\n return false; // z.custom treats false as validation failure\n }\n }, {\n message: \"Invalid ToolPostProcessor object\",\n });","// Core Auth\nimport { AuthSerializer } from '../data/auth';\nimport { ApiKeyAuthSerializer } from '../data/auth_implementations/api_key_auth';\nimport { BasicAuthSerializer } from '../data/auth_implementations/basic_auth';\nimport { OAuth2AuthSerializer } from '../data/auth_implementations/oauth2_auth';\nimport { setPluginInitializer } from '../interfaces/serializer';\n\n// Core Tool Repository\nimport { InMemConcurrentToolRepositorySerializer } from '../implementations/in_mem_concurrent_tool_repository';\nimport { ConcurrentToolRepositoryConfigSerializer } from '../interfaces/concurrent_tool_repository';\n\n// Core Search Strategy\nimport { TagSearchStrategyConfigSerializer } from '../implementations/tag_search_strategy';\nimport { ToolSearchStrategyConfigSerializer } from '../interfaces/tool_search_strategy';\n\n// Core Post Processors\nimport { FilterDictPostProcessorSerializer } from '../implementations/post_processors/filter_dict_post_processor';\nimport { LimitStringsPostProcessorSerializer } from '../implementations/post_processors/limit_strings_post_processor';\nimport { ToolPostProcessorConfigSerializer } from '../interfaces/tool_post_processor';\n\nlet corePluginsInitialized = false;\nlet initializing = false;\n\n// Register the initialization function with Serializer to break circular dependency\nsetPluginInitializer(() => ensureCorePluginsInitialized());\n\nfunction _registerCorePlugins(): void {\n // Register Core Auth Serializers\n AuthSerializer.registerAuth('api_key', new ApiKeyAuthSerializer());\n AuthSerializer.registerAuth('basic', new BasicAuthSerializer());\n AuthSerializer.registerAuth('oauth2', new OAuth2AuthSerializer());\n\n // Register Tool Repository Serializers\n ConcurrentToolRepositoryConfigSerializer.registerRepository('in_memory', new InMemConcurrentToolRepositorySerializer());\n\n // Register Tool Search Strategy Serializers\n ToolSearchStrategyConfigSerializer.registerStrategy('tag_and_description_word_match', new TagSearchStrategyConfigSerializer());\n \n // Register Tool Post-Processor Serializers\n ToolPostProcessorConfigSerializer.registerPostProcessor('filter_dict', new FilterDictPostProcessorSerializer());\n ToolPostProcessorConfigSerializer.registerPostProcessor('limit_strings', new LimitStringsPostProcessorSerializer());\n}\n\n/**\n * Ensures that all core UTCP plugins (auth serializers, default repository, \n * search strategy, and post-processors) are registered with the plugin registry.\n * \n * This function is called automatically when needed and should not be called manually.\n * \n * Note: Optional plugins like HTTP, MCP, Text, File, etc. are NOT auto-registered.\n * Users must explicitly import the plugins they need:\n * \n * @example\n * // Browser application\n * import { UtcpClient } from '@utcp/sdk';\n * import '@utcp/http'; // Auto-registers HTTP protocol\n * import '@utcp/text'; // Auto-registers text content protocol\n * \n * @example\n * // Node.js application\n * import { UtcpClient } from '@utcp/sdk';\n * import '@utcp/http';\n * import '@utcp/mcp';\n * import '@utcp/file';\n * import '@utcp/dotenv-loader';\n */\nexport function ensureCorePluginsInitialized(): void {\n if (!corePluginsInitialized && !initializing) {\n initializing = true;\n _registerCorePlugins();\n corePluginsInitialized = true;\n initializing = false;\n }\n}","// packages/core/src/data/variable_loader.ts\r\nimport { z } from 'zod';\r\nimport { Serializer } from '../interfaces/serializer';\r\n\r\n/**\r\n * Base interface for all VariableLoaders.\r\n * Variable loaders are responsible for loading configuration variables from external sources.\r\n */\r\nexport interface VariableLoader {\r\n /**\r\n * The type identifier for this variable loader (e.g., 'dotenv').\r\n */\r\n variable_loader_type: string;\r\n\r\n [key: string]: any;\r\n\r\n /**\r\n * Retrieves a variable value by key.\r\n * @abstract\r\n * @param key Variable name to retrieve.\r\n * @returns Variable value if found, None otherwise.\r\n */\r\n get(key: string): Promise<string | null>;\r\n}\r\n\r\n/**\r\n * Serializer for VariableLoader objects.\r\n * Uses a registry pattern to delegate to type-specific serializers.\r\n */\r\nexport class VariableLoaderSerializer extends Serializer<VariableLoader> {\r\n private static serializers: Record<string, Serializer<VariableLoader>> = {};\r\n\r\n /**\r\n * Registers a variable loader serializer for a specific type.\r\n * @param type The variable_loader_type identifier\r\n * @param serializer The serializer instance for this type\r\n * @param override Whether to override an existing registration\r\n * @returns true if registration succeeded, false if already exists and override is false\r\n */\r\n static registerVariableLoader(\r\n type: string,\r\n serializer: Serializer<VariableLoader>,\r\n override = false\r\n ): boolean {\r\n if (!override && VariableLoaderSerializer.serializers[type]) {\r\n return false;\r\n }\r\n VariableLoaderSerializer.serializers[type] = serializer;\r\n return true;\r\n }\r\n\r\n toDict(obj: VariableLoader): Record<string, unknown> {\r\n const serializer = VariableLoaderSerializer.serializers[obj.variable_loader_type];\r\n if (!serializer) {\r\n throw new Error(`No serializer found for variable_loader_type: ${obj.variable_loader_type}`);\r\n }\r\n return serializer.toDict(obj);\r\n }\r\n\r\n validateDict(obj: Record<string, unknown>): VariableLoader {\r\n const serializer = VariableLoaderSerializer.serializers[obj.variable_loader_type as string];\r\n if (!serializer) {\r\n throw new Error(`Invalid variable_loader_type: ${obj.variable_loader_type}`);\r\n }\r\n return serializer.validateDict(obj);\r\n }\r\n}\r\n\r\n/**\r\n * Zod schema for VariableLoader using custom validation.\r\n */\r\nexport const VariableLoaderSchema = z\r\n .custom<VariableLoader>((obj) => {\r\n try {\r\n const validated = new VariableLoaderSerializer().validateDict(obj as Record<string, unknown>);\r\n return validated;\r\n } catch (e) {\r\n return false;\r\n }\r\n }, {\r\n message: \"Invalid VariableLoader object\",\r\n });\r\n","export class UtcpVariableNotFoundError extends Error {\r\n public variableName: string;\r\n\r\n /**\r\n * Initializes the exception with the missing variable name.\r\n * \r\n * @param variableName The name of the variable that could not be found.\r\n */\r\n constructor(variableName: string) {\r\n super(\r\n `Variable '${variableName}' referenced in call template configuration not found. ` +\r\n `Please ensure it's defined in client.config.variables, environment variables, or a configured variable loader.`\r\n );\r\n this.variableName = variableName;\r\n this.name = 'UtcpVariableNotFoundError';\r\n }\r\n}","// packages/core/src/implementations/default_variable_substitutor.ts\r\nimport { UtcpClientConfig } from '../client/utcp_client_config';\r\nimport { VariableSubstitutor } from '../interfaces/variable_substitutor';\r\nimport { UtcpVariableNotFoundError } from '../exceptions/utcp_variable_not_found_error';\r\n\r\n/**\r\n * Default implementation of the VariableSubstitutor interface.\r\n * Provides a hierarchical variable resolution system that searches for\r\n * variables in the following order:\r\n * 1. Configuration variables (exact match from config.variables)\r\n * 2. Custom variable loaders (in order, from config.load_variables_from)\r\n * 3. Environment variables (process.env)\r\n *\r\n * It supports variable placeholders using ${VAR_NAME} or $VAR_NAME syntax\r\n * and applies namespacing (e.g., manual__name__VAR_NAME) for isolation,\r\n * mirroring the Python UTCP SDK's convention.\r\n */\r\nexport class DefaultVariableSubstitutor implements VariableSubstitutor {\r\n\r\n /**\r\n * Retrieves a variable value from configured sources, respecting namespaces.\r\n * \r\n * @param key The variable name to look up (without namespace prefix).\r\n * @param config The UTCP client configuration.\r\n * @param namespace An optional namespace to prepend to the variable name for lookup.\r\n * @returns The resolved variable value.\r\n * @throws UtcpVariableNotFoundError if the variable cannot be found.\r\n */\r\n private async _getVariable(key: string, config: UtcpClientConfig, namespace?: string): Promise<string> {\r\n // Apply namespacing: namespace.replace(\"_\", \"!\").replace(\"!\", \"__\") + \"_\" + key\r\n let effectiveKey = key;\r\n if (namespace) {\r\n effectiveKey = namespace.replace(/_/g, '!').replace(/!/g, '__') + '_' + key;\r\n }\r\n\r\n // --- Search Hierarchy ---\r\n\r\n // 1. Check config.variables (highest precedence)\r\n if (config.variables && effectiveKey in config.variables) {\r\n return config.variables[effectiveKey];\r\n }\r\n\r\n // 2. Check custom variable loaders (in order)\r\n if (config.load_variables_from) {\r\n for (const varLoader of config.load_variables_from) {\r\n const varValue = await varLoader.get(effectiveKey);\r\n if (varValue) {\r\n return varValue;\r\n }\r\n }\r\n }\r\n\r\n // 3. Check environment variables (lowest precedence)\r\n try {\r\n const envVar = process.env[effectiveKey];\r\n if (envVar) {\r\n return envVar;\r\n }\r\n } catch (e) {\r\n // Ignore environment variable access errors\r\n }\r\n\r\n throw new UtcpVariableNotFoundError(effectiveKey);\r\n }\r\n\r\n /**\r\n * Recursively substitutes variables in the given object.\r\n * \r\n * @param obj The object (can be string, array, or object) containing potential variable references to substitute.\r\n * @param config The UTCP client configuration containing variable definitions and loaders.\r\n * @param namespace An optional namespace (e.g., manual name) to prefix variable lookups for isolation.\r\n * @returns The object with all variable references replaced by their values.\r\n * @throws UtcpVariableNotFoundError if a referenced variable cannot be resolved.\r\n */\r\n public async substitute<T>(obj: T, config: UtcpClientConfig, namespace?: string): Promise<T> {\r\n if (namespace && !/^[a-zA-Z0-9_]+$/.test(namespace)) {\r\n throw new Error(`Variable namespace '${namespace}' contains invalid characters. Only alphanumeric characters and underscores are allowed.`);\r\n }\r\n\r\n if (typeof obj === 'string') {\r\n if (obj.includes('$ref')) {\r\n return obj;\r\n }\r\n let currentString: string = obj;\r\n const regex = /\\$\\{([a-zA-Z0-9_]+)\\}|\\$([a-zA-Z0-9_]+)/g;\r\n let match: RegExpExecArray | null;\r\n let lastIndex = 0;\r\n const parts: string[] = [];\r\n\r\n regex.lastIndex = 0;\r\n\r\n while ((match = regex.exec(currentString)) !== null) {\r\n const varNameInTemplate = match[1] || match[2];\r\n const fullMatch = match[0];\r\n\r\n parts.push(currentString.substring(lastIndex, match.index));\r\n\r\n try {\r\n const replacement = await this._getVariable(varNameInTemplate, config, namespace);\r\n parts.push(replacement);\r\n } catch (error: any) {\r\n if (error instanceof UtcpVariableNotFoundError) {\r\n throw new UtcpVariableNotFoundError(error.variableName);\r\n }\r\n throw error;\r\n }\r\n\r\n lastIndex = match.index + fullMatch.length;\r\n }\r\n parts.push(currentString.substring(lastIndex));\r\n\r\n return parts.join('') as T;\r\n }\r\n\r\n if (Array.isArray(obj)) {\r\n return Promise.all(obj.map(item => this.substitute(item, config, namespace))) as Promise<T>;\r\n }\r\n\r\n if (obj !== null && typeof obj === 'object') {\r\n const newObj: { [key: string]: any } = {};\r\n for (const key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n newObj[key] = await this.substitute((obj as any)[key], config, namespace);\r\n }\r\n }\r\n return newObj as T;\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n /**\r\n * Recursively finds all variable references in the given object.\r\n *\r\n * @param obj The object (can be string, array, or object) to scan for variable references.\r\n * @param namespace An optional namespace (e.g., manual name) to prefix variable lookups for isolation.\r\n * @returns A list of fully-qualified variable names found in the object.\r\n */\r\n public findRequiredVariables(obj: any, namespace?: string): string[] {\r\n if (namespace && !/^[a-zA-Z0-9_]+$/.test(namespace)) {\r\n throw new Error(`Variable namespace '${namespace}' contains invalid characters. Only alphanumeric characters and underscores are allowed.`);\r\n }\r\n\r\n const variables: string[] = [];\r\n const regex = /\\$\\{([a-zA-Z0-9_]+)\\}|\\$([a-zA-Z0-9_]+)/g;\r\n\r\n if (typeof obj === 'string') {\r\n if (obj.includes('$ref')) {\r\n return [];\r\n }\r\n\r\n let match;\r\n while ((match = regex.exec(obj)) !== null) {\r\n const varNameInTemplate = match[1] || match[2];\r\n \r\n // Apply Python SDK's double underscore namespacing:\r\n // Replaces underscores in namespace with double underscores, then adds single underscore before variable\r\n const effectiveNamespace = namespace ? namespace.replace(/_/g, '__') : undefined;\r\n const prefixedVarName = effectiveNamespace ? `${effectiveNamespace}_${varNameInTemplate}` : varNameInTemplate;\r\n \r\n variables.push(prefixedVarName);\r\n }\r\n } else if (Array.isArray(obj)) {\r\n for (const item of obj) {\r\n variables.push(...this.findRequiredVariables(item, namespace));\r\n }\r\n } else if (obj !== null && typeof obj === 'object') {\r\n for (const key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n variables.push(...this.findRequiredVariables(obj[key], namespace));\r\n }\r\n }\r\n }\r\n\r\n return Array.from(new Set(variables));\r\n }\r\n}","// packages/core/src/client/utcp_client.ts\nimport { CallTemplate, CallTemplateSchema } from '../data/call_template';\nimport { Tool } from '../data/tool';\nimport { UtcpManualSchema } from '../data/utcp_manual';\nimport { CommunicationProtocol } from '../interfaces/communication_protocol';\nimport { RegisterManualResult } from '../data/register_manual_result';\nimport { ConcurrentToolRepository } from '../interfaces/concurrent_tool_repository';\nimport { ToolSearchStrategy } from '../interfaces/tool_search_strategy';\nimport { VariableSubstitutor } from '../interfaces/variable_substitutor';\nimport { ToolPostProcessor } from '../interfaces/tool_post_processor';\nimport {\n UtcpClientConfig,\n UtcpClientConfigSchema,\n UtcpClientConfigSerializer,\n} from './utcp_client_config';\nimport { DefaultVariableSubstitutor } from '../implementations/default_variable_substitutor';\nimport { ensureCorePluginsInitialized } from '../plugins/plugin_loader';\nimport { IUtcpClient } from '../interfaces/utcp_client_interface';\nimport { ToolSearchStrategyConfigSerializer } from '../interfaces/tool_search_strategy';\nimport { ToolPostProcessorConfigSerializer } from '../interfaces/tool_post_processor';\nimport { ConcurrentToolRepositoryConfigSerializer } from '../interfaces/concurrent_tool_repository';\n\n/**\n * REQUIRED\n * Abstract interface for UTCP client implementations.\n *\n * Defines the core contract for UTCP clients, including CallTemplate management,\n * tool execution, search capabilities, and variable handling. This interface\n * allows for different client implementations while maintaining consistency.\n */\nexport class UtcpClient implements IUtcpClient {\n private _registeredCommProtocols: Map<string, CommunicationProtocol> = new Map();\n public readonly postProcessors: ToolPostProcessor[];\n\n protected constructor(\n public readonly config: UtcpClientConfig,\n public readonly variableSubstitutor: VariableSubstitutor,\n public readonly root_dir: string | null = null,\n ) {\n // Dynamically populate registered protocols from the global registry\n for (const [type, protocol] of Object.entries(CommunicationProtocol.communicationProtocols)) {\n this._registeredCommProtocols.set(type, protocol);\n }\n // Instantiate post-processors dynamically based on registered factories\n this.postProcessors = config.post_processing.map(ppConfig => {\n const serializer = new ToolPostProcessorConfigSerializer();\n return serializer.validateDict(ppConfig as any) as ToolPostProcessor;\n });\n }\n\n /**\n * REQUIRED\n * Create a new instance of UtcpClient.\n * \n * @param root_dir The root directory for the client to resolve relative paths from. Defaults to the current working directory.\n * @param config The configuration for the client. Can be a path to a configuration file, a dictionary, or UtcpClientConfig object.\n * @returns A new instance of UtcpClient.\n */\n public static async create(\n root_dir: string = process.cwd(),\n config: UtcpClientConfig | null = null\n ): Promise<UtcpClient> {\n // Ensure core plugins are initialized before parsing config\n ensureCorePluginsInitialized();\n\n let loadedConfig: Partial<UtcpClientConfig>;\n if (config === null) {\n loadedConfig = new UtcpClientConfigSerializer().validateDict({});\n } else {\n loadedConfig = config;\n }\n\n const validatedConfig = UtcpClientConfigSchema.parse(loadedConfig);\n\n // Dynamically instantiate ConcurrentToolRepository\n const repoSerializer = new ConcurrentToolRepositoryConfigSerializer();\n const concurrentToolRepository = repoSerializer.validateDict(validatedConfig.tool_repository as any) as ConcurrentToolRepository;\n\n // Dynamically instantiate ToolSearchStrategy\n const searchStrategySerializer = new ToolSearchStrategyConfigSerializer();\n const searchStrategy = searchStrategySerializer.validateDict(validatedConfig.tool_search_strategy as any) as ToolSearchStrategy;\n\n const variableSubstitutor = new DefaultVariableSubstitutor();\n\n const client = new UtcpClient(\n validatedConfig,\n variableSubstitutor,\n root_dir\n );\n const tempConfigWithoutOwnVars: UtcpClientConfig = { ...client.config, variables: {} };\n client.config.variables = await client.variableSubstitutor.substitute(client.config.variables, tempConfigWithoutOwnVars);\n\n // Register initial manuals specified in the config\n await client.registerManuals(client.config.manual_call_templates || []);\n\n return client;\n }\n\n /**\n * Retrieves a tool by its full namespaced name.\n * @param toolName The full namespaced name of the tool to retrieve.\n * @returns A Promise resolving to the tool if found, otherwise undefined.\n */\n public async getTool(toolName: string): Promise<Tool | undefined> {\n return this.config.tool_repository.getTool(toolName);\n }\n \n /**\n * Retrieves all tools from the repository.\n * @returns A Promise resolving to a list of all registered tools.\n */\n public async getTools(): Promise<Tool[]> {\n return this.config.tool_repository.getTools();\n }\n\n /**\n * Registers a single tool manual.\n * @param manualCallTemplate The call template describing how to discover and connect to the manual.\n * @returns A promise that resolves to a result object indicating success or failure.\n */\n public async registerManual(manualCallTemplate: CallTemplate): Promise<RegisterManualResult> {\n if (!manualCallTemplate.name) {\n manualCallTemplate.name = crypto.randomUUID();\n }\n manualCallTemplate.name = manualCallTemplate.name.replace(/[^\\w]/g, '_');\n\n if (await this.config.tool_repository.getManual(manualCallTemplate.name)) {\n throw new Error(`Manual '${manualCallTemplate.name}' already registered. Please use a different name or deregister the existing manual.`);\n }\n\n const processedCallTemplate = await this.substituteCallTemplateVariables(manualCallTemplate, manualCallTemplate.name);\n\n const protocol = this._registeredCommProtocols.get(processedCallTemplate.call_template_type);\n if (!protocol) {\n throw new Error(`No communication protocol registered for type: '${processedCallTemplate.call_template_type}'`);\n }\n\n const result = await protocol.registerManual(this, processedCallTemplate);\n\n if (result.success) {\n // Determine allowed protocols: use explicit list if provided, otherwise default to manual's own protocol\n const allowedProtocols = (processedCallTemplate.allowed_communication_protocols?.length)\n ? processedCallTemplate.allowed_communication_protocols\n : [processedCallTemplate.call_template_type];\n\n // Filter tools based on allowed protocols and prefix names\n const filteredTools = [];\n for (const tool of result.manual.tools) {\n const toolProtocol = tool.tool_call_template.call_template_type;\n if (!allowedProtocols.includes(toolProtocol)) {\n console.warn(`Tool '${tool.name}' uses communication protocol '${toolProtocol}' which is not in allowed protocols [${allowedProtocols.map(p => `'${p}'`).join(', ')}] for manual '${manualCallTemplate.name}'. Tool will not be registered.`);\n continue;\n }\n if (!tool.name.startsWith(`${processedCallTemplate.name}.`)) {\n tool.name = `${processedCallTemplate.name}.${tool.name}`;\n }\n filteredTools.push(tool);\n }\n result.manual.tools = filteredTools;\n\n await this.config.tool_repository.saveManual(processedCallTemplate, result.manual);\n console.log(`Successfully registered manual '${manualCallTemplate.name}' with ${result.manual.tools.length} tools.`);\n } else {\n console.error(`Error registering manual '${manualCallTemplate.name}': ${result.errors.join(', ')}`);\n }\n\n return result;\n }\n\n /**\n * Registers a list of tool manuals in parallel.\n * @param manualCallTemplates An array of call templates to register.\n * @returns A promise that resolves to an array of registration results.\n */\n public async registerManuals(manualCallTemplates: CallTemplate[]): Promise<RegisterManualResult[]> {\n const registrationPromises = manualCallTemplates.map(async (template) => {\n try {\n return await this.registerManual(template);\n } catch (error: any) {\n console.error(`Error during batch registration for manual '${template.name}':`, error.message);\n return {\n manualCallTemplate: template,\n manual: UtcpManualSchema.parse({ tools: [] }),\n success: false,\n errors: [error.message],\n };\n }\n });\n return Promise.all(registrationPromises);\n }\n\n /**\n * Deregisters a tool manual and all of its associated tools.\n * @param manualName The name of the manual to deregister.\n * @returns A promise that resolves to true if the manual was found and removed, otherwise false.\n */\n public async deregisterManual(manualName: string): Promise<boolean> {\n const manualCallTemplate = await this.config.tool_repository.getManualCallTemplate(manualName);\n if (!manualCallTemplate) {\n console.warn(`Manual '${manualName}' not found for deregistration.`);\n return false;\n }\n\n const protocol = this._registeredCommProtocols.get(manualCallTemplate.call_template_type);\n if (protocol) {\n await protocol.deregisterManual(this, manualCallTemplate);\n console.log(`Deregistered communication protocol for manual '${manualName}'.`);\n } else {\n console.warn(`No communication protocol found for type '${manualCallTemplate.call_template_type}' of manual '${manualName}'.`);\n }\n\n const removed = await this.config.tool_repository.removeManual(manualName);\n if (removed) {\n console.log(`Successfully deregistered manual '${manualName}' from repository.`);\n } else {\n console.warn(`Manual '${manualName}' was not found in the repository during deregistration.`);\n }\n return removed;\n }\n\n /**\n * Calls a registered tool by its full namespaced name.\n * @param toolName The full name of the tool (e.g., 'my_manual.my_tool').\n * @param toolArgs A JSON object of arguments for the tool call.\n * @returns A promise that resolves to the result of the tool call, with post-processing applied.\n */\n public async callTool(toolName: string, toolArgs: Record<string, any>): Promise<any> {\n const manualName = toolName.split('.')[0];\n if (!manualName) {\n throw new Error(`Invalid tool name format for '${toolName}'. Expected 'manual_name.tool_name'.`);\n }\n\n const tool = await this.config.tool_repository.getTool(toolName);\n if (!tool) {\n throw new Error(`Tool '${toolName}' not found in the repository.`);\n }\n const manualCallTemplate = await this.config.tool_repository.getManualCallTemplate(manualName);\n if (!manualCallTemplate) {\n throw new Error(`Could not find manual call template for manual '${manualName}'.`);\n }\n\n // Validate protocol is allowed\n const toolProtocol = tool.tool_call_template.call_template_type;\n const allowedProtocols = (manualCallTemplate.allowed_communication_protocols?.length)\n ? manualCallTemplate.allowed_communication_protocols\n : [manualCallTemplate.call_template_type];\n \n if (!allowedProtocols.includes(toolProtocol)) {\n throw new Error(`Tool '${toolName}' uses communication protocol '${toolProtocol}' which is not allowed by manual '${manualName}'. Allowed protocols: [${allowedProtocols.map(p => `'${p}'`).join(', ')}]`);\n }\n\n const processedToolCallTemplate = await this.substituteCallTemplateVariables(tool.tool_call_template, manualName);\n\n const protocol = this._registeredCommProtocols.get(processedToolCallTemplate.call_template_type);\n if (!protocol) {\n throw new Error(`No communication protocol registered for type: '${processedToolCallTemplate.call_template_type}'.`);\n }\n\n console.log(`Calling tool '${toolName}' via protocol '${processedToolCallTemplate.call_template_type}'.`);\n let result = await protocol.callTool(this, toolName, toolArgs, processedToolCallTemplate);\n \n // Apply post-processors\n for (const processor of this.postProcessors) {\n result = processor.postProcess(this, tool, manualCallTemplate, result);\n }\n \n return result;\n }\n\n /**\n * Calls a registered tool and streams the results.\n * @param toolName The full name of the tool (e.g., 'my_manual.my_tool').\n * @param toolArgs A JSON object of arguments for the tool call.\n * @returns An async generator that yields chunks of the tool's response, with post-processing applied to each chunk.\n */\n public async *callToolStreaming(toolName: string, toolArgs: Record<string, any>): AsyncGenerator<any, void, unknown> {\n const manualName = toolName.split('.')[0];\n if (!manualName) {\n throw new Error(`Invalid tool name format for '${toolName}'. Expected 'manual_name.tool_name'.`);\n }\n\n const tool = await this.config.tool_repository.getTool(toolName);\n if (!tool) {\n throw new Error(`Tool '${toolName}' not found in the repository.`);\n }\n const manualCallTemplate = await this.config.tool_repository.getManualCallTemplate(manualName);\n if (!manualCallTemplate) {\n throw new Error(`Could not find manual call template for manual '${manualName}'.`);\n }\n\n // Validate protocol is allowed\n const toolProtocol = tool.tool_call_template.call_template_type;\n const allowedProtocols = (manualCallTemplate.allowed_communication_protocols?.length)\n ? manualCallTemplate.allowed_communication_protocols\n : [manualCallTemplate.call_template_type];\n \n if (!allowedProtocols.includes(toolProtocol)) {\n throw new Error(`Tool '${toolName}' uses communication protocol '${toolProtocol}' which is not allowed by manual '${manualName}'. Allowed protocols: [${allowedProtocols.map(p => `'${p}'`).join(', ')}]`);\n }\n\n const processedToolCallTemplate = await this.substituteCallTemplateVariables(tool.tool_call_template, manualName);\n\n const protocol = this._registeredCommProtocols.get(processedToolCallTemplate.call_template_type);\n if (!protocol) {\n throw new Error(`No communication protocol registered for type: '${processedToolCallTemplate.call_template_type}'.`);\n }\n\n console.log(`Calling tool '${toolName}' streamingly via protocol '${processedToolCallTemplate.call_template_type}'.`);\n for await (let chunk of protocol.callToolStreaming(this, toolName, toolArgs, processedToolCallTemplate)) {\n // Apply post-processors to each chunk\n for (const processor of this.postProcessors) {\n chunk = processor.postProcess(this, tool, manualCallTemplate, chunk);\n }\n yield chunk;\n }\n }\n\n /**\n * Searches for relevant tools based on a task description.\n * @param query A natural language description of the task.\n * @param limit The maximum number of tools to return.\n * @param anyOfTagsRequired An optional list of tags, where at least one must be present on a tool for it to be included.\n * @returns A promise that resolves to a list of relevant `Tool` objects.\n */\n public async searchTools(query: string, limit?: number, anyOfTagsRequired?: string[]): Promise<Tool[]> {\n console.log(`Searching for tools with query: '${query}'`);\n return this.config.tool_search_strategy.searchTools(this.config.tool_repository, query, limit, anyOfTagsRequired);\n }\n\n /**\n * Gets the required variables for a manual CallTemplate and its tools.\n *\n * @param manualCallTemplate The manual CallTemplate.\n * @returns A list of required variables for the manual CallTemplate and its tools.\n */\n public async getRequiredVariablesForManualAndTools(manualCallTemplate: CallTemplate): Promise<string[]> {\n const rawCallTemplate = manualCallTemplate as any;\n return this.variableSubstitutor.findRequiredVariables(rawCallTemplate, manualCallTemplate.name);\n }\n\n /**\n * Gets the required variables for a registered tool.\n *\n * @param toolName The name of a registered tool.\n * @returns A list of required variables for the tool.\n */\n public async getRequiredVariablesForRegisteredTool(toolName: string): Promise<string[]> {\n const manualName = toolName.split('.')[0];\n if (!manualName) {\n throw new Error(`Invalid tool name format for '${toolName}'. Expected 'manual_name.tool_name'.`);\n }\n\n const tool = await this.config.tool_repository.getTool(toolName);\n if (!tool) {\n throw new Error(`Tool '${toolName}' not found in the repository.`);\n }\n\n return this.variableSubstitutor.findRequiredVariables(tool.tool_call_template, manualName);\n }\n\n /**\n * Substitutes variables in a given call template.\n * @param callTemplate The call template to process.\n * @param namespace An optional namespace for variable lookup.\n * @returns A new call template instance with all variables substituted.\n */\n public async substituteCallTemplateVariables<T extends CallTemplate>(callTemplate: T, namespace?: string): Promise<T> {\n // Use the variable substitutor to handle the replacement logic\n const rawSubstituted = await this.variableSubstitutor.substitute(callTemplate, this.config, namespace);\n\n const result = CallTemplateSchema.safeParse(rawSubstituted);\n\n if (!result.success) {\n console.error(`Zod validation failed for call template '${callTemplate.name}' after variable substitution.`, result.error.issues);\n throw new Error(`Invalid call template after variable substitution: ${result.error.message}`);\n }\n\n return result.data as T;\n }\n\n /**\n * Closes the UTCP client and releases any resources held by its communication protocols.\n */\n public async close(): Promise<void> {\n const closePromises: Promise<void>[] = [];\n for (const protocol of this._registeredCommProtocols.values()) {\n if (typeof protocol.close === 'function') {\n closePromises.push(protocol.close());\n }\n }\n await Promise.all(closePromises);\n console.log('UTCP Client and all registered protocols closed.');\n }\n}"],"mappings":"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","names":["util","objectUtil","errorUtil","errorMap","r","ctx","result","issues","elements","processed","ZodFirstPartyTypeKind","z"]}
|