@tankpkg/mcp-server 0.16.5 → 0.16.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +2572 -957
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["REGISTRY_URL","supportLevelSchema","adapterCapabilitiesSchema","compilationWarningSchema","extensionBagSchema","modelTierSchema","canonicalToolNameSchema","agentIRSchema","hookEventSchema","hookActionIRSchema","hookHandlerIRSchema","hookIRSchema","instructionIRSchema","networkPermissionsSchema","filesystemPermissionsSchema","permissionsSchema","commandSchema","argSchema","envSchema","remoteUrlSchema","mcpServerSchema","baseManifestFields","publishConfigSchema","promptIRSchema","resourceIRSchema","ruleIRSchema","mcpServerConfigSchema","toolIRSchema","NAME_PATTERN","SEMVER_PATTERN","atomIRSchema","perToolOverrideSchema","SKILL_SOURCES","SCAN_VERDICTS","lockedSkillV1Schema","lockedSkillSchema","SEMVER_PATTERN","ALPHANUMERIC","SCOPED_NAME_PATTERN","parseLockKey","SCOPED_NAME_PATTERN","SCOPED_NAME_PATTERN","getSkillDir","crypto","SCOPED_NAME_PATTERN","getSkillDir","crypto","SCOPED_NAME_PATTERN","getSkillDir","SCOPED_NAME_PATTERN","getSkillDir","parseLockKey"],"sources":["../../internals-schemas/dist/index.js","../../sdk/dist/index.mjs","../src/lib/config.ts","../src/lib/api-client.ts","../src/tools/audit-skill.ts","../src/tools/doctor.ts","../src/tools/init-skill.ts","../../internals-helpers/dist/index.js","../src/tools/install-skill.ts","../src/tools/link-skill.ts","../src/tools/login.ts","../src/tools/logout.ts","../src/lib/packer.ts","../src/tools/publish-skill.ts","../src/tools/remove-skill.ts","../src/tools/scan-skill.ts","../src/tools/search-skills.ts","../src/tools/skill-info.ts","../src/tools/skill-permissions.ts","../src/tools/unlink-skill.ts","../src/tools/update-skill.ts","../src/tools/verify-skills.ts","../src/tools/whoami.ts","../src/index.ts"],"sourcesContent":["import { z } from \"zod\";\n//#region src/constants/permissions.ts\nconst PERMISSION_CATEGORIES = [\n\t\"network\",\n\t\"filesystem\",\n\t\"subprocess\"\n];\nconst DEFAULT_PERMISSIONS = {\n\tnetwork: void 0,\n\tfilesystem: void 0,\n\tsubprocess: false\n};\n//#endregion\n//#region src/constants/registry.ts\nconst REGISTRY_URL = process.env.TANK_REGISTRY_URL || \"https://www.tankpkg.dev\";\nconst REGISTRY_API_VERSION = \"v1\";\nconst MAX_PACKAGE_SIZE = 50 * 1024 * 1024;\nconst MAX_FILE_COUNT = 1e3;\nconst MAX_NAME_LENGTH = 214;\nconst MAX_DESCRIPTION_LENGTH = 500;\nconst LOCKFILE_VERSION = 2;\nconst MANIFEST_FILENAME = \"tank.json\";\nconst LEGACY_MANIFEST_FILENAME = \"skills.json\";\nconst LOCKFILE_FILENAME = \"tank.lock\";\nconst LEGACY_LOCKFILE_FILENAME = \"skills.lock\";\n//#endregion\n//#region src/schemas/adapters/capabilities.ts\nconst supportLevelSchema = z.enum([\n\t\"full\",\n\t\"degraded\",\n\t\"none\"\n]);\nconst adapterCapabilitiesSchema = z.object({\n\tinstruction: supportLevelSchema,\n\thook: supportLevelSchema,\n\ttool: supportLevelSchema,\n\tagent: supportLevelSchema,\n\trule: supportLevelSchema,\n\tresource: supportLevelSchema,\n\tprompt: supportLevelSchema\n}).strict();\n//#endregion\n//#region src/schemas/adapters/platform-adapter.ts\nconst compilationWarningSchema = z.object({\n\tlevel: z.enum([\"degraded\", \"skipped\"]),\n\tatomKind: z.string(),\n\tmessage: z.string()\n}).strict();\nconst fileWriteSchema = z.object({\n\tpath: z.string().min(1),\n\tcontent: z.string()\n}).strict();\nconst platformOutputSchema = z.object({\n\tfiles: z.array(fileWriteSchema),\n\twarnings: z.array(compilationWarningSchema)\n}).strict();\nconst platformAdapterMetaSchema = z.object({\n\tname: z.string().min(1, \"Adapter name must not be empty\"),\n\tsupportedRange: z.string().min(1, \"Supported range must not be empty\"),\n\tcapabilities: adapterCapabilitiesSchema\n}).strict();\n//#endregion\n//#region src/schemas/atoms/base.ts\nconst atomKindSchema = z.enum([\n\t\"instruction\",\n\t\"hook\",\n\t\"tool\",\n\t\"agent\",\n\t\"rule\",\n\t\"resource\",\n\t\"prompt\"\n]);\nconst extensionBagSchema = z.record(z.string(), z.unknown()).optional();\n//#endregion\n//#region src/schemas/atoms/model-tiers.ts\nconst modelTierSchema = z.enum([\n\t\"fast\",\n\t\"balanced\",\n\t\"powerful\",\n\t\"custom\"\n]);\nconst MODEL_TIERS = modelTierSchema.options;\n//#endregion\n//#region src/schemas/atoms/tool-names.ts\nconst canonicalToolNameSchema = z.enum([\n\t\"bash\",\n\t\"read\",\n\t\"write\",\n\t\"edit\",\n\t\"grep\",\n\t\"glob\",\n\t\"lsp\",\n\t\"mcp\",\n\t\"browser\",\n\t\"fetch\",\n\t\"git\",\n\t\"task\",\n\t\"notebook\"\n]);\nconst CANONICAL_TOOL_NAMES = canonicalToolNameSchema.options;\n//#endregion\n//#region src/schemas/atoms/agent.ts\nconst agentIRSchema = z.object({\n\tkind: z.literal(\"agent\"),\n\tname: z.string().min(1, \"Agent name must not be empty\"),\n\trole: z.string().min(1, \"Agent role must not be empty\"),\n\ttools: z.array(canonicalToolNameSchema.or(z.string().min(1))).optional(),\n\tmodel: modelTierSchema.or(z.string().min(1)).optional(),\n\treadonly: z.boolean().optional(),\n\textensions: extensionBagSchema\n}).strict();\n//#endregion\n//#region src/schemas/atoms/events.ts\nconst hookEventSchema = z.enum([\n\t\"pre-tool-use\",\n\t\"post-tool-use\",\n\t\"pre-file-read\",\n\t\"post-file-read\",\n\t\"pre-file-write\",\n\t\"post-file-write\",\n\t\"file-edited\",\n\t\"file-watcher-updated\",\n\t\"pre-command\",\n\t\"post-command\",\n\t\"pre-mcp-tool-use\",\n\t\"post-mcp-tool-use\",\n\t\"session-created\",\n\t\"session-updated\",\n\t\"session-idle\",\n\t\"session-error\",\n\t\"session-deleted\",\n\t\"pre-stop\",\n\t\"task-start\",\n\t\"task-resume\",\n\t\"task-complete\",\n\t\"task-cancel\",\n\t\"pre-user-prompt\",\n\t\"post-response\",\n\t\"message-updated\",\n\t\"message-removed\",\n\t\"system-prompt-transform\",\n\t\"pre-context-compact\",\n\t\"post-context-compact\",\n\t\"permission-asked\",\n\t\"permission-replied\",\n\t\"lsp-diagnostics\",\n\t\"lsp-updated\",\n\t\"subagent-start\",\n\t\"subagent-complete\",\n\t\"subagent-tool-use\",\n\t\"shell-env\",\n\t\"todo-updated\",\n\t\"installation-updated\"\n]);\nconst HOOK_EVENTS = hookEventSchema.options;\n//#endregion\n//#region src/schemas/atoms/hook.ts\nconst hookActionIRSchema = z.object({\n\taction: z.enum([\n\t\t\"block\",\n\t\t\"allow\",\n\t\t\"rewrite\",\n\t\t\"injectContext\"\n\t]),\n\tmatch: z.string().optional(),\n\treason: z.string().optional(),\n\tvalue: z.string().optional()\n}).strict();\nconst hookDslHandlerSchema = z.object({\n\ttype: z.literal(\"dsl\"),\n\tactions: z.array(hookActionIRSchema).min(1, \"DSL handler must have at least one action\")\n}).strict();\nconst hookJsHandlerSchema = z.object({\n\ttype: z.literal(\"js\"),\n\tentry: z.string().min(1, \"JS handler entry path must not be empty\")\n}).strict();\nconst hookHandlerIRSchema = z.discriminatedUnion(\"type\", [hookDslHandlerSchema, hookJsHandlerSchema]);\nconst hookIRSchema = z.object({\n\tkind: z.literal(\"hook\"),\n\tname: z.string().optional(),\n\tevent: hookEventSchema,\n\tmatch: canonicalToolNameSchema.or(z.string().min(1)).optional(),\n\thandler: hookHandlerIRSchema,\n\tscope: z.enum([\"project\", \"global\"]).optional(),\n\textensions: extensionBagSchema\n}).strict();\n//#endregion\n//#region src/schemas/atoms/instruction.ts\nconst instructionIRSchema = z.object({\n\tkind: z.literal(\"instruction\"),\n\tcontent: z.string().min(1, \"Content path must not be empty\"),\n\tscope: z.enum([\n\t\t\"project\",\n\t\t\"global\",\n\t\t\"directory\"\n\t]).optional(),\n\tglobs: z.array(z.string()).optional(),\n\textensions: extensionBagSchema\n}).strict();\n//#endregion\n//#region src/schemas/permissions.ts\nconst networkPermissionsSchema = z.object({ outbound: z.array(z.string()).optional() }).strict();\nconst filesystemPermissionsSchema = z.object({\n\tread: z.array(z.string()).optional(),\n\twrite: z.array(z.string()).optional()\n}).strict();\nconst permissionsSchema = z.object({\n\tnetwork: networkPermissionsSchema.optional(),\n\tfilesystem: filesystemPermissionsSchema.optional(),\n\tsubprocess: z.boolean().optional()\n}).strict();\nconst userRoleSchema = z.enum([\"user\", \"admin\"]);\nconst userStatusSchema = z.enum([\n\t\"active\",\n\t\"suspended\",\n\t\"banned\"\n]);\nconst skillStatusSchema = z.enum([\n\t\"active\",\n\t\"deprecated\",\n\t\"quarantined\",\n\t\"removed\"\n]);\nconst adminActionSchema = z.enum([\n\t\"user.ban\",\n\t\"user.suspend\",\n\t\"user.unban\",\n\t\"user.promote\",\n\t\"user.demote\",\n\t\"skill.quarantine\",\n\t\"skill.remove\",\n\t\"skill.deprecate\",\n\t\"skill.restore\",\n\t\"skill.feature\",\n\t\"skill.unfeature\",\n\t\"org.suspend\",\n\t\"org.member.remove\",\n\t\"org.delete\"\n]);\nfunction isAdmin(role) {\n\treturn role === \"admin\";\n}\n//#endregion\n//#region src/schemas/mcp-server.ts\nconst commandSchema = z.string().min(1, \"command must not be empty\");\nconst argSchema = z.array(z.string()).default([]);\nconst envSchema = z.record(z.string(), z.string()).optional();\nconst remoteUrlSchema = z.string().url(\"remote must be a valid URL\");\nconst localMcpServerSchema = z.object({\n\tcommand: commandSchema,\n\targs: argSchema,\n\tenv: envSchema,\n\trequires_auth: z.literal(false).optional()\n}).strict();\nconst remoteMcpServerSchema = z.object({\n\tremote: remoteUrlSchema,\n\trequires_auth: z.boolean().default(false),\n\tenv: envSchema\n}).strict();\nconst mcpServerSchema = z.union([localMcpServerSchema, remoteMcpServerSchema]);\nfunction isRemoteMcpServer(server) {\n\treturn \"remote\" in server;\n}\n//#endregion\n//#region src/schemas/skills-json.ts\nconst baseManifestFields = {\n\tname: z.string().min(1, \"Name must not be empty\").max(214, `Name must be 214 characters or fewer`).regex(/^@[a-z0-9-]+\\/[a-z0-9][a-z0-9-]*$/, \"Name must be scoped (@org/name), lowercase alphanumeric and hyphens\"),\n\tversion: z.string().regex(/^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9.-]+)?(\\+[a-zA-Z0-9.-]+)?$/, \"Version must be valid semver\"),\n\tdescription: z.string().max(500, `Description must be 500 characters or fewer`).optional(),\n\tskills: z.record(z.string(), z.string()).optional(),\n\tpermissions: permissionsSchema.optional(),\n\trepository: z.string().url(\"Repository must be a valid URL\").optional(),\n\tvisibility: z.enum([\"public\", \"private\"]).optional(),\n\taudit: z.object({ min_score: z.number().min(0).max(10) }).strict().optional(),\n\tmcp_server: mcpServerSchema.optional()\n};\n/** Legacy skills.json schema — strict, no atoms. Used for backward-compatible consumers. */\nconst skillsJsonSchema = z.object(baseManifestFields).strict();\nconst publishConfigSchema = z.object({\n\tbuild: z.string().min(1, \"publish.build must be a non-empty shell command\").optional(),\n\tfiles: z.array(z.string().min(1)).optional()\n}).strict();\n/**\n* Publish manifest schema — accepts both legacy skills.json AND atom-enriched tank.json.\n* The `atoms` and `includes` fields are passed through as opaque JSON arrays,\n* validated only at surface level. Full atom IR validation happens at build time.\n* The `publish` block is a CLI-only lifecycle config (build hook + files allow-list).\n*/\nconst publishManifestSchema = z.object({\n\t...baseManifestFields,\n\tatoms: z.array(z.record(z.string(), z.unknown())).optional(),\n\tincludes: z.array(z.string()).optional(),\n\tpublish: publishConfigSchema.optional()\n}).strict();\n//#endregion\n//#region src/schemas/atoms/prompt.ts\nconst promptIRSchema = z.object({\n\tkind: z.literal(\"prompt\"),\n\tname: z.string().min(1, \"Prompt name must not be empty\"),\n\tdescription: z.string().optional(),\n\ttemplate: z.string().min(1, \"Prompt template path must not be empty\"),\n\targuments: z.array(z.object({\n\t\tname: z.string(),\n\t\tdescription: z.string().optional(),\n\t\trequired: z.boolean().optional()\n\t}).strict()).optional(),\n\textensions: extensionBagSchema\n}).strict();\n//#endregion\n//#region src/schemas/atoms/resource.ts\nconst resourceIRSchema = z.object({\n\tkind: z.literal(\"resource\"),\n\tname: z.string().optional(),\n\turi: z.string().min(1, \"Resource URI must not be empty\"),\n\tdescription: z.string().optional(),\n\tmimeType: z.string().optional(),\n\textensions: extensionBagSchema\n}).strict();\n//#endregion\n//#region src/schemas/atoms/rule.ts\nconst ruleIRSchema = z.object({\n\tkind: z.literal(\"rule\"),\n\tname: z.string().optional(),\n\tevent: hookEventSchema,\n\tmatch: canonicalToolNameSchema.or(z.string().min(1)).optional(),\n\tpolicy: z.enum([\n\t\t\"block\",\n\t\t\"allow\",\n\t\t\"warn\"\n\t]),\n\treason: z.string().optional(),\n\textensions: extensionBagSchema\n}).strict();\n//#endregion\n//#region src/schemas/atoms/tool.ts\nconst mcpServerConfigSchema = z.object({\n\tcommand: z.string().min(1).optional(),\n\targs: z.array(z.string()).optional(),\n\tenv: z.record(z.string(), z.string()).optional(),\n\truntime: z.string().min(1).optional(),\n\tentry: z.string().min(1).optional(),\n\tpackage: z.string().min(1).optional()\n}).strict().refine((data) => Boolean(data.command) || Boolean(data.runtime && (data.entry || data.package)), \"MCP config must have either \\\"command\\\" or \\\"runtime\\\" plus one of \\\"entry\\\"/\\\"package\\\"\");\nconst toolIRSchema = z.object({\n\tkind: z.literal(\"tool\"),\n\tname: z.string().min(1, \"Tool name must not be empty\"),\n\tdescription: z.string().optional(),\n\tmcp: mcpServerConfigSchema.optional(),\n\textensions: extensionBagSchema\n}).strict();\n//#endregion\n//#region src/schemas/atoms/package.ts\nconst NAME_PATTERN = /^@[a-z0-9-]+\\/[a-z0-9][a-z0-9-]*$/;\nconst SEMVER_PATTERN = /^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9.-]+)?(\\+[a-zA-Z0-9.-]+)?$/;\nconst atomIRSchema = z.discriminatedUnion(\"kind\", [\n\tinstructionIRSchema,\n\thookIRSchema,\n\ttoolIRSchema,\n\tagentIRSchema,\n\truleIRSchema,\n\tresourceIRSchema,\n\tpromptIRSchema\n]);\nconst packageIRSchema = z.object({\n\tname: z.string().min(1, \"Name must not be empty\").max(214, `Name must be 214 characters or fewer`).regex(NAME_PATTERN, \"Name must be scoped (@org/name), lowercase alphanumeric and hyphens\"),\n\tversion: z.string().regex(SEMVER_PATTERN, \"Version must be valid semver\"),\n\tdescription: z.string().max(500).optional(),\n\tatoms: z.array(atomIRSchema),\n\tincludes: z.array(z.string()).optional(),\n\tskills: z.record(z.string(), z.string()).optional(),\n\tpermissions: permissionsSchema.optional(),\n\trepository: z.string().url(\"Repository must be a valid URL\").optional(),\n\tvisibility: z.enum([\"public\", \"private\"]).optional(),\n\taudit: z.object({ min_score: z.number().min(0).max(10) }).strict().optional(),\n\tpublish: publishConfigSchema.optional()\n}).strict();\n//#endregion\n//#region src/schemas/proxy-policy.ts\nconst perToolOverrideSchema = z.object({\n\tscan: z.boolean().optional(),\n\tblockOnMatch: z.boolean().optional()\n}).strict();\nconst proxyPolicySchema = z.object({\n\tperfBudgetMs: z.number().positive().optional(),\n\tblockOnMatch: z.boolean().optional(),\n\tresetPinsOnMismatch: z.boolean().optional(),\n\tperTool: z.record(z.string(), perToolOverrideSchema).optional()\n}).strict();\n//#endregion\n//#region src/schemas/skills-lock.ts\nconst SKILL_SOURCES = [\n\t\"registry\",\n\t\"github\",\n\t\"clawhub\",\n\t\"skills_sh\",\n\t\"agentskills_il\",\n\t\"npm\",\n\t\"local\"\n];\nconst SCAN_VERDICTS = [\n\t\"pass\",\n\t\"pass_with_notes\",\n\t\"flagged\",\n\t\"fail\",\n\t\"error\"\n];\nconst lockedSkillV1Schema = z.object({\n\tresolved: z.string().url(),\n\tintegrity: z.string().regex(/^sha512-/, \"Integrity must start with sha512-\"),\n\tpermissions: permissionsSchema,\n\taudit_score: z.number().min(0).max(10).nullable()\n});\nconst skillsLockV1Schema = z.object({\n\tlockfileVersion: z.literal(1),\n\tskills: z.record(z.string(), lockedSkillV1Schema)\n});\nconst lockedSkillSchema = z.object({\n\tresolved: z.string().url(),\n\tintegrity: z.string().regex(/^sha512-/, \"Integrity must start with sha512-\"),\n\tpermissions: permissionsSchema,\n\taudit_score: z.number().min(0).max(10).nullable(),\n\tdependencies: z.record(z.string(), z.string()).optional(),\n\tsource: z.enum(SKILL_SOURCES).optional(),\n\tscan_verdict: z.enum(SCAN_VERDICTS).optional(),\n\tscanned_at: z.string().optional()\n});\nconst skillsLockSchema = z.object({\n\tlockfileVersion: z.union([z.literal(1), z.literal(2)]),\n\tskills: z.record(z.string(), lockedSkillSchema)\n});\n//#endregion\nexport { CANONICAL_TOOL_NAMES, DEFAULT_PERMISSIONS, HOOK_EVENTS, LEGACY_LOCKFILE_FILENAME, LEGACY_MANIFEST_FILENAME, LOCKFILE_FILENAME, LOCKFILE_VERSION, MANIFEST_FILENAME, MAX_DESCRIPTION_LENGTH, MAX_FILE_COUNT, MAX_NAME_LENGTH, MAX_PACKAGE_SIZE, MODEL_TIERS, PERMISSION_CATEGORIES, REGISTRY_API_VERSION, REGISTRY_URL, SCAN_VERDICTS, SKILL_SOURCES, adapterCapabilitiesSchema, adminActionSchema, agentIRSchema, atomIRSchema, atomKindSchema, canonicalToolNameSchema, compilationWarningSchema, extensionBagSchema, fileWriteSchema, filesystemPermissionsSchema, hookActionIRSchema, hookDslHandlerSchema, hookEventSchema, hookHandlerIRSchema, hookIRSchema, hookJsHandlerSchema, instructionIRSchema, isAdmin, isRemoteMcpServer, lockedSkillSchema, lockedSkillV1Schema, mcpServerConfigSchema, mcpServerSchema, modelTierSchema, networkPermissionsSchema, packageIRSchema, perToolOverrideSchema, permissionsSchema, platformAdapterMetaSchema, platformOutputSchema, promptIRSchema, proxyPolicySchema, publishManifestSchema, resourceIRSchema, ruleIRSchema, skillStatusSchema, skillsJsonSchema, skillsLockSchema, skillsLockV1Schema, supportLevelSchema, toolIRSchema, userRoleSchema, userStatusSchema };\n\n//# sourceMappingURL=index.js.map","import { createRequire } from \"node:module\";\nimport fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport crypto$1 from \"node:crypto\";\nimport { extract } from \"tar\";\n//#region \\0rolldown/runtime.js\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __commonJSMin = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);\nvar __copyProps = (to, from, except, desc) => {\n\tif (from && typeof from === \"object\" || typeof from === \"function\") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {\n\t\tkey = keys[i];\n\t\tif (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {\n\t\t\tget: ((k) => from[k]).bind(null, key),\n\t\t\tenumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable\n\t\t});\n\t}\n\treturn to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", {\n\tvalue: mod,\n\tenumerable: true\n}) : target, mod));\nObject.freeze({ status: \"aborted\" });\nfunction $constructor(name, initializer, params) {\n\tfunction init(inst, def) {\n\t\tif (!inst._zod) Object.defineProperty(inst, \"_zod\", {\n\t\t\tvalue: {\n\t\t\t\tdef,\n\t\t\t\tconstr: _,\n\t\t\t\ttraits: /* @__PURE__ */ new Set()\n\t\t\t},\n\t\t\tenumerable: false\n\t\t});\n\t\tif (inst._zod.traits.has(name)) return;\n\t\tinst._zod.traits.add(name);\n\t\tinitializer(inst, def);\n\t\tconst proto = _.prototype;\n\t\tconst keys = Object.keys(proto);\n\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\tconst k = keys[i];\n\t\t\tif (!(k in inst)) inst[k] = proto[k].bind(inst);\n\t\t}\n\t}\n\tconst Parent = params?.Parent ?? Object;\n\tclass Definition extends Parent {}\n\tObject.defineProperty(Definition, \"name\", { value: name });\n\tfunction _(def) {\n\t\tvar _a;\n\t\tconst inst = params?.Parent ? new Definition() : this;\n\t\tinit(inst, def);\n\t\t(_a = inst._zod).deferred ?? (_a.deferred = []);\n\t\tfor (const fn of inst._zod.deferred) fn();\n\t\treturn inst;\n\t}\n\tObject.defineProperty(_, \"init\", { value: init });\n\tObject.defineProperty(_, Symbol.hasInstance, { value: (inst) => {\n\t\tif (params?.Parent && inst instanceof params.Parent) return true;\n\t\treturn inst?._zod?.traits?.has(name);\n\t} });\n\tObject.defineProperty(_, \"name\", { value: name });\n\treturn _;\n}\nvar $ZodAsyncError = class extends Error {\n\tconstructor() {\n\t\tsuper(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`);\n\t}\n};\nvar $ZodEncodeError = class extends Error {\n\tconstructor(name) {\n\t\tsuper(`Encountered unidirectional transform during encode: ${name}`);\n\t\tthis.name = \"ZodEncodeError\";\n\t}\n};\nconst globalConfig = {};\nfunction config(newConfig) {\n\tif (newConfig) Object.assign(globalConfig, newConfig);\n\treturn globalConfig;\n}\n//#endregion\n//#region ../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/util.js\nfunction getEnumValues(entries) {\n\tconst numericValues = Object.values(entries).filter((v) => typeof v === \"number\");\n\treturn Object.entries(entries).filter(([k, _]) => numericValues.indexOf(+k) === -1).map(([_, v]) => v);\n}\nfunction jsonStringifyReplacer(_, value) {\n\tif (typeof value === \"bigint\") return value.toString();\n\treturn value;\n}\nfunction cached(getter) {\n\treturn { get value() {\n\t\t{\n\t\t\tconst value = getter();\n\t\t\tObject.defineProperty(this, \"value\", { value });\n\t\t\treturn value;\n\t\t}\n\t\tthrow new Error(\"cached value already set\");\n\t} };\n}\nfunction nullish(input) {\n\treturn input === null || input === void 0;\n}\nfunction cleanRegex(source) {\n\tconst start = source.startsWith(\"^\") ? 1 : 0;\n\tconst end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n\treturn source.slice(start, end);\n}\nfunction floatSafeRemainder(val, step) {\n\tconst valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n\tconst stepString = step.toString();\n\tlet stepDecCount = (stepString.split(\".\")[1] || \"\").length;\n\tif (stepDecCount === 0 && /\\d?e-\\d?/.test(stepString)) {\n\t\tconst match = stepString.match(/\\d?e-(\\d?)/);\n\t\tif (match?.[1]) stepDecCount = Number.parseInt(match[1]);\n\t}\n\tconst decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n\treturn Number.parseInt(val.toFixed(decCount).replace(\".\", \"\")) % Number.parseInt(step.toFixed(decCount).replace(\".\", \"\")) / 10 ** decCount;\n}\nconst EVALUATING = Symbol(\"evaluating\");\nfunction defineLazy(object, key, getter) {\n\tlet value = void 0;\n\tObject.defineProperty(object, key, {\n\t\tget() {\n\t\t\tif (value === EVALUATING) return;\n\t\t\tif (value === void 0) {\n\t\t\t\tvalue = EVALUATING;\n\t\t\t\tvalue = getter();\n\t\t\t}\n\t\t\treturn value;\n\t\t},\n\t\tset(v) {\n\t\t\tObject.defineProperty(object, key, { value: v });\n\t\t},\n\t\tconfigurable: true\n\t});\n}\nfunction assignProp(target, prop, value) {\n\tObject.defineProperty(target, prop, {\n\t\tvalue,\n\t\twritable: true,\n\t\tenumerable: true,\n\t\tconfigurable: true\n\t});\n}\nfunction mergeDefs(...defs) {\n\tconst mergedDescriptors = {};\n\tfor (const def of defs) Object.assign(mergedDescriptors, Object.getOwnPropertyDescriptors(def));\n\treturn Object.defineProperties({}, mergedDescriptors);\n}\nfunction esc(str) {\n\treturn JSON.stringify(str);\n}\nfunction slugify(input) {\n\treturn input.toLowerCase().trim().replace(/[^\\w\\s-]/g, \"\").replace(/[\\s_-]+/g, \"-\").replace(/^-+|-+$/g, \"\");\n}\nconst captureStackTrace = \"captureStackTrace\" in Error ? Error.captureStackTrace : (..._args) => {};\nfunction isObject(data) {\n\treturn typeof data === \"object\" && data !== null && !Array.isArray(data);\n}\nconst allowsEval = cached(() => {\n\tif (typeof navigator !== \"undefined\" && navigator?.userAgent?.includes(\"Cloudflare\")) return false;\n\ttry {\n\t\tnew Function(\"\");\n\t\treturn true;\n\t} catch (_) {\n\t\treturn false;\n\t}\n});\nfunction isPlainObject(o) {\n\tif (isObject(o) === false) return false;\n\tconst ctor = o.constructor;\n\tif (ctor === void 0) return true;\n\tif (typeof ctor !== \"function\") return true;\n\tconst prot = ctor.prototype;\n\tif (isObject(prot) === false) return false;\n\tif (Object.prototype.hasOwnProperty.call(prot, \"isPrototypeOf\") === false) return false;\n\treturn true;\n}\nfunction shallowClone(o) {\n\tif (isPlainObject(o)) return { ...o };\n\tif (Array.isArray(o)) return [...o];\n\treturn o;\n}\nconst propertyKeyTypes = new Set([\n\t\"string\",\n\t\"number\",\n\t\"symbol\"\n]);\nfunction escapeRegex(str) {\n\treturn str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\nfunction clone(inst, def, params) {\n\tconst cl = new inst._zod.constr(def ?? inst._zod.def);\n\tif (!def || params?.parent) cl._zod.parent = inst;\n\treturn cl;\n}\nfunction normalizeParams(_params) {\n\tconst params = _params;\n\tif (!params) return {};\n\tif (typeof params === \"string\") return { error: () => params };\n\tif (params?.message !== void 0) {\n\t\tif (params?.error !== void 0) throw new Error(\"Cannot specify both `message` and `error` params\");\n\t\tparams.error = params.message;\n\t}\n\tdelete params.message;\n\tif (typeof params.error === \"string\") return {\n\t\t...params,\n\t\terror: () => params.error\n\t};\n\treturn params;\n}\nfunction optionalKeys(shape) {\n\treturn Object.keys(shape).filter((k) => {\n\t\treturn shape[k]._zod.optin === \"optional\" && shape[k]._zod.optout === \"optional\";\n\t});\n}\nconst NUMBER_FORMAT_RANGES = {\n\tsafeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER],\n\tint32: [-2147483648, 2147483647],\n\tuint32: [0, 4294967295],\n\tfloat32: [-34028234663852886e22, 34028234663852886e22],\n\tfloat64: [-Number.MAX_VALUE, Number.MAX_VALUE]\n};\nfunction pick(schema, mask) {\n\tconst currDef = schema._zod.def;\n\tconst checks = currDef.checks;\n\tif (checks && checks.length > 0) throw new Error(\".pick() cannot be used on object schemas containing refinements\");\n\treturn clone(schema, mergeDefs(schema._zod.def, {\n\t\tget shape() {\n\t\t\tconst newShape = {};\n\t\t\tfor (const key in mask) {\n\t\t\t\tif (!(key in currDef.shape)) throw new Error(`Unrecognized key: \"${key}\"`);\n\t\t\t\tif (!mask[key]) continue;\n\t\t\t\tnewShape[key] = currDef.shape[key];\n\t\t\t}\n\t\t\tassignProp(this, \"shape\", newShape);\n\t\t\treturn newShape;\n\t\t},\n\t\tchecks: []\n\t}));\n}\nfunction omit(schema, mask) {\n\tconst currDef = schema._zod.def;\n\tconst checks = currDef.checks;\n\tif (checks && checks.length > 0) throw new Error(\".omit() cannot be used on object schemas containing refinements\");\n\treturn clone(schema, mergeDefs(schema._zod.def, {\n\t\tget shape() {\n\t\t\tconst newShape = { ...schema._zod.def.shape };\n\t\t\tfor (const key in mask) {\n\t\t\t\tif (!(key in currDef.shape)) throw new Error(`Unrecognized key: \"${key}\"`);\n\t\t\t\tif (!mask[key]) continue;\n\t\t\t\tdelete newShape[key];\n\t\t\t}\n\t\t\tassignProp(this, \"shape\", newShape);\n\t\t\treturn newShape;\n\t\t},\n\t\tchecks: []\n\t}));\n}\nfunction extend(schema, shape) {\n\tif (!isPlainObject(shape)) throw new Error(\"Invalid input to extend: expected a plain object\");\n\tconst checks = schema._zod.def.checks;\n\tif (checks && checks.length > 0) {\n\t\tconst existingShape = schema._zod.def.shape;\n\t\tfor (const key in shape) if (Object.getOwnPropertyDescriptor(existingShape, key) !== void 0) throw new Error(\"Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.\");\n\t}\n\treturn clone(schema, mergeDefs(schema._zod.def, { get shape() {\n\t\tconst _shape = {\n\t\t\t...schema._zod.def.shape,\n\t\t\t...shape\n\t\t};\n\t\tassignProp(this, \"shape\", _shape);\n\t\treturn _shape;\n\t} }));\n}\nfunction safeExtend(schema, shape) {\n\tif (!isPlainObject(shape)) throw new Error(\"Invalid input to safeExtend: expected a plain object\");\n\treturn clone(schema, mergeDefs(schema._zod.def, { get shape() {\n\t\tconst _shape = {\n\t\t\t...schema._zod.def.shape,\n\t\t\t...shape\n\t\t};\n\t\tassignProp(this, \"shape\", _shape);\n\t\treturn _shape;\n\t} }));\n}\nfunction merge(a, b) {\n\treturn clone(a, mergeDefs(a._zod.def, {\n\t\tget shape() {\n\t\t\tconst _shape = {\n\t\t\t\t...a._zod.def.shape,\n\t\t\t\t...b._zod.def.shape\n\t\t\t};\n\t\t\tassignProp(this, \"shape\", _shape);\n\t\t\treturn _shape;\n\t\t},\n\t\tget catchall() {\n\t\t\treturn b._zod.def.catchall;\n\t\t},\n\t\tchecks: []\n\t}));\n}\nfunction partial(Class, schema, mask) {\n\tconst checks = schema._zod.def.checks;\n\tif (checks && checks.length > 0) throw new Error(\".partial() cannot be used on object schemas containing refinements\");\n\treturn clone(schema, mergeDefs(schema._zod.def, {\n\t\tget shape() {\n\t\t\tconst oldShape = schema._zod.def.shape;\n\t\t\tconst shape = { ...oldShape };\n\t\t\tif (mask) for (const key in mask) {\n\t\t\t\tif (!(key in oldShape)) throw new Error(`Unrecognized key: \"${key}\"`);\n\t\t\t\tif (!mask[key]) continue;\n\t\t\t\tshape[key] = Class ? new Class({\n\t\t\t\t\ttype: \"optional\",\n\t\t\t\t\tinnerType: oldShape[key]\n\t\t\t\t}) : oldShape[key];\n\t\t\t}\n\t\t\telse for (const key in oldShape) shape[key] = Class ? new Class({\n\t\t\t\ttype: \"optional\",\n\t\t\t\tinnerType: oldShape[key]\n\t\t\t}) : oldShape[key];\n\t\t\tassignProp(this, \"shape\", shape);\n\t\t\treturn shape;\n\t\t},\n\t\tchecks: []\n\t}));\n}\nfunction required(Class, schema, mask) {\n\treturn clone(schema, mergeDefs(schema._zod.def, { get shape() {\n\t\tconst oldShape = schema._zod.def.shape;\n\t\tconst shape = { ...oldShape };\n\t\tif (mask) for (const key in mask) {\n\t\t\tif (!(key in shape)) throw new Error(`Unrecognized key: \"${key}\"`);\n\t\t\tif (!mask[key]) continue;\n\t\t\tshape[key] = new Class({\n\t\t\t\ttype: \"nonoptional\",\n\t\t\t\tinnerType: oldShape[key]\n\t\t\t});\n\t\t}\n\t\telse for (const key in oldShape) shape[key] = new Class({\n\t\t\ttype: \"nonoptional\",\n\t\t\tinnerType: oldShape[key]\n\t\t});\n\t\tassignProp(this, \"shape\", shape);\n\t\treturn shape;\n\t} }));\n}\nfunction aborted(x, startIndex = 0) {\n\tif (x.aborted === true) return true;\n\tfor (let i = startIndex; i < x.issues.length; i++) if (x.issues[i]?.continue !== true) return true;\n\treturn false;\n}\nfunction prefixIssues(path, issues) {\n\treturn issues.map((iss) => {\n\t\tvar _a;\n\t\t(_a = iss).path ?? (_a.path = []);\n\t\tiss.path.unshift(path);\n\t\treturn iss;\n\t});\n}\nfunction unwrapMessage(message) {\n\treturn typeof message === \"string\" ? message : message?.message;\n}\nfunction finalizeIssue(iss, ctx, config) {\n\tconst full = {\n\t\t...iss,\n\t\tpath: iss.path ?? []\n\t};\n\tif (!iss.message) full.message = unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ?? unwrapMessage(ctx?.error?.(iss)) ?? unwrapMessage(config.customError?.(iss)) ?? unwrapMessage(config.localeError?.(iss)) ?? \"Invalid input\";\n\tdelete full.inst;\n\tdelete full.continue;\n\tif (!ctx?.reportInput) delete full.input;\n\treturn full;\n}\nfunction getLengthableOrigin(input) {\n\tif (Array.isArray(input)) return \"array\";\n\tif (typeof input === \"string\") return \"string\";\n\treturn \"unknown\";\n}\nfunction issue(...args) {\n\tconst [iss, input, inst] = args;\n\tif (typeof iss === \"string\") return {\n\t\tmessage: iss,\n\t\tcode: \"custom\",\n\t\tinput,\n\t\tinst\n\t};\n\treturn { ...iss };\n}\n//#endregion\n//#region ../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/errors.js\nconst initializer$1 = (inst, def) => {\n\tinst.name = \"$ZodError\";\n\tObject.defineProperty(inst, \"_zod\", {\n\t\tvalue: inst._zod,\n\t\tenumerable: false\n\t});\n\tObject.defineProperty(inst, \"issues\", {\n\t\tvalue: def,\n\t\tenumerable: false\n\t});\n\tinst.message = JSON.stringify(def, jsonStringifyReplacer, 2);\n\tObject.defineProperty(inst, \"toString\", {\n\t\tvalue: () => inst.message,\n\t\tenumerable: false\n\t});\n};\nconst $ZodError = $constructor(\"$ZodError\", initializer$1);\nconst $ZodRealError = $constructor(\"$ZodError\", initializer$1, { Parent: Error });\nfunction flattenError(error, mapper = (issue) => issue.message) {\n\tconst fieldErrors = {};\n\tconst formErrors = [];\n\tfor (const sub of error.issues) if (sub.path.length > 0) {\n\t\tfieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n\t\tfieldErrors[sub.path[0]].push(mapper(sub));\n\t} else formErrors.push(mapper(sub));\n\treturn {\n\t\tformErrors,\n\t\tfieldErrors\n\t};\n}\nfunction formatError(error, mapper = (issue) => issue.message) {\n\tconst fieldErrors = { _errors: [] };\n\tconst processError = (error) => {\n\t\tfor (const issue of error.issues) if (issue.code === \"invalid_union\" && issue.errors.length) issue.errors.map((issues) => processError({ issues }));\n\t\telse if (issue.code === \"invalid_key\") processError({ issues: issue.issues });\n\t\telse if (issue.code === \"invalid_element\") processError({ issues: issue.issues });\n\t\telse if (issue.path.length === 0) fieldErrors._errors.push(mapper(issue));\n\t\telse {\n\t\t\tlet curr = fieldErrors;\n\t\t\tlet i = 0;\n\t\t\twhile (i < issue.path.length) {\n\t\t\t\tconst el = issue.path[i];\n\t\t\t\tif (!(i === issue.path.length - 1)) curr[el] = curr[el] || { _errors: [] };\n\t\t\t\telse {\n\t\t\t\t\tcurr[el] = curr[el] || { _errors: [] };\n\t\t\t\t\tcurr[el]._errors.push(mapper(issue));\n\t\t\t\t}\n\t\t\t\tcurr = curr[el];\n\t\t\t\ti++;\n\t\t\t}\n\t\t}\n\t};\n\tprocessError(error);\n\treturn fieldErrors;\n}\n//#endregion\n//#region ../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/parse.js\nconst _parse = (_Err) => (schema, value, _ctx, _params) => {\n\tconst ctx = _ctx ? Object.assign(_ctx, { async: false }) : { async: false };\n\tconst result = schema._zod.run({\n\t\tvalue,\n\t\tissues: []\n\t}, ctx);\n\tif (result instanceof Promise) throw new $ZodAsyncError();\n\tif (result.issues.length) {\n\t\tconst e = new (_params?.Err ?? _Err)(result.issues.map((iss) => finalizeIssue(iss, ctx, config())));\n\t\tcaptureStackTrace(e, _params?.callee);\n\t\tthrow e;\n\t}\n\treturn result.value;\n};\nconst _parseAsync = (_Err) => async (schema, value, _ctx, params) => {\n\tconst ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };\n\tlet result = schema._zod.run({\n\t\tvalue,\n\t\tissues: []\n\t}, ctx);\n\tif (result instanceof Promise) result = await result;\n\tif (result.issues.length) {\n\t\tconst e = new (params?.Err ?? _Err)(result.issues.map((iss) => finalizeIssue(iss, ctx, config())));\n\t\tcaptureStackTrace(e, params?.callee);\n\t\tthrow e;\n\t}\n\treturn result.value;\n};\nconst _safeParse = (_Err) => (schema, value, _ctx) => {\n\tconst ctx = _ctx ? {\n\t\t..._ctx,\n\t\tasync: false\n\t} : { async: false };\n\tconst result = schema._zod.run({\n\t\tvalue,\n\t\tissues: []\n\t}, ctx);\n\tif (result instanceof Promise) throw new $ZodAsyncError();\n\treturn result.issues.length ? {\n\t\tsuccess: false,\n\t\terror: new (_Err ?? $ZodError)(result.issues.map((iss) => finalizeIssue(iss, ctx, config())))\n\t} : {\n\t\tsuccess: true,\n\t\tdata: result.value\n\t};\n};\nconst safeParse$1 = /* @__PURE__ */ _safeParse($ZodRealError);\nconst _safeParseAsync = (_Err) => async (schema, value, _ctx) => {\n\tconst ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };\n\tlet result = schema._zod.run({\n\t\tvalue,\n\t\tissues: []\n\t}, ctx);\n\tif (result instanceof Promise) result = await result;\n\treturn result.issues.length ? {\n\t\tsuccess: false,\n\t\terror: new _Err(result.issues.map((iss) => finalizeIssue(iss, ctx, config())))\n\t} : {\n\t\tsuccess: true,\n\t\tdata: result.value\n\t};\n};\nconst safeParseAsync$1 = /* @__PURE__ */ _safeParseAsync($ZodRealError);\nconst _encode = (_Err) => (schema, value, _ctx) => {\n\tconst ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n\treturn _parse(_Err)(schema, value, ctx);\n};\nconst _decode = (_Err) => (schema, value, _ctx) => {\n\treturn _parse(_Err)(schema, value, _ctx);\n};\nconst _encodeAsync = (_Err) => async (schema, value, _ctx) => {\n\tconst ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n\treturn _parseAsync(_Err)(schema, value, ctx);\n};\nconst _decodeAsync = (_Err) => async (schema, value, _ctx) => {\n\treturn _parseAsync(_Err)(schema, value, _ctx);\n};\nconst _safeEncode = (_Err) => (schema, value, _ctx) => {\n\tconst ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n\treturn _safeParse(_Err)(schema, value, ctx);\n};\nconst _safeDecode = (_Err) => (schema, value, _ctx) => {\n\treturn _safeParse(_Err)(schema, value, _ctx);\n};\nconst _safeEncodeAsync = (_Err) => async (schema, value, _ctx) => {\n\tconst ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n\treturn _safeParseAsync(_Err)(schema, value, ctx);\n};\nconst _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {\n\treturn _safeParseAsync(_Err)(schema, value, _ctx);\n};\n//#endregion\n//#region ../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/regexes.js\nconst cuid = /^[cC][^\\s-]{8,}$/;\nconst cuid2 = /^[0-9a-z]+$/;\nconst ulid = /^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/;\nconst xid = /^[0-9a-vA-V]{20}$/;\nconst ksuid = /^[A-Za-z0-9]{27}$/;\nconst nanoid = /^[a-zA-Z0-9_-]{21}$/;\n/** ISO 8601-1 duration regex. Does not support the 8601-2 extensions like negative durations or fractional/negative components. */\nconst duration$1 = /^P(?:(\\d+W)|(?!.*W)(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+([.,]\\d+)?S)?)?)$/;\n/** A regex for any UUID-like identifier: 8-4-4-4-12 hex pattern */\nconst guid = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/;\n/** Returns a regex for validating an RFC 9562/4122 UUID.\n*\n* @param version Optionally specify a version 1-8. If no version is specified, all versions are supported. */\nconst uuid = (version) => {\n\tif (!version) return /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;\n\treturn new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`);\n};\n/** Practical email validation */\nconst email = /^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$/;\nconst _emoji$1 = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nfunction emoji() {\n\treturn new RegExp(_emoji$1, \"u\");\n}\nconst ipv4 = /^(?:(?: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 ipv6 = /^(([0-9a-fA-F]{1,4}:){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}|:))$/;\nconst cidrv4 = /^((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])\\/([0-9]|[1-2][0-9]|3[0-2])$/;\nconst cidrv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\nconst base64 = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/;\nconst base64url = /^[A-Za-z0-9_-]*$/;\nconst e164 = /^\\+[1-9]\\d{6,14}$/;\nconst dateSource = `(?:(?:\\\\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 date$1 = /* @__PURE__ */ new RegExp(`^${dateSource}$`);\nfunction timeSource(args) {\n\tconst hhmm = `(?:[01]\\\\d|2[0-3]):[0-5]\\\\d`;\n\treturn typeof args.precision === \"number\" ? args.precision === -1 ? `${hhmm}` : args.precision === 0 ? `${hhmm}:[0-5]\\\\d` : `${hhmm}:[0-5]\\\\d\\\\.\\\\d{${args.precision}}` : `${hhmm}(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?`;\n}\nfunction time$1(args) {\n\treturn new RegExp(`^${timeSource(args)}$`);\n}\nfunction datetime$1(args) {\n\tconst time = timeSource({ precision: args.precision });\n\tconst opts = [\"Z\"];\n\tif (args.local) opts.push(\"\");\n\tif (args.offset) opts.push(`([+-](?:[01]\\\\d|2[0-3]):[0-5]\\\\d)`);\n\tconst timeRegex = `${time}(?:${opts.join(\"|\")})`;\n\treturn new RegExp(`^${dateSource}T(?:${timeRegex})$`);\n}\nconst string$1 = (params) => {\n\tconst regex = params ? `[\\\\s\\\\S]{${params?.minimum ?? 0},${params?.maximum ?? \"\"}}` : `[\\\\s\\\\S]*`;\n\treturn new RegExp(`^${regex}$`);\n};\nconst integer = /^-?\\d+$/;\nconst number$1 = /^-?\\d+(?:\\.\\d+)?$/;\nconst boolean$1 = /^(?:true|false)$/i;\nconst lowercase = /^[^A-Z]*$/;\nconst uppercase = /^[^a-z]*$/;\n//#endregion\n//#region ../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/checks.js\nconst $ZodCheck = /* @__PURE__ */ $constructor(\"$ZodCheck\", (inst, def) => {\n\tvar _a;\n\tinst._zod ?? (inst._zod = {});\n\tinst._zod.def = def;\n\t(_a = inst._zod).onattach ?? (_a.onattach = []);\n});\nconst numericOriginMap = {\n\tnumber: \"number\",\n\tbigint: \"bigint\",\n\tobject: \"date\"\n};\nconst $ZodCheckLessThan = /* @__PURE__ */ $constructor(\"$ZodCheckLessThan\", (inst, def) => {\n\t$ZodCheck.init(inst, def);\n\tconst origin = numericOriginMap[typeof def.value];\n\tinst._zod.onattach.push((inst) => {\n\t\tconst bag = inst._zod.bag;\n\t\tconst curr = (def.inclusive ? bag.maximum : bag.exclusiveMaximum) ?? Number.POSITIVE_INFINITY;\n\t\tif (def.value < curr) if (def.inclusive) bag.maximum = def.value;\n\t\telse bag.exclusiveMaximum = def.value;\n\t});\n\tinst._zod.check = (payload) => {\n\t\tif (def.inclusive ? payload.value <= def.value : payload.value < def.value) return;\n\t\tpayload.issues.push({\n\t\t\torigin,\n\t\t\tcode: \"too_big\",\n\t\t\tmaximum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n\t\t\tinput: payload.value,\n\t\t\tinclusive: def.inclusive,\n\t\t\tinst,\n\t\t\tcontinue: !def.abort\n\t\t});\n\t};\n});\nconst $ZodCheckGreaterThan = /* @__PURE__ */ $constructor(\"$ZodCheckGreaterThan\", (inst, def) => {\n\t$ZodCheck.init(inst, def);\n\tconst origin = numericOriginMap[typeof def.value];\n\tinst._zod.onattach.push((inst) => {\n\t\tconst bag = inst._zod.bag;\n\t\tconst curr = (def.inclusive ? bag.minimum : bag.exclusiveMinimum) ?? Number.NEGATIVE_INFINITY;\n\t\tif (def.value > curr) if (def.inclusive) bag.minimum = def.value;\n\t\telse bag.exclusiveMinimum = def.value;\n\t});\n\tinst._zod.check = (payload) => {\n\t\tif (def.inclusive ? payload.value >= def.value : payload.value > def.value) return;\n\t\tpayload.issues.push({\n\t\t\torigin,\n\t\t\tcode: \"too_small\",\n\t\t\tminimum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n\t\t\tinput: payload.value,\n\t\t\tinclusive: def.inclusive,\n\t\t\tinst,\n\t\t\tcontinue: !def.abort\n\t\t});\n\t};\n});\nconst $ZodCheckMultipleOf = /* @__PURE__ */ $constructor(\"$ZodCheckMultipleOf\", (inst, def) => {\n\t$ZodCheck.init(inst, def);\n\tinst._zod.onattach.push((inst) => {\n\t\tvar _a;\n\t\t(_a = inst._zod.bag).multipleOf ?? (_a.multipleOf = def.value);\n\t});\n\tinst._zod.check = (payload) => {\n\t\tif (typeof payload.value !== typeof def.value) throw new Error(\"Cannot mix number and bigint in multiple_of check.\");\n\t\tif (typeof payload.value === \"bigint\" ? payload.value % def.value === BigInt(0) : floatSafeRemainder(payload.value, def.value) === 0) return;\n\t\tpayload.issues.push({\n\t\t\torigin: typeof payload.value,\n\t\t\tcode: \"not_multiple_of\",\n\t\t\tdivisor: def.value,\n\t\t\tinput: payload.value,\n\t\t\tinst,\n\t\t\tcontinue: !def.abort\n\t\t});\n\t};\n});\nconst $ZodCheckNumberFormat = /* @__PURE__ */ $constructor(\"$ZodCheckNumberFormat\", (inst, def) => {\n\t$ZodCheck.init(inst, def);\n\tdef.format = def.format || \"float64\";\n\tconst isInt = def.format?.includes(\"int\");\n\tconst origin = isInt ? \"int\" : \"number\";\n\tconst [minimum, maximum] = NUMBER_FORMAT_RANGES[def.format];\n\tinst._zod.onattach.push((inst) => {\n\t\tconst bag = inst._zod.bag;\n\t\tbag.format = def.format;\n\t\tbag.minimum = minimum;\n\t\tbag.maximum = maximum;\n\t\tif (isInt) bag.pattern = integer;\n\t});\n\tinst._zod.check = (payload) => {\n\t\tconst input = payload.value;\n\t\tif (isInt) {\n\t\t\tif (!Number.isInteger(input)) {\n\t\t\t\tpayload.issues.push({\n\t\t\t\t\texpected: origin,\n\t\t\t\t\tformat: def.format,\n\t\t\t\t\tcode: \"invalid_type\",\n\t\t\t\t\tcontinue: false,\n\t\t\t\t\tinput,\n\t\t\t\t\tinst\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!Number.isSafeInteger(input)) {\n\t\t\t\tif (input > 0) payload.issues.push({\n\t\t\t\t\tinput,\n\t\t\t\t\tcode: \"too_big\",\n\t\t\t\t\tmaximum: Number.MAX_SAFE_INTEGER,\n\t\t\t\t\tnote: \"Integers must be within the safe integer range.\",\n\t\t\t\t\tinst,\n\t\t\t\t\torigin,\n\t\t\t\t\tinclusive: true,\n\t\t\t\t\tcontinue: !def.abort\n\t\t\t\t});\n\t\t\t\telse payload.issues.push({\n\t\t\t\t\tinput,\n\t\t\t\t\tcode: \"too_small\",\n\t\t\t\t\tminimum: Number.MIN_SAFE_INTEGER,\n\t\t\t\t\tnote: \"Integers must be within the safe integer range.\",\n\t\t\t\t\tinst,\n\t\t\t\t\torigin,\n\t\t\t\t\tinclusive: true,\n\t\t\t\t\tcontinue: !def.abort\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (input < minimum) payload.issues.push({\n\t\t\torigin: \"number\",\n\t\t\tinput,\n\t\t\tcode: \"too_small\",\n\t\t\tminimum,\n\t\t\tinclusive: true,\n\t\t\tinst,\n\t\t\tcontinue: !def.abort\n\t\t});\n\t\tif (input > maximum) payload.issues.push({\n\t\t\torigin: \"number\",\n\t\t\tinput,\n\t\t\tcode: \"too_big\",\n\t\t\tmaximum,\n\t\t\tinclusive: true,\n\t\t\tinst,\n\t\t\tcontinue: !def.abort\n\t\t});\n\t};\n});\nconst $ZodCheckMaxLength = /* @__PURE__ */ $constructor(\"$ZodCheckMaxLength\", (inst, def) => {\n\tvar _a;\n\t$ZodCheck.init(inst, def);\n\t(_a = inst._zod.def).when ?? (_a.when = (payload) => {\n\t\tconst val = payload.value;\n\t\treturn !nullish(val) && val.length !== void 0;\n\t});\n\tinst._zod.onattach.push((inst) => {\n\t\tconst curr = inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY;\n\t\tif (def.maximum < curr) inst._zod.bag.maximum = def.maximum;\n\t});\n\tinst._zod.check = (payload) => {\n\t\tconst input = payload.value;\n\t\tif (input.length <= def.maximum) return;\n\t\tconst origin = getLengthableOrigin(input);\n\t\tpayload.issues.push({\n\t\t\torigin,\n\t\t\tcode: \"too_big\",\n\t\t\tmaximum: def.maximum,\n\t\t\tinclusive: true,\n\t\t\tinput,\n\t\t\tinst,\n\t\t\tcontinue: !def.abort\n\t\t});\n\t};\n});\nconst $ZodCheckMinLength = /* @__PURE__ */ $constructor(\"$ZodCheckMinLength\", (inst, def) => {\n\tvar _a;\n\t$ZodCheck.init(inst, def);\n\t(_a = inst._zod.def).when ?? (_a.when = (payload) => {\n\t\tconst val = payload.value;\n\t\treturn !nullish(val) && val.length !== void 0;\n\t});\n\tinst._zod.onattach.push((inst) => {\n\t\tconst curr = inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY;\n\t\tif (def.minimum > curr) inst._zod.bag.minimum = def.minimum;\n\t});\n\tinst._zod.check = (payload) => {\n\t\tconst input = payload.value;\n\t\tif (input.length >= def.minimum) return;\n\t\tconst origin = getLengthableOrigin(input);\n\t\tpayload.issues.push({\n\t\t\torigin,\n\t\t\tcode: \"too_small\",\n\t\t\tminimum: def.minimum,\n\t\t\tinclusive: true,\n\t\t\tinput,\n\t\t\tinst,\n\t\t\tcontinue: !def.abort\n\t\t});\n\t};\n});\nconst $ZodCheckLengthEquals = /* @__PURE__ */ $constructor(\"$ZodCheckLengthEquals\", (inst, def) => {\n\tvar _a;\n\t$ZodCheck.init(inst, def);\n\t(_a = inst._zod.def).when ?? (_a.when = (payload) => {\n\t\tconst val = payload.value;\n\t\treturn !nullish(val) && val.length !== void 0;\n\t});\n\tinst._zod.onattach.push((inst) => {\n\t\tconst bag = inst._zod.bag;\n\t\tbag.minimum = def.length;\n\t\tbag.maximum = def.length;\n\t\tbag.length = def.length;\n\t});\n\tinst._zod.check = (payload) => {\n\t\tconst input = payload.value;\n\t\tconst length = input.length;\n\t\tif (length === def.length) return;\n\t\tconst origin = getLengthableOrigin(input);\n\t\tconst tooBig = length > def.length;\n\t\tpayload.issues.push({\n\t\t\torigin,\n\t\t\t...tooBig ? {\n\t\t\t\tcode: \"too_big\",\n\t\t\t\tmaximum: def.length\n\t\t\t} : {\n\t\t\t\tcode: \"too_small\",\n\t\t\t\tminimum: def.length\n\t\t\t},\n\t\t\tinclusive: true,\n\t\t\texact: true,\n\t\t\tinput: payload.value,\n\t\t\tinst,\n\t\t\tcontinue: !def.abort\n\t\t});\n\t};\n});\nconst $ZodCheckStringFormat = /* @__PURE__ */ $constructor(\"$ZodCheckStringFormat\", (inst, def) => {\n\tvar _a, _b;\n\t$ZodCheck.init(inst, def);\n\tinst._zod.onattach.push((inst) => {\n\t\tconst bag = inst._zod.bag;\n\t\tbag.format = def.format;\n\t\tif (def.pattern) {\n\t\t\tbag.patterns ?? (bag.patterns = /* @__PURE__ */ new Set());\n\t\t\tbag.patterns.add(def.pattern);\n\t\t}\n\t});\n\tif (def.pattern) (_a = inst._zod).check ?? (_a.check = (payload) => {\n\t\tdef.pattern.lastIndex = 0;\n\t\tif (def.pattern.test(payload.value)) return;\n\t\tpayload.issues.push({\n\t\t\torigin: \"string\",\n\t\t\tcode: \"invalid_format\",\n\t\t\tformat: def.format,\n\t\t\tinput: payload.value,\n\t\t\t...def.pattern ? { pattern: def.pattern.toString() } : {},\n\t\t\tinst,\n\t\t\tcontinue: !def.abort\n\t\t});\n\t});\n\telse (_b = inst._zod).check ?? (_b.check = () => {});\n});\nconst $ZodCheckRegex = /* @__PURE__ */ $constructor(\"$ZodCheckRegex\", (inst, def) => {\n\t$ZodCheckStringFormat.init(inst, def);\n\tinst._zod.check = (payload) => {\n\t\tdef.pattern.lastIndex = 0;\n\t\tif (def.pattern.test(payload.value)) return;\n\t\tpayload.issues.push({\n\t\t\torigin: \"string\",\n\t\t\tcode: \"invalid_format\",\n\t\t\tformat: \"regex\",\n\t\t\tinput: payload.value,\n\t\t\tpattern: def.pattern.toString(),\n\t\t\tinst,\n\t\t\tcontinue: !def.abort\n\t\t});\n\t};\n});\nconst $ZodCheckLowerCase = /* @__PURE__ */ $constructor(\"$ZodCheckLowerCase\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = lowercase);\n\t$ZodCheckStringFormat.init(inst, def);\n});\nconst $ZodCheckUpperCase = /* @__PURE__ */ $constructor(\"$ZodCheckUpperCase\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = uppercase);\n\t$ZodCheckStringFormat.init(inst, def);\n});\nconst $ZodCheckIncludes = /* @__PURE__ */ $constructor(\"$ZodCheckIncludes\", (inst, def) => {\n\t$ZodCheck.init(inst, def);\n\tconst escapedRegex = escapeRegex(def.includes);\n\tconst pattern = new RegExp(typeof def.position === \"number\" ? `^.{${def.position}}${escapedRegex}` : escapedRegex);\n\tdef.pattern = pattern;\n\tinst._zod.onattach.push((inst) => {\n\t\tconst bag = inst._zod.bag;\n\t\tbag.patterns ?? (bag.patterns = /* @__PURE__ */ new Set());\n\t\tbag.patterns.add(pattern);\n\t});\n\tinst._zod.check = (payload) => {\n\t\tif (payload.value.includes(def.includes, def.position)) return;\n\t\tpayload.issues.push({\n\t\t\torigin: \"string\",\n\t\t\tcode: \"invalid_format\",\n\t\t\tformat: \"includes\",\n\t\t\tincludes: def.includes,\n\t\t\tinput: payload.value,\n\t\t\tinst,\n\t\t\tcontinue: !def.abort\n\t\t});\n\t};\n});\nconst $ZodCheckStartsWith = /* @__PURE__ */ $constructor(\"$ZodCheckStartsWith\", (inst, def) => {\n\t$ZodCheck.init(inst, def);\n\tconst pattern = new RegExp(`^${escapeRegex(def.prefix)}.*`);\n\tdef.pattern ?? (def.pattern = pattern);\n\tinst._zod.onattach.push((inst) => {\n\t\tconst bag = inst._zod.bag;\n\t\tbag.patterns ?? (bag.patterns = /* @__PURE__ */ new Set());\n\t\tbag.patterns.add(pattern);\n\t});\n\tinst._zod.check = (payload) => {\n\t\tif (payload.value.startsWith(def.prefix)) return;\n\t\tpayload.issues.push({\n\t\t\torigin: \"string\",\n\t\t\tcode: \"invalid_format\",\n\t\t\tformat: \"starts_with\",\n\t\t\tprefix: def.prefix,\n\t\t\tinput: payload.value,\n\t\t\tinst,\n\t\t\tcontinue: !def.abort\n\t\t});\n\t};\n});\nconst $ZodCheckEndsWith = /* @__PURE__ */ $constructor(\"$ZodCheckEndsWith\", (inst, def) => {\n\t$ZodCheck.init(inst, def);\n\tconst pattern = new RegExp(`.*${escapeRegex(def.suffix)}$`);\n\tdef.pattern ?? (def.pattern = pattern);\n\tinst._zod.onattach.push((inst) => {\n\t\tconst bag = inst._zod.bag;\n\t\tbag.patterns ?? (bag.patterns = /* @__PURE__ */ new Set());\n\t\tbag.patterns.add(pattern);\n\t});\n\tinst._zod.check = (payload) => {\n\t\tif (payload.value.endsWith(def.suffix)) return;\n\t\tpayload.issues.push({\n\t\t\torigin: \"string\",\n\t\t\tcode: \"invalid_format\",\n\t\t\tformat: \"ends_with\",\n\t\t\tsuffix: def.suffix,\n\t\t\tinput: payload.value,\n\t\t\tinst,\n\t\t\tcontinue: !def.abort\n\t\t});\n\t};\n});\nconst $ZodCheckOverwrite = /* @__PURE__ */ $constructor(\"$ZodCheckOverwrite\", (inst, def) => {\n\t$ZodCheck.init(inst, def);\n\tinst._zod.check = (payload) => {\n\t\tpayload.value = def.tx(payload.value);\n\t};\n});\n//#endregion\n//#region ../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/doc.js\nvar Doc = class {\n\tconstructor(args = []) {\n\t\tthis.content = [];\n\t\tthis.indent = 0;\n\t\tif (this) this.args = args;\n\t}\n\tindented(fn) {\n\t\tthis.indent += 1;\n\t\tfn(this);\n\t\tthis.indent -= 1;\n\t}\n\twrite(arg) {\n\t\tif (typeof arg === \"function\") {\n\t\t\targ(this, { execution: \"sync\" });\n\t\t\targ(this, { execution: \"async\" });\n\t\t\treturn;\n\t\t}\n\t\tconst lines = arg.split(\"\\n\").filter((x) => x);\n\t\tconst minIndent = Math.min(...lines.map((x) => x.length - x.trimStart().length));\n\t\tconst dedented = lines.map((x) => x.slice(minIndent)).map((x) => \" \".repeat(this.indent * 2) + x);\n\t\tfor (const line of dedented) this.content.push(line);\n\t}\n\tcompile() {\n\t\tconst F = Function;\n\t\tconst args = this?.args;\n\t\tconst lines = [...(this?.content ?? [``]).map((x) => ` ${x}`)];\n\t\treturn new F(...args, lines.join(\"\\n\"));\n\t}\n};\n//#endregion\n//#region ../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/versions.js\nconst version = {\n\tmajor: 4,\n\tminor: 3,\n\tpatch: 6\n};\n//#endregion\n//#region ../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/schemas.js\nconst $ZodType = /* @__PURE__ */ $constructor(\"$ZodType\", (inst, def) => {\n\tvar _a;\n\tinst ?? (inst = {});\n\tinst._zod.def = def;\n\tinst._zod.bag = inst._zod.bag || {};\n\tinst._zod.version = version;\n\tconst checks = [...inst._zod.def.checks ?? []];\n\tif (inst._zod.traits.has(\"$ZodCheck\")) checks.unshift(inst);\n\tfor (const ch of checks) for (const fn of ch._zod.onattach) fn(inst);\n\tif (checks.length === 0) {\n\t\t(_a = inst._zod).deferred ?? (_a.deferred = []);\n\t\tinst._zod.deferred?.push(() => {\n\t\t\tinst._zod.run = inst._zod.parse;\n\t\t});\n\t} else {\n\t\tconst runChecks = (payload, checks, ctx) => {\n\t\t\tlet isAborted = aborted(payload);\n\t\t\tlet asyncResult;\n\t\t\tfor (const ch of checks) {\n\t\t\t\tif (ch._zod.def.when) {\n\t\t\t\t\tif (!ch._zod.def.when(payload)) continue;\n\t\t\t\t} else if (isAborted) continue;\n\t\t\t\tconst currLen = payload.issues.length;\n\t\t\t\tconst _ = ch._zod.check(payload);\n\t\t\t\tif (_ instanceof Promise && ctx?.async === false) throw new $ZodAsyncError();\n\t\t\t\tif (asyncResult || _ instanceof Promise) asyncResult = (asyncResult ?? Promise.resolve()).then(async () => {\n\t\t\t\t\tawait _;\n\t\t\t\t\tif (payload.issues.length === currLen) return;\n\t\t\t\t\tif (!isAborted) isAborted = aborted(payload, currLen);\n\t\t\t\t});\n\t\t\t\telse {\n\t\t\t\t\tif (payload.issues.length === currLen) continue;\n\t\t\t\t\tif (!isAborted) isAborted = aborted(payload, currLen);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (asyncResult) return asyncResult.then(() => {\n\t\t\t\treturn payload;\n\t\t\t});\n\t\t\treturn payload;\n\t\t};\n\t\tconst handleCanaryResult = (canary, payload, ctx) => {\n\t\t\tif (aborted(canary)) {\n\t\t\t\tcanary.aborted = true;\n\t\t\t\treturn canary;\n\t\t\t}\n\t\t\tconst checkResult = runChecks(payload, checks, ctx);\n\t\t\tif (checkResult instanceof Promise) {\n\t\t\t\tif (ctx.async === false) throw new $ZodAsyncError();\n\t\t\t\treturn checkResult.then((checkResult) => inst._zod.parse(checkResult, ctx));\n\t\t\t}\n\t\t\treturn inst._zod.parse(checkResult, ctx);\n\t\t};\n\t\tinst._zod.run = (payload, ctx) => {\n\t\t\tif (ctx.skipChecks) return inst._zod.parse(payload, ctx);\n\t\t\tif (ctx.direction === \"backward\") {\n\t\t\t\tconst canary = inst._zod.parse({\n\t\t\t\t\tvalue: payload.value,\n\t\t\t\t\tissues: []\n\t\t\t\t}, {\n\t\t\t\t\t...ctx,\n\t\t\t\t\tskipChecks: true\n\t\t\t\t});\n\t\t\t\tif (canary instanceof Promise) return canary.then((canary) => {\n\t\t\t\t\treturn handleCanaryResult(canary, payload, ctx);\n\t\t\t\t});\n\t\t\t\treturn handleCanaryResult(canary, payload, ctx);\n\t\t\t}\n\t\t\tconst result = inst._zod.parse(payload, ctx);\n\t\t\tif (result instanceof Promise) {\n\t\t\t\tif (ctx.async === false) throw new $ZodAsyncError();\n\t\t\t\treturn result.then((result) => runChecks(result, checks, ctx));\n\t\t\t}\n\t\t\treturn runChecks(result, checks, ctx);\n\t\t};\n\t}\n\tdefineLazy(inst, \"~standard\", () => ({\n\t\tvalidate: (value) => {\n\t\t\ttry {\n\t\t\t\tconst r = safeParse$1(inst, value);\n\t\t\t\treturn r.success ? { value: r.data } : { issues: r.error?.issues };\n\t\t\t} catch (_) {\n\t\t\t\treturn safeParseAsync$1(inst, value).then((r) => r.success ? { value: r.data } : { issues: r.error?.issues });\n\t\t\t}\n\t\t},\n\t\tvendor: \"zod\",\n\t\tversion: 1\n\t}));\n});\nconst $ZodString = /* @__PURE__ */ $constructor(\"$ZodString\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tinst._zod.pattern = [...inst?._zod.bag?.patterns ?? []].pop() ?? string$1(inst._zod.bag);\n\tinst._zod.parse = (payload, _) => {\n\t\tif (def.coerce) try {\n\t\t\tpayload.value = String(payload.value);\n\t\t} catch (_) {}\n\t\tif (typeof payload.value === \"string\") return payload;\n\t\tpayload.issues.push({\n\t\t\texpected: \"string\",\n\t\t\tcode: \"invalid_type\",\n\t\t\tinput: payload.value,\n\t\t\tinst\n\t\t});\n\t\treturn payload;\n\t};\n});\nconst $ZodStringFormat = /* @__PURE__ */ $constructor(\"$ZodStringFormat\", (inst, def) => {\n\t$ZodCheckStringFormat.init(inst, def);\n\t$ZodString.init(inst, def);\n});\nconst $ZodGUID = /* @__PURE__ */ $constructor(\"$ZodGUID\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = guid);\n\t$ZodStringFormat.init(inst, def);\n});\nconst $ZodUUID = /* @__PURE__ */ $constructor(\"$ZodUUID\", (inst, def) => {\n\tif (def.version) {\n\t\tconst v = {\n\t\t\tv1: 1,\n\t\t\tv2: 2,\n\t\t\tv3: 3,\n\t\t\tv4: 4,\n\t\t\tv5: 5,\n\t\t\tv6: 6,\n\t\t\tv7: 7,\n\t\t\tv8: 8\n\t\t}[def.version];\n\t\tif (v === void 0) throw new Error(`Invalid UUID version: \"${def.version}\"`);\n\t\tdef.pattern ?? (def.pattern = uuid(v));\n\t} else def.pattern ?? (def.pattern = uuid());\n\t$ZodStringFormat.init(inst, def);\n});\nconst $ZodEmail = /* @__PURE__ */ $constructor(\"$ZodEmail\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = email);\n\t$ZodStringFormat.init(inst, def);\n});\nconst $ZodURL = /* @__PURE__ */ $constructor(\"$ZodURL\", (inst, def) => {\n\t$ZodStringFormat.init(inst, def);\n\tinst._zod.check = (payload) => {\n\t\ttry {\n\t\t\tconst trimmed = payload.value.trim();\n\t\t\tconst url = new URL(trimmed);\n\t\t\tif (def.hostname) {\n\t\t\t\tdef.hostname.lastIndex = 0;\n\t\t\t\tif (!def.hostname.test(url.hostname)) payload.issues.push({\n\t\t\t\t\tcode: \"invalid_format\",\n\t\t\t\t\tformat: \"url\",\n\t\t\t\t\tnote: \"Invalid hostname\",\n\t\t\t\t\tpattern: def.hostname.source,\n\t\t\t\t\tinput: payload.value,\n\t\t\t\t\tinst,\n\t\t\t\t\tcontinue: !def.abort\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (def.protocol) {\n\t\t\t\tdef.protocol.lastIndex = 0;\n\t\t\t\tif (!def.protocol.test(url.protocol.endsWith(\":\") ? url.protocol.slice(0, -1) : url.protocol)) payload.issues.push({\n\t\t\t\t\tcode: \"invalid_format\",\n\t\t\t\t\tformat: \"url\",\n\t\t\t\t\tnote: \"Invalid protocol\",\n\t\t\t\t\tpattern: def.protocol.source,\n\t\t\t\t\tinput: payload.value,\n\t\t\t\t\tinst,\n\t\t\t\t\tcontinue: !def.abort\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (def.normalize) payload.value = url.href;\n\t\t\telse payload.value = trimmed;\n\t\t\treturn;\n\t\t} catch (_) {\n\t\t\tpayload.issues.push({\n\t\t\t\tcode: \"invalid_format\",\n\t\t\t\tformat: \"url\",\n\t\t\t\tinput: payload.value,\n\t\t\t\tinst,\n\t\t\t\tcontinue: !def.abort\n\t\t\t});\n\t\t}\n\t};\n});\nconst $ZodEmoji = /* @__PURE__ */ $constructor(\"$ZodEmoji\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = emoji());\n\t$ZodStringFormat.init(inst, def);\n});\nconst $ZodNanoID = /* @__PURE__ */ $constructor(\"$ZodNanoID\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = nanoid);\n\t$ZodStringFormat.init(inst, def);\n});\nconst $ZodCUID = /* @__PURE__ */ $constructor(\"$ZodCUID\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = cuid);\n\t$ZodStringFormat.init(inst, def);\n});\nconst $ZodCUID2 = /* @__PURE__ */ $constructor(\"$ZodCUID2\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = cuid2);\n\t$ZodStringFormat.init(inst, def);\n});\nconst $ZodULID = /* @__PURE__ */ $constructor(\"$ZodULID\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = ulid);\n\t$ZodStringFormat.init(inst, def);\n});\nconst $ZodXID = /* @__PURE__ */ $constructor(\"$ZodXID\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = xid);\n\t$ZodStringFormat.init(inst, def);\n});\nconst $ZodKSUID = /* @__PURE__ */ $constructor(\"$ZodKSUID\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = ksuid);\n\t$ZodStringFormat.init(inst, def);\n});\nconst $ZodISODateTime = /* @__PURE__ */ $constructor(\"$ZodISODateTime\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = datetime$1(def));\n\t$ZodStringFormat.init(inst, def);\n});\nconst $ZodISODate = /* @__PURE__ */ $constructor(\"$ZodISODate\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = date$1);\n\t$ZodStringFormat.init(inst, def);\n});\nconst $ZodISOTime = /* @__PURE__ */ $constructor(\"$ZodISOTime\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = time$1(def));\n\t$ZodStringFormat.init(inst, def);\n});\nconst $ZodISODuration = /* @__PURE__ */ $constructor(\"$ZodISODuration\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = duration$1);\n\t$ZodStringFormat.init(inst, def);\n});\nconst $ZodIPv4 = /* @__PURE__ */ $constructor(\"$ZodIPv4\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = ipv4);\n\t$ZodStringFormat.init(inst, def);\n\tinst._zod.bag.format = `ipv4`;\n});\nconst $ZodIPv6 = /* @__PURE__ */ $constructor(\"$ZodIPv6\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = ipv6);\n\t$ZodStringFormat.init(inst, def);\n\tinst._zod.bag.format = `ipv6`;\n\tinst._zod.check = (payload) => {\n\t\ttry {\n\t\t\tnew URL(`http://[${payload.value}]`);\n\t\t} catch {\n\t\t\tpayload.issues.push({\n\t\t\t\tcode: \"invalid_format\",\n\t\t\t\tformat: \"ipv6\",\n\t\t\t\tinput: payload.value,\n\t\t\t\tinst,\n\t\t\t\tcontinue: !def.abort\n\t\t\t});\n\t\t}\n\t};\n});\nconst $ZodCIDRv4 = /* @__PURE__ */ $constructor(\"$ZodCIDRv4\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = cidrv4);\n\t$ZodStringFormat.init(inst, def);\n});\nconst $ZodCIDRv6 = /* @__PURE__ */ $constructor(\"$ZodCIDRv6\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = cidrv6);\n\t$ZodStringFormat.init(inst, def);\n\tinst._zod.check = (payload) => {\n\t\tconst parts = payload.value.split(\"/\");\n\t\ttry {\n\t\t\tif (parts.length !== 2) throw new Error();\n\t\t\tconst [address, prefix] = parts;\n\t\t\tif (!prefix) throw new Error();\n\t\t\tconst prefixNum = Number(prefix);\n\t\t\tif (`${prefixNum}` !== prefix) throw new Error();\n\t\t\tif (prefixNum < 0 || prefixNum > 128) throw new Error();\n\t\t\tnew URL(`http://[${address}]`);\n\t\t} catch {\n\t\t\tpayload.issues.push({\n\t\t\t\tcode: \"invalid_format\",\n\t\t\t\tformat: \"cidrv6\",\n\t\t\t\tinput: payload.value,\n\t\t\t\tinst,\n\t\t\t\tcontinue: !def.abort\n\t\t\t});\n\t\t}\n\t};\n});\nfunction isValidBase64(data) {\n\tif (data === \"\") return true;\n\tif (data.length % 4 !== 0) return false;\n\ttry {\n\t\tatob(data);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\nconst $ZodBase64 = /* @__PURE__ */ $constructor(\"$ZodBase64\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = base64);\n\t$ZodStringFormat.init(inst, def);\n\tinst._zod.bag.contentEncoding = \"base64\";\n\tinst._zod.check = (payload) => {\n\t\tif (isValidBase64(payload.value)) return;\n\t\tpayload.issues.push({\n\t\t\tcode: \"invalid_format\",\n\t\t\tformat: \"base64\",\n\t\t\tinput: payload.value,\n\t\t\tinst,\n\t\t\tcontinue: !def.abort\n\t\t});\n\t};\n});\nfunction isValidBase64URL(data) {\n\tif (!base64url.test(data)) return false;\n\tconst base64 = data.replace(/[-_]/g, (c) => c === \"-\" ? \"+\" : \"/\");\n\treturn isValidBase64(base64.padEnd(Math.ceil(base64.length / 4) * 4, \"=\"));\n}\nconst $ZodBase64URL = /* @__PURE__ */ $constructor(\"$ZodBase64URL\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = base64url);\n\t$ZodStringFormat.init(inst, def);\n\tinst._zod.bag.contentEncoding = \"base64url\";\n\tinst._zod.check = (payload) => {\n\t\tif (isValidBase64URL(payload.value)) return;\n\t\tpayload.issues.push({\n\t\t\tcode: \"invalid_format\",\n\t\t\tformat: \"base64url\",\n\t\t\tinput: payload.value,\n\t\t\tinst,\n\t\t\tcontinue: !def.abort\n\t\t});\n\t};\n});\nconst $ZodE164 = /* @__PURE__ */ $constructor(\"$ZodE164\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = e164);\n\t$ZodStringFormat.init(inst, def);\n});\nfunction isValidJWT(token, algorithm = null) {\n\ttry {\n\t\tconst tokensParts = token.split(\".\");\n\t\tif (tokensParts.length !== 3) return false;\n\t\tconst [header] = tokensParts;\n\t\tif (!header) return false;\n\t\tconst parsedHeader = JSON.parse(atob(header));\n\t\tif (\"typ\" in parsedHeader && parsedHeader?.typ !== \"JWT\") return false;\n\t\tif (!parsedHeader.alg) return false;\n\t\tif (algorithm && (!(\"alg\" in parsedHeader) || parsedHeader.alg !== algorithm)) return false;\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\nconst $ZodJWT = /* @__PURE__ */ $constructor(\"$ZodJWT\", (inst, def) => {\n\t$ZodStringFormat.init(inst, def);\n\tinst._zod.check = (payload) => {\n\t\tif (isValidJWT(payload.value, def.alg)) return;\n\t\tpayload.issues.push({\n\t\t\tcode: \"invalid_format\",\n\t\t\tformat: \"jwt\",\n\t\t\tinput: payload.value,\n\t\t\tinst,\n\t\t\tcontinue: !def.abort\n\t\t});\n\t};\n});\nconst $ZodNumber = /* @__PURE__ */ $constructor(\"$ZodNumber\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tinst._zod.pattern = inst._zod.bag.pattern ?? number$1;\n\tinst._zod.parse = (payload, _ctx) => {\n\t\tif (def.coerce) try {\n\t\t\tpayload.value = Number(payload.value);\n\t\t} catch (_) {}\n\t\tconst input = payload.value;\n\t\tif (typeof input === \"number\" && !Number.isNaN(input) && Number.isFinite(input)) return payload;\n\t\tconst received = typeof input === \"number\" ? Number.isNaN(input) ? \"NaN\" : !Number.isFinite(input) ? \"Infinity\" : void 0 : void 0;\n\t\tpayload.issues.push({\n\t\t\texpected: \"number\",\n\t\t\tcode: \"invalid_type\",\n\t\t\tinput,\n\t\t\tinst,\n\t\t\t...received ? { received } : {}\n\t\t});\n\t\treturn payload;\n\t};\n});\nconst $ZodNumberFormat = /* @__PURE__ */ $constructor(\"$ZodNumberFormat\", (inst, def) => {\n\t$ZodCheckNumberFormat.init(inst, def);\n\t$ZodNumber.init(inst, def);\n});\nconst $ZodBoolean = /* @__PURE__ */ $constructor(\"$ZodBoolean\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tinst._zod.pattern = boolean$1;\n\tinst._zod.parse = (payload, _ctx) => {\n\t\tif (def.coerce) try {\n\t\t\tpayload.value = Boolean(payload.value);\n\t\t} catch (_) {}\n\t\tconst input = payload.value;\n\t\tif (typeof input === \"boolean\") return payload;\n\t\tpayload.issues.push({\n\t\t\texpected: \"boolean\",\n\t\t\tcode: \"invalid_type\",\n\t\t\tinput,\n\t\t\tinst\n\t\t});\n\t\treturn payload;\n\t};\n});\nconst $ZodUnknown = /* @__PURE__ */ $constructor(\"$ZodUnknown\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tinst._zod.parse = (payload) => payload;\n});\nconst $ZodNever = /* @__PURE__ */ $constructor(\"$ZodNever\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tinst._zod.parse = (payload, _ctx) => {\n\t\tpayload.issues.push({\n\t\t\texpected: \"never\",\n\t\t\tcode: \"invalid_type\",\n\t\t\tinput: payload.value,\n\t\t\tinst\n\t\t});\n\t\treturn payload;\n\t};\n});\nfunction handleArrayResult(result, final, index) {\n\tif (result.issues.length) final.issues.push(...prefixIssues(index, result.issues));\n\tfinal.value[index] = result.value;\n}\nconst $ZodArray = /* @__PURE__ */ $constructor(\"$ZodArray\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tinst._zod.parse = (payload, ctx) => {\n\t\tconst input = payload.value;\n\t\tif (!Array.isArray(input)) {\n\t\t\tpayload.issues.push({\n\t\t\t\texpected: \"array\",\n\t\t\t\tcode: \"invalid_type\",\n\t\t\t\tinput,\n\t\t\t\tinst\n\t\t\t});\n\t\t\treturn payload;\n\t\t}\n\t\tpayload.value = Array(input.length);\n\t\tconst proms = [];\n\t\tfor (let i = 0; i < input.length; i++) {\n\t\t\tconst item = input[i];\n\t\t\tconst result = def.element._zod.run({\n\t\t\t\tvalue: item,\n\t\t\t\tissues: []\n\t\t\t}, ctx);\n\t\t\tif (result instanceof Promise) proms.push(result.then((result) => handleArrayResult(result, payload, i)));\n\t\t\telse handleArrayResult(result, payload, i);\n\t\t}\n\t\tif (proms.length) return Promise.all(proms).then(() => payload);\n\t\treturn payload;\n\t};\n});\nfunction handlePropertyResult(result, final, key, input, isOptionalOut) {\n\tif (result.issues.length) {\n\t\tif (isOptionalOut && !(key in input)) return;\n\t\tfinal.issues.push(...prefixIssues(key, result.issues));\n\t}\n\tif (result.value === void 0) {\n\t\tif (key in input) final.value[key] = void 0;\n\t} else final.value[key] = result.value;\n}\nfunction normalizeDef(def) {\n\tconst keys = Object.keys(def.shape);\n\tfor (const k of keys) if (!def.shape?.[k]?._zod?.traits?.has(\"$ZodType\")) throw new Error(`Invalid element at key \"${k}\": expected a Zod schema`);\n\tconst okeys = optionalKeys(def.shape);\n\treturn {\n\t\t...def,\n\t\tkeys,\n\t\tkeySet: new Set(keys),\n\t\tnumKeys: keys.length,\n\t\toptionalKeys: new Set(okeys)\n\t};\n}\nfunction handleCatchall(proms, input, payload, ctx, def, inst) {\n\tconst unrecognized = [];\n\tconst keySet = def.keySet;\n\tconst _catchall = def.catchall._zod;\n\tconst t = _catchall.def.type;\n\tconst isOptionalOut = _catchall.optout === \"optional\";\n\tfor (const key in input) {\n\t\tif (keySet.has(key)) continue;\n\t\tif (t === \"never\") {\n\t\t\tunrecognized.push(key);\n\t\t\tcontinue;\n\t\t}\n\t\tconst r = _catchall.run({\n\t\t\tvalue: input[key],\n\t\t\tissues: []\n\t\t}, ctx);\n\t\tif (r instanceof Promise) proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, isOptionalOut)));\n\t\telse handlePropertyResult(r, payload, key, input, isOptionalOut);\n\t}\n\tif (unrecognized.length) payload.issues.push({\n\t\tcode: \"unrecognized_keys\",\n\t\tkeys: unrecognized,\n\t\tinput,\n\t\tinst\n\t});\n\tif (!proms.length) return payload;\n\treturn Promise.all(proms).then(() => {\n\t\treturn payload;\n\t});\n}\nconst $ZodObject = /* @__PURE__ */ $constructor(\"$ZodObject\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tif (!Object.getOwnPropertyDescriptor(def, \"shape\")?.get) {\n\t\tconst sh = def.shape;\n\t\tObject.defineProperty(def, \"shape\", { get: () => {\n\t\t\tconst newSh = { ...sh };\n\t\t\tObject.defineProperty(def, \"shape\", { value: newSh });\n\t\t\treturn newSh;\n\t\t} });\n\t}\n\tconst _normalized = cached(() => normalizeDef(def));\n\tdefineLazy(inst._zod, \"propValues\", () => {\n\t\tconst shape = def.shape;\n\t\tconst propValues = {};\n\t\tfor (const key in shape) {\n\t\t\tconst field = shape[key]._zod;\n\t\t\tif (field.values) {\n\t\t\t\tpropValues[key] ?? (propValues[key] = /* @__PURE__ */ new Set());\n\t\t\t\tfor (const v of field.values) propValues[key].add(v);\n\t\t\t}\n\t\t}\n\t\treturn propValues;\n\t});\n\tconst isObject$2 = isObject;\n\tconst catchall = def.catchall;\n\tlet value;\n\tinst._zod.parse = (payload, ctx) => {\n\t\tvalue ?? (value = _normalized.value);\n\t\tconst input = payload.value;\n\t\tif (!isObject$2(input)) {\n\t\t\tpayload.issues.push({\n\t\t\t\texpected: \"object\",\n\t\t\t\tcode: \"invalid_type\",\n\t\t\t\tinput,\n\t\t\t\tinst\n\t\t\t});\n\t\t\treturn payload;\n\t\t}\n\t\tpayload.value = {};\n\t\tconst proms = [];\n\t\tconst shape = value.shape;\n\t\tfor (const key of value.keys) {\n\t\t\tconst el = shape[key];\n\t\t\tconst isOptionalOut = el._zod.optout === \"optional\";\n\t\t\tconst r = el._zod.run({\n\t\t\t\tvalue: input[key],\n\t\t\t\tissues: []\n\t\t\t}, ctx);\n\t\t\tif (r instanceof Promise) proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, isOptionalOut)));\n\t\t\telse handlePropertyResult(r, payload, key, input, isOptionalOut);\n\t\t}\n\t\tif (!catchall) return proms.length ? Promise.all(proms).then(() => payload) : payload;\n\t\treturn handleCatchall(proms, input, payload, ctx, _normalized.value, inst);\n\t};\n});\nconst $ZodObjectJIT = /* @__PURE__ */ $constructor(\"$ZodObjectJIT\", (inst, def) => {\n\t$ZodObject.init(inst, def);\n\tconst superParse = inst._zod.parse;\n\tconst _normalized = cached(() => normalizeDef(def));\n\tconst generateFastpass = (shape) => {\n\t\tconst doc = new Doc([\n\t\t\t\"shape\",\n\t\t\t\"payload\",\n\t\t\t\"ctx\"\n\t\t]);\n\t\tconst normalized = _normalized.value;\n\t\tconst parseStr = (key) => {\n\t\t\tconst k = esc(key);\n\t\t\treturn `shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`;\n\t\t};\n\t\tdoc.write(`const input = payload.value;`);\n\t\tconst ids = Object.create(null);\n\t\tlet counter = 0;\n\t\tfor (const key of normalized.keys) ids[key] = `key_${counter++}`;\n\t\tdoc.write(`const newResult = {};`);\n\t\tfor (const key of normalized.keys) {\n\t\t\tconst id = ids[key];\n\t\t\tconst k = esc(key);\n\t\t\tconst isOptionalOut = shape[key]?._zod?.optout === \"optional\";\n\t\t\tdoc.write(`const ${id} = ${parseStr(key)};`);\n\t\t\tif (isOptionalOut) doc.write(`\n if (${id}.issues.length) {\n if (${k} in input) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n }\n \n if (${id}.value === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n newResult[${k}] = ${id}.value;\n }\n \n `);\n\t\t\telse doc.write(`\n if (${id}.issues.length) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n \n if (${id}.value === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n newResult[${k}] = ${id}.value;\n }\n \n `);\n\t\t}\n\t\tdoc.write(`payload.value = newResult;`);\n\t\tdoc.write(`return payload;`);\n\t\tconst fn = doc.compile();\n\t\treturn (payload, ctx) => fn(shape, payload, ctx);\n\t};\n\tlet fastpass;\n\tconst isObject$1 = isObject;\n\tconst jit = !globalConfig.jitless;\n\tconst fastEnabled = jit && allowsEval.value;\n\tconst catchall = def.catchall;\n\tlet value;\n\tinst._zod.parse = (payload, ctx) => {\n\t\tvalue ?? (value = _normalized.value);\n\t\tconst input = payload.value;\n\t\tif (!isObject$1(input)) {\n\t\t\tpayload.issues.push({\n\t\t\t\texpected: \"object\",\n\t\t\t\tcode: \"invalid_type\",\n\t\t\t\tinput,\n\t\t\t\tinst\n\t\t\t});\n\t\t\treturn payload;\n\t\t}\n\t\tif (jit && fastEnabled && ctx?.async === false && ctx.jitless !== true) {\n\t\t\tif (!fastpass) fastpass = generateFastpass(def.shape);\n\t\t\tpayload = fastpass(payload, ctx);\n\t\t\tif (!catchall) return payload;\n\t\t\treturn handleCatchall([], input, payload, ctx, value, inst);\n\t\t}\n\t\treturn superParse(payload, ctx);\n\t};\n});\nfunction handleUnionResults(results, final, inst, ctx) {\n\tfor (const result of results) if (result.issues.length === 0) {\n\t\tfinal.value = result.value;\n\t\treturn final;\n\t}\n\tconst nonaborted = results.filter((r) => !aborted(r));\n\tif (nonaborted.length === 1) {\n\t\tfinal.value = nonaborted[0].value;\n\t\treturn nonaborted[0];\n\t}\n\tfinal.issues.push({\n\t\tcode: \"invalid_union\",\n\t\tinput: final.value,\n\t\tinst,\n\t\terrors: results.map((result) => result.issues.map((iss) => finalizeIssue(iss, ctx, config())))\n\t});\n\treturn final;\n}\nconst $ZodUnion = /* @__PURE__ */ $constructor(\"$ZodUnion\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tdefineLazy(inst._zod, \"optin\", () => def.options.some((o) => o._zod.optin === \"optional\") ? \"optional\" : void 0);\n\tdefineLazy(inst._zod, \"optout\", () => def.options.some((o) => o._zod.optout === \"optional\") ? \"optional\" : void 0);\n\tdefineLazy(inst._zod, \"values\", () => {\n\t\tif (def.options.every((o) => o._zod.values)) return new Set(def.options.flatMap((option) => Array.from(option._zod.values)));\n\t});\n\tdefineLazy(inst._zod, \"pattern\", () => {\n\t\tif (def.options.every((o) => o._zod.pattern)) {\n\t\t\tconst patterns = def.options.map((o) => o._zod.pattern);\n\t\t\treturn new RegExp(`^(${patterns.map((p) => cleanRegex(p.source)).join(\"|\")})$`);\n\t\t}\n\t});\n\tconst single = def.options.length === 1;\n\tconst first = def.options[0]._zod.run;\n\tinst._zod.parse = (payload, ctx) => {\n\t\tif (single) return first(payload, ctx);\n\t\tlet async = false;\n\t\tconst results = [];\n\t\tfor (const option of def.options) {\n\t\t\tconst result = option._zod.run({\n\t\t\t\tvalue: payload.value,\n\t\t\t\tissues: []\n\t\t\t}, ctx);\n\t\t\tif (result instanceof Promise) {\n\t\t\t\tresults.push(result);\n\t\t\t\tasync = true;\n\t\t\t} else {\n\t\t\t\tif (result.issues.length === 0) return result;\n\t\t\t\tresults.push(result);\n\t\t\t}\n\t\t}\n\t\tif (!async) return handleUnionResults(results, payload, inst, ctx);\n\t\treturn Promise.all(results).then((results) => {\n\t\t\treturn handleUnionResults(results, payload, inst, ctx);\n\t\t});\n\t};\n});\nconst $ZodDiscriminatedUnion = /* @__PURE__ */ $constructor(\"$ZodDiscriminatedUnion\", (inst, def) => {\n\tdef.inclusive = false;\n\t$ZodUnion.init(inst, def);\n\tconst _super = inst._zod.parse;\n\tdefineLazy(inst._zod, \"propValues\", () => {\n\t\tconst propValues = {};\n\t\tfor (const option of def.options) {\n\t\t\tconst pv = option._zod.propValues;\n\t\t\tif (!pv || Object.keys(pv).length === 0) throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(option)}\"`);\n\t\t\tfor (const [k, v] of Object.entries(pv)) {\n\t\t\t\tif (!propValues[k]) propValues[k] = /* @__PURE__ */ new Set();\n\t\t\t\tfor (const val of v) propValues[k].add(val);\n\t\t\t}\n\t\t}\n\t\treturn propValues;\n\t});\n\tconst disc = cached(() => {\n\t\tconst opts = def.options;\n\t\tconst map = /* @__PURE__ */ new Map();\n\t\tfor (const o of opts) {\n\t\t\tconst values = o._zod.propValues?.[def.discriminator];\n\t\t\tif (!values || values.size === 0) throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(o)}\"`);\n\t\t\tfor (const v of values) {\n\t\t\t\tif (map.has(v)) throw new Error(`Duplicate discriminator value \"${String(v)}\"`);\n\t\t\t\tmap.set(v, o);\n\t\t\t}\n\t\t}\n\t\treturn map;\n\t});\n\tinst._zod.parse = (payload, ctx) => {\n\t\tconst input = payload.value;\n\t\tif (!isObject(input)) {\n\t\t\tpayload.issues.push({\n\t\t\t\tcode: \"invalid_type\",\n\t\t\t\texpected: \"object\",\n\t\t\t\tinput,\n\t\t\t\tinst\n\t\t\t});\n\t\t\treturn payload;\n\t\t}\n\t\tconst opt = disc.value.get(input?.[def.discriminator]);\n\t\tif (opt) return opt._zod.run(payload, ctx);\n\t\tif (def.unionFallback) return _super(payload, ctx);\n\t\tpayload.issues.push({\n\t\t\tcode: \"invalid_union\",\n\t\t\terrors: [],\n\t\t\tnote: \"No matching discriminator\",\n\t\t\tdiscriminator: def.discriminator,\n\t\t\tinput,\n\t\t\tpath: [def.discriminator],\n\t\t\tinst\n\t\t});\n\t\treturn payload;\n\t};\n});\nconst $ZodIntersection = /* @__PURE__ */ $constructor(\"$ZodIntersection\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tinst._zod.parse = (payload, ctx) => {\n\t\tconst input = payload.value;\n\t\tconst left = def.left._zod.run({\n\t\t\tvalue: input,\n\t\t\tissues: []\n\t\t}, ctx);\n\t\tconst right = def.right._zod.run({\n\t\t\tvalue: input,\n\t\t\tissues: []\n\t\t}, ctx);\n\t\tif (left instanceof Promise || right instanceof Promise) return Promise.all([left, right]).then(([left, right]) => {\n\t\t\treturn handleIntersectionResults(payload, left, right);\n\t\t});\n\t\treturn handleIntersectionResults(payload, left, right);\n\t};\n});\nfunction mergeValues(a, b) {\n\tif (a === b) return {\n\t\tvalid: true,\n\t\tdata: a\n\t};\n\tif (a instanceof Date && b instanceof Date && +a === +b) return {\n\t\tvalid: true,\n\t\tdata: a\n\t};\n\tif (isPlainObject(a) && isPlainObject(b)) {\n\t\tconst bKeys = Object.keys(b);\n\t\tconst sharedKeys = Object.keys(a).filter((key) => bKeys.indexOf(key) !== -1);\n\t\tconst newObj = {\n\t\t\t...a,\n\t\t\t...b\n\t\t};\n\t\tfor (const key of sharedKeys) {\n\t\t\tconst sharedValue = mergeValues(a[key], b[key]);\n\t\t\tif (!sharedValue.valid) return {\n\t\t\t\tvalid: false,\n\t\t\t\tmergeErrorPath: [key, ...sharedValue.mergeErrorPath]\n\t\t\t};\n\t\t\tnewObj[key] = sharedValue.data;\n\t\t}\n\t\treturn {\n\t\t\tvalid: true,\n\t\t\tdata: newObj\n\t\t};\n\t}\n\tif (Array.isArray(a) && Array.isArray(b)) {\n\t\tif (a.length !== b.length) return {\n\t\t\tvalid: false,\n\t\t\tmergeErrorPath: []\n\t\t};\n\t\tconst newArray = [];\n\t\tfor (let index = 0; index < a.length; index++) {\n\t\t\tconst itemA = a[index];\n\t\t\tconst itemB = b[index];\n\t\t\tconst sharedValue = mergeValues(itemA, itemB);\n\t\t\tif (!sharedValue.valid) return {\n\t\t\t\tvalid: false,\n\t\t\t\tmergeErrorPath: [index, ...sharedValue.mergeErrorPath]\n\t\t\t};\n\t\t\tnewArray.push(sharedValue.data);\n\t\t}\n\t\treturn {\n\t\t\tvalid: true,\n\t\t\tdata: newArray\n\t\t};\n\t}\n\treturn {\n\t\tvalid: false,\n\t\tmergeErrorPath: []\n\t};\n}\nfunction handleIntersectionResults(result, left, right) {\n\tconst unrecKeys = /* @__PURE__ */ new Map();\n\tlet unrecIssue;\n\tfor (const iss of left.issues) if (iss.code === \"unrecognized_keys\") {\n\t\tunrecIssue ?? (unrecIssue = iss);\n\t\tfor (const k of iss.keys) {\n\t\t\tif (!unrecKeys.has(k)) unrecKeys.set(k, {});\n\t\t\tunrecKeys.get(k).l = true;\n\t\t}\n\t} else result.issues.push(iss);\n\tfor (const iss of right.issues) if (iss.code === \"unrecognized_keys\") for (const k of iss.keys) {\n\t\tif (!unrecKeys.has(k)) unrecKeys.set(k, {});\n\t\tunrecKeys.get(k).r = true;\n\t}\n\telse result.issues.push(iss);\n\tconst bothKeys = [...unrecKeys].filter(([, f]) => f.l && f.r).map(([k]) => k);\n\tif (bothKeys.length && unrecIssue) result.issues.push({\n\t\t...unrecIssue,\n\t\tkeys: bothKeys\n\t});\n\tif (aborted(result)) return result;\n\tconst merged = mergeValues(left.value, right.value);\n\tif (!merged.valid) throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(merged.mergeErrorPath)}`);\n\tresult.value = merged.data;\n\treturn result;\n}\nconst $ZodRecord = /* @__PURE__ */ $constructor(\"$ZodRecord\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tinst._zod.parse = (payload, ctx) => {\n\t\tconst input = payload.value;\n\t\tif (!isPlainObject(input)) {\n\t\t\tpayload.issues.push({\n\t\t\t\texpected: \"record\",\n\t\t\t\tcode: \"invalid_type\",\n\t\t\t\tinput,\n\t\t\t\tinst\n\t\t\t});\n\t\t\treturn payload;\n\t\t}\n\t\tconst proms = [];\n\t\tconst values = def.keyType._zod.values;\n\t\tif (values) {\n\t\t\tpayload.value = {};\n\t\t\tconst recordKeys = /* @__PURE__ */ new Set();\n\t\t\tfor (const key of values) if (typeof key === \"string\" || typeof key === \"number\" || typeof key === \"symbol\") {\n\t\t\t\trecordKeys.add(typeof key === \"number\" ? key.toString() : key);\n\t\t\t\tconst result = def.valueType._zod.run({\n\t\t\t\t\tvalue: input[key],\n\t\t\t\t\tissues: []\n\t\t\t\t}, ctx);\n\t\t\t\tif (result instanceof Promise) proms.push(result.then((result) => {\n\t\t\t\t\tif (result.issues.length) payload.issues.push(...prefixIssues(key, result.issues));\n\t\t\t\t\tpayload.value[key] = result.value;\n\t\t\t\t}));\n\t\t\t\telse {\n\t\t\t\t\tif (result.issues.length) payload.issues.push(...prefixIssues(key, result.issues));\n\t\t\t\t\tpayload.value[key] = result.value;\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet unrecognized;\n\t\t\tfor (const key in input) if (!recordKeys.has(key)) {\n\t\t\t\tunrecognized = unrecognized ?? [];\n\t\t\t\tunrecognized.push(key);\n\t\t\t}\n\t\t\tif (unrecognized && unrecognized.length > 0) payload.issues.push({\n\t\t\t\tcode: \"unrecognized_keys\",\n\t\t\t\tinput,\n\t\t\t\tinst,\n\t\t\t\tkeys: unrecognized\n\t\t\t});\n\t\t} else {\n\t\t\tpayload.value = {};\n\t\t\tfor (const key of Reflect.ownKeys(input)) {\n\t\t\t\tif (key === \"__proto__\") continue;\n\t\t\t\tlet keyResult = def.keyType._zod.run({\n\t\t\t\t\tvalue: key,\n\t\t\t\t\tissues: []\n\t\t\t\t}, ctx);\n\t\t\t\tif (keyResult instanceof Promise) throw new Error(\"Async schemas not supported in object keys currently\");\n\t\t\t\tif (typeof key === \"string\" && number$1.test(key) && keyResult.issues.length) {\n\t\t\t\t\tconst retryResult = def.keyType._zod.run({\n\t\t\t\t\t\tvalue: Number(key),\n\t\t\t\t\t\tissues: []\n\t\t\t\t\t}, ctx);\n\t\t\t\t\tif (retryResult instanceof Promise) throw new Error(\"Async schemas not supported in object keys currently\");\n\t\t\t\t\tif (retryResult.issues.length === 0) keyResult = retryResult;\n\t\t\t\t}\n\t\t\t\tif (keyResult.issues.length) {\n\t\t\t\t\tif (def.mode === \"loose\") payload.value[key] = input[key];\n\t\t\t\t\telse payload.issues.push({\n\t\t\t\t\t\tcode: \"invalid_key\",\n\t\t\t\t\t\torigin: \"record\",\n\t\t\t\t\t\tissues: keyResult.issues.map((iss) => finalizeIssue(iss, ctx, config())),\n\t\t\t\t\t\tinput: key,\n\t\t\t\t\t\tpath: [key],\n\t\t\t\t\t\tinst\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst result = def.valueType._zod.run({\n\t\t\t\t\tvalue: input[key],\n\t\t\t\t\tissues: []\n\t\t\t\t}, ctx);\n\t\t\t\tif (result instanceof Promise) proms.push(result.then((result) => {\n\t\t\t\t\tif (result.issues.length) payload.issues.push(...prefixIssues(key, result.issues));\n\t\t\t\t\tpayload.value[keyResult.value] = result.value;\n\t\t\t\t}));\n\t\t\t\telse {\n\t\t\t\t\tif (result.issues.length) payload.issues.push(...prefixIssues(key, result.issues));\n\t\t\t\t\tpayload.value[keyResult.value] = result.value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (proms.length) return Promise.all(proms).then(() => payload);\n\t\treturn payload;\n\t};\n});\nconst $ZodEnum = /* @__PURE__ */ $constructor(\"$ZodEnum\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tconst values = getEnumValues(def.entries);\n\tconst valuesSet = new Set(values);\n\tinst._zod.values = valuesSet;\n\tinst._zod.pattern = new RegExp(`^(${values.filter((k) => propertyKeyTypes.has(typeof k)).map((o) => typeof o === \"string\" ? escapeRegex(o) : o.toString()).join(\"|\")})$`);\n\tinst._zod.parse = (payload, _ctx) => {\n\t\tconst input = payload.value;\n\t\tif (valuesSet.has(input)) return payload;\n\t\tpayload.issues.push({\n\t\t\tcode: \"invalid_value\",\n\t\t\tvalues,\n\t\t\tinput,\n\t\t\tinst\n\t\t});\n\t\treturn payload;\n\t};\n});\nconst $ZodLiteral = /* @__PURE__ */ $constructor(\"$ZodLiteral\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tif (def.values.length === 0) throw new Error(\"Cannot create literal schema with no valid values\");\n\tconst values = new Set(def.values);\n\tinst._zod.values = values;\n\tinst._zod.pattern = new RegExp(`^(${def.values.map((o) => typeof o === \"string\" ? escapeRegex(o) : o ? escapeRegex(o.toString()) : String(o)).join(\"|\")})$`);\n\tinst._zod.parse = (payload, _ctx) => {\n\t\tconst input = payload.value;\n\t\tif (values.has(input)) return payload;\n\t\tpayload.issues.push({\n\t\t\tcode: \"invalid_value\",\n\t\t\tvalues: def.values,\n\t\t\tinput,\n\t\t\tinst\n\t\t});\n\t\treturn payload;\n\t};\n});\nconst $ZodTransform = /* @__PURE__ */ $constructor(\"$ZodTransform\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tinst._zod.parse = (payload, ctx) => {\n\t\tif (ctx.direction === \"backward\") throw new $ZodEncodeError(inst.constructor.name);\n\t\tconst _out = def.transform(payload.value, payload);\n\t\tif (ctx.async) return (_out instanceof Promise ? _out : Promise.resolve(_out)).then((output) => {\n\t\t\tpayload.value = output;\n\t\t\treturn payload;\n\t\t});\n\t\tif (_out instanceof Promise) throw new $ZodAsyncError();\n\t\tpayload.value = _out;\n\t\treturn payload;\n\t};\n});\nfunction handleOptionalResult(result, input) {\n\tif (result.issues.length && input === void 0) return {\n\t\tissues: [],\n\t\tvalue: void 0\n\t};\n\treturn result;\n}\nconst $ZodOptional = /* @__PURE__ */ $constructor(\"$ZodOptional\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tinst._zod.optin = \"optional\";\n\tinst._zod.optout = \"optional\";\n\tdefineLazy(inst._zod, \"values\", () => {\n\t\treturn def.innerType._zod.values ? new Set([...def.innerType._zod.values, void 0]) : void 0;\n\t});\n\tdefineLazy(inst._zod, \"pattern\", () => {\n\t\tconst pattern = def.innerType._zod.pattern;\n\t\treturn pattern ? new RegExp(`^(${cleanRegex(pattern.source)})?$`) : void 0;\n\t});\n\tinst._zod.parse = (payload, ctx) => {\n\t\tif (def.innerType._zod.optin === \"optional\") {\n\t\t\tconst result = def.innerType._zod.run(payload, ctx);\n\t\t\tif (result instanceof Promise) return result.then((r) => handleOptionalResult(r, payload.value));\n\t\t\treturn handleOptionalResult(result, payload.value);\n\t\t}\n\t\tif (payload.value === void 0) return payload;\n\t\treturn def.innerType._zod.run(payload, ctx);\n\t};\n});\nconst $ZodExactOptional = /* @__PURE__ */ $constructor(\"$ZodExactOptional\", (inst, def) => {\n\t$ZodOptional.init(inst, def);\n\tdefineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n\tdefineLazy(inst._zod, \"pattern\", () => def.innerType._zod.pattern);\n\tinst._zod.parse = (payload, ctx) => {\n\t\treturn def.innerType._zod.run(payload, ctx);\n\t};\n});\nconst $ZodNullable = /* @__PURE__ */ $constructor(\"$ZodNullable\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tdefineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n\tdefineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n\tdefineLazy(inst._zod, \"pattern\", () => {\n\t\tconst pattern = def.innerType._zod.pattern;\n\t\treturn pattern ? new RegExp(`^(${cleanRegex(pattern.source)}|null)$`) : void 0;\n\t});\n\tdefineLazy(inst._zod, \"values\", () => {\n\t\treturn def.innerType._zod.values ? new Set([...def.innerType._zod.values, null]) : void 0;\n\t});\n\tinst._zod.parse = (payload, ctx) => {\n\t\tif (payload.value === null) return payload;\n\t\treturn def.innerType._zod.run(payload, ctx);\n\t};\n});\nconst $ZodDefault = /* @__PURE__ */ $constructor(\"$ZodDefault\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tinst._zod.optin = \"optional\";\n\tdefineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n\tinst._zod.parse = (payload, ctx) => {\n\t\tif (ctx.direction === \"backward\") return def.innerType._zod.run(payload, ctx);\n\t\tif (payload.value === void 0) {\n\t\t\tpayload.value = def.defaultValue;\n\t\t\t/**\n\t\t\t* $ZodDefault returns the default value immediately in forward direction.\n\t\t\t* It doesn't pass the default value into the validator (\"prefault\"). There's no reason to pass the default value through validation. The validity of the default is enforced by TypeScript statically. Otherwise, it's the responsibility of the user to ensure the default is valid. In the case of pipes with divergent in/out types, you can specify the default on the `in` schema of your ZodPipe to set a \"prefault\" for the pipe. */\n\t\t\treturn payload;\n\t\t}\n\t\tconst result = def.innerType._zod.run(payload, ctx);\n\t\tif (result instanceof Promise) return result.then((result) => handleDefaultResult(result, def));\n\t\treturn handleDefaultResult(result, def);\n\t};\n});\nfunction handleDefaultResult(payload, def) {\n\tif (payload.value === void 0) payload.value = def.defaultValue;\n\treturn payload;\n}\nconst $ZodPrefault = /* @__PURE__ */ $constructor(\"$ZodPrefault\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tinst._zod.optin = \"optional\";\n\tdefineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n\tinst._zod.parse = (payload, ctx) => {\n\t\tif (ctx.direction === \"backward\") return def.innerType._zod.run(payload, ctx);\n\t\tif (payload.value === void 0) payload.value = def.defaultValue;\n\t\treturn def.innerType._zod.run(payload, ctx);\n\t};\n});\nconst $ZodNonOptional = /* @__PURE__ */ $constructor(\"$ZodNonOptional\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tdefineLazy(inst._zod, \"values\", () => {\n\t\tconst v = def.innerType._zod.values;\n\t\treturn v ? new Set([...v].filter((x) => x !== void 0)) : void 0;\n\t});\n\tinst._zod.parse = (payload, ctx) => {\n\t\tconst result = def.innerType._zod.run(payload, ctx);\n\t\tif (result instanceof Promise) return result.then((result) => handleNonOptionalResult(result, inst));\n\t\treturn handleNonOptionalResult(result, inst);\n\t};\n});\nfunction handleNonOptionalResult(payload, inst) {\n\tif (!payload.issues.length && payload.value === void 0) payload.issues.push({\n\t\tcode: \"invalid_type\",\n\t\texpected: \"nonoptional\",\n\t\tinput: payload.value,\n\t\tinst\n\t});\n\treturn payload;\n}\nconst $ZodCatch = /* @__PURE__ */ $constructor(\"$ZodCatch\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tdefineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n\tdefineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n\tdefineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n\tinst._zod.parse = (payload, ctx) => {\n\t\tif (ctx.direction === \"backward\") return def.innerType._zod.run(payload, ctx);\n\t\tconst result = def.innerType._zod.run(payload, ctx);\n\t\tif (result instanceof Promise) return result.then((result) => {\n\t\t\tpayload.value = result.value;\n\t\t\tif (result.issues.length) {\n\t\t\t\tpayload.value = def.catchValue({\n\t\t\t\t\t...payload,\n\t\t\t\t\terror: { issues: result.issues.map((iss) => finalizeIssue(iss, ctx, config())) },\n\t\t\t\t\tinput: payload.value\n\t\t\t\t});\n\t\t\t\tpayload.issues = [];\n\t\t\t}\n\t\t\treturn payload;\n\t\t});\n\t\tpayload.value = result.value;\n\t\tif (result.issues.length) {\n\t\t\tpayload.value = def.catchValue({\n\t\t\t\t...payload,\n\t\t\t\terror: { issues: result.issues.map((iss) => finalizeIssue(iss, ctx, config())) },\n\t\t\t\tinput: payload.value\n\t\t\t});\n\t\t\tpayload.issues = [];\n\t\t}\n\t\treturn payload;\n\t};\n});\nconst $ZodPipe = /* @__PURE__ */ $constructor(\"$ZodPipe\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tdefineLazy(inst._zod, \"values\", () => def.in._zod.values);\n\tdefineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n\tdefineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n\tdefineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n\tinst._zod.parse = (payload, ctx) => {\n\t\tif (ctx.direction === \"backward\") {\n\t\t\tconst right = def.out._zod.run(payload, ctx);\n\t\t\tif (right instanceof Promise) return right.then((right) => handlePipeResult(right, def.in, ctx));\n\t\t\treturn handlePipeResult(right, def.in, ctx);\n\t\t}\n\t\tconst left = def.in._zod.run(payload, ctx);\n\t\tif (left instanceof Promise) return left.then((left) => handlePipeResult(left, def.out, ctx));\n\t\treturn handlePipeResult(left, def.out, ctx);\n\t};\n});\nfunction handlePipeResult(left, next, ctx) {\n\tif (left.issues.length) {\n\t\tleft.aborted = true;\n\t\treturn left;\n\t}\n\treturn next._zod.run({\n\t\tvalue: left.value,\n\t\tissues: left.issues\n\t}, ctx);\n}\nconst $ZodReadonly = /* @__PURE__ */ $constructor(\"$ZodReadonly\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tdefineLazy(inst._zod, \"propValues\", () => def.innerType._zod.propValues);\n\tdefineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n\tdefineLazy(inst._zod, \"optin\", () => def.innerType?._zod?.optin);\n\tdefineLazy(inst._zod, \"optout\", () => def.innerType?._zod?.optout);\n\tinst._zod.parse = (payload, ctx) => {\n\t\tif (ctx.direction === \"backward\") return def.innerType._zod.run(payload, ctx);\n\t\tconst result = def.innerType._zod.run(payload, ctx);\n\t\tif (result instanceof Promise) return result.then(handleReadonlyResult);\n\t\treturn handleReadonlyResult(result);\n\t};\n});\nfunction handleReadonlyResult(payload) {\n\tpayload.value = Object.freeze(payload.value);\n\treturn payload;\n}\nconst $ZodCustom = /* @__PURE__ */ $constructor(\"$ZodCustom\", (inst, def) => {\n\t$ZodCheck.init(inst, def);\n\t$ZodType.init(inst, def);\n\tinst._zod.parse = (payload, _) => {\n\t\treturn payload;\n\t};\n\tinst._zod.check = (payload) => {\n\t\tconst input = payload.value;\n\t\tconst r = def.fn(input);\n\t\tif (r instanceof Promise) return r.then((r) => handleRefineResult(r, payload, input, inst));\n\t\thandleRefineResult(r, payload, input, inst);\n\t};\n});\nfunction handleRefineResult(result, payload, input, inst) {\n\tif (!result) {\n\t\tconst _iss = {\n\t\t\tcode: \"custom\",\n\t\t\tinput,\n\t\t\tinst,\n\t\t\tpath: [...inst._zod.def.path ?? []],\n\t\t\tcontinue: !inst._zod.def.abort\n\t\t};\n\t\tif (inst._zod.def.params) _iss.params = inst._zod.def.params;\n\t\tpayload.issues.push(issue(_iss));\n\t}\n}\n//#endregion\n//#region ../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/registries.js\nvar _a;\nvar $ZodRegistry = class {\n\tconstructor() {\n\t\tthis._map = /* @__PURE__ */ new WeakMap();\n\t\tthis._idmap = /* @__PURE__ */ new Map();\n\t}\n\tadd(schema, ..._meta) {\n\t\tconst meta = _meta[0];\n\t\tthis._map.set(schema, meta);\n\t\tif (meta && typeof meta === \"object\" && \"id\" in meta) this._idmap.set(meta.id, schema);\n\t\treturn this;\n\t}\n\tclear() {\n\t\tthis._map = /* @__PURE__ */ new WeakMap();\n\t\tthis._idmap = /* @__PURE__ */ new Map();\n\t\treturn this;\n\t}\n\tremove(schema) {\n\t\tconst meta = this._map.get(schema);\n\t\tif (meta && typeof meta === \"object\" && \"id\" in meta) this._idmap.delete(meta.id);\n\t\tthis._map.delete(schema);\n\t\treturn this;\n\t}\n\tget(schema) {\n\t\tconst p = schema._zod.parent;\n\t\tif (p) {\n\t\t\tconst pm = { ...this.get(p) ?? {} };\n\t\t\tdelete pm.id;\n\t\t\tconst f = {\n\t\t\t\t...pm,\n\t\t\t\t...this._map.get(schema)\n\t\t\t};\n\t\t\treturn Object.keys(f).length ? f : void 0;\n\t\t}\n\t\treturn this._map.get(schema);\n\t}\n\thas(schema) {\n\t\treturn this._map.has(schema);\n\t}\n};\nfunction registry() {\n\treturn new $ZodRegistry();\n}\n(_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry());\nconst globalRegistry = globalThis.__zod_globalRegistry;\n//#endregion\n//#region ../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/api.js\n/* @__NO_SIDE_EFFECTS__ */\nfunction _string(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _email(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"email\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _guid(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"guid\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _uuid(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"uuid\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _uuidv4(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"uuid\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\tversion: \"v4\",\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _uuidv6(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"uuid\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\tversion: \"v6\",\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _uuidv7(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"uuid\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\tversion: \"v7\",\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _url(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"url\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _emoji(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"emoji\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _nanoid(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"nanoid\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _cuid(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"cuid\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _cuid2(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"cuid2\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _ulid(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"ulid\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _xid(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"xid\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _ksuid(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"ksuid\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _ipv4(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"ipv4\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _ipv6(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"ipv6\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _cidrv4(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"cidrv4\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _cidrv6(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"cidrv6\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _base64(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"base64\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _base64url(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"base64url\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _e164(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"e164\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _jwt(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"jwt\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _isoDateTime(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"datetime\",\n\t\tcheck: \"string_format\",\n\t\toffset: false,\n\t\tlocal: false,\n\t\tprecision: null,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _isoDate(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"date\",\n\t\tcheck: \"string_format\",\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _isoTime(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"time\",\n\t\tcheck: \"string_format\",\n\t\tprecision: null,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _isoDuration(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"duration\",\n\t\tcheck: \"string_format\",\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _number(Class, params) {\n\treturn new Class({\n\t\ttype: \"number\",\n\t\tchecks: [],\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _int(Class, params) {\n\treturn new Class({\n\t\ttype: \"number\",\n\t\tcheck: \"number_format\",\n\t\tabort: false,\n\t\tformat: \"safeint\",\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _boolean(Class, params) {\n\treturn new Class({\n\t\ttype: \"boolean\",\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _unknown(Class) {\n\treturn new Class({ type: \"unknown\" });\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _never(Class, params) {\n\treturn new Class({\n\t\ttype: \"never\",\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _lt(value, params) {\n\treturn new $ZodCheckLessThan({\n\t\tcheck: \"less_than\",\n\t\t...normalizeParams(params),\n\t\tvalue,\n\t\tinclusive: false\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _lte(value, params) {\n\treturn new $ZodCheckLessThan({\n\t\tcheck: \"less_than\",\n\t\t...normalizeParams(params),\n\t\tvalue,\n\t\tinclusive: true\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _gt(value, params) {\n\treturn new $ZodCheckGreaterThan({\n\t\tcheck: \"greater_than\",\n\t\t...normalizeParams(params),\n\t\tvalue,\n\t\tinclusive: false\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _gte(value, params) {\n\treturn new $ZodCheckGreaterThan({\n\t\tcheck: \"greater_than\",\n\t\t...normalizeParams(params),\n\t\tvalue,\n\t\tinclusive: true\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _multipleOf(value, params) {\n\treturn new $ZodCheckMultipleOf({\n\t\tcheck: \"multiple_of\",\n\t\t...normalizeParams(params),\n\t\tvalue\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _maxLength(maximum, params) {\n\treturn new $ZodCheckMaxLength({\n\t\tcheck: \"max_length\",\n\t\t...normalizeParams(params),\n\t\tmaximum\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _minLength(minimum, params) {\n\treturn new $ZodCheckMinLength({\n\t\tcheck: \"min_length\",\n\t\t...normalizeParams(params),\n\t\tminimum\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _length(length, params) {\n\treturn new $ZodCheckLengthEquals({\n\t\tcheck: \"length_equals\",\n\t\t...normalizeParams(params),\n\t\tlength\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _regex(pattern, params) {\n\treturn new $ZodCheckRegex({\n\t\tcheck: \"string_format\",\n\t\tformat: \"regex\",\n\t\t...normalizeParams(params),\n\t\tpattern\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _lowercase(params) {\n\treturn new $ZodCheckLowerCase({\n\t\tcheck: \"string_format\",\n\t\tformat: \"lowercase\",\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _uppercase(params) {\n\treturn new $ZodCheckUpperCase({\n\t\tcheck: \"string_format\",\n\t\tformat: \"uppercase\",\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _includes(includes, params) {\n\treturn new $ZodCheckIncludes({\n\t\tcheck: \"string_format\",\n\t\tformat: \"includes\",\n\t\t...normalizeParams(params),\n\t\tincludes\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _startsWith(prefix, params) {\n\treturn new $ZodCheckStartsWith({\n\t\tcheck: \"string_format\",\n\t\tformat: \"starts_with\",\n\t\t...normalizeParams(params),\n\t\tprefix\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _endsWith(suffix, params) {\n\treturn new $ZodCheckEndsWith({\n\t\tcheck: \"string_format\",\n\t\tformat: \"ends_with\",\n\t\t...normalizeParams(params),\n\t\tsuffix\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _overwrite(tx) {\n\treturn new $ZodCheckOverwrite({\n\t\tcheck: \"overwrite\",\n\t\ttx\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _normalize(form) {\n\treturn /* @__PURE__ */ _overwrite((input) => input.normalize(form));\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _trim() {\n\treturn /* @__PURE__ */ _overwrite((input) => input.trim());\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _toLowerCase() {\n\treturn /* @__PURE__ */ _overwrite((input) => input.toLowerCase());\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _toUpperCase() {\n\treturn /* @__PURE__ */ _overwrite((input) => input.toUpperCase());\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _slugify() {\n\treturn /* @__PURE__ */ _overwrite((input) => slugify(input));\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _array(Class, element, params) {\n\treturn new Class({\n\t\ttype: \"array\",\n\t\telement,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _refine(Class, fn, _params) {\n\treturn new Class({\n\t\ttype: \"custom\",\n\t\tcheck: \"custom\",\n\t\tfn,\n\t\t...normalizeParams(_params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _superRefine(fn) {\n\tconst ch = /* @__PURE__ */ _check((payload) => {\n\t\tpayload.addIssue = (issue$2) => {\n\t\t\tif (typeof issue$2 === \"string\") payload.issues.push(issue(issue$2, payload.value, ch._zod.def));\n\t\t\telse {\n\t\t\t\tconst _issue = issue$2;\n\t\t\t\tif (_issue.fatal) _issue.continue = false;\n\t\t\t\t_issue.code ?? (_issue.code = \"custom\");\n\t\t\t\t_issue.input ?? (_issue.input = payload.value);\n\t\t\t\t_issue.inst ?? (_issue.inst = ch);\n\t\t\t\t_issue.continue ?? (_issue.continue = !ch._zod.def.abort);\n\t\t\t\tpayload.issues.push(issue(_issue));\n\t\t\t}\n\t\t};\n\t\treturn fn(payload.value, payload);\n\t});\n\treturn ch;\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _check(fn, params) {\n\tconst ch = new $ZodCheck({\n\t\tcheck: \"custom\",\n\t\t...normalizeParams(params)\n\t});\n\tch._zod.check = fn;\n\treturn ch;\n}\n//#endregion\n//#region ../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/to-json-schema.js\nfunction initializeContext(params) {\n\tlet target = params?.target ?? \"draft-2020-12\";\n\tif (target === \"draft-4\") target = \"draft-04\";\n\tif (target === \"draft-7\") target = \"draft-07\";\n\treturn {\n\t\tprocessors: params.processors ?? {},\n\t\tmetadataRegistry: params?.metadata ?? globalRegistry,\n\t\ttarget,\n\t\tunrepresentable: params?.unrepresentable ?? \"throw\",\n\t\toverride: params?.override ?? (() => {}),\n\t\tio: params?.io ?? \"output\",\n\t\tcounter: 0,\n\t\tseen: /* @__PURE__ */ new Map(),\n\t\tcycles: params?.cycles ?? \"ref\",\n\t\treused: params?.reused ?? \"inline\",\n\t\texternal: params?.external ?? void 0\n\t};\n}\nfunction process$1(schema, ctx, _params = {\n\tpath: [],\n\tschemaPath: []\n}) {\n\tvar _a;\n\tconst def = schema._zod.def;\n\tconst seen = ctx.seen.get(schema);\n\tif (seen) {\n\t\tseen.count++;\n\t\tif (_params.schemaPath.includes(schema)) seen.cycle = _params.path;\n\t\treturn seen.schema;\n\t}\n\tconst result = {\n\t\tschema: {},\n\t\tcount: 1,\n\t\tcycle: void 0,\n\t\tpath: _params.path\n\t};\n\tctx.seen.set(schema, result);\n\tconst overrideSchema = schema._zod.toJSONSchema?.();\n\tif (overrideSchema) result.schema = overrideSchema;\n\telse {\n\t\tconst params = {\n\t\t\t..._params,\n\t\t\tschemaPath: [..._params.schemaPath, schema],\n\t\t\tpath: _params.path\n\t\t};\n\t\tif (schema._zod.processJSONSchema) schema._zod.processJSONSchema(ctx, result.schema, params);\n\t\telse {\n\t\t\tconst _json = result.schema;\n\t\t\tconst processor = ctx.processors[def.type];\n\t\t\tif (!processor) throw new Error(`[toJSONSchema]: Non-representable type encountered: ${def.type}`);\n\t\t\tprocessor(schema, ctx, _json, params);\n\t\t}\n\t\tconst parent = schema._zod.parent;\n\t\tif (parent) {\n\t\t\tif (!result.ref) result.ref = parent;\n\t\t\tprocess$1(parent, ctx, params);\n\t\t\tctx.seen.get(parent).isParent = true;\n\t\t}\n\t}\n\tconst meta = ctx.metadataRegistry.get(schema);\n\tif (meta) Object.assign(result.schema, meta);\n\tif (ctx.io === \"input\" && isTransforming(schema)) {\n\t\tdelete result.schema.examples;\n\t\tdelete result.schema.default;\n\t}\n\tif (ctx.io === \"input\" && result.schema._prefault) (_a = result.schema).default ?? (_a.default = result.schema._prefault);\n\tdelete result.schema._prefault;\n\treturn ctx.seen.get(schema).schema;\n}\nfunction extractDefs(ctx, schema) {\n\tconst root = ctx.seen.get(schema);\n\tif (!root) throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n\tconst idToSchema = /* @__PURE__ */ new Map();\n\tfor (const entry of ctx.seen.entries()) {\n\t\tconst id = ctx.metadataRegistry.get(entry[0])?.id;\n\t\tif (id) {\n\t\t\tconst existing = idToSchema.get(id);\n\t\t\tif (existing && existing !== entry[0]) throw new Error(`Duplicate schema id \"${id}\" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);\n\t\t\tidToSchema.set(id, entry[0]);\n\t\t}\n\t}\n\tconst makeURI = (entry) => {\n\t\tconst defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n\t\tif (ctx.external) {\n\t\t\tconst externalId = ctx.external.registry.get(entry[0])?.id;\n\t\t\tconst uriGenerator = ctx.external.uri ?? ((id) => id);\n\t\t\tif (externalId) return { ref: uriGenerator(externalId) };\n\t\t\tconst id = entry[1].defId ?? entry[1].schema.id ?? `schema${ctx.counter++}`;\n\t\t\tentry[1].defId = id;\n\t\t\treturn {\n\t\t\t\tdefId: id,\n\t\t\t\tref: `${uriGenerator(\"__shared\")}#/${defsSegment}/${id}`\n\t\t\t};\n\t\t}\n\t\tif (entry[1] === root) return { ref: \"#\" };\n\t\tconst defUriPrefix = `#/${defsSegment}/`;\n\t\tconst defId = entry[1].schema.id ?? `__schema${ctx.counter++}`;\n\t\treturn {\n\t\t\tdefId,\n\t\t\tref: defUriPrefix + defId\n\t\t};\n\t};\n\tconst extractToDef = (entry) => {\n\t\tif (entry[1].schema.$ref) return;\n\t\tconst seen = entry[1];\n\t\tconst { ref, defId } = makeURI(entry);\n\t\tseen.def = { ...seen.schema };\n\t\tif (defId) seen.defId = defId;\n\t\tconst schema = seen.schema;\n\t\tfor (const key in schema) delete schema[key];\n\t\tschema.$ref = ref;\n\t};\n\tif (ctx.cycles === \"throw\") for (const entry of ctx.seen.entries()) {\n\t\tconst seen = entry[1];\n\t\tif (seen.cycle) throw new Error(`Cycle detected: #/${seen.cycle?.join(\"/\")}/<root>\n\nSet the \\`cycles\\` parameter to \\`\"ref\"\\` to resolve cyclical schemas with defs.`);\n\t}\n\tfor (const entry of ctx.seen.entries()) {\n\t\tconst seen = entry[1];\n\t\tif (schema === entry[0]) {\n\t\t\textractToDef(entry);\n\t\t\tcontinue;\n\t\t}\n\t\tif (ctx.external) {\n\t\t\tconst ext = ctx.external.registry.get(entry[0])?.id;\n\t\t\tif (schema !== entry[0] && ext) {\n\t\t\t\textractToDef(entry);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\tif (ctx.metadataRegistry.get(entry[0])?.id) {\n\t\t\textractToDef(entry);\n\t\t\tcontinue;\n\t\t}\n\t\tif (seen.cycle) {\n\t\t\textractToDef(entry);\n\t\t\tcontinue;\n\t\t}\n\t\tif (seen.count > 1) {\n\t\t\tif (ctx.reused === \"ref\") {\n\t\t\t\textractToDef(entry);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t}\n}\nfunction finalize(ctx, schema) {\n\tconst root = ctx.seen.get(schema);\n\tif (!root) throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n\tconst flattenRef = (zodSchema) => {\n\t\tconst seen = ctx.seen.get(zodSchema);\n\t\tif (seen.ref === null) return;\n\t\tconst schema = seen.def ?? seen.schema;\n\t\tconst _cached = { ...schema };\n\t\tconst ref = seen.ref;\n\t\tseen.ref = null;\n\t\tif (ref) {\n\t\t\tflattenRef(ref);\n\t\t\tconst refSeen = ctx.seen.get(ref);\n\t\t\tconst refSchema = refSeen.schema;\n\t\t\tif (refSchema.$ref && (ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\")) {\n\t\t\t\tschema.allOf = schema.allOf ?? [];\n\t\t\t\tschema.allOf.push(refSchema);\n\t\t\t} else Object.assign(schema, refSchema);\n\t\t\tObject.assign(schema, _cached);\n\t\t\tif (zodSchema._zod.parent === ref) for (const key in schema) {\n\t\t\t\tif (key === \"$ref\" || key === \"allOf\") continue;\n\t\t\t\tif (!(key in _cached)) delete schema[key];\n\t\t\t}\n\t\t\tif (refSchema.$ref && refSeen.def) for (const key in schema) {\n\t\t\t\tif (key === \"$ref\" || key === \"allOf\") continue;\n\t\t\t\tif (key in refSeen.def && JSON.stringify(schema[key]) === JSON.stringify(refSeen.def[key])) delete schema[key];\n\t\t\t}\n\t\t}\n\t\tconst parent = zodSchema._zod.parent;\n\t\tif (parent && parent !== ref) {\n\t\t\tflattenRef(parent);\n\t\t\tconst parentSeen = ctx.seen.get(parent);\n\t\t\tif (parentSeen?.schema.$ref) {\n\t\t\t\tschema.$ref = parentSeen.schema.$ref;\n\t\t\t\tif (parentSeen.def) for (const key in schema) {\n\t\t\t\t\tif (key === \"$ref\" || key === \"allOf\") continue;\n\t\t\t\t\tif (key in parentSeen.def && JSON.stringify(schema[key]) === JSON.stringify(parentSeen.def[key])) delete schema[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tctx.override({\n\t\t\tzodSchema,\n\t\t\tjsonSchema: schema,\n\t\t\tpath: seen.path ?? []\n\t\t});\n\t};\n\tfor (const entry of [...ctx.seen.entries()].reverse()) flattenRef(entry[0]);\n\tconst result = {};\n\tif (ctx.target === \"draft-2020-12\") result.$schema = \"https://json-schema.org/draft/2020-12/schema\";\n\telse if (ctx.target === \"draft-07\") result.$schema = \"http://json-schema.org/draft-07/schema#\";\n\telse if (ctx.target === \"draft-04\") result.$schema = \"http://json-schema.org/draft-04/schema#\";\n\telse if (ctx.target === \"openapi-3.0\") {}\n\tif (ctx.external?.uri) {\n\t\tconst id = ctx.external.registry.get(schema)?.id;\n\t\tif (!id) throw new Error(\"Schema is missing an `id` property\");\n\t\tresult.$id = ctx.external.uri(id);\n\t}\n\tObject.assign(result, root.def ?? root.schema);\n\tconst defs = ctx.external?.defs ?? {};\n\tfor (const entry of ctx.seen.entries()) {\n\t\tconst seen = entry[1];\n\t\tif (seen.def && seen.defId) defs[seen.defId] = seen.def;\n\t}\n\tif (ctx.external) {} else if (Object.keys(defs).length > 0) if (ctx.target === \"draft-2020-12\") result.$defs = defs;\n\telse result.definitions = defs;\n\ttry {\n\t\tconst finalized = JSON.parse(JSON.stringify(result));\n\t\tObject.defineProperty(finalized, \"~standard\", {\n\t\t\tvalue: {\n\t\t\t\t...schema[\"~standard\"],\n\t\t\t\tjsonSchema: {\n\t\t\t\t\tinput: createStandardJSONSchemaMethod(schema, \"input\", ctx.processors),\n\t\t\t\t\toutput: createStandardJSONSchemaMethod(schema, \"output\", ctx.processors)\n\t\t\t\t}\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t\twritable: false\n\t\t});\n\t\treturn finalized;\n\t} catch (_err) {\n\t\tthrow new Error(\"Error converting schema to JSON.\");\n\t}\n}\nfunction isTransforming(_schema, _ctx) {\n\tconst ctx = _ctx ?? { seen: /* @__PURE__ */ new Set() };\n\tif (ctx.seen.has(_schema)) return false;\n\tctx.seen.add(_schema);\n\tconst def = _schema._zod.def;\n\tif (def.type === \"transform\") return true;\n\tif (def.type === \"array\") return isTransforming(def.element, ctx);\n\tif (def.type === \"set\") return isTransforming(def.valueType, ctx);\n\tif (def.type === \"lazy\") return isTransforming(def.getter(), ctx);\n\tif (def.type === \"promise\" || def.type === \"optional\" || def.type === \"nonoptional\" || def.type === \"nullable\" || def.type === \"readonly\" || def.type === \"default\" || def.type === \"prefault\") return isTransforming(def.innerType, ctx);\n\tif (def.type === \"intersection\") return isTransforming(def.left, ctx) || isTransforming(def.right, ctx);\n\tif (def.type === \"record\" || def.type === \"map\") return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx);\n\tif (def.type === \"pipe\") return isTransforming(def.in, ctx) || isTransforming(def.out, ctx);\n\tif (def.type === \"object\") {\n\t\tfor (const key in def.shape) if (isTransforming(def.shape[key], ctx)) return true;\n\t\treturn false;\n\t}\n\tif (def.type === \"union\") {\n\t\tfor (const option of def.options) if (isTransforming(option, ctx)) return true;\n\t\treturn false;\n\t}\n\tif (def.type === \"tuple\") {\n\t\tfor (const item of def.items) if (isTransforming(item, ctx)) return true;\n\t\tif (def.rest && isTransforming(def.rest, ctx)) return true;\n\t\treturn false;\n\t}\n\treturn false;\n}\n/**\n* Creates a toJSONSchema method for a schema instance.\n* This encapsulates the logic of initializing context, processing, extracting defs, and finalizing.\n*/\nconst createToJSONSchemaMethod = (schema, processors = {}) => (params) => {\n\tconst ctx = initializeContext({\n\t\t...params,\n\t\tprocessors\n\t});\n\tprocess$1(schema, ctx);\n\textractDefs(ctx, schema);\n\treturn finalize(ctx, schema);\n};\nconst createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) => {\n\tconst { libraryOptions, target } = params ?? {};\n\tconst ctx = initializeContext({\n\t\t...libraryOptions ?? {},\n\t\ttarget,\n\t\tio,\n\t\tprocessors\n\t});\n\tprocess$1(schema, ctx);\n\textractDefs(ctx, schema);\n\treturn finalize(ctx, schema);\n};\n//#endregion\n//#region ../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/json-schema-processors.js\nconst formatMap = {\n\tguid: \"uuid\",\n\turl: \"uri\",\n\tdatetime: \"date-time\",\n\tjson_string: \"json-string\",\n\tregex: \"\"\n};\nconst stringProcessor = (schema, ctx, _json, _params) => {\n\tconst json = _json;\n\tjson.type = \"string\";\n\tconst { minimum, maximum, format, patterns, contentEncoding } = schema._zod.bag;\n\tif (typeof minimum === \"number\") json.minLength = minimum;\n\tif (typeof maximum === \"number\") json.maxLength = maximum;\n\tif (format) {\n\t\tjson.format = formatMap[format] ?? format;\n\t\tif (json.format === \"\") delete json.format;\n\t\tif (format === \"time\") delete json.format;\n\t}\n\tif (contentEncoding) json.contentEncoding = contentEncoding;\n\tif (patterns && patterns.size > 0) {\n\t\tconst regexes = [...patterns];\n\t\tif (regexes.length === 1) json.pattern = regexes[0].source;\n\t\telse if (regexes.length > 1) json.allOf = [...regexes.map((regex) => ({\n\t\t\t...ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\" ? { type: \"string\" } : {},\n\t\t\tpattern: regex.source\n\t\t}))];\n\t}\n};\nconst numberProcessor = (schema, ctx, _json, _params) => {\n\tconst json = _json;\n\tconst { minimum, maximum, format, multipleOf, exclusiveMaximum, exclusiveMinimum } = schema._zod.bag;\n\tif (typeof format === \"string\" && format.includes(\"int\")) json.type = \"integer\";\n\telse json.type = \"number\";\n\tif (typeof exclusiveMinimum === \"number\") if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n\t\tjson.minimum = exclusiveMinimum;\n\t\tjson.exclusiveMinimum = true;\n\t} else json.exclusiveMinimum = exclusiveMinimum;\n\tif (typeof minimum === \"number\") {\n\t\tjson.minimum = minimum;\n\t\tif (typeof exclusiveMinimum === \"number\" && ctx.target !== \"draft-04\") if (exclusiveMinimum >= minimum) delete json.minimum;\n\t\telse delete json.exclusiveMinimum;\n\t}\n\tif (typeof exclusiveMaximum === \"number\") if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n\t\tjson.maximum = exclusiveMaximum;\n\t\tjson.exclusiveMaximum = true;\n\t} else json.exclusiveMaximum = exclusiveMaximum;\n\tif (typeof maximum === \"number\") {\n\t\tjson.maximum = maximum;\n\t\tif (typeof exclusiveMaximum === \"number\" && ctx.target !== \"draft-04\") if (exclusiveMaximum <= maximum) delete json.maximum;\n\t\telse delete json.exclusiveMaximum;\n\t}\n\tif (typeof multipleOf === \"number\") json.multipleOf = multipleOf;\n};\nconst booleanProcessor = (_schema, _ctx, json, _params) => {\n\tjson.type = \"boolean\";\n};\nconst neverProcessor = (_schema, _ctx, json, _params) => {\n\tjson.not = {};\n};\nconst unknownProcessor = (_schema, _ctx, _json, _params) => {};\nconst enumProcessor = (schema, _ctx, json, _params) => {\n\tconst def = schema._zod.def;\n\tconst values = getEnumValues(def.entries);\n\tif (values.every((v) => typeof v === \"number\")) json.type = \"number\";\n\tif (values.every((v) => typeof v === \"string\")) json.type = \"string\";\n\tjson.enum = values;\n};\nconst literalProcessor = (schema, ctx, json, _params) => {\n\tconst def = schema._zod.def;\n\tconst vals = [];\n\tfor (const val of def.values) if (val === void 0) {\n\t\tif (ctx.unrepresentable === \"throw\") throw new Error(\"Literal `undefined` cannot be represented in JSON Schema\");\n\t} else if (typeof val === \"bigint\") if (ctx.unrepresentable === \"throw\") throw new Error(\"BigInt literals cannot be represented in JSON Schema\");\n\telse vals.push(Number(val));\n\telse vals.push(val);\n\tif (vals.length === 0) {} else if (vals.length === 1) {\n\t\tconst val = vals[0];\n\t\tjson.type = val === null ? \"null\" : typeof val;\n\t\tif (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") json.enum = [val];\n\t\telse json.const = val;\n\t} else {\n\t\tif (vals.every((v) => typeof v === \"number\")) json.type = \"number\";\n\t\tif (vals.every((v) => typeof v === \"string\")) json.type = \"string\";\n\t\tif (vals.every((v) => typeof v === \"boolean\")) json.type = \"boolean\";\n\t\tif (vals.every((v) => v === null)) json.type = \"null\";\n\t\tjson.enum = vals;\n\t}\n};\nconst customProcessor = (_schema, ctx, _json, _params) => {\n\tif (ctx.unrepresentable === \"throw\") throw new Error(\"Custom types cannot be represented in JSON Schema\");\n};\nconst transformProcessor = (_schema, ctx, _json, _params) => {\n\tif (ctx.unrepresentable === \"throw\") throw new Error(\"Transforms cannot be represented in JSON Schema\");\n};\nconst arrayProcessor = (schema, ctx, _json, params) => {\n\tconst json = _json;\n\tconst def = schema._zod.def;\n\tconst { minimum, maximum } = schema._zod.bag;\n\tif (typeof minimum === \"number\") json.minItems = minimum;\n\tif (typeof maximum === \"number\") json.maxItems = maximum;\n\tjson.type = \"array\";\n\tjson.items = process$1(def.element, ctx, {\n\t\t...params,\n\t\tpath: [...params.path, \"items\"]\n\t});\n};\nconst objectProcessor = (schema, ctx, _json, params) => {\n\tconst json = _json;\n\tconst def = schema._zod.def;\n\tjson.type = \"object\";\n\tjson.properties = {};\n\tconst shape = def.shape;\n\tfor (const key in shape) json.properties[key] = process$1(shape[key], ctx, {\n\t\t...params,\n\t\tpath: [\n\t\t\t...params.path,\n\t\t\t\"properties\",\n\t\t\tkey\n\t\t]\n\t});\n\tconst allKeys = new Set(Object.keys(shape));\n\tconst requiredKeys = new Set([...allKeys].filter((key) => {\n\t\tconst v = def.shape[key]._zod;\n\t\tif (ctx.io === \"input\") return v.optin === void 0;\n\t\telse return v.optout === void 0;\n\t}));\n\tif (requiredKeys.size > 0) json.required = Array.from(requiredKeys);\n\tif (def.catchall?._zod.def.type === \"never\") json.additionalProperties = false;\n\telse if (!def.catchall) {\n\t\tif (ctx.io === \"output\") json.additionalProperties = false;\n\t} else if (def.catchall) json.additionalProperties = process$1(def.catchall, ctx, {\n\t\t...params,\n\t\tpath: [...params.path, \"additionalProperties\"]\n\t});\n};\nconst unionProcessor = (schema, ctx, json, params) => {\n\tconst def = schema._zod.def;\n\tconst isExclusive = def.inclusive === false;\n\tconst options = def.options.map((x, i) => process$1(x, ctx, {\n\t\t...params,\n\t\tpath: [\n\t\t\t...params.path,\n\t\t\tisExclusive ? \"oneOf\" : \"anyOf\",\n\t\t\ti\n\t\t]\n\t}));\n\tif (isExclusive) json.oneOf = options;\n\telse json.anyOf = options;\n};\nconst intersectionProcessor = (schema, ctx, json, params) => {\n\tconst def = schema._zod.def;\n\tconst a = process$1(def.left, ctx, {\n\t\t...params,\n\t\tpath: [\n\t\t\t...params.path,\n\t\t\t\"allOf\",\n\t\t\t0\n\t\t]\n\t});\n\tconst b = process$1(def.right, ctx, {\n\t\t...params,\n\t\tpath: [\n\t\t\t...params.path,\n\t\t\t\"allOf\",\n\t\t\t1\n\t\t]\n\t});\n\tconst isSimpleIntersection = (val) => \"allOf\" in val && Object.keys(val).length === 1;\n\tjson.allOf = [...isSimpleIntersection(a) ? a.allOf : [a], ...isSimpleIntersection(b) ? b.allOf : [b]];\n};\nconst recordProcessor = (schema, ctx, _json, params) => {\n\tconst json = _json;\n\tconst def = schema._zod.def;\n\tjson.type = \"object\";\n\tconst keyType = def.keyType;\n\tconst patterns = keyType._zod.bag?.patterns;\n\tif (def.mode === \"loose\" && patterns && patterns.size > 0) {\n\t\tconst valueSchema = process$1(def.valueType, ctx, {\n\t\t\t...params,\n\t\t\tpath: [\n\t\t\t\t...params.path,\n\t\t\t\t\"patternProperties\",\n\t\t\t\t\"*\"\n\t\t\t]\n\t\t});\n\t\tjson.patternProperties = {};\n\t\tfor (const pattern of patterns) json.patternProperties[pattern.source] = valueSchema;\n\t} else {\n\t\tif (ctx.target === \"draft-07\" || ctx.target === \"draft-2020-12\") json.propertyNames = process$1(def.keyType, ctx, {\n\t\t\t...params,\n\t\t\tpath: [...params.path, \"propertyNames\"]\n\t\t});\n\t\tjson.additionalProperties = process$1(def.valueType, ctx, {\n\t\t\t...params,\n\t\t\tpath: [...params.path, \"additionalProperties\"]\n\t\t});\n\t}\n\tconst keyValues = keyType._zod.values;\n\tif (keyValues) {\n\t\tconst validKeyValues = [...keyValues].filter((v) => typeof v === \"string\" || typeof v === \"number\");\n\t\tif (validKeyValues.length > 0) json.required = validKeyValues;\n\t}\n};\nconst nullableProcessor = (schema, ctx, json, params) => {\n\tconst def = schema._zod.def;\n\tconst inner = process$1(def.innerType, ctx, params);\n\tconst seen = ctx.seen.get(schema);\n\tif (ctx.target === \"openapi-3.0\") {\n\t\tseen.ref = def.innerType;\n\t\tjson.nullable = true;\n\t} else json.anyOf = [inner, { type: \"null\" }];\n};\nconst nonoptionalProcessor = (schema, ctx, _json, params) => {\n\tconst def = schema._zod.def;\n\tprocess$1(def.innerType, ctx, params);\n\tconst seen = ctx.seen.get(schema);\n\tseen.ref = def.innerType;\n};\nconst defaultProcessor = (schema, ctx, json, params) => {\n\tconst def = schema._zod.def;\n\tprocess$1(def.innerType, ctx, params);\n\tconst seen = ctx.seen.get(schema);\n\tseen.ref = def.innerType;\n\tjson.default = JSON.parse(JSON.stringify(def.defaultValue));\n};\nconst prefaultProcessor = (schema, ctx, json, params) => {\n\tconst def = schema._zod.def;\n\tprocess$1(def.innerType, ctx, params);\n\tconst seen = ctx.seen.get(schema);\n\tseen.ref = def.innerType;\n\tif (ctx.io === \"input\") json._prefault = JSON.parse(JSON.stringify(def.defaultValue));\n};\nconst catchProcessor = (schema, ctx, json, params) => {\n\tconst def = schema._zod.def;\n\tprocess$1(def.innerType, ctx, params);\n\tconst seen = ctx.seen.get(schema);\n\tseen.ref = def.innerType;\n\tlet catchValue;\n\ttry {\n\t\tcatchValue = def.catchValue(void 0);\n\t} catch {\n\t\tthrow new Error(\"Dynamic catch values are not supported in JSON Schema\");\n\t}\n\tjson.default = catchValue;\n};\nconst pipeProcessor = (schema, ctx, _json, params) => {\n\tconst def = schema._zod.def;\n\tconst innerType = ctx.io === \"input\" ? def.in._zod.def.type === \"transform\" ? def.out : def.in : def.out;\n\tprocess$1(innerType, ctx, params);\n\tconst seen = ctx.seen.get(schema);\n\tseen.ref = innerType;\n};\nconst readonlyProcessor = (schema, ctx, json, params) => {\n\tconst def = schema._zod.def;\n\tprocess$1(def.innerType, ctx, params);\n\tconst seen = ctx.seen.get(schema);\n\tseen.ref = def.innerType;\n\tjson.readOnly = true;\n};\nconst optionalProcessor = (schema, ctx, _json, params) => {\n\tconst def = schema._zod.def;\n\tprocess$1(def.innerType, ctx, params);\n\tconst seen = ctx.seen.get(schema);\n\tseen.ref = def.innerType;\n};\n//#endregion\n//#region ../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/iso.js\nconst ZodISODateTime = /* @__PURE__ */ $constructor(\"ZodISODateTime\", (inst, def) => {\n\t$ZodISODateTime.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nfunction datetime(params) {\n\treturn /* @__PURE__ */ _isoDateTime(ZodISODateTime, params);\n}\nconst ZodISODate = /* @__PURE__ */ $constructor(\"ZodISODate\", (inst, def) => {\n\t$ZodISODate.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nfunction date(params) {\n\treturn /* @__PURE__ */ _isoDate(ZodISODate, params);\n}\nconst ZodISOTime = /* @__PURE__ */ $constructor(\"ZodISOTime\", (inst, def) => {\n\t$ZodISOTime.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nfunction time(params) {\n\treturn /* @__PURE__ */ _isoTime(ZodISOTime, params);\n}\nconst ZodISODuration = /* @__PURE__ */ $constructor(\"ZodISODuration\", (inst, def) => {\n\t$ZodISODuration.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nfunction duration(params) {\n\treturn /* @__PURE__ */ _isoDuration(ZodISODuration, params);\n}\n//#endregion\n//#region ../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/errors.js\nconst initializer = (inst, issues) => {\n\t$ZodError.init(inst, issues);\n\tinst.name = \"ZodError\";\n\tObject.defineProperties(inst, {\n\t\tformat: { value: (mapper) => formatError(inst, mapper) },\n\t\tflatten: { value: (mapper) => flattenError(inst, mapper) },\n\t\taddIssue: { value: (issue) => {\n\t\t\tinst.issues.push(issue);\n\t\t\tinst.message = JSON.stringify(inst.issues, jsonStringifyReplacer, 2);\n\t\t} },\n\t\taddIssues: { value: (issues) => {\n\t\t\tinst.issues.push(...issues);\n\t\t\tinst.message = JSON.stringify(inst.issues, jsonStringifyReplacer, 2);\n\t\t} },\n\t\tisEmpty: { get() {\n\t\t\treturn inst.issues.length === 0;\n\t\t} }\n\t});\n};\n$constructor(\"ZodError\", initializer);\nconst ZodRealError = $constructor(\"ZodError\", initializer, { Parent: Error });\n//#endregion\n//#region ../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/parse.js\nconst parse = /* @__PURE__ */ _parse(ZodRealError);\nconst parseAsync = /* @__PURE__ */ _parseAsync(ZodRealError);\nconst safeParse = /* @__PURE__ */ _safeParse(ZodRealError);\nconst safeParseAsync = /* @__PURE__ */ _safeParseAsync(ZodRealError);\nconst encode = /* @__PURE__ */ _encode(ZodRealError);\nconst decode = /* @__PURE__ */ _decode(ZodRealError);\nconst encodeAsync = /* @__PURE__ */ _encodeAsync(ZodRealError);\nconst decodeAsync = /* @__PURE__ */ _decodeAsync(ZodRealError);\nconst safeEncode = /* @__PURE__ */ _safeEncode(ZodRealError);\nconst safeDecode = /* @__PURE__ */ _safeDecode(ZodRealError);\nconst safeEncodeAsync = /* @__PURE__ */ _safeEncodeAsync(ZodRealError);\nconst safeDecodeAsync = /* @__PURE__ */ _safeDecodeAsync(ZodRealError);\n//#endregion\n//#region ../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/schemas.js\nconst ZodType = /* @__PURE__ */ $constructor(\"ZodType\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tObject.assign(inst[\"~standard\"], { jsonSchema: {\n\t\tinput: createStandardJSONSchemaMethod(inst, \"input\"),\n\t\toutput: createStandardJSONSchemaMethod(inst, \"output\")\n\t} });\n\tinst.toJSONSchema = createToJSONSchemaMethod(inst, {});\n\tinst.def = def;\n\tinst.type = def.type;\n\tObject.defineProperty(inst, \"_def\", { value: def });\n\tinst.check = (...checks) => {\n\t\treturn inst.clone(mergeDefs(def, { checks: [...def.checks ?? [], ...checks.map((ch) => typeof ch === \"function\" ? { _zod: {\n\t\t\tcheck: ch,\n\t\t\tdef: { check: \"custom\" },\n\t\t\tonattach: []\n\t\t} } : ch)] }), { parent: true });\n\t};\n\tinst.with = inst.check;\n\tinst.clone = (def, params) => clone(inst, def, params);\n\tinst.brand = () => inst;\n\tinst.register = ((reg, meta) => {\n\t\treg.add(inst, meta);\n\t\treturn inst;\n\t});\n\tinst.parse = (data, params) => parse(inst, data, params, { callee: inst.parse });\n\tinst.safeParse = (data, params) => safeParse(inst, data, params);\n\tinst.parseAsync = async (data, params) => parseAsync(inst, data, params, { callee: inst.parseAsync });\n\tinst.safeParseAsync = async (data, params) => safeParseAsync(inst, data, params);\n\tinst.spa = inst.safeParseAsync;\n\tinst.encode = (data, params) => encode(inst, data, params);\n\tinst.decode = (data, params) => decode(inst, data, params);\n\tinst.encodeAsync = async (data, params) => encodeAsync(inst, data, params);\n\tinst.decodeAsync = async (data, params) => decodeAsync(inst, data, params);\n\tinst.safeEncode = (data, params) => safeEncode(inst, data, params);\n\tinst.safeDecode = (data, params) => safeDecode(inst, data, params);\n\tinst.safeEncodeAsync = async (data, params) => safeEncodeAsync(inst, data, params);\n\tinst.safeDecodeAsync = async (data, params) => safeDecodeAsync(inst, data, params);\n\tinst.refine = (check, params) => inst.check(refine(check, params));\n\tinst.superRefine = (refinement) => inst.check(superRefine(refinement));\n\tinst.overwrite = (fn) => inst.check(/* @__PURE__ */ _overwrite(fn));\n\tinst.optional = () => optional(inst);\n\tinst.exactOptional = () => exactOptional(inst);\n\tinst.nullable = () => nullable(inst);\n\tinst.nullish = () => optional(nullable(inst));\n\tinst.nonoptional = (params) => nonoptional(inst, params);\n\tinst.array = () => array(inst);\n\tinst.or = (arg) => union([inst, arg]);\n\tinst.and = (arg) => intersection(inst, arg);\n\tinst.transform = (tx) => pipe(inst, transform(tx));\n\tinst.default = (def) => _default(inst, def);\n\tinst.prefault = (def) => prefault(inst, def);\n\tinst.catch = (params) => _catch(inst, params);\n\tinst.pipe = (target) => pipe(inst, target);\n\tinst.readonly = () => readonly(inst);\n\tinst.describe = (description) => {\n\t\tconst cl = inst.clone();\n\t\tglobalRegistry.add(cl, { description });\n\t\treturn cl;\n\t};\n\tObject.defineProperty(inst, \"description\", {\n\t\tget() {\n\t\t\treturn globalRegistry.get(inst)?.description;\n\t\t},\n\t\tconfigurable: true\n\t});\n\tinst.meta = (...args) => {\n\t\tif (args.length === 0) return globalRegistry.get(inst);\n\t\tconst cl = inst.clone();\n\t\tglobalRegistry.add(cl, args[0]);\n\t\treturn cl;\n\t};\n\tinst.isOptional = () => inst.safeParse(void 0).success;\n\tinst.isNullable = () => inst.safeParse(null).success;\n\tinst.apply = (fn) => fn(inst);\n\treturn inst;\n});\n/** @internal */\nconst _ZodString = /* @__PURE__ */ $constructor(\"_ZodString\", (inst, def) => {\n\t$ZodString.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => stringProcessor(inst, ctx, json, params);\n\tconst bag = inst._zod.bag;\n\tinst.format = bag.format ?? null;\n\tinst.minLength = bag.minimum ?? null;\n\tinst.maxLength = bag.maximum ?? null;\n\tinst.regex = (...args) => inst.check(/* @__PURE__ */ _regex(...args));\n\tinst.includes = (...args) => inst.check(/* @__PURE__ */ _includes(...args));\n\tinst.startsWith = (...args) => inst.check(/* @__PURE__ */ _startsWith(...args));\n\tinst.endsWith = (...args) => inst.check(/* @__PURE__ */ _endsWith(...args));\n\tinst.min = (...args) => inst.check(/* @__PURE__ */ _minLength(...args));\n\tinst.max = (...args) => inst.check(/* @__PURE__ */ _maxLength(...args));\n\tinst.length = (...args) => inst.check(/* @__PURE__ */ _length(...args));\n\tinst.nonempty = (...args) => inst.check(/* @__PURE__ */ _minLength(1, ...args));\n\tinst.lowercase = (params) => inst.check(/* @__PURE__ */ _lowercase(params));\n\tinst.uppercase = (params) => inst.check(/* @__PURE__ */ _uppercase(params));\n\tinst.trim = () => inst.check(/* @__PURE__ */ _trim());\n\tinst.normalize = (...args) => inst.check(/* @__PURE__ */ _normalize(...args));\n\tinst.toLowerCase = () => inst.check(/* @__PURE__ */ _toLowerCase());\n\tinst.toUpperCase = () => inst.check(/* @__PURE__ */ _toUpperCase());\n\tinst.slugify = () => inst.check(/* @__PURE__ */ _slugify());\n});\nconst ZodString = /* @__PURE__ */ $constructor(\"ZodString\", (inst, def) => {\n\t$ZodString.init(inst, def);\n\t_ZodString.init(inst, def);\n\tinst.email = (params) => inst.check(/* @__PURE__ */ _email(ZodEmail, params));\n\tinst.url = (params) => inst.check(/* @__PURE__ */ _url(ZodURL, params));\n\tinst.jwt = (params) => inst.check(/* @__PURE__ */ _jwt(ZodJWT, params));\n\tinst.emoji = (params) => inst.check(/* @__PURE__ */ _emoji(ZodEmoji, params));\n\tinst.guid = (params) => inst.check(/* @__PURE__ */ _guid(ZodGUID, params));\n\tinst.uuid = (params) => inst.check(/* @__PURE__ */ _uuid(ZodUUID, params));\n\tinst.uuidv4 = (params) => inst.check(/* @__PURE__ */ _uuidv4(ZodUUID, params));\n\tinst.uuidv6 = (params) => inst.check(/* @__PURE__ */ _uuidv6(ZodUUID, params));\n\tinst.uuidv7 = (params) => inst.check(/* @__PURE__ */ _uuidv7(ZodUUID, params));\n\tinst.nanoid = (params) => inst.check(/* @__PURE__ */ _nanoid(ZodNanoID, params));\n\tinst.guid = (params) => inst.check(/* @__PURE__ */ _guid(ZodGUID, params));\n\tinst.cuid = (params) => inst.check(/* @__PURE__ */ _cuid(ZodCUID, params));\n\tinst.cuid2 = (params) => inst.check(/* @__PURE__ */ _cuid2(ZodCUID2, params));\n\tinst.ulid = (params) => inst.check(/* @__PURE__ */ _ulid(ZodULID, params));\n\tinst.base64 = (params) => inst.check(/* @__PURE__ */ _base64(ZodBase64, params));\n\tinst.base64url = (params) => inst.check(/* @__PURE__ */ _base64url(ZodBase64URL, params));\n\tinst.xid = (params) => inst.check(/* @__PURE__ */ _xid(ZodXID, params));\n\tinst.ksuid = (params) => inst.check(/* @__PURE__ */ _ksuid(ZodKSUID, params));\n\tinst.ipv4 = (params) => inst.check(/* @__PURE__ */ _ipv4(ZodIPv4, params));\n\tinst.ipv6 = (params) => inst.check(/* @__PURE__ */ _ipv6(ZodIPv6, params));\n\tinst.cidrv4 = (params) => inst.check(/* @__PURE__ */ _cidrv4(ZodCIDRv4, params));\n\tinst.cidrv6 = (params) => inst.check(/* @__PURE__ */ _cidrv6(ZodCIDRv6, params));\n\tinst.e164 = (params) => inst.check(/* @__PURE__ */ _e164(ZodE164, params));\n\tinst.datetime = (params) => inst.check(datetime(params));\n\tinst.date = (params) => inst.check(date(params));\n\tinst.time = (params) => inst.check(time(params));\n\tinst.duration = (params) => inst.check(duration(params));\n});\nfunction string(params) {\n\treturn /* @__PURE__ */ _string(ZodString, params);\n}\nconst ZodStringFormat = /* @__PURE__ */ $constructor(\"ZodStringFormat\", (inst, def) => {\n\t$ZodStringFormat.init(inst, def);\n\t_ZodString.init(inst, def);\n});\nconst ZodEmail = /* @__PURE__ */ $constructor(\"ZodEmail\", (inst, def) => {\n\t$ZodEmail.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodGUID = /* @__PURE__ */ $constructor(\"ZodGUID\", (inst, def) => {\n\t$ZodGUID.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodUUID = /* @__PURE__ */ $constructor(\"ZodUUID\", (inst, def) => {\n\t$ZodUUID.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodURL = /* @__PURE__ */ $constructor(\"ZodURL\", (inst, def) => {\n\t$ZodURL.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodEmoji = /* @__PURE__ */ $constructor(\"ZodEmoji\", (inst, def) => {\n\t$ZodEmoji.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodNanoID = /* @__PURE__ */ $constructor(\"ZodNanoID\", (inst, def) => {\n\t$ZodNanoID.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodCUID = /* @__PURE__ */ $constructor(\"ZodCUID\", (inst, def) => {\n\t$ZodCUID.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodCUID2 = /* @__PURE__ */ $constructor(\"ZodCUID2\", (inst, def) => {\n\t$ZodCUID2.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodULID = /* @__PURE__ */ $constructor(\"ZodULID\", (inst, def) => {\n\t$ZodULID.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodXID = /* @__PURE__ */ $constructor(\"ZodXID\", (inst, def) => {\n\t$ZodXID.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodKSUID = /* @__PURE__ */ $constructor(\"ZodKSUID\", (inst, def) => {\n\t$ZodKSUID.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodIPv4 = /* @__PURE__ */ $constructor(\"ZodIPv4\", (inst, def) => {\n\t$ZodIPv4.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodIPv6 = /* @__PURE__ */ $constructor(\"ZodIPv6\", (inst, def) => {\n\t$ZodIPv6.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodCIDRv4 = /* @__PURE__ */ $constructor(\"ZodCIDRv4\", (inst, def) => {\n\t$ZodCIDRv4.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodCIDRv6 = /* @__PURE__ */ $constructor(\"ZodCIDRv6\", (inst, def) => {\n\t$ZodCIDRv6.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodBase64 = /* @__PURE__ */ $constructor(\"ZodBase64\", (inst, def) => {\n\t$ZodBase64.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodBase64URL = /* @__PURE__ */ $constructor(\"ZodBase64URL\", (inst, def) => {\n\t$ZodBase64URL.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodE164 = /* @__PURE__ */ $constructor(\"ZodE164\", (inst, def) => {\n\t$ZodE164.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodJWT = /* @__PURE__ */ $constructor(\"ZodJWT\", (inst, def) => {\n\t$ZodJWT.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodNumber = /* @__PURE__ */ $constructor(\"ZodNumber\", (inst, def) => {\n\t$ZodNumber.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => numberProcessor(inst, ctx, json, params);\n\tinst.gt = (value, params) => inst.check(/* @__PURE__ */ _gt(value, params));\n\tinst.gte = (value, params) => inst.check(/* @__PURE__ */ _gte(value, params));\n\tinst.min = (value, params) => inst.check(/* @__PURE__ */ _gte(value, params));\n\tinst.lt = (value, params) => inst.check(/* @__PURE__ */ _lt(value, params));\n\tinst.lte = (value, params) => inst.check(/* @__PURE__ */ _lte(value, params));\n\tinst.max = (value, params) => inst.check(/* @__PURE__ */ _lte(value, params));\n\tinst.int = (params) => inst.check(int(params));\n\tinst.safe = (params) => inst.check(int(params));\n\tinst.positive = (params) => inst.check(/* @__PURE__ */ _gt(0, params));\n\tinst.nonnegative = (params) => inst.check(/* @__PURE__ */ _gte(0, params));\n\tinst.negative = (params) => inst.check(/* @__PURE__ */ _lt(0, params));\n\tinst.nonpositive = (params) => inst.check(/* @__PURE__ */ _lte(0, params));\n\tinst.multipleOf = (value, params) => inst.check(/* @__PURE__ */ _multipleOf(value, params));\n\tinst.step = (value, params) => inst.check(/* @__PURE__ */ _multipleOf(value, params));\n\tinst.finite = () => inst;\n\tconst bag = inst._zod.bag;\n\tinst.minValue = Math.max(bag.minimum ?? Number.NEGATIVE_INFINITY, bag.exclusiveMinimum ?? Number.NEGATIVE_INFINITY) ?? null;\n\tinst.maxValue = Math.min(bag.maximum ?? Number.POSITIVE_INFINITY, bag.exclusiveMaximum ?? Number.POSITIVE_INFINITY) ?? null;\n\tinst.isInt = (bag.format ?? \"\").includes(\"int\") || Number.isSafeInteger(bag.multipleOf ?? .5);\n\tinst.isFinite = true;\n\tinst.format = bag.format ?? null;\n});\nfunction number(params) {\n\treturn /* @__PURE__ */ _number(ZodNumber, params);\n}\nconst ZodNumberFormat = /* @__PURE__ */ $constructor(\"ZodNumberFormat\", (inst, def) => {\n\t$ZodNumberFormat.init(inst, def);\n\tZodNumber.init(inst, def);\n});\nfunction int(params) {\n\treturn /* @__PURE__ */ _int(ZodNumberFormat, params);\n}\nconst ZodBoolean = /* @__PURE__ */ $constructor(\"ZodBoolean\", (inst, def) => {\n\t$ZodBoolean.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => booleanProcessor(inst, ctx, json, params);\n});\nfunction boolean(params) {\n\treturn /* @__PURE__ */ _boolean(ZodBoolean, params);\n}\nconst ZodUnknown = /* @__PURE__ */ $constructor(\"ZodUnknown\", (inst, def) => {\n\t$ZodUnknown.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => unknownProcessor(inst, ctx, json, params);\n});\nfunction unknown() {\n\treturn /* @__PURE__ */ _unknown(ZodUnknown);\n}\nconst ZodNever = /* @__PURE__ */ $constructor(\"ZodNever\", (inst, def) => {\n\t$ZodNever.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => neverProcessor(inst, ctx, json, params);\n});\nfunction never(params) {\n\treturn /* @__PURE__ */ _never(ZodNever, params);\n}\nconst ZodArray = /* @__PURE__ */ $constructor(\"ZodArray\", (inst, def) => {\n\t$ZodArray.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => arrayProcessor(inst, ctx, json, params);\n\tinst.element = def.element;\n\tinst.min = (minLength, params) => inst.check(/* @__PURE__ */ _minLength(minLength, params));\n\tinst.nonempty = (params) => inst.check(/* @__PURE__ */ _minLength(1, params));\n\tinst.max = (maxLength, params) => inst.check(/* @__PURE__ */ _maxLength(maxLength, params));\n\tinst.length = (len, params) => inst.check(/* @__PURE__ */ _length(len, params));\n\tinst.unwrap = () => inst.element;\n});\nfunction array(element, params) {\n\treturn /* @__PURE__ */ _array(ZodArray, element, params);\n}\nconst ZodObject = /* @__PURE__ */ $constructor(\"ZodObject\", (inst, def) => {\n\t$ZodObjectJIT.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => objectProcessor(inst, ctx, json, params);\n\tdefineLazy(inst, \"shape\", () => {\n\t\treturn def.shape;\n\t});\n\tinst.keyof = () => _enum(Object.keys(inst._zod.def.shape));\n\tinst.catchall = (catchall) => inst.clone({\n\t\t...inst._zod.def,\n\t\tcatchall\n\t});\n\tinst.passthrough = () => inst.clone({\n\t\t...inst._zod.def,\n\t\tcatchall: unknown()\n\t});\n\tinst.loose = () => inst.clone({\n\t\t...inst._zod.def,\n\t\tcatchall: unknown()\n\t});\n\tinst.strict = () => inst.clone({\n\t\t...inst._zod.def,\n\t\tcatchall: never()\n\t});\n\tinst.strip = () => inst.clone({\n\t\t...inst._zod.def,\n\t\tcatchall: void 0\n\t});\n\tinst.extend = (incoming) => {\n\t\treturn extend(inst, incoming);\n\t};\n\tinst.safeExtend = (incoming) => {\n\t\treturn safeExtend(inst, incoming);\n\t};\n\tinst.merge = (other) => merge(inst, other);\n\tinst.pick = (mask) => pick(inst, mask);\n\tinst.omit = (mask) => omit(inst, mask);\n\tinst.partial = (...args) => partial(ZodOptional, inst, args[0]);\n\tinst.required = (...args) => required(ZodNonOptional, inst, args[0]);\n});\nfunction object(shape, params) {\n\treturn new ZodObject({\n\t\ttype: \"object\",\n\t\tshape: shape ?? {},\n\t\t...normalizeParams(params)\n\t});\n}\nconst ZodUnion = /* @__PURE__ */ $constructor(\"ZodUnion\", (inst, def) => {\n\t$ZodUnion.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => unionProcessor(inst, ctx, json, params);\n\tinst.options = def.options;\n});\nfunction union(options, params) {\n\treturn new ZodUnion({\n\t\ttype: \"union\",\n\t\toptions,\n\t\t...normalizeParams(params)\n\t});\n}\nconst ZodDiscriminatedUnion = /* @__PURE__ */ $constructor(\"ZodDiscriminatedUnion\", (inst, def) => {\n\tZodUnion.init(inst, def);\n\t$ZodDiscriminatedUnion.init(inst, def);\n});\nfunction discriminatedUnion(discriminator, options, params) {\n\treturn new ZodDiscriminatedUnion({\n\t\ttype: \"union\",\n\t\toptions,\n\t\tdiscriminator,\n\t\t...normalizeParams(params)\n\t});\n}\nconst ZodIntersection = /* @__PURE__ */ $constructor(\"ZodIntersection\", (inst, def) => {\n\t$ZodIntersection.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => intersectionProcessor(inst, ctx, json, params);\n});\nfunction intersection(left, right) {\n\treturn new ZodIntersection({\n\t\ttype: \"intersection\",\n\t\tleft,\n\t\tright\n\t});\n}\nconst ZodRecord = /* @__PURE__ */ $constructor(\"ZodRecord\", (inst, def) => {\n\t$ZodRecord.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => recordProcessor(inst, ctx, json, params);\n\tinst.keyType = def.keyType;\n\tinst.valueType = def.valueType;\n});\nfunction record(keyType, valueType, params) {\n\treturn new ZodRecord({\n\t\ttype: \"record\",\n\t\tkeyType,\n\t\tvalueType,\n\t\t...normalizeParams(params)\n\t});\n}\nconst ZodEnum = /* @__PURE__ */ $constructor(\"ZodEnum\", (inst, def) => {\n\t$ZodEnum.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => enumProcessor(inst, ctx, json, params);\n\tinst.enum = def.entries;\n\tinst.options = Object.values(def.entries);\n\tconst keys = new Set(Object.keys(def.entries));\n\tinst.extract = (values, params) => {\n\t\tconst newEntries = {};\n\t\tfor (const value of values) if (keys.has(value)) newEntries[value] = def.entries[value];\n\t\telse throw new Error(`Key ${value} not found in enum`);\n\t\treturn new ZodEnum({\n\t\t\t...def,\n\t\t\tchecks: [],\n\t\t\t...normalizeParams(params),\n\t\t\tentries: newEntries\n\t\t});\n\t};\n\tinst.exclude = (values, params) => {\n\t\tconst newEntries = { ...def.entries };\n\t\tfor (const value of values) if (keys.has(value)) delete newEntries[value];\n\t\telse throw new Error(`Key ${value} not found in enum`);\n\t\treturn new ZodEnum({\n\t\t\t...def,\n\t\t\tchecks: [],\n\t\t\t...normalizeParams(params),\n\t\t\tentries: newEntries\n\t\t});\n\t};\n});\nfunction _enum(values, params) {\n\treturn new ZodEnum({\n\t\ttype: \"enum\",\n\t\tentries: Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values,\n\t\t...normalizeParams(params)\n\t});\n}\nconst ZodLiteral = /* @__PURE__ */ $constructor(\"ZodLiteral\", (inst, def) => {\n\t$ZodLiteral.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => literalProcessor(inst, ctx, json, params);\n\tinst.values = new Set(def.values);\n\tObject.defineProperty(inst, \"value\", { get() {\n\t\tif (def.values.length > 1) throw new Error(\"This schema contains multiple valid literal values. Use `.values` instead.\");\n\t\treturn def.values[0];\n\t} });\n});\nfunction literal(value, params) {\n\treturn new ZodLiteral({\n\t\ttype: \"literal\",\n\t\tvalues: Array.isArray(value) ? value : [value],\n\t\t...normalizeParams(params)\n\t});\n}\nconst ZodTransform = /* @__PURE__ */ $constructor(\"ZodTransform\", (inst, def) => {\n\t$ZodTransform.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => transformProcessor(inst, ctx, json, params);\n\tinst._zod.parse = (payload, _ctx) => {\n\t\tif (_ctx.direction === \"backward\") throw new $ZodEncodeError(inst.constructor.name);\n\t\tpayload.addIssue = (issue$1) => {\n\t\t\tif (typeof issue$1 === \"string\") payload.issues.push(issue(issue$1, payload.value, def));\n\t\t\telse {\n\t\t\t\tconst _issue = issue$1;\n\t\t\t\tif (_issue.fatal) _issue.continue = false;\n\t\t\t\t_issue.code ?? (_issue.code = \"custom\");\n\t\t\t\t_issue.input ?? (_issue.input = payload.value);\n\t\t\t\t_issue.inst ?? (_issue.inst = inst);\n\t\t\t\tpayload.issues.push(issue(_issue));\n\t\t\t}\n\t\t};\n\t\tconst output = def.transform(payload.value, payload);\n\t\tif (output instanceof Promise) return output.then((output) => {\n\t\t\tpayload.value = output;\n\t\t\treturn payload;\n\t\t});\n\t\tpayload.value = output;\n\t\treturn payload;\n\t};\n});\nfunction transform(fn) {\n\treturn new ZodTransform({\n\t\ttype: \"transform\",\n\t\ttransform: fn\n\t});\n}\nconst ZodOptional = /* @__PURE__ */ $constructor(\"ZodOptional\", (inst, def) => {\n\t$ZodOptional.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => optionalProcessor(inst, ctx, json, params);\n\tinst.unwrap = () => inst._zod.def.innerType;\n});\nfunction optional(innerType) {\n\treturn new ZodOptional({\n\t\ttype: \"optional\",\n\t\tinnerType\n\t});\n}\nconst ZodExactOptional = /* @__PURE__ */ $constructor(\"ZodExactOptional\", (inst, def) => {\n\t$ZodExactOptional.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => optionalProcessor(inst, ctx, json, params);\n\tinst.unwrap = () => inst._zod.def.innerType;\n});\nfunction exactOptional(innerType) {\n\treturn new ZodExactOptional({\n\t\ttype: \"optional\",\n\t\tinnerType\n\t});\n}\nconst ZodNullable = /* @__PURE__ */ $constructor(\"ZodNullable\", (inst, def) => {\n\t$ZodNullable.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => nullableProcessor(inst, ctx, json, params);\n\tinst.unwrap = () => inst._zod.def.innerType;\n});\nfunction nullable(innerType) {\n\treturn new ZodNullable({\n\t\ttype: \"nullable\",\n\t\tinnerType\n\t});\n}\nconst ZodDefault = /* @__PURE__ */ $constructor(\"ZodDefault\", (inst, def) => {\n\t$ZodDefault.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => defaultProcessor(inst, ctx, json, params);\n\tinst.unwrap = () => inst._zod.def.innerType;\n\tinst.removeDefault = inst.unwrap;\n});\nfunction _default(innerType, defaultValue) {\n\treturn new ZodDefault({\n\t\ttype: \"default\",\n\t\tinnerType,\n\t\tget defaultValue() {\n\t\t\treturn typeof defaultValue === \"function\" ? defaultValue() : shallowClone(defaultValue);\n\t\t}\n\t});\n}\nconst ZodPrefault = /* @__PURE__ */ $constructor(\"ZodPrefault\", (inst, def) => {\n\t$ZodPrefault.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => prefaultProcessor(inst, ctx, json, params);\n\tinst.unwrap = () => inst._zod.def.innerType;\n});\nfunction prefault(innerType, defaultValue) {\n\treturn new ZodPrefault({\n\t\ttype: \"prefault\",\n\t\tinnerType,\n\t\tget defaultValue() {\n\t\t\treturn typeof defaultValue === \"function\" ? defaultValue() : shallowClone(defaultValue);\n\t\t}\n\t});\n}\nconst ZodNonOptional = /* @__PURE__ */ $constructor(\"ZodNonOptional\", (inst, def) => {\n\t$ZodNonOptional.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => nonoptionalProcessor(inst, ctx, json, params);\n\tinst.unwrap = () => inst._zod.def.innerType;\n});\nfunction nonoptional(innerType, params) {\n\treturn new ZodNonOptional({\n\t\ttype: \"nonoptional\",\n\t\tinnerType,\n\t\t...normalizeParams(params)\n\t});\n}\nconst ZodCatch = /* @__PURE__ */ $constructor(\"ZodCatch\", (inst, def) => {\n\t$ZodCatch.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => catchProcessor(inst, ctx, json, params);\n\tinst.unwrap = () => inst._zod.def.innerType;\n\tinst.removeCatch = inst.unwrap;\n});\nfunction _catch(innerType, catchValue) {\n\treturn new ZodCatch({\n\t\ttype: \"catch\",\n\t\tinnerType,\n\t\tcatchValue: typeof catchValue === \"function\" ? catchValue : () => catchValue\n\t});\n}\nconst ZodPipe = /* @__PURE__ */ $constructor(\"ZodPipe\", (inst, def) => {\n\t$ZodPipe.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => pipeProcessor(inst, ctx, json, params);\n\tinst.in = def.in;\n\tinst.out = def.out;\n});\nfunction pipe(in_, out) {\n\treturn new ZodPipe({\n\t\ttype: \"pipe\",\n\t\tin: in_,\n\t\tout\n\t});\n}\nconst ZodReadonly = /* @__PURE__ */ $constructor(\"ZodReadonly\", (inst, def) => {\n\t$ZodReadonly.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => readonlyProcessor(inst, ctx, json, params);\n\tinst.unwrap = () => inst._zod.def.innerType;\n});\nfunction readonly(innerType) {\n\treturn new ZodReadonly({\n\t\ttype: \"readonly\",\n\t\tinnerType\n\t});\n}\nconst ZodCustom = /* @__PURE__ */ $constructor(\"ZodCustom\", (inst, def) => {\n\t$ZodCustom.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => customProcessor(inst, ctx, json, params);\n});\nfunction refine(fn, _params = {}) {\n\treturn /* @__PURE__ */ _refine(ZodCustom, fn, _params);\n}\nfunction superRefine(fn) {\n\treturn /* @__PURE__ */ _superRefine(fn);\n}\n//#endregion\n//#region ../internals-schemas/dist/index.js\nconst REGISTRY_URL = process.env.TANK_REGISTRY_URL || \"https://www.tankpkg.dev\";\nconst MANIFEST_FILENAME = \"tank.json\";\nconst LEGACY_MANIFEST_FILENAME = \"skills.json\";\nconst LOCKFILE_FILENAME = \"tank.lock\";\nconst supportLevelSchema = _enum([\n\t\"full\",\n\t\"degraded\",\n\t\"none\"\n]);\nconst adapterCapabilitiesSchema = object({\n\tinstruction: supportLevelSchema,\n\thook: supportLevelSchema,\n\ttool: supportLevelSchema,\n\tagent: supportLevelSchema,\n\trule: supportLevelSchema,\n\tresource: supportLevelSchema,\n\tprompt: supportLevelSchema\n}).strict();\nconst compilationWarningSchema = object({\n\tlevel: _enum([\"degraded\", \"skipped\"]),\n\tatomKind: string(),\n\tmessage: string()\n}).strict();\nobject({\n\tfiles: array(object({\n\t\tpath: string().min(1),\n\t\tcontent: string()\n\t}).strict()),\n\twarnings: array(compilationWarningSchema)\n}).strict();\nobject({\n\tname: string().min(1, \"Adapter name must not be empty\"),\n\tsupportedRange: string().min(1, \"Supported range must not be empty\"),\n\tcapabilities: adapterCapabilitiesSchema\n}).strict();\n_enum([\n\t\"instruction\",\n\t\"hook\",\n\t\"tool\",\n\t\"agent\",\n\t\"rule\",\n\t\"resource\",\n\t\"prompt\"\n]);\nconst extensionBagSchema = record(string(), unknown()).optional();\nconst modelTierSchema = _enum([\n\t\"fast\",\n\t\"balanced\",\n\t\"powerful\",\n\t\"custom\"\n]);\nmodelTierSchema.options;\nconst canonicalToolNameSchema = _enum([\n\t\"bash\",\n\t\"read\",\n\t\"write\",\n\t\"edit\",\n\t\"grep\",\n\t\"glob\",\n\t\"lsp\",\n\t\"mcp\",\n\t\"browser\",\n\t\"fetch\",\n\t\"git\",\n\t\"task\",\n\t\"notebook\"\n]);\ncanonicalToolNameSchema.options;\nconst agentIRSchema = object({\n\tkind: literal(\"agent\"),\n\tname: string().min(1, \"Agent name must not be empty\"),\n\trole: string().min(1, \"Agent role must not be empty\"),\n\ttools: array(canonicalToolNameSchema.or(string().min(1))).optional(),\n\tmodel: modelTierSchema.or(string().min(1)).optional(),\n\treadonly: boolean().optional(),\n\textensions: extensionBagSchema\n}).strict();\nconst hookEventSchema = _enum([\n\t\"pre-tool-use\",\n\t\"post-tool-use\",\n\t\"pre-file-read\",\n\t\"post-file-read\",\n\t\"pre-file-write\",\n\t\"post-file-write\",\n\t\"file-edited\",\n\t\"file-watcher-updated\",\n\t\"pre-command\",\n\t\"post-command\",\n\t\"pre-mcp-tool-use\",\n\t\"post-mcp-tool-use\",\n\t\"session-created\",\n\t\"session-updated\",\n\t\"session-idle\",\n\t\"session-error\",\n\t\"session-deleted\",\n\t\"pre-stop\",\n\t\"task-start\",\n\t\"task-resume\",\n\t\"task-complete\",\n\t\"task-cancel\",\n\t\"pre-user-prompt\",\n\t\"post-response\",\n\t\"message-updated\",\n\t\"message-removed\",\n\t\"system-prompt-transform\",\n\t\"pre-context-compact\",\n\t\"post-context-compact\",\n\t\"permission-asked\",\n\t\"permission-replied\",\n\t\"lsp-diagnostics\",\n\t\"lsp-updated\",\n\t\"subagent-start\",\n\t\"subagent-complete\",\n\t\"subagent-tool-use\",\n\t\"shell-env\",\n\t\"todo-updated\",\n\t\"installation-updated\"\n]);\nhookEventSchema.options;\nconst hookActionIRSchema = object({\n\taction: _enum([\n\t\t\"block\",\n\t\t\"allow\",\n\t\t\"rewrite\",\n\t\t\"injectContext\"\n\t]),\n\tmatch: string().optional(),\n\treason: string().optional(),\n\tvalue: string().optional()\n}).strict();\nconst hookHandlerIRSchema = discriminatedUnion(\"type\", [object({\n\ttype: literal(\"dsl\"),\n\tactions: array(hookActionIRSchema).min(1, \"DSL handler must have at least one action\")\n}).strict(), object({\n\ttype: literal(\"js\"),\n\tentry: string().min(1, \"JS handler entry path must not be empty\")\n}).strict()]);\nconst hookIRSchema = object({\n\tkind: literal(\"hook\"),\n\tname: string().optional(),\n\tevent: hookEventSchema,\n\tmatch: canonicalToolNameSchema.or(string().min(1)).optional(),\n\thandler: hookHandlerIRSchema,\n\tscope: _enum([\"project\", \"global\"]).optional(),\n\textensions: extensionBagSchema\n}).strict();\nconst instructionIRSchema = object({\n\tkind: literal(\"instruction\"),\n\tcontent: string().min(1, \"Content path must not be empty\"),\n\tscope: _enum([\n\t\t\"project\",\n\t\t\"global\",\n\t\t\"directory\"\n\t]).optional(),\n\tglobs: array(string()).optional(),\n\textensions: extensionBagSchema\n}).strict();\nconst networkPermissionsSchema = object({ outbound: array(string()).optional() }).strict();\nconst filesystemPermissionsSchema = object({\n\tread: array(string()).optional(),\n\twrite: array(string()).optional()\n}).strict();\nconst permissionsSchema = object({\n\tnetwork: networkPermissionsSchema.optional(),\n\tfilesystem: filesystemPermissionsSchema.optional(),\n\tsubprocess: boolean().optional()\n}).strict();\n_enum([\"user\", \"admin\"]);\n_enum([\n\t\"active\",\n\t\"suspended\",\n\t\"banned\"\n]);\n_enum([\n\t\"active\",\n\t\"deprecated\",\n\t\"quarantined\",\n\t\"removed\"\n]);\n_enum([\n\t\"user.ban\",\n\t\"user.suspend\",\n\t\"user.unban\",\n\t\"user.promote\",\n\t\"user.demote\",\n\t\"skill.quarantine\",\n\t\"skill.remove\",\n\t\"skill.deprecate\",\n\t\"skill.restore\",\n\t\"skill.feature\",\n\t\"skill.unfeature\",\n\t\"org.suspend\",\n\t\"org.member.remove\",\n\t\"org.delete\"\n]);\nconst commandSchema = string().min(1, \"command must not be empty\");\nconst argSchema = array(string()).default([]);\nconst envSchema = record(string(), string()).optional();\nconst remoteUrlSchema = string().url(\"remote must be a valid URL\");\nconst mcpServerSchema = union([object({\n\tcommand: commandSchema,\n\targs: argSchema,\n\tenv: envSchema,\n\trequires_auth: literal(false).optional()\n}).strict(), object({\n\tremote: remoteUrlSchema,\n\trequires_auth: boolean().default(false),\n\tenv: envSchema\n}).strict()]);\nconst baseManifestFields = {\n\tname: string().min(1, \"Name must not be empty\").max(214, `Name must be 214 characters or fewer`).regex(/^@[a-z0-9-]+\\/[a-z0-9][a-z0-9-]*$/, \"Name must be scoped (@org/name), lowercase alphanumeric and hyphens\"),\n\tversion: string().regex(/^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9.-]+)?(\\+[a-zA-Z0-9.-]+)?$/, \"Version must be valid semver\"),\n\tdescription: string().max(500, `Description must be 500 characters or fewer`).optional(),\n\tskills: record(string(), string()).optional(),\n\tpermissions: permissionsSchema.optional(),\n\trepository: string().url(\"Repository must be a valid URL\").optional(),\n\tvisibility: _enum([\"public\", \"private\"]).optional(),\n\taudit: object({ min_score: number().min(0).max(10) }).strict().optional(),\n\tmcp_server: mcpServerSchema.optional()\n};\nobject(baseManifestFields).strict();\nconst publishConfigSchema = object({\n\tbuild: string().min(1, \"publish.build must be a non-empty shell command\").optional(),\n\tfiles: array(string().min(1)).optional()\n}).strict();\nobject({\n\t...baseManifestFields,\n\tatoms: array(record(string(), unknown())).optional(),\n\tincludes: array(string()).optional(),\n\tpublish: publishConfigSchema.optional()\n}).strict();\nconst promptIRSchema = object({\n\tkind: literal(\"prompt\"),\n\tname: string().min(1, \"Prompt name must not be empty\"),\n\tdescription: string().optional(),\n\ttemplate: string().min(1, \"Prompt template path must not be empty\"),\n\targuments: array(object({\n\t\tname: string(),\n\t\tdescription: string().optional(),\n\t\trequired: boolean().optional()\n\t}).strict()).optional(),\n\textensions: extensionBagSchema\n}).strict();\nconst resourceIRSchema = object({\n\tkind: literal(\"resource\"),\n\tname: string().optional(),\n\turi: string().min(1, \"Resource URI must not be empty\"),\n\tdescription: string().optional(),\n\tmimeType: string().optional(),\n\textensions: extensionBagSchema\n}).strict();\nconst ruleIRSchema = object({\n\tkind: literal(\"rule\"),\n\tname: string().optional(),\n\tevent: hookEventSchema,\n\tmatch: canonicalToolNameSchema.or(string().min(1)).optional(),\n\tpolicy: _enum([\n\t\t\"block\",\n\t\t\"allow\",\n\t\t\"warn\"\n\t]),\n\treason: string().optional(),\n\textensions: extensionBagSchema\n}).strict();\nconst mcpServerConfigSchema = object({\n\tcommand: string().min(1).optional(),\n\targs: array(string()).optional(),\n\tenv: record(string(), string()).optional(),\n\truntime: string().min(1).optional(),\n\tentry: string().min(1).optional(),\n\tpackage: string().min(1).optional()\n}).strict().refine((data) => Boolean(data.command) || Boolean(data.runtime && (data.entry || data.package)), \"MCP config must have either \\\"command\\\" or \\\"runtime\\\" plus one of \\\"entry\\\"/\\\"package\\\"\");\nconst toolIRSchema = object({\n\tkind: literal(\"tool\"),\n\tname: string().min(1, \"Tool name must not be empty\"),\n\tdescription: string().optional(),\n\tmcp: mcpServerConfigSchema.optional(),\n\textensions: extensionBagSchema\n}).strict();\nconst NAME_PATTERN = /^@[a-z0-9-]+\\/[a-z0-9][a-z0-9-]*$/;\nconst SEMVER_PATTERN = /^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9.-]+)?(\\+[a-zA-Z0-9.-]+)?$/;\nconst atomIRSchema = discriminatedUnion(\"kind\", [\n\tinstructionIRSchema,\n\thookIRSchema,\n\ttoolIRSchema,\n\tagentIRSchema,\n\truleIRSchema,\n\tresourceIRSchema,\n\tpromptIRSchema\n]);\nobject({\n\tname: string().min(1, \"Name must not be empty\").max(214, `Name must be 214 characters or fewer`).regex(NAME_PATTERN, \"Name must be scoped (@org/name), lowercase alphanumeric and hyphens\"),\n\tversion: string().regex(SEMVER_PATTERN, \"Version must be valid semver\"),\n\tdescription: string().max(500).optional(),\n\tatoms: array(atomIRSchema),\n\tincludes: array(string()).optional(),\n\tskills: record(string(), string()).optional(),\n\tpermissions: permissionsSchema.optional(),\n\trepository: string().url(\"Repository must be a valid URL\").optional(),\n\tvisibility: _enum([\"public\", \"private\"]).optional(),\n\taudit: object({ min_score: number().min(0).max(10) }).strict().optional(),\n\tpublish: publishConfigSchema.optional()\n}).strict();\nconst perToolOverrideSchema = object({\n\tscan: boolean().optional(),\n\tblockOnMatch: boolean().optional()\n}).strict();\nobject({\n\tperfBudgetMs: number().positive().optional(),\n\tblockOnMatch: boolean().optional(),\n\tresetPinsOnMismatch: boolean().optional(),\n\tperTool: record(string(), perToolOverrideSchema).optional()\n}).strict();\nconst SKILL_SOURCES = [\n\t\"registry\",\n\t\"github\",\n\t\"clawhub\",\n\t\"skills_sh\",\n\t\"agentskills_il\",\n\t\"npm\",\n\t\"local\"\n];\nconst SCAN_VERDICTS = [\n\t\"pass\",\n\t\"pass_with_notes\",\n\t\"flagged\",\n\t\"fail\",\n\t\"error\"\n];\nconst lockedSkillV1Schema = object({\n\tresolved: string().url(),\n\tintegrity: string().regex(/^sha512-/, \"Integrity must start with sha512-\"),\n\tpermissions: permissionsSchema,\n\taudit_score: number().min(0).max(10).nullable()\n});\nobject({\n\tlockfileVersion: literal(1),\n\tskills: record(string(), lockedSkillV1Schema)\n});\nconst lockedSkillSchema = object({\n\tresolved: string().url(),\n\tintegrity: string().regex(/^sha512-/, \"Integrity must start with sha512-\"),\n\tpermissions: permissionsSchema,\n\taudit_score: number().min(0).max(10).nullable(),\n\tdependencies: record(string(), string()).optional(),\n\tsource: _enum(SKILL_SOURCES).optional(),\n\tscan_verdict: _enum(SCAN_VERDICTS).optional(),\n\tscanned_at: string().optional()\n});\nobject({\n\tlockfileVersion: union([literal(1), literal(2)]),\n\tskills: record(string(), lockedSkillSchema)\n});\n//#endregion\n//#region src/constants.ts\nconst SDK_VERSION = \"0.10.6\";\nconst DEFAULT_CONFIG_DIR = \"~/.tank\";\nconst DEFAULT_MAX_RETRIES = 3;\nconst DEFAULT_TIMEOUT_MS = 3e4;\nconst SUPPORTED_AGENTS = [\n\t\"opencode\",\n\t\"cursor\",\n\t\"windsurf\",\n\t\"claude-code\",\n\t\"codex\"\n];\nconst AGENT_PATHS = {\n\topencode: \".opencode\",\n\tcursor: \".cursor\",\n\twindsurf: \".windsurf\",\n\t\"claude-code\": \".claude\",\n\tcodex: \".codex\"\n};\n//#endregion\n//#region src/errors.ts\n/**\n* Base error for all Tank SDK errors.\n* All typed errors extend this — catch TankError to handle any SDK failure.\n*/\nvar TankError = class extends Error {\n\t/** HTTP status code (if applicable) */\n\tstatus;\n\t/** Original cause of the error */\n\tcause;\n\tconstructor(message, options) {\n\t\tsuper(message, options?.cause ? { cause: options.cause } : void 0);\n\t\tthis.name = \"TankError\";\n\t\tthis.status = options?.status;\n\t\tif (options?.cause) this.cause = options.cause;\n\t}\n};\n/** Thrown when authentication fails (401). */\nvar TankAuthError = class extends TankError {\n\tconstructor(message = \"Authentication failed. Valid API key required.\") {\n\t\tsuper(message, { status: 401 });\n\t\tthis.name = \"TankAuthError\";\n\t}\n};\n/** Thrown when a requested resource is not found (404). */\nvar TankNotFoundError = class extends TankError {\n\t/** The skill name that was not found (if applicable) */\n\tskillName;\n\tconstructor(message, skillName) {\n\t\tsuper(message, { status: 404 });\n\t\tthis.name = \"TankNotFoundError\";\n\t\tthis.skillName = skillName;\n\t}\n};\n/** Thrown when the user lacks permission for an action (403). */\nvar TankPermissionError = class extends TankError {\n\t/** Required permissions that exceeded the budget */\n\trequired;\n\t/** Allowed permissions in the project budget */\n\tallowed;\n\tconstructor(message, details) {\n\t\tsuper(message, { status: 403 });\n\t\tthis.name = \"TankPermissionError\";\n\t\tthis.required = details?.required;\n\t\tthis.allowed = details?.allowed;\n\t}\n};\n/** Thrown when a network request fails (connection, timeout, DNS). */\nvar TankNetworkError = class extends TankError {\n\tconstructor(message, cause) {\n\t\tsuper(message, { cause });\n\t\tthis.name = \"TankNetworkError\";\n\t}\n};\n/** Thrown when SHA-512 integrity verification fails. */\nvar TankIntegrityError = class extends TankError {\n\t/** Expected integrity hash */\n\texpected;\n\t/** Actual computed hash */\n\tactual;\n\tconstructor(message, details) {\n\t\tsuper(message);\n\t\tthis.name = \"TankIntegrityError\";\n\t\tthis.expected = details?.expected;\n\t\tthis.actual = details?.actual;\n\t}\n};\n/** Thrown when dependency resolution encounters a conflict. */\nvar TankConflictError = class extends TankError {\n\t/** Details about the resolution failure */\n\tdetails;\n\tconstructor(message, details) {\n\t\tsuper(message, { status: 409 });\n\t\tthis.name = \"TankConflictError\";\n\t\tthis.details = details;\n\t}\n};\n//#endregion\n//#region src/client.ts\nfunction resolveConfigDir(configDir) {\n\tif (configDir) return configDir.replace(/^~/, os.homedir());\n\treturn path.join(os.homedir(), \".tank\");\n}\nfunction readConfigFile(configDir) {\n\ttry {\n\t\tconst configPath = path.join(resolveConfigDir(configDir), \"config.json\");\n\t\tconst raw = fs.readFileSync(configPath, \"utf-8\");\n\t\treturn JSON.parse(raw);\n\t} catch {\n\t\treturn {};\n\t}\n}\nfunction resolveToken(options, config) {\n\tif (options.token) return options.token;\n\tconst envToken = process.env.TANK_TOKEN?.trim();\n\tif (envToken) return envToken;\n\treturn config.token;\n}\nfunction parseRegistryOrigin(raw) {\n\tlet url;\n\ttry {\n\t\turl = new URL(raw);\n\t} catch {\n\t\tthrow new Error(`Invalid registry URL: ${raw}`);\n\t}\n\tif (url.username || url.password) throw new Error(`Registry URL must not contain credentials: ${raw}`);\n\tif (url.protocol !== \"https:\" && url.protocol !== \"http:\") throw new Error(`Registry URL must use https or http: ${raw}`);\n\treturn url.origin;\n}\nfunction resolveRegistryUrl(options, config) {\n\treturn parseRegistryOrigin(options.registryUrl || process.env.TANK_REGISTRY_URL?.trim() || config.registry || REGISTRY_URL);\n}\nconst MAX_DOWNLOAD_BYTES$1 = 100 * 1024 * 1024;\nfunction sleep(ms) {\n\treturn new Promise((r) => setTimeout(r, ms));\n}\nvar TankClient = class {\n\ttoken;\n\tregistryUrl;\n\tmaxRetries;\n\ttimeoutMs;\n\tconstructor(options = {}) {\n\t\tconst config = readConfigFile(options.configDir);\n\t\tthis.token = resolveToken(options, config);\n\t\tthis.registryUrl = resolveRegistryUrl(options, config);\n\t\tthis.maxRetries = options.maxRetries ?? 3;\n\t\tthis.timeoutMs = options.timeoutMs ?? 3e4;\n\t}\n\tasync readStreamWithLimit(body, limit) {\n\t\tconst reader = body.getReader();\n\t\tconst chunks = [];\n\t\tlet received = 0;\n\t\twhile (true) {\n\t\t\tconst { done, value } = await reader.read();\n\t\t\tif (done) break;\n\t\t\treceived += value.byteLength;\n\t\t\tif (received > limit) {\n\t\t\t\treader.cancel();\n\t\t\t\tthrow new TankNetworkError(`Response body exceeds ${limit} byte limit`);\n\t\t\t}\n\t\t\tchunks.push(value);\n\t\t}\n\t\treturn Buffer.concat(chunks);\n\t}\n\theaders(hasBody) {\n\t\tconst h = { \"User-Agent\": `tankpkg-sdk/${SDK_VERSION}` };\n\t\tif (this.token) h.Authorization = `Bearer ${this.token}`;\n\t\tif (hasBody) h[\"Content-Type\"] = \"application/json\";\n\t\treturn h;\n\t}\n\tasync request(method, apiPath, body) {\n\t\tconst url = `${this.registryUrl}/api/v1${apiPath}`;\n\t\tlet lastError;\n\t\tfor (let attempt = 0; attempt <= this.maxRetries; attempt++) try {\n\t\t\tconst res = await fetch(url, {\n\t\t\t\tmethod,\n\t\t\t\theaders: this.headers(!!body),\n\t\t\t\tbody: body ? JSON.stringify(body) : void 0,\n\t\t\t\tsignal: AbortSignal.timeout(this.timeoutMs),\n\t\t\t\tredirect: this.token ? \"manual\" : \"follow\"\n\t\t\t});\n\t\t\tif (res.status >= 300 && res.status < 400) throw new TankNetworkError(`Unexpected redirect (${res.status}) from ${url}. Refusing to follow to prevent credential leakage.`);\n\t\t\tif ((res.status === 429 || res.status >= 500) && attempt < this.maxRetries) {\n\t\t\t\tawait sleep(Math.min(1e3 * 2 ** attempt, 3e4));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\treturn res;\n\t\t} catch (err) {\n\t\t\tlastError = err instanceof Error ? err : new Error(String(err));\n\t\t\tif (attempt < this.maxRetries) await sleep(Math.min(1e3 * 2 ** attempt, 3e4));\n\t\t}\n\t\tthrow new TankNetworkError(`Request to ${url} failed after ${this.maxRetries + 1} attempts`, lastError);\n\t}\n\tasync json(method, apiPath, body) {\n\t\tconst res = await this.request(method, apiPath, body);\n\t\tif (res.status === 401) throw new TankAuthError();\n\t\tif (res.status === 403) throw new TankPermissionError((await res.json().catch(() => ({ error: \"Forbidden\" }))).error || \"Permission denied\");\n\t\tif (res.status === 404) throw new TankNotFoundError((await res.json().catch(() => ({ error: \"Not found\" }))).error || \"Not found\");\n\t\tif (!res.ok) {\n\t\t\tconst text = await res.text().catch(() => \"\");\n\t\t\tthrow new TankNetworkError(`HTTP ${res.status}: ${text}`);\n\t\t}\n\t\treturn await res.json();\n\t}\n\tasync search(query, options) {\n\t\tconst params = new URLSearchParams({ q: query });\n\t\tif (options?.page) params.set(\"page\", String(options.page));\n\t\tif (options?.limit) params.set(\"limit\", String(options.limit));\n\t\treturn this.json(\"GET\", `/search?${params}`);\n\t}\n\tasync info(name) {\n\t\treturn this.json(\"GET\", `/skills/${encodeURIComponent(name)}`);\n\t}\n\tasync versions(name) {\n\t\treturn this.json(\"GET\", `/skills/${encodeURIComponent(name)}/versions`);\n\t}\n\tasync download(name, version, options) {\n\t\tconst detail = await this.json(\"GET\", `/skills/${encodeURIComponent(name)}/${version}`);\n\t\tconst dlUrl = new URL(detail.downloadUrl);\n\t\tif (dlUrl.username || dlUrl.password) throw new TankNetworkError(`Download URL must not contain credentials: ${detail.downloadUrl}`);\n\t\tif (dlUrl.protocol !== \"https:\" && dlUrl.protocol !== \"http:\") throw new TankNetworkError(`Download URL must use https or http: ${detail.downloadUrl}`);\n\t\tconst res = await fetch(detail.downloadUrl, {\n\t\t\tsignal: AbortSignal.timeout(this.timeoutMs),\n\t\t\tredirect: \"manual\"\n\t\t});\n\t\tif (res.status >= 300 && res.status < 400) throw new TankNetworkError(`Unexpected redirect (${res.status}) from download URL`);\n\t\tif (!res.ok || !res.body) throw new TankNetworkError(`Failed to download tarball: HTTP ${res.status}`);\n\t\tif (options?.buffer || options?.dest) {\n\t\t\tconst buffer = await this.readStreamWithLimit(res.body, MAX_DOWNLOAD_BYTES$1);\n\t\t\tconst computed = `sha512-${(await import(\"node:crypto\")).createHash(\"sha512\").update(buffer).digest(\"base64\")}`;\n\t\t\tif (detail.integrity && detail.integrity !== \"pending\" && computed !== detail.integrity) throw new TankIntegrityError(\"Integrity verification failed\", {\n\t\t\t\texpected: detail.integrity,\n\t\t\t\tactual: computed\n\t\t\t});\n\t\t\tif (options?.dest) {\n\t\t\t\tconst destDir = options.dest.replace(/^~/, os.homedir());\n\t\t\t\tif (!fs.existsSync(destDir)) fs.mkdirSync(destDir, { recursive: true });\n\t\t\t\tconst filename = `${name.replace(/[/\\\\]/g, \"-\").replace(/\\.\\./g, \"\")}-${version}.tgz`;\n\t\t\t\tconst destPath = path.join(destDir, filename);\n\t\t\t\tfs.writeFileSync(destPath, buffer);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn buffer;\n\t\t}\n\t\treturn res.body;\n\t}\n\tasync audit(name, version) {\n\t\tif (version) return this.json(\"GET\", `/skills/${encodeURIComponent(name)}/${version}`);\n\t\tconst latest = (await this.info(name)).latestVersion;\n\t\tif (!latest) throw new TankNotFoundError(`No versions found for ${name}`, name);\n\t\treturn this.json(\"GET\", `/skills/${encodeURIComponent(name)}/${latest}`);\n\t}\n\tasync permissions(name, version) {\n\t\treturn (await this.audit(name, version)).permissions;\n\t}\n\tasync whoami() {\n\t\tif (!this.token) return null;\n\t\ttry {\n\t\t\treturn await this.json(\"GET\", \"/auth/whoami\");\n\t\t} catch (err) {\n\t\t\tif (err instanceof TankAuthError) return null;\n\t\t\tthrow err;\n\t\t}\n\t}\n\tasync startLoginFlow() {\n\t\tconst state = crypto.randomUUID().replace(/-/g, \"\");\n\t\treturn this.json(\"POST\", \"/cli-auth/start\", { state });\n\t}\n\tasync exchangeLoginCode(sessionCode, state) {\n\t\ttry {\n\t\t\treturn await this.json(\"POST\", \"/cli-auth/exchange\", {\n\t\t\t\tsessionCode,\n\t\t\t\tstate\n\t\t\t});\n\t\t} catch (err) {\n\t\t\tif (err instanceof TankAuthError || err instanceof TankNotFoundError) return null;\n\t\t\tthrow err;\n\t\t}\n\t}\n\tasync listFiles(name, version) {\n\t\tconst ver = version ?? (await this.info(name)).latestVersion;\n\t\tif (!ver) throw new TankNotFoundError(`No versions found for ${name}`, name);\n\t\treturn (await this.json(\"GET\", `/skills/${encodeURIComponent(name)}/${ver}/files`)).files;\n\t}\n\tasync readFile(name, version, filePath) {\n\t\tconst normalized = filePath.replace(/\\\\/g, \"/\").replace(/\\0/g, \"\");\n\t\tif (!normalized || normalized.startsWith(\"/\") || normalized.split(\"/\").some((s) => s === \"..\")) throw new TankNetworkError(`Invalid file path: ${filePath}`);\n\t\tconst encodedName = encodeURIComponent(name);\n\t\tconst encodedPath = normalized.split(\"/\").map(encodeURIComponent).join(\"/\");\n\t\tconst res = await this.request(\"GET\", `/skills/${encodedName}/${version}/files/${encodedPath}`);\n\t\tif (res.status === 404) throw new TankNotFoundError(`File not found: ${filePath}`, name);\n\t\tif (!res.ok) throw new TankNetworkError(`Failed to read file: HTTP ${res.status}`);\n\t\treturn res.text();\n\t}\n\tasync batchRead(name, ver, items, concurrency = 6) {\n\t\tconst results = [];\n\t\tfor (let i = 0; i < items.length; i += concurrency) {\n\t\t\tconst batch = items.slice(i, i + concurrency);\n\t\t\tconst batchResults = await Promise.all(batch.map(async ({ f, prefix }) => ({\n\t\t\t\tkey: f.slice(prefix.length),\n\t\t\t\tprefix,\n\t\t\t\tcontent: await this.readFile(name, ver, f)\n\t\t\t})));\n\t\t\tresults.push(...batchResults);\n\t\t}\n\t\treturn results;\n\t}\n\tasync readSkill(name, version) {\n\t\tconst ver = version ?? (await this.info(name)).latestVersion;\n\t\tif (!ver) throw new TankNotFoundError(`No versions found for ${name}`, name);\n\t\tconst files = await this.listFiles(name, ver);\n\t\tconst content = files.find((f) => f === \"SKILL.md\") ? await this.readFile(name, ver, \"SKILL.md\") : \"\";\n\t\tconst filesToRead = [...files.filter((f) => f.startsWith(\"references/\")).map((f) => ({\n\t\t\tf,\n\t\t\tprefix: \"references/\"\n\t\t})), ...files.filter((f) => f.startsWith(\"scripts/\")).map((f) => ({\n\t\t\tf,\n\t\t\tprefix: \"scripts/\"\n\t\t}))];\n\t\tconst results = await this.batchRead(name, ver, filesToRead);\n\t\tconst refEntries = results.filter((r) => r.prefix === \"references/\").map((r) => [r.key, r.content]);\n\t\tconst scriptEntries = results.filter((r) => r.prefix === \"scripts/\").map((r) => [r.key, r.content]);\n\t\treturn {\n\t\t\tname,\n\t\t\tversion: ver,\n\t\t\tcontent,\n\t\t\treferences: Object.fromEntries(refEntries),\n\t\t\tscripts: Object.fromEntries(scriptEntries),\n\t\t\tfiles\n\t\t};\n\t}\n\tasync getStarCount(name) {\n\t\treturn this.json(\"GET\", `/skills/${encodeURIComponent(name)}/star`);\n\t}\n\tasync star(name) {\n\t\tawait this.json(\"POST\", `/skills/${encodeURIComponent(name)}/star`);\n\t}\n\tasync unstar(name) {\n\t\tawait this.json(\"DELETE\", `/skills/${encodeURIComponent(name)}/star`);\n\t}\n};\n//#endregion\n//#region src/install/native.ts\nconst esmRequire = createRequire(import.meta.url);\nlet _native = null;\nlet _nativeChecked = false;\nfunction tryLoadNative() {\n\tif (_nativeChecked) return _native;\n\t_nativeChecked = true;\n\ttry {\n\t\t_native = esmRequire(\"@tankpkg/sdk-core\");\n\t} catch {\n\t\t_native = null;\n\t}\n\treturn _native;\n}\nfunction hasNativeAcceleration() {\n\treturn tryLoadNative() !== null;\n}\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/internal/constants.js\nvar require_constants = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst SEMVER_SPEC_VERSION = \"2.0.0\";\n\tconst MAX_LENGTH = 256;\n\tconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\n\tmodule.exports = {\n\t\tMAX_LENGTH,\n\t\tMAX_SAFE_COMPONENT_LENGTH: 16,\n\t\tMAX_SAFE_BUILD_LENGTH: MAX_LENGTH - 6,\n\t\tMAX_SAFE_INTEGER,\n\t\tRELEASE_TYPES: [\n\t\t\t\"major\",\n\t\t\t\"premajor\",\n\t\t\t\"minor\",\n\t\t\t\"preminor\",\n\t\t\t\"patch\",\n\t\t\t\"prepatch\",\n\t\t\t\"prerelease\"\n\t\t],\n\t\tSEMVER_SPEC_VERSION,\n\t\tFLAG_INCLUDE_PRERELEASE: 1,\n\t\tFLAG_LOOSE: 2\n\t};\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/internal/debug.js\nvar require_debug = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tmodule.exports = typeof process === \"object\" && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error(\"SEMVER\", ...args) : () => {};\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/internal/re.js\nvar require_re = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst { MAX_SAFE_COMPONENT_LENGTH, MAX_SAFE_BUILD_LENGTH, MAX_LENGTH } = require_constants();\n\tconst debug = require_debug();\n\texports = module.exports = {};\n\tconst re = exports.re = [];\n\tconst safeRe = exports.safeRe = [];\n\tconst src = exports.src = [];\n\tconst safeSrc = exports.safeSrc = [];\n\tconst t = exports.t = {};\n\tlet R = 0;\n\tconst LETTERDASHNUMBER = \"[a-zA-Z0-9-]\";\n\tconst safeRegexReplacements = [\n\t\t[\"\\\\s\", 1],\n\t\t[\"\\\\d\", MAX_LENGTH],\n\t\t[LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]\n\t];\n\tconst makeSafeRegex = (value) => {\n\t\tfor (const [token, max] of safeRegexReplacements) value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`);\n\t\treturn value;\n\t};\n\tconst createToken = (name, value, isGlobal) => {\n\t\tconst safe = makeSafeRegex(value);\n\t\tconst index = R++;\n\t\tdebug(name, index, value);\n\t\tt[name] = index;\n\t\tsrc[index] = value;\n\t\tsafeSrc[index] = safe;\n\t\tre[index] = new RegExp(value, isGlobal ? \"g\" : void 0);\n\t\tsafeRe[index] = new RegExp(safe, isGlobal ? \"g\" : void 0);\n\t};\n\tcreateToken(\"NUMERICIDENTIFIER\", \"0|[1-9]\\\\d*\");\n\tcreateToken(\"NUMERICIDENTIFIERLOOSE\", \"\\\\d+\");\n\tcreateToken(\"NONNUMERICIDENTIFIER\", `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);\n\tcreateToken(\"MAINVERSION\", `(${src[t.NUMERICIDENTIFIER]})\\\\.(${src[t.NUMERICIDENTIFIER]})\\\\.(${src[t.NUMERICIDENTIFIER]})`);\n\tcreateToken(\"MAINVERSIONLOOSE\", `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t.NUMERICIDENTIFIERLOOSE]})`);\n\tcreateToken(\"PRERELEASEIDENTIFIER\", `(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIER]})`);\n\tcreateToken(\"PRERELEASEIDENTIFIERLOOSE\", `(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIERLOOSE]})`);\n\tcreateToken(\"PRERELEASE\", `(?:-(${src[t.PRERELEASEIDENTIFIER]}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`);\n\tcreateToken(\"PRERELEASELOOSE\", `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`);\n\tcreateToken(\"BUILDIDENTIFIER\", `${LETTERDASHNUMBER}+`);\n\tcreateToken(\"BUILD\", `(?:\\\\+(${src[t.BUILDIDENTIFIER]}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`);\n\tcreateToken(\"FULLPLAIN\", `v?${src[t.MAINVERSION]}${src[t.PRERELEASE]}?${src[t.BUILD]}?`);\n\tcreateToken(\"FULL\", `^${src[t.FULLPLAIN]}$`);\n\tcreateToken(\"LOOSEPLAIN\", `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]}${src[t.PRERELEASELOOSE]}?${src[t.BUILD]}?`);\n\tcreateToken(\"LOOSE\", `^${src[t.LOOSEPLAIN]}$`);\n\tcreateToken(\"GTLT\", \"((?:<|>)?=?)\");\n\tcreateToken(\"XRANGEIDENTIFIERLOOSE\", `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);\n\tcreateToken(\"XRANGEIDENTIFIER\", `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`);\n\tcreateToken(\"XRANGEPLAIN\", `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})(?:\\\\.(${src[t.XRANGEIDENTIFIER]})(?:\\\\.(${src[t.XRANGEIDENTIFIER]})(?:${src[t.PRERELEASE]})?${src[t.BUILD]}?)?)?`);\n\tcreateToken(\"XRANGEPLAINLOOSE\", `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:${src[t.PRERELEASELOOSE]})?${src[t.BUILD]}?)?)?`);\n\tcreateToken(\"XRANGE\", `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`);\n\tcreateToken(\"XRANGELOOSE\", `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`);\n\tcreateToken(\"COERCEPLAIN\", `(^|[^\\\\d])(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}})(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`);\n\tcreateToken(\"COERCE\", `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`);\n\tcreateToken(\"COERCEFULL\", src[t.COERCEPLAIN] + `(?:${src[t.PRERELEASE]})?(?:${src[t.BUILD]})?(?:$|[^\\\\d])`);\n\tcreateToken(\"COERCERTL\", src[t.COERCE], true);\n\tcreateToken(\"COERCERTLFULL\", src[t.COERCEFULL], true);\n\tcreateToken(\"LONETILDE\", \"(?:~>?)\");\n\tcreateToken(\"TILDETRIM\", `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true);\n\texports.tildeTrimReplace = \"$1~\";\n\tcreateToken(\"TILDE\", `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`);\n\tcreateToken(\"TILDELOOSE\", `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`);\n\tcreateToken(\"LONECARET\", \"(?:\\\\^)\");\n\tcreateToken(\"CARETTRIM\", `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true);\n\texports.caretTrimReplace = \"$1^\";\n\tcreateToken(\"CARET\", `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`);\n\tcreateToken(\"CARETLOOSE\", `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`);\n\tcreateToken(\"COMPARATORLOOSE\", `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`);\n\tcreateToken(\"COMPARATOR\", `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`);\n\tcreateToken(\"COMPARATORTRIM\", `(\\\\s*)${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true);\n\texports.comparatorTrimReplace = \"$1$2$3\";\n\tcreateToken(\"HYPHENRANGE\", `^\\\\s*(${src[t.XRANGEPLAIN]})\\\\s+-\\\\s+(${src[t.XRANGEPLAIN]})\\\\s*$`);\n\tcreateToken(\"HYPHENRANGELOOSE\", `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${src[t.XRANGEPLAINLOOSE]})\\\\s*$`);\n\tcreateToken(\"STAR\", \"(<|>)?=?\\\\s*\\\\*\");\n\tcreateToken(\"GTE0\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$\");\n\tcreateToken(\"GTE0PRE\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$\");\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/internal/parse-options.js\nvar require_parse_options = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst looseOption = Object.freeze({ loose: true });\n\tconst emptyOpts = Object.freeze({});\n\tconst parseOptions = (options) => {\n\t\tif (!options) return emptyOpts;\n\t\tif (typeof options !== \"object\") return looseOption;\n\t\treturn options;\n\t};\n\tmodule.exports = parseOptions;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/internal/identifiers.js\nvar require_identifiers = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst numeric = /^[0-9]+$/;\n\tconst compareIdentifiers = (a, b) => {\n\t\tif (typeof a === \"number\" && typeof b === \"number\") return a === b ? 0 : a < b ? -1 : 1;\n\t\tconst anum = numeric.test(a);\n\t\tconst bnum = numeric.test(b);\n\t\tif (anum && bnum) {\n\t\t\ta = +a;\n\t\t\tb = +b;\n\t\t}\n\t\treturn a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1;\n\t};\n\tconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a);\n\tmodule.exports = {\n\t\tcompareIdentifiers,\n\t\trcompareIdentifiers\n\t};\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/classes/semver.js\nvar require_semver$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst debug = require_debug();\n\tconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants();\n\tconst { safeRe: re, t } = require_re();\n\tconst parseOptions = require_parse_options();\n\tconst { compareIdentifiers } = require_identifiers();\n\tmodule.exports = class SemVer {\n\t\tconstructor(version, options) {\n\t\t\toptions = parseOptions(options);\n\t\t\tif (version instanceof SemVer) if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) return version;\n\t\t\telse version = version.version;\n\t\t\telse if (typeof version !== \"string\") throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`);\n\t\t\tif (version.length > MAX_LENGTH) throw new TypeError(`version is longer than ${MAX_LENGTH} characters`);\n\t\t\tdebug(\"SemVer\", version, options);\n\t\t\tthis.options = options;\n\t\t\tthis.loose = !!options.loose;\n\t\t\tthis.includePrerelease = !!options.includePrerelease;\n\t\t\tconst m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]);\n\t\t\tif (!m) throw new TypeError(`Invalid Version: ${version}`);\n\t\t\tthis.raw = version;\n\t\t\tthis.major = +m[1];\n\t\t\tthis.minor = +m[2];\n\t\t\tthis.patch = +m[3];\n\t\t\tif (this.major > MAX_SAFE_INTEGER || this.major < 0) throw new TypeError(\"Invalid major version\");\n\t\t\tif (this.minor > MAX_SAFE_INTEGER || this.minor < 0) throw new TypeError(\"Invalid minor version\");\n\t\t\tif (this.patch > MAX_SAFE_INTEGER || this.patch < 0) throw new TypeError(\"Invalid patch version\");\n\t\t\tif (!m[4]) this.prerelease = [];\n\t\t\telse this.prerelease = m[4].split(\".\").map((id) => {\n\t\t\t\tif (/^[0-9]+$/.test(id)) {\n\t\t\t\t\tconst num = +id;\n\t\t\t\t\tif (num >= 0 && num < MAX_SAFE_INTEGER) return num;\n\t\t\t\t}\n\t\t\t\treturn id;\n\t\t\t});\n\t\t\tthis.build = m[5] ? m[5].split(\".\") : [];\n\t\t\tthis.format();\n\t\t}\n\t\tformat() {\n\t\t\tthis.version = `${this.major}.${this.minor}.${this.patch}`;\n\t\t\tif (this.prerelease.length) this.version += `-${this.prerelease.join(\".\")}`;\n\t\t\treturn this.version;\n\t\t}\n\t\ttoString() {\n\t\t\treturn this.version;\n\t\t}\n\t\tcompare(other) {\n\t\t\tdebug(\"SemVer.compare\", this.version, this.options, other);\n\t\t\tif (!(other instanceof SemVer)) {\n\t\t\t\tif (typeof other === \"string\" && other === this.version) return 0;\n\t\t\t\tother = new SemVer(other, this.options);\n\t\t\t}\n\t\t\tif (other.version === this.version) return 0;\n\t\t\treturn this.compareMain(other) || this.comparePre(other);\n\t\t}\n\t\tcompareMain(other) {\n\t\t\tif (!(other instanceof SemVer)) other = new SemVer(other, this.options);\n\t\t\tif (this.major < other.major) return -1;\n\t\t\tif (this.major > other.major) return 1;\n\t\t\tif (this.minor < other.minor) return -1;\n\t\t\tif (this.minor > other.minor) return 1;\n\t\t\tif (this.patch < other.patch) return -1;\n\t\t\tif (this.patch > other.patch) return 1;\n\t\t\treturn 0;\n\t\t}\n\t\tcomparePre(other) {\n\t\t\tif (!(other instanceof SemVer)) other = new SemVer(other, this.options);\n\t\t\tif (this.prerelease.length && !other.prerelease.length) return -1;\n\t\t\telse if (!this.prerelease.length && other.prerelease.length) return 1;\n\t\t\telse if (!this.prerelease.length && !other.prerelease.length) return 0;\n\t\t\tlet i = 0;\n\t\t\tdo {\n\t\t\t\tconst a = this.prerelease[i];\n\t\t\t\tconst b = other.prerelease[i];\n\t\t\t\tdebug(\"prerelease compare\", i, a, b);\n\t\t\t\tif (a === void 0 && b === void 0) return 0;\n\t\t\t\telse if (b === void 0) return 1;\n\t\t\t\telse if (a === void 0) return -1;\n\t\t\t\telse if (a === b) continue;\n\t\t\t\telse return compareIdentifiers(a, b);\n\t\t\t} while (++i);\n\t\t}\n\t\tcompareBuild(other) {\n\t\t\tif (!(other instanceof SemVer)) other = new SemVer(other, this.options);\n\t\t\tlet i = 0;\n\t\t\tdo {\n\t\t\t\tconst a = this.build[i];\n\t\t\t\tconst b = other.build[i];\n\t\t\t\tdebug(\"build compare\", i, a, b);\n\t\t\t\tif (a === void 0 && b === void 0) return 0;\n\t\t\t\telse if (b === void 0) return 1;\n\t\t\t\telse if (a === void 0) return -1;\n\t\t\t\telse if (a === b) continue;\n\t\t\t\telse return compareIdentifiers(a, b);\n\t\t\t} while (++i);\n\t\t}\n\t\tinc(release, identifier, identifierBase) {\n\t\t\tif (release.startsWith(\"pre\")) {\n\t\t\t\tif (!identifier && identifierBase === false) throw new Error(\"invalid increment argument: identifier is empty\");\n\t\t\t\tif (identifier) {\n\t\t\t\t\tconst match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE]);\n\t\t\t\t\tif (!match || match[1] !== identifier) throw new Error(`invalid identifier: ${identifier}`);\n\t\t\t\t}\n\t\t\t}\n\t\t\tswitch (release) {\n\t\t\t\tcase \"premajor\":\n\t\t\t\t\tthis.prerelease.length = 0;\n\t\t\t\t\tthis.patch = 0;\n\t\t\t\t\tthis.minor = 0;\n\t\t\t\t\tthis.major++;\n\t\t\t\t\tthis.inc(\"pre\", identifier, identifierBase);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"preminor\":\n\t\t\t\t\tthis.prerelease.length = 0;\n\t\t\t\t\tthis.patch = 0;\n\t\t\t\t\tthis.minor++;\n\t\t\t\t\tthis.inc(\"pre\", identifier, identifierBase);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"prepatch\":\n\t\t\t\t\tthis.prerelease.length = 0;\n\t\t\t\t\tthis.inc(\"patch\", identifier, identifierBase);\n\t\t\t\t\tthis.inc(\"pre\", identifier, identifierBase);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"prerelease\":\n\t\t\t\t\tif (this.prerelease.length === 0) this.inc(\"patch\", identifier, identifierBase);\n\t\t\t\t\tthis.inc(\"pre\", identifier, identifierBase);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"release\":\n\t\t\t\t\tif (this.prerelease.length === 0) throw new Error(`version ${this.raw} is not a prerelease`);\n\t\t\t\t\tthis.prerelease.length = 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"major\":\n\t\t\t\t\tif (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) this.major++;\n\t\t\t\t\tthis.minor = 0;\n\t\t\t\t\tthis.patch = 0;\n\t\t\t\t\tthis.prerelease = [];\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"minor\":\n\t\t\t\t\tif (this.patch !== 0 || this.prerelease.length === 0) this.minor++;\n\t\t\t\t\tthis.patch = 0;\n\t\t\t\t\tthis.prerelease = [];\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"patch\":\n\t\t\t\t\tif (this.prerelease.length === 0) this.patch++;\n\t\t\t\t\tthis.prerelease = [];\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"pre\": {\n\t\t\t\t\tconst base = Number(identifierBase) ? 1 : 0;\n\t\t\t\t\tif (this.prerelease.length === 0) this.prerelease = [base];\n\t\t\t\t\telse {\n\t\t\t\t\t\tlet i = this.prerelease.length;\n\t\t\t\t\t\twhile (--i >= 0) if (typeof this.prerelease[i] === \"number\") {\n\t\t\t\t\t\t\tthis.prerelease[i]++;\n\t\t\t\t\t\t\ti = -2;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (i === -1) {\n\t\t\t\t\t\t\tif (identifier === this.prerelease.join(\".\") && identifierBase === false) throw new Error(\"invalid increment argument: identifier already exists\");\n\t\t\t\t\t\t\tthis.prerelease.push(base);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (identifier) {\n\t\t\t\t\t\tlet prerelease = [identifier, base];\n\t\t\t\t\t\tif (identifierBase === false) prerelease = [identifier];\n\t\t\t\t\t\tif (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n\t\t\t\t\t\t\tif (isNaN(this.prerelease[1])) this.prerelease = prerelease;\n\t\t\t\t\t\t} else this.prerelease = prerelease;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tdefault: throw new Error(`invalid increment argument: ${release}`);\n\t\t\t}\n\t\t\tthis.raw = this.format();\n\t\t\tif (this.build.length) this.raw += `+${this.build.join(\".\")}`;\n\t\t\treturn this;\n\t\t}\n\t};\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/parse.js\nvar require_parse = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst SemVer = require_semver$1();\n\tconst parse = (version, options, throwErrors = false) => {\n\t\tif (version instanceof SemVer) return version;\n\t\ttry {\n\t\t\treturn new SemVer(version, options);\n\t\t} catch (er) {\n\t\t\tif (!throwErrors) return null;\n\t\t\tthrow er;\n\t\t}\n\t};\n\tmodule.exports = parse;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/valid.js\nvar require_valid$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst parse = require_parse();\n\tconst valid = (version, options) => {\n\t\tconst v = parse(version, options);\n\t\treturn v ? v.version : null;\n\t};\n\tmodule.exports = valid;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/clean.js\nvar require_clean = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst parse = require_parse();\n\tconst clean = (version, options) => {\n\t\tconst s = parse(version.trim().replace(/^[=v]+/, \"\"), options);\n\t\treturn s ? s.version : null;\n\t};\n\tmodule.exports = clean;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/inc.js\nvar require_inc = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst SemVer = require_semver$1();\n\tconst inc = (version, release, options, identifier, identifierBase) => {\n\t\tif (typeof options === \"string\") {\n\t\t\tidentifierBase = identifier;\n\t\t\tidentifier = options;\n\t\t\toptions = void 0;\n\t\t}\n\t\ttry {\n\t\t\treturn new SemVer(version instanceof SemVer ? version.version : version, options).inc(release, identifier, identifierBase).version;\n\t\t} catch (er) {\n\t\t\treturn null;\n\t\t}\n\t};\n\tmodule.exports = inc;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/diff.js\nvar require_diff = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst parse = require_parse();\n\tconst diff = (version1, version2) => {\n\t\tconst v1 = parse(version1, null, true);\n\t\tconst v2 = parse(version2, null, true);\n\t\tconst comparison = v1.compare(v2);\n\t\tif (comparison === 0) return null;\n\t\tconst v1Higher = comparison > 0;\n\t\tconst highVersion = v1Higher ? v1 : v2;\n\t\tconst lowVersion = v1Higher ? v2 : v1;\n\t\tconst highHasPre = !!highVersion.prerelease.length;\n\t\tif (!!lowVersion.prerelease.length && !highHasPre) {\n\t\t\tif (!lowVersion.patch && !lowVersion.minor) return \"major\";\n\t\t\tif (lowVersion.compareMain(highVersion) === 0) {\n\t\t\t\tif (lowVersion.minor && !lowVersion.patch) return \"minor\";\n\t\t\t\treturn \"patch\";\n\t\t\t}\n\t\t}\n\t\tconst prefix = highHasPre ? \"pre\" : \"\";\n\t\tif (v1.major !== v2.major) return prefix + \"major\";\n\t\tif (v1.minor !== v2.minor) return prefix + \"minor\";\n\t\tif (v1.patch !== v2.patch) return prefix + \"patch\";\n\t\treturn \"prerelease\";\n\t};\n\tmodule.exports = diff;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/major.js\nvar require_major = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst SemVer = require_semver$1();\n\tconst major = (a, loose) => new SemVer(a, loose).major;\n\tmodule.exports = major;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/minor.js\nvar require_minor = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst SemVer = require_semver$1();\n\tconst minor = (a, loose) => new SemVer(a, loose).minor;\n\tmodule.exports = minor;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/patch.js\nvar require_patch = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst SemVer = require_semver$1();\n\tconst patch = (a, loose) => new SemVer(a, loose).patch;\n\tmodule.exports = patch;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/prerelease.js\nvar require_prerelease = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst parse = require_parse();\n\tconst prerelease = (version, options) => {\n\t\tconst parsed = parse(version, options);\n\t\treturn parsed && parsed.prerelease.length ? parsed.prerelease : null;\n\t};\n\tmodule.exports = prerelease;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/compare.js\nvar require_compare = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst SemVer = require_semver$1();\n\tconst compare = (a, b, loose) => new SemVer(a, loose).compare(new SemVer(b, loose));\n\tmodule.exports = compare;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/rcompare.js\nvar require_rcompare = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst compare = require_compare();\n\tconst rcompare = (a, b, loose) => compare(b, a, loose);\n\tmodule.exports = rcompare;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/compare-loose.js\nvar require_compare_loose = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst compare = require_compare();\n\tconst compareLoose = (a, b) => compare(a, b, true);\n\tmodule.exports = compareLoose;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/compare-build.js\nvar require_compare_build = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst SemVer = require_semver$1();\n\tconst compareBuild = (a, b, loose) => {\n\t\tconst versionA = new SemVer(a, loose);\n\t\tconst versionB = new SemVer(b, loose);\n\t\treturn versionA.compare(versionB) || versionA.compareBuild(versionB);\n\t};\n\tmodule.exports = compareBuild;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/sort.js\nvar require_sort = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst compareBuild = require_compare_build();\n\tconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose));\n\tmodule.exports = sort;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/rsort.js\nvar require_rsort = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst compareBuild = require_compare_build();\n\tconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose));\n\tmodule.exports = rsort;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/gt.js\nvar require_gt = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst compare = require_compare();\n\tconst gt = (a, b, loose) => compare(a, b, loose) > 0;\n\tmodule.exports = gt;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/lt.js\nvar require_lt = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst compare = require_compare();\n\tconst lt = (a, b, loose) => compare(a, b, loose) < 0;\n\tmodule.exports = lt;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/eq.js\nvar require_eq = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst compare = require_compare();\n\tconst eq = (a, b, loose) => compare(a, b, loose) === 0;\n\tmodule.exports = eq;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/neq.js\nvar require_neq = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst compare = require_compare();\n\tconst neq = (a, b, loose) => compare(a, b, loose) !== 0;\n\tmodule.exports = neq;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/gte.js\nvar require_gte = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst compare = require_compare();\n\tconst gte = (a, b, loose) => compare(a, b, loose) >= 0;\n\tmodule.exports = gte;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/lte.js\nvar require_lte = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst compare = require_compare();\n\tconst lte = (a, b, loose) => compare(a, b, loose) <= 0;\n\tmodule.exports = lte;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/cmp.js\nvar require_cmp = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst eq = require_eq();\n\tconst neq = require_neq();\n\tconst gt = require_gt();\n\tconst gte = require_gte();\n\tconst lt = require_lt();\n\tconst lte = require_lte();\n\tconst cmp = (a, op, b, loose) => {\n\t\tswitch (op) {\n\t\t\tcase \"===\":\n\t\t\t\tif (typeof a === \"object\") a = a.version;\n\t\t\t\tif (typeof b === \"object\") b = b.version;\n\t\t\t\treturn a === b;\n\t\t\tcase \"!==\":\n\t\t\t\tif (typeof a === \"object\") a = a.version;\n\t\t\t\tif (typeof b === \"object\") b = b.version;\n\t\t\t\treturn a !== b;\n\t\t\tcase \"\":\n\t\t\tcase \"=\":\n\t\t\tcase \"==\": return eq(a, b, loose);\n\t\t\tcase \"!=\": return neq(a, b, loose);\n\t\t\tcase \">\": return gt(a, b, loose);\n\t\t\tcase \">=\": return gte(a, b, loose);\n\t\t\tcase \"<\": return lt(a, b, loose);\n\t\t\tcase \"<=\": return lte(a, b, loose);\n\t\t\tdefault: throw new TypeError(`Invalid operator: ${op}`);\n\t\t}\n\t};\n\tmodule.exports = cmp;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/coerce.js\nvar require_coerce = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst SemVer = require_semver$1();\n\tconst parse = require_parse();\n\tconst { safeRe: re, t } = require_re();\n\tconst coerce = (version, options) => {\n\t\tif (version instanceof SemVer) return version;\n\t\tif (typeof version === \"number\") version = String(version);\n\t\tif (typeof version !== \"string\") return null;\n\t\toptions = options || {};\n\t\tlet match = null;\n\t\tif (!options.rtl) match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE]);\n\t\telse {\n\t\t\tconst coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL];\n\t\t\tlet next;\n\t\t\twhile ((next = coerceRtlRegex.exec(version)) && (!match || match.index + match[0].length !== version.length)) {\n\t\t\t\tif (!match || next.index + next[0].length !== match.index + match[0].length) match = next;\n\t\t\t\tcoerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length;\n\t\t\t}\n\t\t\tcoerceRtlRegex.lastIndex = -1;\n\t\t}\n\t\tif (match === null) return null;\n\t\tconst major = match[2];\n\t\treturn parse(`${major}.${match[3] || \"0\"}.${match[4] || \"0\"}${options.includePrerelease && match[5] ? `-${match[5]}` : \"\"}${options.includePrerelease && match[6] ? `+${match[6]}` : \"\"}`, options);\n\t};\n\tmodule.exports = coerce;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/internal/lrucache.js\nvar require_lrucache = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tvar LRUCache = class {\n\t\tconstructor() {\n\t\t\tthis.max = 1e3;\n\t\t\tthis.map = /* @__PURE__ */ new Map();\n\t\t}\n\t\tget(key) {\n\t\t\tconst value = this.map.get(key);\n\t\t\tif (value === void 0) return;\n\t\t\telse {\n\t\t\t\tthis.map.delete(key);\n\t\t\t\tthis.map.set(key, value);\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t\tdelete(key) {\n\t\t\treturn this.map.delete(key);\n\t\t}\n\t\tset(key, value) {\n\t\t\tif (!this.delete(key) && value !== void 0) {\n\t\t\t\tif (this.map.size >= this.max) {\n\t\t\t\t\tconst firstKey = this.map.keys().next().value;\n\t\t\t\t\tthis.delete(firstKey);\n\t\t\t\t}\n\t\t\t\tthis.map.set(key, value);\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t};\n\tmodule.exports = LRUCache;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/classes/range.js\nvar require_range = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst SPACE_CHARACTERS = /\\s+/g;\n\tmodule.exports = class Range {\n\t\tconstructor(range, options) {\n\t\t\toptions = parseOptions(options);\n\t\t\tif (range instanceof Range) if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) return range;\n\t\t\telse return new Range(range.raw, options);\n\t\t\tif (range instanceof Comparator) {\n\t\t\t\tthis.raw = range.value;\n\t\t\t\tthis.set = [[range]];\n\t\t\t\tthis.formatted = void 0;\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\tthis.options = options;\n\t\t\tthis.loose = !!options.loose;\n\t\t\tthis.includePrerelease = !!options.includePrerelease;\n\t\t\tthis.raw = range.trim().replace(SPACE_CHARACTERS, \" \");\n\t\t\tthis.set = this.raw.split(\"||\").map((r) => this.parseRange(r.trim())).filter((c) => c.length);\n\t\t\tif (!this.set.length) throw new TypeError(`Invalid SemVer Range: ${this.raw}`);\n\t\t\tif (this.set.length > 1) {\n\t\t\t\tconst first = this.set[0];\n\t\t\t\tthis.set = this.set.filter((c) => !isNullSet(c[0]));\n\t\t\t\tif (this.set.length === 0) this.set = [first];\n\t\t\t\telse if (this.set.length > 1) {\n\t\t\t\t\tfor (const c of this.set) if (c.length === 1 && isAny(c[0])) {\n\t\t\t\t\t\tthis.set = [c];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.formatted = void 0;\n\t\t}\n\t\tget range() {\n\t\t\tif (this.formatted === void 0) {\n\t\t\t\tthis.formatted = \"\";\n\t\t\t\tfor (let i = 0; i < this.set.length; i++) {\n\t\t\t\t\tif (i > 0) this.formatted += \"||\";\n\t\t\t\t\tconst comps = this.set[i];\n\t\t\t\t\tfor (let k = 0; k < comps.length; k++) {\n\t\t\t\t\t\tif (k > 0) this.formatted += \" \";\n\t\t\t\t\t\tthis.formatted += comps[k].toString().trim();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.formatted;\n\t\t}\n\t\tformat() {\n\t\t\treturn this.range;\n\t\t}\n\t\ttoString() {\n\t\t\treturn this.range;\n\t\t}\n\t\tparseRange(range) {\n\t\t\tconst memoKey = ((this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | (this.options.loose && FLAG_LOOSE)) + \":\" + range;\n\t\t\tconst cached = cache.get(memoKey);\n\t\t\tif (cached) return cached;\n\t\t\tconst loose = this.options.loose;\n\t\t\tconst hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE];\n\t\t\trange = range.replace(hr, hyphenReplace(this.options.includePrerelease));\n\t\t\tdebug(\"hyphen replace\", range);\n\t\t\trange = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace);\n\t\t\tdebug(\"comparator trim\", range);\n\t\t\trange = range.replace(re[t.TILDETRIM], tildeTrimReplace);\n\t\t\tdebug(\"tilde trim\", range);\n\t\t\trange = range.replace(re[t.CARETTRIM], caretTrimReplace);\n\t\t\tdebug(\"caret trim\", range);\n\t\t\tlet rangeList = range.split(\" \").map((comp) => parseComparator(comp, this.options)).join(\" \").split(/\\s+/).map((comp) => replaceGTE0(comp, this.options));\n\t\t\tif (loose) rangeList = rangeList.filter((comp) => {\n\t\t\t\tdebug(\"loose invalid filter\", comp, this.options);\n\t\t\t\treturn !!comp.match(re[t.COMPARATORLOOSE]);\n\t\t\t});\n\t\t\tdebug(\"range list\", rangeList);\n\t\t\tconst rangeMap = /* @__PURE__ */ new Map();\n\t\t\tconst comparators = rangeList.map((comp) => new Comparator(comp, this.options));\n\t\t\tfor (const comp of comparators) {\n\t\t\t\tif (isNullSet(comp)) return [comp];\n\t\t\t\trangeMap.set(comp.value, comp);\n\t\t\t}\n\t\t\tif (rangeMap.size > 1 && rangeMap.has(\"\")) rangeMap.delete(\"\");\n\t\t\tconst result = [...rangeMap.values()];\n\t\t\tcache.set(memoKey, result);\n\t\t\treturn result;\n\t\t}\n\t\tintersects(range, options) {\n\t\t\tif (!(range instanceof Range)) throw new TypeError(\"a Range is required\");\n\t\t\treturn this.set.some((thisComparators) => {\n\t\t\t\treturn isSatisfiable(thisComparators, options) && range.set.some((rangeComparators) => {\n\t\t\t\t\treturn isSatisfiable(rangeComparators, options) && thisComparators.every((thisComparator) => {\n\t\t\t\t\t\treturn rangeComparators.every((rangeComparator) => {\n\t\t\t\t\t\t\treturn thisComparator.intersects(rangeComparator, options);\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\ttest(version) {\n\t\t\tif (!version) return false;\n\t\t\tif (typeof version === \"string\") try {\n\t\t\t\tversion = new SemVer(version, this.options);\n\t\t\t} catch (er) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfor (let i = 0; i < this.set.length; i++) if (testSet(this.set[i], version, this.options)) return true;\n\t\t\treturn false;\n\t\t}\n\t};\n\tconst cache = new (require_lrucache())();\n\tconst parseOptions = require_parse_options();\n\tconst Comparator = require_comparator();\n\tconst debug = require_debug();\n\tconst SemVer = require_semver$1();\n\tconst { safeRe: re, t, comparatorTrimReplace, tildeTrimReplace, caretTrimReplace } = require_re();\n\tconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require_constants();\n\tconst isNullSet = (c) => c.value === \"<0.0.0-0\";\n\tconst isAny = (c) => c.value === \"\";\n\tconst isSatisfiable = (comparators, options) => {\n\t\tlet result = true;\n\t\tconst remainingComparators = comparators.slice();\n\t\tlet testComparator = remainingComparators.pop();\n\t\twhile (result && remainingComparators.length) {\n\t\t\tresult = remainingComparators.every((otherComparator) => {\n\t\t\t\treturn testComparator.intersects(otherComparator, options);\n\t\t\t});\n\t\t\ttestComparator = remainingComparators.pop();\n\t\t}\n\t\treturn result;\n\t};\n\tconst parseComparator = (comp, options) => {\n\t\tcomp = comp.replace(re[t.BUILD], \"\");\n\t\tdebug(\"comp\", comp, options);\n\t\tcomp = replaceCarets(comp, options);\n\t\tdebug(\"caret\", comp);\n\t\tcomp = replaceTildes(comp, options);\n\t\tdebug(\"tildes\", comp);\n\t\tcomp = replaceXRanges(comp, options);\n\t\tdebug(\"xrange\", comp);\n\t\tcomp = replaceStars(comp, options);\n\t\tdebug(\"stars\", comp);\n\t\treturn comp;\n\t};\n\tconst isX = (id) => !id || id.toLowerCase() === \"x\" || id === \"*\";\n\tconst replaceTildes = (comp, options) => {\n\t\treturn comp.trim().split(/\\s+/).map((c) => replaceTilde(c, options)).join(\" \");\n\t};\n\tconst replaceTilde = (comp, options) => {\n\t\tconst r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE];\n\t\treturn comp.replace(r, (_, M, m, p, pr) => {\n\t\t\tdebug(\"tilde\", comp, _, M, m, p, pr);\n\t\t\tlet ret;\n\t\t\tif (isX(M)) ret = \"\";\n\t\t\telse if (isX(m)) ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;\n\t\t\telse if (isX(p)) ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`;\n\t\t\telse if (pr) {\n\t\t\t\tdebug(\"replaceTilde pr\", pr);\n\t\t\t\tret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n\t\t\t} else ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;\n\t\t\tdebug(\"tilde return\", ret);\n\t\t\treturn ret;\n\t\t});\n\t};\n\tconst replaceCarets = (comp, options) => {\n\t\treturn comp.trim().split(/\\s+/).map((c) => replaceCaret(c, options)).join(\" \");\n\t};\n\tconst replaceCaret = (comp, options) => {\n\t\tdebug(\"caret\", comp, options);\n\t\tconst r = options.loose ? re[t.CARETLOOSE] : re[t.CARET];\n\t\tconst z = options.includePrerelease ? \"-0\" : \"\";\n\t\treturn comp.replace(r, (_, M, m, p, pr) => {\n\t\t\tdebug(\"caret\", comp, _, M, m, p, pr);\n\t\t\tlet ret;\n\t\t\tif (isX(M)) ret = \"\";\n\t\t\telse if (isX(m)) ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;\n\t\t\telse if (isX(p)) if (M === \"0\") ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;\n\t\t\telse ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`;\n\t\t\telse if (pr) {\n\t\t\t\tdebug(\"replaceCaret pr\", pr);\n\t\t\t\tif (M === \"0\") if (m === \"0\") ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`;\n\t\t\t\telse ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n\t\t\t\telse ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;\n\t\t\t} else {\n\t\t\t\tdebug(\"no pr\");\n\t\t\t\tif (M === \"0\") if (m === \"0\") ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;\n\t\t\t\telse ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;\n\t\t\t\telse ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;\n\t\t\t}\n\t\t\tdebug(\"caret return\", ret);\n\t\t\treturn ret;\n\t\t});\n\t};\n\tconst replaceXRanges = (comp, options) => {\n\t\tdebug(\"replaceXRanges\", comp, options);\n\t\treturn comp.split(/\\s+/).map((c) => replaceXRange(c, options)).join(\" \");\n\t};\n\tconst replaceXRange = (comp, options) => {\n\t\tcomp = comp.trim();\n\t\tconst r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];\n\t\treturn comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n\t\t\tdebug(\"xRange\", comp, ret, gtlt, M, m, p, pr);\n\t\t\tconst xM = isX(M);\n\t\t\tconst xm = xM || isX(m);\n\t\t\tconst xp = xm || isX(p);\n\t\t\tconst anyX = xp;\n\t\t\tif (gtlt === \"=\" && anyX) gtlt = \"\";\n\t\t\tpr = options.includePrerelease ? \"-0\" : \"\";\n\t\t\tif (xM) if (gtlt === \">\" || gtlt === \"<\") ret = \"<0.0.0-0\";\n\t\t\telse ret = \"*\";\n\t\t\telse if (gtlt && anyX) {\n\t\t\t\tif (xm) m = 0;\n\t\t\t\tp = 0;\n\t\t\t\tif (gtlt === \">\") {\n\t\t\t\t\tgtlt = \">=\";\n\t\t\t\t\tif (xm) {\n\t\t\t\t\t\tM = +M + 1;\n\t\t\t\t\t\tm = 0;\n\t\t\t\t\t\tp = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tm = +m + 1;\n\t\t\t\t\t\tp = 0;\n\t\t\t\t\t}\n\t\t\t\t} else if (gtlt === \"<=\") {\n\t\t\t\t\tgtlt = \"<\";\n\t\t\t\t\tif (xm) M = +M + 1;\n\t\t\t\t\telse m = +m + 1;\n\t\t\t\t}\n\t\t\t\tif (gtlt === \"<\") pr = \"-0\";\n\t\t\t\tret = `${gtlt + M}.${m}.${p}${pr}`;\n\t\t\t} else if (xm) ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`;\n\t\t\telse if (xp) ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;\n\t\t\tdebug(\"xRange return\", ret);\n\t\t\treturn ret;\n\t\t});\n\t};\n\tconst replaceStars = (comp, options) => {\n\t\tdebug(\"replaceStars\", comp, options);\n\t\treturn comp.trim().replace(re[t.STAR], \"\");\n\t};\n\tconst replaceGTE0 = (comp, options) => {\n\t\tdebug(\"replaceGTE0\", comp, options);\n\t\treturn comp.trim().replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], \"\");\n\t};\n\tconst hyphenReplace = (incPr) => ($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => {\n\t\tif (isX(fM)) from = \"\";\n\t\telse if (isX(fm)) from = `>=${fM}.0.0${incPr ? \"-0\" : \"\"}`;\n\t\telse if (isX(fp)) from = `>=${fM}.${fm}.0${incPr ? \"-0\" : \"\"}`;\n\t\telse if (fpr) from = `>=${from}`;\n\t\telse from = `>=${from}${incPr ? \"-0\" : \"\"}`;\n\t\tif (isX(tM)) to = \"\";\n\t\telse if (isX(tm)) to = `<${+tM + 1}.0.0-0`;\n\t\telse if (isX(tp)) to = `<${tM}.${+tm + 1}.0-0`;\n\t\telse if (tpr) to = `<=${tM}.${tm}.${tp}-${tpr}`;\n\t\telse if (incPr) to = `<${tM}.${tm}.${+tp + 1}-0`;\n\t\telse to = `<=${to}`;\n\t\treturn `${from} ${to}`.trim();\n\t};\n\tconst testSet = (set, version, options) => {\n\t\tfor (let i = 0; i < set.length; i++) if (!set[i].test(version)) return false;\n\t\tif (version.prerelease.length && !options.includePrerelease) {\n\t\t\tfor (let i = 0; i < set.length; i++) {\n\t\t\t\tdebug(set[i].semver);\n\t\t\t\tif (set[i].semver === Comparator.ANY) continue;\n\t\t\t\tif (set[i].semver.prerelease.length > 0) {\n\t\t\t\t\tconst allowed = set[i].semver;\n\t\t\t\t\tif (allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch) return true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t};\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/classes/comparator.js\nvar require_comparator = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst ANY = Symbol(\"SemVer ANY\");\n\tmodule.exports = class Comparator {\n\t\tstatic get ANY() {\n\t\t\treturn ANY;\n\t\t}\n\t\tconstructor(comp, options) {\n\t\t\toptions = parseOptions(options);\n\t\t\tif (comp instanceof Comparator) if (comp.loose === !!options.loose) return comp;\n\t\t\telse comp = comp.value;\n\t\t\tcomp = comp.trim().split(/\\s+/).join(\" \");\n\t\t\tdebug(\"comparator\", comp, options);\n\t\t\tthis.options = options;\n\t\t\tthis.loose = !!options.loose;\n\t\t\tthis.parse(comp);\n\t\t\tif (this.semver === ANY) this.value = \"\";\n\t\t\telse this.value = this.operator + this.semver.version;\n\t\t\tdebug(\"comp\", this);\n\t\t}\n\t\tparse(comp) {\n\t\t\tconst r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR];\n\t\t\tconst m = comp.match(r);\n\t\t\tif (!m) throw new TypeError(`Invalid comparator: ${comp}`);\n\t\t\tthis.operator = m[1] !== void 0 ? m[1] : \"\";\n\t\t\tif (this.operator === \"=\") this.operator = \"\";\n\t\t\tif (!m[2]) this.semver = ANY;\n\t\t\telse this.semver = new SemVer(m[2], this.options.loose);\n\t\t}\n\t\ttoString() {\n\t\t\treturn this.value;\n\t\t}\n\t\ttest(version) {\n\t\t\tdebug(\"Comparator.test\", version, this.options.loose);\n\t\t\tif (this.semver === ANY || version === ANY) return true;\n\t\t\tif (typeof version === \"string\") try {\n\t\t\t\tversion = new SemVer(version, this.options);\n\t\t\t} catch (er) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn cmp(version, this.operator, this.semver, this.options);\n\t\t}\n\t\tintersects(comp, options) {\n\t\t\tif (!(comp instanceof Comparator)) throw new TypeError(\"a Comparator is required\");\n\t\t\tif (this.operator === \"\") {\n\t\t\t\tif (this.value === \"\") return true;\n\t\t\t\treturn new Range(comp.value, options).test(this.value);\n\t\t\t} else if (comp.operator === \"\") {\n\t\t\t\tif (comp.value === \"\") return true;\n\t\t\t\treturn new Range(this.value, options).test(comp.semver);\n\t\t\t}\n\t\t\toptions = parseOptions(options);\n\t\t\tif (options.includePrerelease && (this.value === \"<0.0.0-0\" || comp.value === \"<0.0.0-0\")) return false;\n\t\t\tif (!options.includePrerelease && (this.value.startsWith(\"<0.0.0\") || comp.value.startsWith(\"<0.0.0\"))) return false;\n\t\t\tif (this.operator.startsWith(\">\") && comp.operator.startsWith(\">\")) return true;\n\t\t\tif (this.operator.startsWith(\"<\") && comp.operator.startsWith(\"<\")) return true;\n\t\t\tif (this.semver.version === comp.semver.version && this.operator.includes(\"=\") && comp.operator.includes(\"=\")) return true;\n\t\t\tif (cmp(this.semver, \"<\", comp.semver, options) && this.operator.startsWith(\">\") && comp.operator.startsWith(\"<\")) return true;\n\t\t\tif (cmp(this.semver, \">\", comp.semver, options) && this.operator.startsWith(\"<\") && comp.operator.startsWith(\">\")) return true;\n\t\t\treturn false;\n\t\t}\n\t};\n\tconst parseOptions = require_parse_options();\n\tconst { safeRe: re, t } = require_re();\n\tconst cmp = require_cmp();\n\tconst debug = require_debug();\n\tconst SemVer = require_semver$1();\n\tconst Range = require_range();\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/satisfies.js\nvar require_satisfies = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst Range = require_range();\n\tconst satisfies = (version, range, options) => {\n\t\ttry {\n\t\t\trange = new Range(range, options);\n\t\t} catch (er) {\n\t\t\treturn false;\n\t\t}\n\t\treturn range.test(version);\n\t};\n\tmodule.exports = satisfies;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/ranges/to-comparators.js\nvar require_to_comparators = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst Range = require_range();\n\tconst toComparators = (range, options) => new Range(range, options).set.map((comp) => comp.map((c) => c.value).join(\" \").trim().split(\" \"));\n\tmodule.exports = toComparators;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/ranges/max-satisfying.js\nvar require_max_satisfying = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst SemVer = require_semver$1();\n\tconst Range = require_range();\n\tconst maxSatisfying = (versions, range, options) => {\n\t\tlet max = null;\n\t\tlet maxSV = null;\n\t\tlet rangeObj = null;\n\t\ttry {\n\t\t\trangeObj = new Range(range, options);\n\t\t} catch (er) {\n\t\t\treturn null;\n\t\t}\n\t\tversions.forEach((v) => {\n\t\t\tif (rangeObj.test(v)) {\n\t\t\t\tif (!max || maxSV.compare(v) === -1) {\n\t\t\t\t\tmax = v;\n\t\t\t\t\tmaxSV = new SemVer(max, options);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn max;\n\t};\n\tmodule.exports = maxSatisfying;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/ranges/min-satisfying.js\nvar require_min_satisfying = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst SemVer = require_semver$1();\n\tconst Range = require_range();\n\tconst minSatisfying = (versions, range, options) => {\n\t\tlet min = null;\n\t\tlet minSV = null;\n\t\tlet rangeObj = null;\n\t\ttry {\n\t\t\trangeObj = new Range(range, options);\n\t\t} catch (er) {\n\t\t\treturn null;\n\t\t}\n\t\tversions.forEach((v) => {\n\t\t\tif (rangeObj.test(v)) {\n\t\t\t\tif (!min || minSV.compare(v) === 1) {\n\t\t\t\t\tmin = v;\n\t\t\t\t\tminSV = new SemVer(min, options);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn min;\n\t};\n\tmodule.exports = minSatisfying;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/ranges/min-version.js\nvar require_min_version = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst SemVer = require_semver$1();\n\tconst Range = require_range();\n\tconst gt = require_gt();\n\tconst minVersion = (range, loose) => {\n\t\trange = new Range(range, loose);\n\t\tlet minver = new SemVer(\"0.0.0\");\n\t\tif (range.test(minver)) return minver;\n\t\tminver = new SemVer(\"0.0.0-0\");\n\t\tif (range.test(minver)) return minver;\n\t\tminver = null;\n\t\tfor (let i = 0; i < range.set.length; ++i) {\n\t\t\tconst comparators = range.set[i];\n\t\t\tlet setMin = null;\n\t\t\tcomparators.forEach((comparator) => {\n\t\t\t\tconst compver = new SemVer(comparator.semver.version);\n\t\t\t\tswitch (comparator.operator) {\n\t\t\t\t\tcase \">\":\n\t\t\t\t\t\tif (compver.prerelease.length === 0) compver.patch++;\n\t\t\t\t\t\telse compver.prerelease.push(0);\n\t\t\t\t\t\tcompver.raw = compver.format();\n\t\t\t\t\tcase \"\":\n\t\t\t\t\tcase \">=\":\n\t\t\t\t\t\tif (!setMin || gt(compver, setMin)) setMin = compver;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"<\":\n\t\t\t\t\tcase \"<=\": break;\n\t\t\t\t\tdefault: throw new Error(`Unexpected operation: ${comparator.operator}`);\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (setMin && (!minver || gt(minver, setMin))) minver = setMin;\n\t\t}\n\t\tif (minver && range.test(minver)) return minver;\n\t\treturn null;\n\t};\n\tmodule.exports = minVersion;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/ranges/valid.js\nvar require_valid = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst Range = require_range();\n\tconst validRange = (range, options) => {\n\t\ttry {\n\t\t\treturn new Range(range, options).range || \"*\";\n\t\t} catch (er) {\n\t\t\treturn null;\n\t\t}\n\t};\n\tmodule.exports = validRange;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/ranges/outside.js\nvar require_outside = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst SemVer = require_semver$1();\n\tconst Comparator = require_comparator();\n\tconst { ANY } = Comparator;\n\tconst Range = require_range();\n\tconst satisfies = require_satisfies();\n\tconst gt = require_gt();\n\tconst lt = require_lt();\n\tconst lte = require_lte();\n\tconst gte = require_gte();\n\tconst outside = (version, range, hilo, options) => {\n\t\tversion = new SemVer(version, options);\n\t\trange = new Range(range, options);\n\t\tlet gtfn, ltefn, ltfn, comp, ecomp;\n\t\tswitch (hilo) {\n\t\t\tcase \">\":\n\t\t\t\tgtfn = gt;\n\t\t\t\tltefn = lte;\n\t\t\t\tltfn = lt;\n\t\t\t\tcomp = \">\";\n\t\t\t\tecomp = \">=\";\n\t\t\t\tbreak;\n\t\t\tcase \"<\":\n\t\t\t\tgtfn = lt;\n\t\t\t\tltefn = gte;\n\t\t\t\tltfn = gt;\n\t\t\t\tcomp = \"<\";\n\t\t\t\tecomp = \"<=\";\n\t\t\t\tbreak;\n\t\t\tdefault: throw new TypeError(\"Must provide a hilo val of \\\"<\\\" or \\\">\\\"\");\n\t\t}\n\t\tif (satisfies(version, range, options)) return false;\n\t\tfor (let i = 0; i < range.set.length; ++i) {\n\t\t\tconst comparators = range.set[i];\n\t\t\tlet high = null;\n\t\t\tlet low = null;\n\t\t\tcomparators.forEach((comparator) => {\n\t\t\t\tif (comparator.semver === ANY) comparator = new Comparator(\">=0.0.0\");\n\t\t\t\thigh = high || comparator;\n\t\t\t\tlow = low || comparator;\n\t\t\t\tif (gtfn(comparator.semver, high.semver, options)) high = comparator;\n\t\t\t\telse if (ltfn(comparator.semver, low.semver, options)) low = comparator;\n\t\t\t});\n\t\t\tif (high.operator === comp || high.operator === ecomp) return false;\n\t\t\tif ((!low.operator || low.operator === comp) && ltefn(version, low.semver)) return false;\n\t\t\telse if (low.operator === ecomp && ltfn(version, low.semver)) return false;\n\t\t}\n\t\treturn true;\n\t};\n\tmodule.exports = outside;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/ranges/gtr.js\nvar require_gtr = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst outside = require_outside();\n\tconst gtr = (version, range, options) => outside(version, range, \">\", options);\n\tmodule.exports = gtr;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/ranges/ltr.js\nvar require_ltr = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst outside = require_outside();\n\tconst ltr = (version, range, options) => outside(version, range, \"<\", options);\n\tmodule.exports = ltr;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/ranges/intersects.js\nvar require_intersects = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst Range = require_range();\n\tconst intersects = (r1, r2, options) => {\n\t\tr1 = new Range(r1, options);\n\t\tr2 = new Range(r2, options);\n\t\treturn r1.intersects(r2, options);\n\t};\n\tmodule.exports = intersects;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/ranges/simplify.js\nvar require_simplify = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst satisfies = require_satisfies();\n\tconst compare = require_compare();\n\tmodule.exports = (versions, range, options) => {\n\t\tconst set = [];\n\t\tlet first = null;\n\t\tlet prev = null;\n\t\tconst v = versions.sort((a, b) => compare(a, b, options));\n\t\tfor (const version of v) if (satisfies(version, range, options)) {\n\t\t\tprev = version;\n\t\t\tif (!first) first = version;\n\t\t} else {\n\t\t\tif (prev) set.push([first, prev]);\n\t\t\tprev = null;\n\t\t\tfirst = null;\n\t\t}\n\t\tif (first) set.push([first, null]);\n\t\tconst ranges = [];\n\t\tfor (const [min, max] of set) if (min === max) ranges.push(min);\n\t\telse if (!max && min === v[0]) ranges.push(\"*\");\n\t\telse if (!max) ranges.push(`>=${min}`);\n\t\telse if (min === v[0]) ranges.push(`<=${max}`);\n\t\telse ranges.push(`${min} - ${max}`);\n\t\tconst simplified = ranges.join(\" || \");\n\t\tconst original = typeof range.raw === \"string\" ? range.raw : String(range);\n\t\treturn simplified.length < original.length ? simplified : range;\n\t};\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/ranges/subset.js\nvar require_subset = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst Range = require_range();\n\tconst Comparator = require_comparator();\n\tconst { ANY } = Comparator;\n\tconst satisfies = require_satisfies();\n\tconst compare = require_compare();\n\tconst subset = (sub, dom, options = {}) => {\n\t\tif (sub === dom) return true;\n\t\tsub = new Range(sub, options);\n\t\tdom = new Range(dom, options);\n\t\tlet sawNonNull = false;\n\t\tOUTER: for (const simpleSub of sub.set) {\n\t\t\tfor (const simpleDom of dom.set) {\n\t\t\t\tconst isSub = simpleSubset(simpleSub, simpleDom, options);\n\t\t\t\tsawNonNull = sawNonNull || isSub !== null;\n\t\t\t\tif (isSub) continue OUTER;\n\t\t\t}\n\t\t\tif (sawNonNull) return false;\n\t\t}\n\t\treturn true;\n\t};\n\tconst minimumVersionWithPreRelease = [new Comparator(\">=0.0.0-0\")];\n\tconst minimumVersion = [new Comparator(\">=0.0.0\")];\n\tconst simpleSubset = (sub, dom, options) => {\n\t\tif (sub === dom) return true;\n\t\tif (sub.length === 1 && sub[0].semver === ANY) if (dom.length === 1 && dom[0].semver === ANY) return true;\n\t\telse if (options.includePrerelease) sub = minimumVersionWithPreRelease;\n\t\telse sub = minimumVersion;\n\t\tif (dom.length === 1 && dom[0].semver === ANY) if (options.includePrerelease) return true;\n\t\telse dom = minimumVersion;\n\t\tconst eqSet = /* @__PURE__ */ new Set();\n\t\tlet gt, lt;\n\t\tfor (const c of sub) if (c.operator === \">\" || c.operator === \">=\") gt = higherGT(gt, c, options);\n\t\telse if (c.operator === \"<\" || c.operator === \"<=\") lt = lowerLT(lt, c, options);\n\t\telse eqSet.add(c.semver);\n\t\tif (eqSet.size > 1) return null;\n\t\tlet gtltComp;\n\t\tif (gt && lt) {\n\t\t\tgtltComp = compare(gt.semver, lt.semver, options);\n\t\t\tif (gtltComp > 0) return null;\n\t\t\telse if (gtltComp === 0 && (gt.operator !== \">=\" || lt.operator !== \"<=\")) return null;\n\t\t}\n\t\tfor (const eq of eqSet) {\n\t\t\tif (gt && !satisfies(eq, String(gt), options)) return null;\n\t\t\tif (lt && !satisfies(eq, String(lt), options)) return null;\n\t\t\tfor (const c of dom) if (!satisfies(eq, String(c), options)) return false;\n\t\t\treturn true;\n\t\t}\n\t\tlet higher, lower;\n\t\tlet hasDomLT, hasDomGT;\n\t\tlet needDomLTPre = lt && !options.includePrerelease && lt.semver.prerelease.length ? lt.semver : false;\n\t\tlet needDomGTPre = gt && !options.includePrerelease && gt.semver.prerelease.length ? gt.semver : false;\n\t\tif (needDomLTPre && needDomLTPre.prerelease.length === 1 && lt.operator === \"<\" && needDomLTPre.prerelease[0] === 0) needDomLTPre = false;\n\t\tfor (const c of dom) {\n\t\t\thasDomGT = hasDomGT || c.operator === \">\" || c.operator === \">=\";\n\t\t\thasDomLT = hasDomLT || c.operator === \"<\" || c.operator === \"<=\";\n\t\t\tif (gt) {\n\t\t\t\tif (needDomGTPre) {\n\t\t\t\t\tif (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomGTPre.major && c.semver.minor === needDomGTPre.minor && c.semver.patch === needDomGTPre.patch) needDomGTPre = false;\n\t\t\t\t}\n\t\t\t\tif (c.operator === \">\" || c.operator === \">=\") {\n\t\t\t\t\thigher = higherGT(gt, c, options);\n\t\t\t\t\tif (higher === c && higher !== gt) return false;\n\t\t\t\t} else if (gt.operator === \">=\" && !satisfies(gt.semver, String(c), options)) return false;\n\t\t\t}\n\t\t\tif (lt) {\n\t\t\t\tif (needDomLTPre) {\n\t\t\t\t\tif (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomLTPre.major && c.semver.minor === needDomLTPre.minor && c.semver.patch === needDomLTPre.patch) needDomLTPre = false;\n\t\t\t\t}\n\t\t\t\tif (c.operator === \"<\" || c.operator === \"<=\") {\n\t\t\t\t\tlower = lowerLT(lt, c, options);\n\t\t\t\t\tif (lower === c && lower !== lt) return false;\n\t\t\t\t} else if (lt.operator === \"<=\" && !satisfies(lt.semver, String(c), options)) return false;\n\t\t\t}\n\t\t\tif (!c.operator && (lt || gt) && gtltComp !== 0) return false;\n\t\t}\n\t\tif (gt && hasDomLT && !lt && gtltComp !== 0) return false;\n\t\tif (lt && hasDomGT && !gt && gtltComp !== 0) return false;\n\t\tif (needDomGTPre || needDomLTPre) return false;\n\t\treturn true;\n\t};\n\tconst higherGT = (a, b, options) => {\n\t\tif (!a) return b;\n\t\tconst comp = compare(a.semver, b.semver, options);\n\t\treturn comp > 0 ? a : comp < 0 ? b : b.operator === \">\" && a.operator === \">=\" ? b : a;\n\t};\n\tconst lowerLT = (a, b, options) => {\n\t\tif (!a) return b;\n\t\tconst comp = compare(a.semver, b.semver, options);\n\t\treturn comp < 0 ? a : comp > 0 ? b : b.operator === \"<\" && a.operator === \"<=\" ? b : a;\n\t};\n\tmodule.exports = subset;\n}));\n//#endregion\n//#region ../internals-helpers/dist/index.js\nvar import_semver = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst internalRe = require_re();\n\tconst constants = require_constants();\n\tconst SemVer = require_semver$1();\n\tconst identifiers = require_identifiers();\n\tmodule.exports = {\n\t\tparse: require_parse(),\n\t\tvalid: require_valid$1(),\n\t\tclean: require_clean(),\n\t\tinc: require_inc(),\n\t\tdiff: require_diff(),\n\t\tmajor: require_major(),\n\t\tminor: require_minor(),\n\t\tpatch: require_patch(),\n\t\tprerelease: require_prerelease(),\n\t\tcompare: require_compare(),\n\t\trcompare: require_rcompare(),\n\t\tcompareLoose: require_compare_loose(),\n\t\tcompareBuild: require_compare_build(),\n\t\tsort: require_sort(),\n\t\trsort: require_rsort(),\n\t\tgt: require_gt(),\n\t\tlt: require_lt(),\n\t\teq: require_eq(),\n\t\tneq: require_neq(),\n\t\tgte: require_gte(),\n\t\tlte: require_lte(),\n\t\tcmp: require_cmp(),\n\t\tcoerce: require_coerce(),\n\t\tComparator: require_comparator(),\n\t\tRange: require_range(),\n\t\tsatisfies: require_satisfies(),\n\t\ttoComparators: require_to_comparators(),\n\t\tmaxSatisfying: require_max_satisfying(),\n\t\tminSatisfying: require_min_satisfying(),\n\t\tminVersion: require_min_version(),\n\t\tvalidRange: require_valid(),\n\t\toutside: require_outside(),\n\t\tgtr: require_gtr(),\n\t\tltr: require_ltr(),\n\t\tintersects: require_intersects(),\n\t\tsimplifyRange: require_simplify(),\n\t\tsubset: require_subset(),\n\t\tSemVer,\n\t\tre: internalRe.re,\n\t\tsrc: internalRe.src,\n\t\ttokens: internalRe.t,\n\t\tSEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n\t\tRELEASE_TYPES: constants.RELEASE_TYPES,\n\t\tcompareIdentifiers: identifiers.compareIdentifiers,\n\t\trcompareIdentifiers: identifiers.rcompareIdentifiers\n\t};\n})))(), 1);\nconst ALPHANUMERIC = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n`${ALPHANUMERIC}`, `${ALPHANUMERIC}`, `${ALPHANUMERIC}`, `${ALPHANUMERIC}`;\nfunction resolve(range, versions) {\n\ttry {\n\t\tif (!range || !import_semver.default.validRange(range)) return null;\n\t\tconst validVersions = versions.filter((v) => import_semver.default.valid(v) !== null);\n\t\tif (validVersions.length === 0) return null;\n\t\treturn import_semver.default.maxSatisfying(validVersions, range) ?? null;\n\t} catch {\n\t\treturn null;\n\t}\n}\nfunction isDomainAllowed(domain, allowedDomains) {\n\tfor (const allowed of allowedDomains) {\n\t\tif (allowed === domain) return true;\n\t\tif (allowed.startsWith(\"*.\")) {\n\t\t\tconst suffix = allowed.slice(1);\n\t\t\tif (domain.endsWith(suffix) || domain === allowed.slice(2)) return true;\n\t\t\tif (domain === allowed) return true;\n\t\t}\n\t}\n\treturn false;\n}\nfunction isPathAllowed(requestedPath, allowedPaths) {\n\tconst norm = (p) => p.replaceAll(\"\\\\\", \"/\");\n\tconst req = norm(requestedPath);\n\tif (req.includes(\"..\")) return false;\n\tfor (const allowed of allowedPaths) {\n\t\tconst a = norm(allowed);\n\t\tif (a === req) return true;\n\t\tif (a.endsWith(\"/**\")) {\n\t\t\tconst prefix = a.slice(0, -3);\n\t\t\tif (req === prefix || req.startsWith(`${prefix}/`)) return true;\n\t\t}\n\t}\n\treturn false;\n}\n/**\n* Thrown by checkPermissionBudget when a skill's declared permissions exceed the project budget.\n*\n* internals-helpers cannot import from @tankpkg/sdk (would invert dep graph).\n* sdk shim catches this and re-throws as TankPermissionError to preserve\n* the public sdk error API. See D7 / INTENT C25b.\n*/\nvar PermissionBudgetError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = \"PermissionBudgetError\";\n\t}\n};\nfunction checkPermissionBudget$1(budget, skillPerms, skillName) {\n\tif (!skillPerms) return;\n\tif (skillPerms.subprocess === true && budget.subprocess !== true) throw new PermissionBudgetError(`${skillName} requires subprocess access, but project budget does not allow it`);\n\tif (skillPerms.network?.outbound && skillPerms.network.outbound.length > 0) {\n\t\tconst budgetDomains = budget.network?.outbound ?? [];\n\t\tfor (const domain of skillPerms.network.outbound) if (!isDomainAllowed(domain, budgetDomains)) throw new PermissionBudgetError(`${skillName} requests network access to \"${domain}\", which is not in the project's permission budget`);\n\t}\n\tif (skillPerms.filesystem?.read && skillPerms.filesystem.read.length > 0) {\n\t\tconst budgetPaths = budget.filesystem?.read ?? [];\n\t\tfor (const p of skillPerms.filesystem.read) if (!isPathAllowed(p, budgetPaths)) throw new PermissionBudgetError(`${skillName} requests filesystem read access to \"${p}\", which is not in the project's permission budget`);\n\t}\n\tif (skillPerms.filesystem?.write && skillPerms.filesystem.write.length > 0) {\n\t\tconst budgetPaths = budget.filesystem?.write ?? [];\n\t\tfor (const p of skillPerms.filesystem.write) if (!isPathAllowed(p, budgetPaths)) throw new PermissionBudgetError(`${skillName} requests filesystem write access to \"${p}\", which is not in the project's permission budget`);\n\t}\n}\nfunction collectPermissionViolations$1(budget, skillPerms, skillName) {\n\tconst violations = [];\n\tif (!skillPerms) return violations;\n\tif (skillPerms.subprocess === true && budget.subprocess !== true) violations.push({\n\t\tskillName,\n\t\ttype: \"subprocess\",\n\t\trequested: \"true\"\n\t});\n\tif (skillPerms.network?.outbound) {\n\t\tconst budgetDomains = budget.network?.outbound ?? [];\n\t\tfor (const domain of skillPerms.network.outbound) if (!isDomainAllowed(domain, budgetDomains)) violations.push({\n\t\t\tskillName,\n\t\t\ttype: \"network.outbound\",\n\t\t\trequested: domain\n\t\t});\n\t}\n\tif (skillPerms.filesystem?.read) {\n\t\tconst budgetPaths = budget.filesystem?.read ?? [];\n\t\tfor (const p of skillPerms.filesystem.read) if (!isPathAllowed(p, budgetPaths)) violations.push({\n\t\t\tskillName,\n\t\t\ttype: \"filesystem.read\",\n\t\t\trequested: p\n\t\t});\n\t}\n\tif (skillPerms.filesystem?.write) {\n\t\tconst budgetPaths = budget.filesystem?.write ?? [];\n\t\tfor (const p of skillPerms.filesystem.write) if (!isPathAllowed(p, budgetPaths)) violations.push({\n\t\t\tskillName,\n\t\t\ttype: \"filesystem.write\",\n\t\t\trequested: p\n\t\t});\n\t}\n\treturn violations;\n}\n//#endregion\n//#region src/install/permissions.ts\nfunction checkPermissionBudget(budget, skillPerms, skillName) {\n\ttry {\n\t\tcheckPermissionBudget$1(budget, skillPerms, skillName);\n\t} catch (e) {\n\t\tif (e instanceof PermissionBudgetError) throw new TankPermissionError(e.message);\n\t\tthrow e;\n\t}\n}\nfunction collectPermissionViolations(budget, skillPerms, skillName) {\n\treturn collectPermissionViolations$1(budget, skillPerms, skillName);\n}\n//#endregion\n//#region src/install/resolver.ts\nfunction buildSkillKey(name, version) {\n\treturn `${name}@${version}`;\n}\nfunction formatConflictMessage(conflict) {\n\tconst lines = [`Version conflict for ${conflict.skillName}:`];\n\tfor (const req of conflict.requirements) {\n\t\tconst origin = req.source.kind === \"root\" ? \"root\" : req.source.from ?? \"unknown\";\n\t\tlines.push(` - ${req.range} (required by ${origin})`);\n\t}\n\tlines.push(`Available versions: ${conflict.availableVersions.join(\", \")}`);\n\tlines.push(\"No single version satisfies all constraints.\");\n\treturn lines.join(\"\\n\");\n}\nasync function resolveDependencyTree(rootDependencies, fetcher) {\n\tconst constraintsByName = /* @__PURE__ */ new Map();\n\tconst selectedByName = /* @__PURE__ */ new Map();\n\tconst metadataCache = /* @__PURE__ */ new Map();\n\tconst versionsCache = /* @__PURE__ */ new Map();\n\tconst contributedDeps = /* @__PURE__ */ new Map();\n\tconst queue = /* @__PURE__ */ new Set();\n\tconst inProgress = /* @__PURE__ */ new Set();\n\tconst sortedRootNames = Object.keys(rootDependencies).sort();\n\tfor (const name of sortedRootNames) {\n\t\tconst range = rootDependencies[name];\n\t\tconstraintsByName.set(name, [{\n\t\t\tname,\n\t\t\trange,\n\t\t\tsource: { kind: \"root\" }\n\t\t}]);\n\t\tqueue.add(name);\n\t}\n\tconst MAX_ITERATIONS = 1e4;\n\tlet iterations = 0;\n\twhile (queue.size > 0) {\n\t\tif (++iterations > MAX_ITERATIONS) throw new Error(`Dependency resolution exceeded ${MAX_ITERATIONS} iterations. This likely indicates a degenerate dependency graph.`);\n\t\tconst name = [...queue].sort()[0];\n\t\tqueue.delete(name);\n\t\tif (inProgress.has(name)) continue;\n\t\tconst constraints = constraintsByName.get(name);\n\t\tif (!constraints || constraints.length === 0) continue;\n\t\tlet versionInfos = versionsCache.get(name);\n\t\tif (!versionInfos) {\n\t\t\tversionInfos = await fetcher.fetchVersions(name);\n\t\t\tversionsCache.set(name, versionInfos);\n\t\t}\n\t\tconst availableVersions = versionInfos.map((v) => v.version).sort();\n\t\tconst selectedVersion = findSatisfyingVersion(availableVersions, constraints);\n\t\tif (selectedVersion === null) throw new Error(formatConflictMessage({\n\t\t\tskillName: name,\n\t\t\trequirements: constraints,\n\t\t\tavailableVersions\n\t\t}));\n\t\tconst previousVersion = selectedByName.get(name);\n\t\tif (previousVersion === selectedVersion) continue;\n\t\tinProgress.add(name);\n\t\tif (previousVersion !== void 0) {\n\t\t\tconst prevKey = buildSkillKey(name, previousVersion);\n\t\t\tconst prevDeps = contributedDeps.get(prevKey) ?? [];\n\t\t\tfor (const depName of prevDeps) {\n\t\t\t\tconst depConstraints = constraintsByName.get(depName);\n\t\t\t\tif (depConstraints) {\n\t\t\t\t\tconst filtered = depConstraints.filter((r) => r.source.from !== prevKey);\n\t\t\t\t\tif (filtered.length > 0) constraintsByName.set(depName, filtered);\n\t\t\t\t\telse constraintsByName.delete(depName);\n\t\t\t\t\tqueue.add(depName);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcontributedDeps.delete(prevKey);\n\t\t}\n\t\tselectedByName.set(name, selectedVersion);\n\t\tconst skillKey = buildSkillKey(name, selectedVersion);\n\t\tlet meta = metadataCache.get(skillKey);\n\t\tif (!meta) {\n\t\t\tmeta = await fetcher.fetchMetadata(name, selectedVersion);\n\t\t\tmetadataCache.set(skillKey, meta);\n\t\t}\n\t\tconst depNames = [];\n\t\tconst sortedDepEntries = Object.entries(meta.dependencies).sort(([a], [b]) => a.localeCompare(b));\n\t\tfor (const [depName, depRange] of sortedDepEntries) {\n\t\t\tdepNames.push(depName);\n\t\t\tconst requirement = {\n\t\t\t\tname: depName,\n\t\t\t\trange: depRange,\n\t\t\t\tsource: {\n\t\t\t\t\tkind: \"skill\",\n\t\t\t\t\tfrom: skillKey\n\t\t\t\t}\n\t\t\t};\n\t\t\tconst existing = constraintsByName.get(depName) ?? [];\n\t\t\texisting.push(requirement);\n\t\t\tconstraintsByName.set(depName, existing);\n\t\t\tqueue.add(depName);\n\t\t}\n\t\tcontributedDeps.set(skillKey, depNames);\n\t\tinProgress.delete(name);\n\t}\n\tfor (const [name] of selectedByName) {\n\t\tconst constraints = constraintsByName.get(name);\n\t\tif (!constraints || constraints.length === 0) selectedByName.delete(name);\n\t}\n\treturn buildGraph(selectedByName, metadataCache);\n}\nfunction findSatisfyingVersion(availableVersions, constraints) {\n\tconst satisfyingSets = [...new Set(constraints.map((c) => c.range))].map((range) => {\n\t\tconst matching = /* @__PURE__ */ new Set();\n\t\tfor (const v of availableVersions) if (resolve(range, [v]) !== null) matching.add(v);\n\t\treturn matching;\n\t});\n\tif (satisfyingSets.length === 0) return null;\n\tlet intersection = satisfyingSets[0];\n\tfor (let i = 1; i < satisfyingSets.length; i++) intersection = new Set([...intersection].filter((v) => satisfyingSets[i].has(v)));\n\tif (intersection.size === 0) return null;\n\treturn resolve(\"*\", [...intersection]);\n}\nfunction buildGraph(selectedByName, metadataCache) {\n\tconst nodes = /* @__PURE__ */ new Map();\n\tconst installOrder = [];\n\tconst sortedEntries = [...selectedByName.entries()].sort(([a], [b]) => a.localeCompare(b));\n\tfor (const [name, version] of sortedEntries) {\n\t\tconst skillKey = buildSkillKey(name, version);\n\t\tconst meta = metadataCache.get(skillKey);\n\t\tif (!meta) throw new Error(`Internal error: missing metadata for ${skillKey}`);\n\t\tconst resolvedDeps = {};\n\t\tconst sortedDepNames = Object.keys(meta.dependencies).sort();\n\t\tfor (const depName of sortedDepNames) {\n\t\t\tconst depVersion = selectedByName.get(depName);\n\t\t\tif (depVersion === void 0) throw new Error(`Internal error: ${skillKey} depends on ${depName} but it was not resolved`);\n\t\t\tresolvedDeps[depName] = depVersion;\n\t\t}\n\t\tnodes.set(name, {\n\t\t\tname,\n\t\t\tversion,\n\t\t\tmeta,\n\t\t\tdependencies: resolvedDeps\n\t\t});\n\t\tinstallOrder.push(skillKey);\n\t}\n\treturn {\n\t\tnodes,\n\t\tinstallOrder\n\t};\n}\n//#endregion\n//#region src/install/pipeline.ts\nconst MAX_DOWNLOAD_BYTES = 100 * 1024 * 1024;\nconst MAX_EXTRACT_ENTRIES = 1e4;\nconst MAX_EXTRACT_FILE_BYTES = 50 * 1024 * 1024;\nconst MAX_EXTRACT_TOTAL_BYTES = 500 * 1024 * 1024;\nfunction validateDownloadUrl(url) {\n\tlet parsed;\n\ttry {\n\t\tparsed = new URL(url);\n\t} catch {\n\t\tthrow new TankNetworkError(`Invalid download URL: ${url}`);\n\t}\n\tif (parsed.protocol !== \"https:\" && parsed.protocol !== \"http:\") throw new TankNetworkError(`Download URL must use https or http: ${url}`);\n\tif (parsed.username || parsed.password) throw new TankNetworkError(`Download URL must not contain credentials: ${url}`);\n}\nasync function downloadAllParallel(nodes, onProgress) {\n\tconst results = /* @__PURE__ */ new Map();\n\tconst CONCURRENCY_LIMIT = 8;\n\tfor (let i = 0; i < nodes.length; i += CONCURRENCY_LIMIT) {\n\t\tconst promises = nodes.slice(i, i + CONCURRENCY_LIMIT).map(async (node) => {\n\t\t\tonProgress?.(`Downloading ${node.name}@${node.version}...`);\n\t\t\tvalidateDownloadUrl(node.meta.downloadUrl);\n\t\t\tlet res;\n\t\t\ttry {\n\t\t\t\tres = await fetch(node.meta.downloadUrl, { redirect: \"manual\" });\n\t\t\t} catch (err) {\n\t\t\t\tthrow new TankNetworkError(`Network error downloading ${node.name}@${node.version}`, err instanceof Error ? err : void 0);\n\t\t\t}\n\t\t\tif (res.status >= 300 && res.status < 400) throw new TankNetworkError(`Unexpected redirect (${res.status}) downloading ${node.name}@${node.version}. Refusing to follow.`);\n\t\t\tif (!res.ok) throw new TankNetworkError(`Failed to download ${node.name}@${node.version}: ${res.status} ${res.statusText}`);\n\t\t\tconst contentLength = res.headers.get(\"content-length\");\n\t\t\tif (contentLength && Number(contentLength) > MAX_DOWNLOAD_BYTES) throw new TankNetworkError(`Tarball for ${node.name}@${node.version} exceeds ${MAX_DOWNLOAD_BYTES} byte limit (Content-Length: ${contentLength})`);\n\t\t\tconst chunks = [];\n\t\t\tlet received = 0;\n\t\t\tconst reader = res.body?.getReader();\n\t\t\tif (!reader) throw new TankNetworkError(`No response body for ${node.name}@${node.version}`);\n\t\t\twhile (true) {\n\t\t\t\tconst { done, value } = await reader.read();\n\t\t\t\tif (done) break;\n\t\t\t\treceived += value.byteLength;\n\t\t\t\tif (received > MAX_DOWNLOAD_BYTES) {\n\t\t\t\t\treader.cancel();\n\t\t\t\t\tthrow new TankNetworkError(`Tarball for ${node.name}@${node.version} exceeds ${MAX_DOWNLOAD_BYTES} byte limit`);\n\t\t\t\t}\n\t\t\t\tchunks.push(value);\n\t\t\t}\n\t\t\tconst buffer = Buffer.concat(chunks);\n\t\t\tconst computedIntegrity = `sha512-${crypto$1.createHash(\"sha512\").update(buffer).digest(\"base64\")}`;\n\t\t\tif (computedIntegrity !== node.meta.integrity) throw new TankIntegrityError(`Integrity mismatch for ${node.name}@${node.version}`, {\n\t\t\t\texpected: node.meta.integrity,\n\t\t\t\tactual: computedIntegrity\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tname: node.name,\n\t\t\t\tbuffer,\n\t\t\t\tintegrity: computedIntegrity\n\t\t\t};\n\t\t});\n\t\tconst batchResults = await Promise.all(promises);\n\t\tfor (const result of batchResults) results.set(result.name, {\n\t\t\tbuffer: result.buffer,\n\t\t\tintegrity: result.integrity\n\t\t});\n\t}\n\treturn results;\n}\nfunction verifyExtractedDependencies(extractDir, node, onProgress) {\n\tlet extractedManifestPath = path.join(extractDir, MANIFEST_FILENAME);\n\tif (!fs.existsSync(extractedManifestPath)) extractedManifestPath = path.join(extractDir, LEGACY_MANIFEST_FILENAME);\n\tif (!fs.existsSync(extractedManifestPath)) return;\n\ttry {\n\t\tconst raw = fs.readFileSync(extractedManifestPath, \"utf-8\");\n\t\tconst extractedDeps = JSON.parse(raw).skills ?? {};\n\t\tconst apiDeps = node.meta.dependencies;\n\t\tconst extractedSorted = Object.fromEntries(Object.entries(extractedDeps).sort(([a], [b]) => a.localeCompare(b)));\n\t\tconst apiSorted = Object.fromEntries(Object.entries(apiDeps).sort(([a], [b]) => a.localeCompare(b)));\n\t\tif (JSON.stringify(extractedSorted) !== JSON.stringify(apiSorted)) onProgress?.(`Warning: ${node.name}@${node.version} manifest dependencies differ from registry metadata`);\n\t} catch {}\n}\nfunction readExtractedDependencies(extractDir) {\n\tlet extractedManifestPath = path.join(extractDir, MANIFEST_FILENAME);\n\tif (!fs.existsSync(extractedManifestPath)) extractedManifestPath = path.join(extractDir, LEGACY_MANIFEST_FILENAME);\n\tif (!fs.existsSync(extractedManifestPath)) return {};\n\ttry {\n\t\tconst raw = fs.readFileSync(extractedManifestPath, \"utf-8\");\n\t\tconst extractedDeps = JSON.parse(raw).skills;\n\t\tif (!extractedDeps || typeof extractedDeps !== \"object\") return {};\n\t\tconst deps = {};\n\t\tfor (const [depName, depRange] of Object.entries(extractedDeps)) if (typeof depRange === \"string\") deps[depName] = depRange;\n\t\treturn deps;\n\t} catch {\n\t\treturn {};\n\t}\n}\nfunction writeLockfileWithResolvedGraph(lock, nodes, downloaded, onProgress) {\n\tfor (const node of nodes) {\n\t\tconst key = buildSkillKey(node.name, node.version);\n\t\tif (!downloaded.has(node.name) && lock.skills[key]) continue;\n\t\tconst integrity = downloaded.get(node.name)?.integrity ?? lock.skills[key]?.integrity ?? node.meta.integrity;\n\t\tconst permsParsed = permissionsSchema.safeParse(node.meta.permissions);\n\t\tif (!permsParsed.success) onProgress?.(`Warning: ${node.name}@${node.version} has unrecognized permissions format — treating as unrestricted`);\n\t\tconst validatedPerms = permsParsed.success ? permsParsed.data : {};\n\t\tlock.skills[key] = {\n\t\t\tresolved: node.meta.downloadUrl,\n\t\t\tintegrity,\n\t\t\tpermissions: validatedPerms,\n\t\t\taudit_score: node.meta.auditScore ?? null,\n\t\t\tdependencies: node.dependencies\n\t\t};\n\t}\n\tconst sortedSkills = {};\n\tfor (const key of Object.keys(lock.skills).sort()) sortedSkills[key] = lock.skills[key];\n\tlock.skills = sortedSkills;\n\treturn lock;\n}\n/**\n* Plan the ordered list of ancestor directories to create for `targetDir`,\n* from just below the filesystem root down to the leaf (the root itself is\n* never returned — it always exists and must not be `mkdir`'d).\n*\n* The path module is injectable so Windows drive/UNC root handling can be\n* verified on any host via `path.win32` without a real Windows machine.\n*/\nfunction planMkdirSegments(targetDir, pathMod = path) {\n\tconst resolved = pathMod.resolve(targetDir);\n\tconst { root } = pathMod.parse(resolved);\n\tconst dirs = [];\n\tlet current = root;\n\tfor (const seg of resolved.slice(root.length).split(pathMod.sep).filter(Boolean)) {\n\t\tcurrent = pathMod.join(current, seg);\n\t\tdirs.push(current);\n\t}\n\treturn dirs;\n}\nfunction mkdirSafeNoSymlinks(targetDir) {\n\tfor (const current of planMkdirSegments(targetDir)) if (fs.existsSync(current)) {\n\t\tconst stat = fs.lstatSync(current);\n\t\tif (stat.isSymbolicLink()) throw new TankIntegrityError(`Symlink in install path: ${current}`);\n\t\tif (!stat.isDirectory()) throw new TankIntegrityError(`Non-directory in install path: ${current}`);\n\t} else fs.mkdirSync(current);\n}\nfunction isDirNonEmpty(dir) {\n\ttry {\n\t\treturn fs.readdirSync(dir).length > 0;\n\t} catch {\n\t\treturn false;\n\t}\n}\nfunction moveEntryAcrossDevices(src, dst) {\n\ttry {\n\t\tfs.renameSync(src, dst);\n\t} catch (err) {\n\t\tif (err.code === \"EXDEV\") {\n\t\t\tfs.cpSync(src, dst, { recursive: true });\n\t\t\tfs.rmSync(src, {\n\t\t\t\trecursive: true,\n\t\t\t\tforce: true\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tthrow err;\n\t}\n}\nasync function extractSafely(tarball, destDir) {\n\tif (tarball.length > MAX_DOWNLOAD_BYTES) throw new TankIntegrityError(`Tarball exceeds ${MAX_DOWNLOAD_BYTES} byte limit`);\n\tconst tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), \"tank-extract-\"));\n\tconst tmpTarball = path.join(tmpDir, `${crypto$1.randomUUID()}.tgz`);\n\tfs.writeFileSync(tmpTarball, tarball, { flag: \"wx\" });\n\tlet entryCount = 0;\n\tlet totalBytes = 0;\n\tlet backupDir = null;\n\ttry {\n\t\tawait extract({\n\t\t\tfile: tmpTarball,\n\t\t\tcwd: tmpDir,\n\t\t\tfilter: (entryPath) => {\n\t\t\t\tentryCount++;\n\t\t\t\tif (entryCount > MAX_EXTRACT_ENTRIES) throw new Error(`Tarball exceeds ${MAX_EXTRACT_ENTRIES} entry limit`);\n\t\t\t\tif (path.isAbsolute(entryPath)) throw new Error(`Absolute path in tarball: ${entryPath}`);\n\t\t\t\tif (entryPath.split(\"/\").includes(\"..\") || entryPath.split(path.sep).includes(\"..\")) throw new Error(`Path traversal in tarball: ${entryPath}`);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tonReadEntry: (entry) => {\n\t\t\t\tif (entry.type === \"SymbolicLink\" || entry.type === \"Link\") throw new Error(`Symlink/hardlink in tarball: ${entry.path}`);\n\t\t\t\tif (entry.size && entry.size > MAX_EXTRACT_FILE_BYTES) throw new Error(`File ${entry.path} exceeds ${MAX_EXTRACT_FILE_BYTES} byte limit`);\n\t\t\t\ttotalBytes += entry.size ?? 0;\n\t\t\t\tif (totalBytes > MAX_EXTRACT_TOTAL_BYTES) throw new Error(`Total extracted size exceeds ${MAX_EXTRACT_TOTAL_BYTES} byte limit`);\n\t\t\t}\n\t\t});\n\t\tmkdirSafeNoSymlinks(destDir);\n\t\tif (isDirNonEmpty(destDir)) {\n\t\t\tbackupDir = `${destDir}.tank-old-${crypto$1.randomUUID()}`;\n\t\t\tfs.renameSync(destDir, backupDir);\n\t\t\tmkdirSafeNoSymlinks(destDir);\n\t\t}\n\t\tfor (const entry of fs.readdirSync(tmpDir)) {\n\t\t\tif (entry === path.basename(tmpTarball)) continue;\n\t\t\tmoveEntryAcrossDevices(path.join(tmpDir, entry), path.join(destDir, entry));\n\t\t}\n\t\tif (backupDir !== null) {\n\t\t\tfs.rmSync(backupDir, {\n\t\t\t\trecursive: true,\n\t\t\t\tforce: true\n\t\t\t});\n\t\t\tbackupDir = null;\n\t\t}\n\t} catch (err) {\n\t\tif (backupDir !== null && fs.existsSync(backupDir)) try {\n\t\t\tfs.rmSync(destDir, {\n\t\t\t\trecursive: true,\n\t\t\t\tforce: true\n\t\t\t});\n\t\t\tfs.renameSync(backupDir, destDir);\n\t\t} catch {}\n\t\tthrow err;\n\t} finally {\n\t\tfs.rmSync(tmpDir, {\n\t\t\trecursive: true,\n\t\t\tforce: true\n\t\t});\n\t}\n}\nfunction getExtractDir(projectDir, skillName) {\n\tif (skillName.startsWith(\"@\")) {\n\t\tconst [scope, name] = skillName.split(\"/\");\n\t\treturn path.join(projectDir, \".tank\", \"skills\", scope, name);\n\t}\n\treturn path.join(projectDir, \".tank\", \"skills\", skillName);\n}\nfunction getGlobalExtractDir(homedir, skillName) {\n\tconst globalDir = path.join(homedir, \".tank\", \"skills\");\n\tif (skillName.startsWith(\"@\")) {\n\t\tconst [scope, name] = skillName.split(\"/\");\n\t\treturn path.join(globalDir, scope, name);\n\t}\n\treturn path.join(globalDir, skillName);\n}\nfunction parseLockKey(key) {\n\tconst lastAt = key.lastIndexOf(\"@\");\n\tif (lastAt <= 0) throw new Error(`Invalid lockfile key: ${key}`);\n\treturn key.slice(0, lastAt);\n}\nfunction parseVersionFromLockKey(key) {\n\tconst lastAt = key.lastIndexOf(\"@\");\n\tif (lastAt <= 0 || lastAt === key.length - 1) throw new Error(`Invalid lockfile key: ${key}`);\n\treturn key.slice(lastAt + 1);\n}\nfunction getResolvedNodesInOrder(nodes, installOrder) {\n\tconst orderedNodes = [];\n\tfor (const key of installOrder) {\n\t\tconst skillName = parseLockKey(key);\n\t\tconst node = nodes.get(skillName);\n\t\tif (!node) throw new Error(`Internal error: missing resolved node for ${key}`);\n\t\torderedNodes.push(node);\n\t}\n\treturn orderedNodes;\n}\n//#endregion\n//#region src/tools.ts\nconst MAX_TOOL_NAME_LENGTH = 64;\nconst MAX_DESCRIPTION_LENGTH = 1024;\nconst MAX_FILES_IN_DESCRIPTION = 30;\nconst MAX_FILES_IN_ERROR = 10;\nfunction sanitizeToolName(skillName) {\n\treturn skillName.replace(/[^a-zA-Z0-9_]/g, \"_\").replace(/^_+/, \"\").replace(/_+/g, \"_\").slice(0, MAX_TOOL_NAME_LENGTH) || \"skill_tool\";\n}\nfunction buildParameterSchema() {\n\treturn {\n\t\ttype: \"object\",\n\t\trequired: [\"action\"],\n\t\tadditionalProperties: false,\n\t\tproperties: {\n\t\t\taction: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tenum: [\n\t\t\t\t\t\"read\",\n\t\t\t\t\t\"list\",\n\t\t\t\t\t\"read_all\"\n\t\t\t\t],\n\t\t\t\tdescription: \"read: read a single file (requires path). list: list all files. read_all: complete skill with references and scripts.\"\n\t\t\t},\n\t\t\tpath: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"File path to read (required when action is \\\"read\\\"). Example: \\\"SKILL.md\\\", \\\"references/guide.md\\\"\"\n\t\t\t}\n\t\t}\n\t};\n}\nfunction truncate(text, max) {\n\treturn text.length <= max ? text : `${text.slice(0, max - 3)}...`;\n}\nfunction buildDescription(skillName, version, skillDescription, files) {\n\tconst refFiles = files.filter((f) => f.startsWith(\"references/\"));\n\tconst scriptFiles = files.filter((f) => f.startsWith(\"scripts/\"));\n\tconst displayFiles = files.length <= MAX_FILES_IN_DESCRIPTION ? files.join(\", \") : `${files.slice(0, MAX_FILES_IN_DESCRIPTION).join(\", \")} and ${files.length - MAX_FILES_IN_DESCRIPTION} more`;\n\tconst parts = [\n\t\t`Access the \"${skillName}\" skill (v${version}).`,\n\t\ttruncate(skillDescription, 200),\n\t\t\"\",\n\t\t\"Actions: read_all | list | read (with path)\",\n\t\t`Files (${files.length}): ${displayFiles}`\n\t];\n\tif (refFiles.length > 0) parts.push(`References: ${refFiles.map((f) => f.replace(\"references/\", \"\")).join(\", \")}`);\n\tif (scriptFiles.length > 0) parts.push(`Scripts: ${scriptFiles.map((f) => f.replace(\"scripts/\", \"\")).join(\", \")}`);\n\treturn truncate(parts.join(\"\\n\"), MAX_DESCRIPTION_LENGTH);\n}\nasync function createSkillTool(client, skillName, version) {\n\tconst info = await client.info(skillName);\n\tconst ver = version ?? info.latestVersion;\n\tif (!ver) throw new TankNotFoundError(`No published versions for ${skillName}`, skillName);\n\tconst files = await client.listFiles(skillName, ver);\n\tconst filesSet = new Set(files);\n\tconst toolName = sanitizeToolName(skillName);\n\tconst description = buildDescription(skillName, ver, info.description ?? \"\", files);\n\tconst parameterSchema = buildParameterSchema();\n\tasync function execute(input) {\n\t\ttry {\n\t\t\tswitch (input.action) {\n\t\t\t\tcase \"list\": return {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\tfiles\n\t\t\t\t};\n\t\t\t\tcase \"read\":\n\t\t\t\t\tif (!input.path) return {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\terror: \"path is required for action \\\"read\\\"\"\n\t\t\t\t\t};\n\t\t\t\t\tif (!filesSet.has(input.path)) {\n\t\t\t\t\t\tconst hint = files.slice(0, MAX_FILES_IN_ERROR).join(\", \");\n\t\t\t\t\t\tconst suffix = files.length > MAX_FILES_IN_ERROR ? ` and ${files.length - MAX_FILES_IN_ERROR} more` : \"\";\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\t\terror: `File not found: ${input.path}. Available: ${hint}${suffix}`\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\tcontent: await client.readFile(skillName, ver, input.path)\n\t\t\t\t\t};\n\t\t\t\tcase \"read_all\": {\n\t\t\t\t\tconst skill = await client.readSkill(skillName, ver);\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\tskill: {\n\t\t\t\t\t\t\tcontent: skill.content,\n\t\t\t\t\t\t\treferences: skill.references,\n\t\t\t\t\t\t\tscripts: skill.scripts,\n\t\t\t\t\t\t\tfiles: skill.files\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tdefault: return {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: `Unknown action: ${String(input.action)}`\n\t\t\t\t};\n\t\t\t}\n\t\t} catch (err) {\n\t\t\treturn {\n\t\t\t\tsuccess: false,\n\t\t\t\terror: err instanceof Error ? err.message : String(err)\n\t\t\t};\n\t\t}\n\t}\n\treturn {\n\t\tname: toolName,\n\t\tskillName,\n\t\tversion: ver,\n\t\tdescription,\n\t\tfiles,\n\t\texecute,\n\t\ttoOpenAI() {\n\t\t\treturn {\n\t\t\t\ttype: \"function\",\n\t\t\t\tfunction: {\n\t\t\t\t\tname: toolName,\n\t\t\t\t\tdescription,\n\t\t\t\t\tparameters: parameterSchema\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\t\ttoMCP() {\n\t\t\treturn {\n\t\t\t\tname: toolName,\n\t\t\t\tdescription,\n\t\t\t\tinputSchema: parameterSchema\n\t\t\t};\n\t\t}\n\t};\n}\nasync function createSkillTools(client, skillNames) {\n\tconst tools = [];\n\tfor (let i = 0; i < skillNames.length; i += 6) {\n\t\tconst batch = skillNames.slice(i, i + 6);\n\t\tconst batchTools = await Promise.all(batch.map((name) => createSkillTool(client, name)));\n\t\ttools.push(...batchTools);\n\t}\n\treturn tools;\n}\n//#endregion\nexport { AGENT_PATHS, DEFAULT_CONFIG_DIR, DEFAULT_MAX_RETRIES, REGISTRY_URL as DEFAULT_REGISTRY_URL, DEFAULT_TIMEOUT_MS, LOCKFILE_FILENAME, MANIFEST_FILENAME, SDK_VERSION, SUPPORTED_AGENTS, TankAuthError, TankClient, TankConflictError, TankError, TankIntegrityError, TankNetworkError, TankNotFoundError, TankPermissionError, buildSkillKey, checkPermissionBudget, collectPermissionViolations, createSkillTool, createSkillTools, downloadAllParallel, extractSafely, getExtractDir, getGlobalExtractDir, getResolvedNodesInOrder, hasNativeAcceleration, isDomainAllowed, isPathAllowed, parseLockKey, parseVersionFromLockKey, planMkdirSegments, readExtractedDependencies, resolveDependencyTree, verifyExtractedDependencies, writeLockfileWithResolvedGraph };\n","import fs from 'node:fs';\nimport os from 'node:os';\nimport path from 'node:path';\n\nexport interface TankConfig {\n token?: string;\n user?: { name: string; email: string };\n registry: string;\n}\n\nconst DEFAULT_CONFIG: TankConfig = {\n registry: 'https://www.tankpkg.dev'\n};\n\n/**\n * Get the path to the tank config directory.\n */\nexport function getConfigDir(configDir?: string): string {\n return configDir ?? path.join(os.homedir(), '.tank');\n}\n\n/**\n * Get the path to the tank config file.\n */\nexport function getConfigPath(configDir?: string): string {\n return path.join(getConfigDir(configDir), 'config.json');\n}\n\n/**\n * Read the tank config file. Returns defaults if file doesn't exist.\n */\nexport function getConfig(configDir?: string): TankConfig {\n const configPath = getConfigPath(configDir);\n\n try {\n const raw = fs.readFileSync(configPath, 'utf-8');\n const parsed = JSON.parse(raw) as Partial<TankConfig>;\n const merged = { ...DEFAULT_CONFIG, ...parsed };\n // TANK_TOKEN env var takes priority\n const envToken = process.env.TANK_TOKEN?.trim();\n if (envToken) {\n merged.token = envToken;\n }\n return merged;\n } catch {\n const envToken = process.env.TANK_TOKEN?.trim();\n return {\n ...DEFAULT_CONFIG,\n ...(envToken ? { token: envToken } : {})\n };\n }\n}\n\n/**\n * Write config to disk. Merges with existing config.\n */\nexport function setConfig(partial: Partial<TankConfig>, configDir?: string): void {\n const dir = getConfigDir(configDir);\n const configPath = getConfigPath(configDir);\n\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir, { recursive: true, mode: 0o700 });\n }\n\n const existing = getConfig(configDir);\n const merged = { ...existing, ...partial };\n\n fs.writeFileSync(configPath, `${JSON.stringify(merged, null, 2)}\\n`, {\n encoding: 'utf-8',\n mode: 0o600\n });\n}\n","import { TankAuthError, TankClient } from '@tankpkg/sdk';\nimport { getConfig, type TankConfig } from './config.js';\n\nexport interface ApiClientOptions {\n configDir?: string;\n}\n\nexport class TankApiClient {\n private client: TankClient;\n private config: TankConfig;\n\n constructor(options: ApiClientOptions = {}) {\n this.config = getConfig(options.configDir);\n this.client = new TankClient({\n token: this.config.token,\n registryUrl: this.config.registry,\n configDir: options.configDir\n });\n }\n\n get baseUrl(): string {\n return this.config.registry;\n }\n\n get token(): string | undefined {\n return this.config.token;\n }\n\n get isAuthenticated(): boolean {\n return !!this.config.token;\n }\n\n get sdk(): TankClient {\n return this.client;\n }\n\n async fetch<T>(\n path: string,\n options: RequestInit = {}\n ): Promise<{ data: T; ok: true } | { error: string; status: number; ok: false }> {\n const url = `${this.baseUrl}${path}`;\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n ...(options.headers as Record<string, string>)\n };\n\n if (this.config.token) {\n headers.Authorization = `Bearer ${this.config.token}`;\n }\n\n try {\n const response = await fetch(url, {\n ...options,\n headers,\n signal: AbortSignal.timeout(30_000)\n });\n\n if (!response.ok) {\n const body = await response.json().catch(() => ({}));\n return {\n error: (body as { error?: string }).error ?? response.statusText,\n status: response.status,\n ok: false\n };\n }\n\n const data = (await response.json()) as T;\n return { data, ok: true };\n } catch (err) {\n return {\n error: err instanceof Error ? err.message : 'Network error',\n status: 0,\n ok: false\n };\n }\n }\n\n async verifyAuth(): Promise<\n | { valid: true; user: { name: string | null; email: string | null } }\n | { valid: false; reason: 'no-token' | 'unauthorized' | 'network-error'; error?: string }\n > {\n if (!this.config.token) {\n return { valid: false, reason: 'no-token' };\n }\n\n try {\n const user = await this.client.whoami();\n if (user) {\n return { valid: true, user: { name: user.name, email: user.email } };\n }\n return { valid: false, reason: 'unauthorized' };\n } catch (err) {\n if (err instanceof TankAuthError) {\n return { valid: false, reason: 'unauthorized' };\n }\n return {\n valid: false,\n reason: 'network-error',\n error: err instanceof Error ? err.message : 'Unknown error'\n };\n }\n }\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { LEGACY_LOCKFILE_FILENAME, LOCKFILE_FILENAME, type SkillsLock } from '@internals/schemas';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\n\nimport { TankApiClient } from '~/lib/api-client.js';\n\nconst SCOPED_NAME_PATTERN = /^@[a-z0-9-]+\\/[a-z0-9][a-z0-9-]*$/;\n\ninterface VersionDetails {\n name: string;\n version: string;\n permissions?: {\n network?: { outbound?: string[] };\n filesystem?: { read?: string[]; write?: string[] };\n subprocess?: boolean;\n };\n auditScore: number | null;\n auditStatus: string;\n downloadUrl: string;\n publishedAt: string;\n downloads: number;\n}\n\ninterface ScanFinding {\n stage: string;\n severity: 'critical' | 'high' | 'medium' | 'low';\n type: string;\n description: string;\n location: string | null;\n}\n\ninterface ScanResult {\n verdict: string;\n audit_score: number;\n findings: ScanFinding[];\n scanned_at: string;\n}\n\ninterface SkillMetaResponse {\n name: string;\n description: string | null;\n latestVersion: string;\n auditScore: number | null;\n auditStatus: string;\n versions: Array<{\n version: string;\n auditScore: number | null;\n auditStatus: string;\n publishedAt: string;\n }>;\n}\n\nfunction parseLockKey(key: string): { name: string; version: string } | null {\n const lastAt = key.lastIndexOf('@');\n if (lastAt <= 0) return null;\n return { name: key.slice(0, lastAt), version: key.slice(lastAt + 1) };\n}\n\nfunction deriveVerdict(score: number | null, status: string): string {\n if (status !== 'completed' || score === null) return 'PENDING';\n if (score >= 7) return 'PASS';\n if (score >= 4) return 'FLAGGED';\n return 'FAIL';\n}\n\nfunction formatFindings(findings: ScanFinding[]): string {\n if (findings.length === 0) return '';\n\n const bySeverity: Record<string, ScanFinding[]> = {\n critical: [],\n high: [],\n medium: [],\n low: []\n };\n\n for (const f of findings) {\n if (bySeverity[f.severity]) {\n bySeverity[f.severity].push(f);\n }\n }\n\n const lines: string[] = ['', `### Findings (${findings.length})`];\n\n for (const severity of ['critical', 'high', 'medium', 'low'] as const) {\n const group = bySeverity[severity];\n if (group.length === 0) continue;\n lines.push(`\\n**${severity.toUpperCase()} (${group.length}):**`);\n for (const f of group) {\n lines.push(`- ${f.type}: ${f.description}${f.location ? ` (${f.location})` : ''}`);\n }\n }\n\n return lines.join('\\n');\n}\n\nexport function registerAuditSkillTool(server: McpServer): void {\n server.tool(\n 'audit-skill',\n 'Show security audit results for a skill from the Tank registry.',\n {\n name: z.string().describe('Skill name in @org/name format'),\n version: z.string().optional().describe('Specific version to audit (defaults to installed or latest)')\n },\n async ({ name, version }) => {\n if (!SCOPED_NAME_PATTERN.test(name)) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Validation error: Skill name \"${name}\" must use the @org/name format (e.g. @acme/my-skill).`\n }\n ],\n isError: true\n };\n }\n\n const client = new TankApiClient();\n if (!client.isAuthenticated) {\n return {\n content: [\n {\n type: 'text' as const,\n text: 'Authentication required. Please run the \"login\" tool first to authenticate with Tank.'\n }\n ],\n isError: true\n };\n }\n\n const encodedName = encodeURIComponent(name);\n\n // If no version specified, try to find installed version from lockfile\n let targetVersion = version;\n if (!targetVersion) {\n let lockPath = path.join(process.cwd(), LOCKFILE_FILENAME);\n if (!fs.existsSync(lockPath)) {\n lockPath = path.join(process.cwd(), LEGACY_LOCKFILE_FILENAME);\n }\n if (fs.existsSync(lockPath)) {\n try {\n const raw = fs.readFileSync(lockPath, 'utf-8');\n const lock = JSON.parse(raw) as SkillsLock;\n for (const key of Object.keys(lock.skills)) {\n const parsed = parseLockKey(key);\n if (parsed && parsed.name === name) {\n targetVersion = parsed.version;\n break;\n }\n }\n } catch {\n // Lockfile unreadable — fall through to fetch latest\n }\n }\n }\n\n // If still no version, fetch skill metadata to get latest\n if (!targetVersion) {\n const metaResult = await client.fetch<SkillMetaResponse>(`/api/v1/skills/${encodedName}`);\n\n if (!metaResult.ok) {\n if (metaResult.status === 0) {\n return {\n content: [\n {\n type: 'text' as const,\n text: 'Unable to connect to the Tank registry. Check your network connection and try again.'\n }\n ],\n isError: true\n };\n }\n if (metaResult.status === 404) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Skill \"${name}\" not found in the Tank registry.`\n }\n ],\n isError: true\n };\n }\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to fetch skill metadata: ${metaResult.error}`\n }\n ],\n isError: true\n };\n }\n\n targetVersion = metaResult.data.latestVersion;\n }\n\n // Fetch version details with audit data\n const versionResult = await client.fetch<VersionDetails>(`/api/v1/skills/${encodedName}/${targetVersion}`);\n\n if (!versionResult.ok) {\n if (versionResult.status === 0) {\n return {\n content: [\n {\n type: 'text' as const,\n text: 'Unable to connect to the Tank registry. Check your network connection and try again.'\n }\n ],\n isError: true\n };\n }\n if (versionResult.status === 404) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Skill \"${name}\" version \"${targetVersion}\" not found in the Tank registry.`\n }\n ],\n isError: true\n };\n }\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to fetch audit data: ${versionResult.error}`\n }\n ],\n isError: true\n };\n }\n\n const details = versionResult.data;\n const verdict = deriveVerdict(details.auditScore, details.auditStatus);\n\n if (details.auditStatus !== 'completed') {\n return {\n content: [\n {\n type: 'text' as const,\n text: [\n `## Audit: ${name}@${targetVersion}`,\n '',\n `**Status:** Pending security review`,\n `**Scan Status:** ${details.auditStatus}`,\n '',\n 'This skill has not yet been through security scanning. Results will be available once the scan completes.'\n ].join('\\n')\n }\n ]\n };\n }\n\n // Try to fetch detailed scan results\n let findingsText = '';\n const scanResult = await client.fetch<ScanResult>(`/api/v1/skills/${encodedName}/${targetVersion}/scan`);\n if (scanResult.ok && scanResult.data.findings) {\n findingsText = formatFindings(scanResult.data.findings);\n }\n\n const score = details.auditScore !== null ? details.auditScore.toFixed(1) : 'N/A';\n\n const lines = [\n `## Audit: ${name}@${targetVersion}`,\n '',\n `**Verdict:** ${verdict}`,\n `**Score:** ${score}/10`,\n `**Scanned:** ${details.publishedAt}`,\n `**Version:** ${targetVersion}`\n ];\n\n if (details.permissions) {\n lines.push('', '**Permissions:**');\n const p = details.permissions;\n if (p.network?.outbound?.length) {\n lines.push(` - Network: ${p.network.outbound.join(', ')}`);\n }\n if (p.filesystem?.read?.length || p.filesystem?.write?.length) {\n const parts: string[] = [];\n if (p.filesystem.read?.length) parts.push(`read: ${p.filesystem.read.join(', ')}`);\n if (p.filesystem.write?.length) parts.push(`write: ${p.filesystem.write.join(', ')}`);\n lines.push(` - Filesystem: ${parts.join('; ')}`);\n }\n lines.push(` - Subprocess: ${p.subprocess ? 'yes' : 'no'}`);\n }\n\n if (findingsText) {\n lines.push(findingsText);\n }\n\n return {\n content: [\n {\n type: 'text' as const,\n text: lines.join('\\n')\n }\n ]\n };\n }\n );\n}\n","import fs from 'node:fs';\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\n\nimport { TankApiClient } from '~/lib/api-client.js';\nimport { getConfig, getConfigPath } from '~/lib/config.js';\n\nconst MIN_NODE_MAJOR = 24;\n\ninterface CheckResult {\n name: string;\n status: 'PASS' | 'FAIL';\n message: string;\n}\n\nfunction checkConfigFile(): CheckResult {\n const configPath = getConfigPath();\n\n if (!fs.existsSync(configPath)) {\n return {\n name: 'Configuration File',\n status: 'FAIL',\n message: `Configuration file not found at ${configPath}. Run the login tool to create it.`\n };\n }\n\n try {\n const raw = fs.readFileSync(configPath, 'utf-8');\n JSON.parse(raw);\n return {\n name: 'Configuration File',\n status: 'PASS',\n message: `Configuration file exists and is valid JSON (${configPath}).`\n };\n } catch (err) {\n const detail = err instanceof Error ? err.message : String(err);\n return {\n name: 'Configuration File',\n status: 'FAIL',\n message: `Configuration file at ${configPath} is malformed: ${detail}`\n };\n }\n}\n\nasync function checkAuthentication(): Promise<CheckResult> {\n const client = new TankApiClient();\n\n if (!client.isAuthenticated) {\n return {\n name: 'Authentication',\n status: 'FAIL',\n message: 'Not authenticated. Use the login tool to authenticate with Tank.'\n };\n }\n\n const authCheck = await client.verifyAuth();\n\n if (authCheck.valid) {\n const name = authCheck.user.name ?? 'unknown';\n return {\n name: 'Authentication',\n status: 'PASS',\n message: `Authenticated as ${name}.`\n };\n }\n\n if (authCheck.reason === 'network-error') {\n return {\n name: 'Authentication',\n status: 'FAIL',\n message: `Could not verify credentials (network error). ${authCheck.error ?? ''}`.trim()\n };\n }\n\n return {\n name: 'Authentication',\n status: 'FAIL',\n message: 'Credentials are expired or invalid. Use the login tool to re-authenticate.'\n };\n}\n\nasync function checkRegistryConnectivity(): Promise<CheckResult> {\n const config = getConfig();\n const registryUrl = config.registry;\n\n try {\n const healthUrl = `${registryUrl}/api/health`;\n const response = await fetch(healthUrl, {\n signal: AbortSignal.timeout(10_000)\n });\n\n if (response.ok) {\n return {\n name: 'Registry Connectivity',\n status: 'PASS',\n message: `Registry at ${registryUrl} is reachable.`\n };\n }\n\n return {\n name: 'Registry Connectivity',\n status: 'FAIL',\n message: `Registry at ${registryUrl} returned HTTP ${response.status}.`\n };\n } catch {\n return {\n name: 'Registry Connectivity',\n status: 'FAIL',\n message: `Cannot reach registry at ${registryUrl}. Check your network connection.`\n };\n }\n}\n\nfunction checkNodeVersion(): CheckResult {\n const raw = process.version;\n const match = raw.match(/^v(\\d+)/);\n const major = match ? Number.parseInt(match[1], 10) : 0;\n\n if (major >= MIN_NODE_MAJOR) {\n return {\n name: 'Node.js Version',\n status: 'PASS',\n message: `Node.js ${raw} meets the minimum requirement (v${MIN_NODE_MAJOR}.0.0).`\n };\n }\n\n return {\n name: 'Node.js Version',\n status: 'FAIL',\n message: `Node.js ${raw} is below the minimum required version v${MIN_NODE_MAJOR}.0.0. Please upgrade Node.js.`\n };\n}\n\nfunction formatChecks(checks: CheckResult[]): string {\n const lines: string[] = [];\n\n lines.push('Tank Doctor Report');\n lines.push('==================');\n lines.push('');\n\n for (const check of checks) {\n const icon = check.status === 'PASS' ? 'PASS' : 'FAIL';\n lines.push(`[${icon}] ${check.name}`);\n lines.push(` ${check.message}`);\n }\n\n lines.push('');\n\n const failedChecks = checks.filter((c) => c.status === 'FAIL');\n const allPassed = failedChecks.length === 0;\n\n if (allPassed) {\n lines.push('All checks passed. Your Tank environment is ready to use.');\n } else {\n lines.push('Suggestions:');\n for (const check of failedChecks) {\n if (check.name === 'Authentication') {\n lines.push(' - Use the login tool to authenticate with Tank.');\n } else if (check.name === 'Registry Connectivity') {\n lines.push(' - Check your network connection and verify the registry URL.');\n } else if (check.name === 'Node.js Version') {\n lines.push(` - Upgrade Node.js to v${MIN_NODE_MAJOR}.0.0 or later.`);\n } else if (check.name === 'Configuration File') {\n lines.push(' - Use the login tool to create a valid configuration file.');\n }\n }\n lines.push('');\n lines.push('The environment is not healthy. Please address the issues above.');\n }\n\n return lines.join('\\n');\n}\n\nexport function registerDoctorTool(server: McpServer): void {\n server.tool('doctor', 'Diagnose Tank setup and environment.', {}, async () => {\n const checks: CheckResult[] = [];\n\n checks.push(checkConfigFile());\n checks.push(await checkAuthentication());\n checks.push(await checkRegistryConnectivity());\n checks.push(checkNodeVersion());\n\n return {\n content: [{ type: 'text' as const, text: formatChecks(checks) }]\n };\n });\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { LEGACY_MANIFEST_FILENAME, MANIFEST_FILENAME, type SkillsJson, skillsJsonSchema } from '@internals/schemas';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\n\nconst SCOPED_NAME_PATTERN = /^@[a-z0-9-]+\\/[a-z0-9][a-z0-9-]*$/;\nconst SEMVER_PATTERN = /^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9.-]+)?(\\+[a-zA-Z0-9.-]+)?$/;\n\nexport function registerInitSkillTool(server: McpServer): void {\n server.tool(\n 'init-skill',\n `Create a new ${MANIFEST_FILENAME} and SKILL.md template for a Tank skill.`,\n {\n name: z.string().regex(SCOPED_NAME_PATTERN, 'Name must be in @org/name format'),\n version: z.string().regex(SEMVER_PATTERN, 'Version must be valid semver').optional().default('0.1.0'),\n description: z.string().optional().default(''),\n directory: z.string().optional().default('.')\n },\n async ({ name, version = '0.1.0', description = '', directory = '.' }) => {\n const targetDir = path.resolve(directory);\n\n if (!fs.existsSync(targetDir)) {\n return {\n content: [{ type: 'text' as const, text: `Directory does not exist: ${targetDir}` }]\n };\n }\n\n if (!fs.statSync(targetDir).isDirectory()) {\n return {\n content: [{ type: 'text' as const, text: `Path is not a directory: ${targetDir}` }]\n };\n }\n\n // Check for existing manifest (tank.json or skills.json)\n const newManifestPath = path.join(targetDir, MANIFEST_FILENAME);\n const legacyManifestPath = path.join(targetDir, LEGACY_MANIFEST_FILENAME);\n const skillsJsonPath = newManifestPath;\n if (fs.existsSync(newManifestPath) || fs.existsSync(legacyManifestPath)) {\n const existingFile = fs.existsSync(newManifestPath) ? MANIFEST_FILENAME : LEGACY_MANIFEST_FILENAME;\n return {\n content: [\n {\n type: 'text' as const,\n text: `${existingFile} already exists at ${targetDir}. Aborting to avoid overwrite.`\n }\n ]\n };\n }\n\n const manifest: SkillsJson = {\n name,\n version,\n description,\n skills: {},\n permissions: {\n network: { outbound: [] },\n filesystem: { read: [], write: [] },\n subprocess: false\n }\n };\n\n const parseResult = skillsJsonSchema.safeParse(manifest);\n if (!parseResult.success) {\n const details = parseResult.error.issues\n .map((issue) => `${issue.path.join('.') || 'root'}: ${issue.message}`)\n .join('; ');\n\n return {\n content: [{ type: 'text' as const, text: `Failed to create ${MANIFEST_FILENAME}: ${details}` }]\n };\n }\n\n fs.writeFileSync(skillsJsonPath, `${JSON.stringify(manifest, null, 2)}\\n`, 'utf-8');\n\n const skillMdPath = path.join(targetDir, 'SKILL.md');\n let createdSkillMd = false;\n if (!fs.existsSync(skillMdPath)) {\n const skillMd = `# ${name}\\n\\n${description || 'Description here.'}\\n`;\n fs.writeFileSync(skillMdPath, skillMd, 'utf-8');\n createdSkillMd = true;\n }\n\n const skillMdLine = createdSkillMd ? `Created: ${skillMdPath}` : `Skipped existing: ${skillMdPath}`;\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `Initialized skill in ${targetDir}\\nCreated: ${skillsJsonPath}\\n${skillMdLine}`\n }\n ]\n };\n }\n );\n}\n","import semver from \"semver\";\n//#region src/credentials/entropy.ts\n/**\n* Shannon entropy in bits/char. Used to reject low-entropy\n* regex matches (e.g. `sk_live_aaaaaaaaaaaaaaaa`) that pass\n* the pattern but are obviously not real credentials (C25a).\n*/\nfunction shannonEntropy(value) {\n\tif (value.length === 0) return 0;\n\tconst frequencies = /* @__PURE__ */ new Map();\n\tfor (const char of value) frequencies.set(char, (frequencies.get(char) ?? 0) + 1);\n\tconst length = value.length;\n\tlet entropy = 0;\n\tfor (const count of frequencies.values()) {\n\t\tconst probability = count / length;\n\t\tentropy -= probability * Math.log2(probability);\n\t}\n\treturn entropy;\n}\nconst DEFAULT_ENTROPY_THRESHOLD_BITS_PER_CHAR = 4;\n//#endregion\n//#region src/credentials/patterns.ts\nconst ALPHANUMERIC = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\nconst ALPHANUMERIC_UPPER = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";\nconst HEX_LOWER = \"0123456789abcdef\";\nconst COMMON_PLACEHOLDERS = [\n\t\"EXAMPLE\",\n\t\"PLACEHOLDER\",\n\t\"YOUR_KEY\",\n\t\"YOUR-KEY\",\n\t\"XXXXXX\"\n];\nconst CREDENTIAL_PATTERNS = [\n\t{\n\t\tid: \"stripe_secret\",\n\t\tlabel: \"Stripe Secret Key\",\n\t\tprefix: \"sk_live_\",\n\t\tregex: /(?:sk_live_|sk_test_)[A-Za-z0-9]{16,64}/g,\n\t\tcharset: ALPHANUMERIC,\n\t\tlength: 0,\n\t\tminEntropy: 3.95,\n\t\tplaceholderDenylist: COMMON_PLACEHOLDERS\n\t},\n\t{\n\t\tid: \"stripe_publishable\",\n\t\tlabel: \"Stripe Publishable Key\",\n\t\tprefix: \"pk_live_\",\n\t\tregex: /(?:pk_live_|pk_test_)[A-Za-z0-9]{16,64}/g,\n\t\tcharset: ALPHANUMERIC,\n\t\tlength: 0,\n\t\tminEntropy: 3.95,\n\t\tplaceholderDenylist: COMMON_PLACEHOLDERS\n\t},\n\t{\n\t\tid: \"aws_access_key\",\n\t\tlabel: \"AWS Access Key ID\",\n\t\tprefix: \"AKIA\",\n\t\tregex: /AKIA[A-Z0-9]{16}/g,\n\t\tcharset: ALPHANUMERIC_UPPER,\n\t\tlength: 20,\n\t\tminEntropy: 3.3,\n\t\tplaceholderDenylist: COMMON_PLACEHOLDERS\n\t},\n\t{\n\t\tid: \"github_pat\",\n\t\tlabel: \"GitHub Personal Access Token\",\n\t\tprefix: \"ghp_\",\n\t\tregex: /ghp_[A-Za-z0-9]{36}/g,\n\t\tcharset: ALPHANUMERIC,\n\t\tlength: 40,\n\t\tminEntropy: 4.4,\n\t\tplaceholderDenylist: COMMON_PLACEHOLDERS\n\t},\n\t{\n\t\tid: \"github_oauth\",\n\t\tlabel: \"GitHub OAuth Token\",\n\t\tprefix: \"gho_\",\n\t\tregex: /gho_[A-Za-z0-9]{36}/g,\n\t\tcharset: ALPHANUMERIC,\n\t\tlength: 40,\n\t\tminEntropy: 3.75,\n\t\tplaceholderDenylist: COMMON_PLACEHOLDERS\n\t},\n\t{\n\t\tid: \"openai_key\",\n\t\tlabel: \"OpenAI API Key\",\n\t\tprefix: \"sk-proj-\",\n\t\tregex: /sk-(?:proj-)?[A-Za-z0-9_-]{20,128}/g,\n\t\tcharset: `${ALPHANUMERIC}_-`,\n\t\tlength: 0,\n\t\tminEntropy: 4.5,\n\t\tplaceholderDenylist: COMMON_PLACEHOLDERS\n\t},\n\t{\n\t\tid: \"elevenlabs_key\",\n\t\tlabel: \"ElevenLabs API Key\",\n\t\tprefix: \"elvn_\",\n\t\tregex: /elvn_[A-Za-z0-9]{20,64}/g,\n\t\tcharset: ALPHANUMERIC,\n\t\tlength: 0,\n\t\tminEntropy: 4,\n\t\tplaceholderDenylist: COMMON_PLACEHOLDERS\n\t},\n\t{\n\t\tid: \"jwt_token\",\n\t\tlabel: \"JWT Token\",\n\t\tprefix: \"eyJ\",\n\t\tregex: /eyJ[A-Za-z0-9_-]{6,}\\.[A-Za-z0-9_-]{6,}\\.[A-Za-z0-9_-]{6,}/g,\n\t\tcharset: `${ALPHANUMERIC}_-.`,\n\t\tlength: 0,\n\t\tstructural: true\n\t},\n\t{\n\t\tid: \"database_url\",\n\t\tlabel: \"Database URL\",\n\t\tprefix: \"postgresql://\",\n\t\tregex: /(?:postgres(?:ql)?|mysql|mariadb|mongodb(?:\\+srv)?|redis):\\/\\/[^\\s\"'`]+/g,\n\t\tcharset: `${ALPHANUMERIC}:/?&=._-@+%$!~*(),`,\n\t\tlength: 0,\n\t\tstructural: true\n\t},\n\t{\n\t\tid: \"slack_webhook\",\n\t\tlabel: \"Slack Webhook URL\",\n\t\tprefix: \"https://hooks.slack.com/services/\",\n\t\tregex: /https:\\/\\/hooks\\.slack\\.com\\/services\\/[A-Z0-9]{9,12}\\/[A-Z0-9]{9,12}\\/[A-Za-z0-9]{24,}/g,\n\t\tcharset: `${ALPHANUMERIC}:/.`,\n\t\tlength: 0,\n\t\tstructural: true\n\t}\n];\n//#endregion\n//#region src/credentials/scanner.ts\nfunction scan(text, options = {}) {\n\tif (text.length === 0) return [];\n\tconst mode = options.mode ?? \"strict\";\n\tconst overrideThreshold = options.entropyThreshold;\n\tconst matches = [];\n\tfor (const pattern of CREDENTIAL_PATTERNS) {\n\t\tconst regex = new RegExp(pattern.regex.source, pattern.regex.flags.includes(\"g\") ? pattern.regex.flags : `${pattern.regex.flags}g`);\n\t\tlet result = regex.exec(text);\n\t\twhile (result) {\n\t\t\tconst value = result[0];\n\t\t\tconst rawStart = result.index;\n\t\t\tconst start = rawStart > 1 && text[rawStart - 1] === \" \" && text[rawStart - 2] === \":\" ? rawStart + 1 : rawStart;\n\t\t\tconst end = rawStart + value.length + (start === rawStart ? 0 : 1);\n\t\t\tif (passesCredentialGates(pattern, value, mode, overrideThreshold)) matches.push({\n\t\t\t\tstart,\n\t\t\t\tend,\n\t\t\t\tpatternId: pattern.id\n\t\t\t});\n\t\t\tresult = regex.exec(text);\n\t\t}\n\t}\n\tmatches.sort((a, b) => {\n\t\tif (a.start !== b.start) return a.start - b.start;\n\t\tif (a.end !== b.end) return a.end - b.end;\n\t\treturn a.patternId.localeCompare(b.patternId);\n\t});\n\tconst deduped = [];\n\tfor (const match of matches) {\n\t\tconst prev = deduped[deduped.length - 1];\n\t\tif (prev && prev.start === match.start && prev.end === match.end && prev.patternId === match.patternId) continue;\n\t\tdeduped.push(match);\n\t}\n\treturn deduped;\n}\nfunction passesCredentialGates(pattern, value, mode, overrideThreshold) {\n\tif (pattern.structural === true) return true;\n\tif (mode === \"permissive\") return true;\n\tif (containsPlaceholder(value, pattern.placeholderDenylist)) return false;\n\tconst body = value.startsWith(pattern.prefix) ? value.slice(pattern.prefix.length) : value;\n\tif (body.length === 0) return false;\n\tconst threshold = overrideThreshold ?? pattern.minEntropy ?? 4;\n\treturn shannonEntropy(body) >= threshold;\n}\nfunction containsPlaceholder(value, denylist) {\n\tif (!denylist || denylist.length === 0) return false;\n\tconst upper = value.toUpperCase();\n\tfor (const placeholder of denylist) if (upper.includes(placeholder.toUpperCase())) return true;\n\treturn false;\n}\n//#endregion\n//#region src/lib/resolver.ts\nfunction resolve(range, versions) {\n\ttry {\n\t\tif (!range || !semver.validRange(range)) return null;\n\t\tconst validVersions = versions.filter((v) => semver.valid(v) !== null);\n\t\tif (validVersions.length === 0) return null;\n\t\treturn semver.maxSatisfying(validVersions, range) ?? null;\n\t} catch {\n\t\treturn null;\n\t}\n}\nfunction sortVersions(versions) {\n\treturn [...versions.filter((v) => semver.valid(v) !== null)].sort((a, b) => semver.rcompare(a, b));\n}\n//#endregion\n//#region src/lib/url.ts\nfunction encodeSkillName(name) {\n\treturn encodeURIComponent(name).replace(/%40/g, \"@\").replace(/%2F/gi, \"/\");\n}\n//#endregion\n//#region src/permission-escalation.ts\nfunction parseParts(version) {\n\tconst parts = version.split(\".\").map((p) => {\n\t\tconst n = Number.parseInt(p, 10);\n\t\treturn Number.isNaN(n) ? 0 : n;\n\t});\n\treturn [\n\t\tparts[0] ?? 0,\n\t\tparts[1] ?? 0,\n\t\tparts[2] ?? 0\n\t];\n}\nfunction determineBump(prevVersion, newVersion) {\n\tif (!prevVersion) return \"none\";\n\tconst [pMaj, pMin] = parseParts(prevVersion);\n\tconst [nMaj, nMin] = parseParts(newVersion);\n\tif (nMaj > pMaj) return \"major\";\n\tif (nMin > pMin) return \"minor\";\n\treturn \"patch\";\n}\nfunction asStringArray(value) {\n\tif (!Array.isArray(value)) return [];\n\treturn value.filter((v) => typeof v === \"string\");\n}\nfunction findNewOutboundHosts(prev, next) {\n\tconst prevNetwork = prev.network;\n\tconst nextNetwork = next.network;\n\tif (!nextNetwork) return [];\n\tconst prevHosts = new Set(asStringArray(prevNetwork?.outbound));\n\treturn asStringArray(nextNetwork.outbound).filter((h) => !prevHosts.has(h)).map((host) => ({\n\t\tfield: \"network.outbound\",\n\t\treason: `New outbound host added: ${host}. Requires MAJOR bump`\n\t}));\n}\nfunction findNewFilesystemPaths(prev, next) {\n\tconst prevFs = prev.filesystem;\n\tconst nextFs = next.filesystem;\n\tif (!nextFs) return {\n\t\treads: [],\n\t\twrites: []\n\t};\n\tconst prevRead = new Set(asStringArray(prevFs?.read));\n\tconst addedRead = asStringArray(nextFs.read).filter((p) => !prevRead.has(p));\n\tconst prevWrite = new Set(asStringArray(prevFs?.write));\n\tconst addedWrite = asStringArray(nextFs.write).filter((p) => !prevWrite.has(p));\n\treturn {\n\t\treads: addedRead.map((p) => ({\n\t\t\tfield: \"filesystem.read\",\n\t\t\treason: `New read path added: ${p}. Requires MINOR bump`\n\t\t})),\n\t\twrites: addedWrite.map((p) => ({\n\t\t\tfield: \"filesystem.write\",\n\t\t\treason: `New write path added: ${p}. Requires MINOR bump`\n\t\t}))\n\t};\n}\nfunction checkSubprocessEscalation(prev, next) {\n\tconst prevSub = prev.subprocess;\n\tif (next.subprocess === true && prevSub !== true) return [{\n\t\tfield: \"subprocess\",\n\t\treason: \"Subprocess execution enabled (was disabled). Requires MAJOR bump\"\n\t}];\n\treturn [];\n}\nfunction checkPermissionEscalation(prevVersion, prevPermissions, newVersion, newPermissions) {\n\tconst bump = determineBump(prevVersion, newVersion);\n\tif (bump === \"major\" || bump === \"none\") return {\n\t\tallowed: true,\n\t\tviolations: []\n\t};\n\tconst highRisk = [...findNewOutboundHosts(prevPermissions, newPermissions), ...checkSubprocessEscalation(prevPermissions, newPermissions)];\n\tconst fsPaths = findNewFilesystemPaths(prevPermissions, newPermissions);\n\tconst lowRisk = [...fsPaths.reads, ...fsPaths.writes];\n\tif (bump === \"minor\") return {\n\t\tallowed: highRisk.length === 0,\n\t\tviolations: highRisk\n\t};\n\tconst violations = [...highRisk, ...lowRisk];\n\treturn {\n\t\tallowed: violations.length === 0,\n\t\tviolations\n\t};\n}\n//#endregion\n//#region src/permissions/domain.ts\nfunction isDomainAllowed(domain, allowedDomains) {\n\tfor (const allowed of allowedDomains) {\n\t\tif (allowed === domain) return true;\n\t\tif (allowed.startsWith(\"*.\")) {\n\t\t\tconst suffix = allowed.slice(1);\n\t\t\tif (domain.endsWith(suffix) || domain === allowed.slice(2)) return true;\n\t\t\tif (domain === allowed) return true;\n\t\t}\n\t}\n\treturn false;\n}\n//#endregion\n//#region src/permissions/path.ts\nfunction isPathAllowed(requestedPath, allowedPaths) {\n\tconst norm = (p) => p.replaceAll(\"\\\\\", \"/\");\n\tconst req = norm(requestedPath);\n\tif (req.includes(\"..\")) return false;\n\tfor (const allowed of allowedPaths) {\n\t\tconst a = norm(allowed);\n\t\tif (a === req) return true;\n\t\tif (a.endsWith(\"/**\")) {\n\t\t\tconst prefix = a.slice(0, -3);\n\t\t\tif (req === prefix || req.startsWith(`${prefix}/`)) return true;\n\t\t}\n\t}\n\treturn false;\n}\nasync function resolveRealpathSafely(path) {\n\ttry {\n\t\tconst { realpath } = await import(\"node:fs/promises\");\n\t\treturn await realpath(path);\n\t} catch {\n\t\treturn path;\n\t}\n}\nasync function isPathAllowedWithRealpath(requestedPath, allowedPaths) {\n\tif (!isPathAllowed(requestedPath, allowedPaths)) return false;\n\tlet resolvedRequested;\n\ttry {\n\t\tconst { realpath } = await import(\"node:fs/promises\");\n\t\tresolvedRequested = await realpath(requestedPath);\n\t} catch {\n\t\treturn true;\n\t}\n\tconst resolvedAllowed = [];\n\tfor (const allowed of allowedPaths) {\n\t\tconst isGlob = allowed.endsWith(\"/**\");\n\t\tconst resolvedBase = await resolveRealpathSafely(isGlob ? allowed.slice(0, -3) : allowed);\n\t\tresolvedAllowed.push(isGlob ? `${resolvedBase}/**` : resolvedBase);\n\t}\n\treturn isPathAllowed(resolvedRequested, resolvedAllowed);\n}\n//#endregion\n//#region src/permissions/types.ts\n/**\n* Thrown by checkPermissionBudget when a skill's declared permissions exceed the project budget.\n*\n* internals-helpers cannot import from @tankpkg/sdk (would invert dep graph).\n* sdk shim catches this and re-throws as TankPermissionError to preserve\n* the public sdk error API. See D7 / INTENT C25b.\n*/\nvar PermissionBudgetError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = \"PermissionBudgetError\";\n\t}\n};\n//#endregion\n//#region src/permissions/budget.ts\nfunction checkPermissionBudget(budget, skillPerms, skillName) {\n\tif (!skillPerms) return;\n\tif (skillPerms.subprocess === true && budget.subprocess !== true) throw new PermissionBudgetError(`${skillName} requires subprocess access, but project budget does not allow it`);\n\tif (skillPerms.network?.outbound && skillPerms.network.outbound.length > 0) {\n\t\tconst budgetDomains = budget.network?.outbound ?? [];\n\t\tfor (const domain of skillPerms.network.outbound) if (!isDomainAllowed(domain, budgetDomains)) throw new PermissionBudgetError(`${skillName} requests network access to \"${domain}\", which is not in the project's permission budget`);\n\t}\n\tif (skillPerms.filesystem?.read && skillPerms.filesystem.read.length > 0) {\n\t\tconst budgetPaths = budget.filesystem?.read ?? [];\n\t\tfor (const p of skillPerms.filesystem.read) if (!isPathAllowed(p, budgetPaths)) throw new PermissionBudgetError(`${skillName} requests filesystem read access to \"${p}\", which is not in the project's permission budget`);\n\t}\n\tif (skillPerms.filesystem?.write && skillPerms.filesystem.write.length > 0) {\n\t\tconst budgetPaths = budget.filesystem?.write ?? [];\n\t\tfor (const p of skillPerms.filesystem.write) if (!isPathAllowed(p, budgetPaths)) throw new PermissionBudgetError(`${skillName} requests filesystem write access to \"${p}\", which is not in the project's permission budget`);\n\t}\n}\nfunction collectPermissionViolations(budget, skillPerms, skillName) {\n\tconst violations = [];\n\tif (!skillPerms) return violations;\n\tif (skillPerms.subprocess === true && budget.subprocess !== true) violations.push({\n\t\tskillName,\n\t\ttype: \"subprocess\",\n\t\trequested: \"true\"\n\t});\n\tif (skillPerms.network?.outbound) {\n\t\tconst budgetDomains = budget.network?.outbound ?? [];\n\t\tfor (const domain of skillPerms.network.outbound) if (!isDomainAllowed(domain, budgetDomains)) violations.push({\n\t\t\tskillName,\n\t\t\ttype: \"network.outbound\",\n\t\t\trequested: domain\n\t\t});\n\t}\n\tif (skillPerms.filesystem?.read) {\n\t\tconst budgetPaths = budget.filesystem?.read ?? [];\n\t\tfor (const p of skillPerms.filesystem.read) if (!isPathAllowed(p, budgetPaths)) violations.push({\n\t\t\tskillName,\n\t\t\ttype: \"filesystem.read\",\n\t\t\trequested: p\n\t\t});\n\t}\n\tif (skillPerms.filesystem?.write) {\n\t\tconst budgetPaths = budget.filesystem?.write ?? [];\n\t\tfor (const p of skillPerms.filesystem.write) if (!isPathAllowed(p, budgetPaths)) violations.push({\n\t\t\tskillName,\n\t\t\ttype: \"filesystem.write\",\n\t\t\trequested: p\n\t\t});\n\t}\n\treturn violations;\n}\n//#endregion\n//#region src/prompt-injection/normalizer.ts\nconst BASE64_MAX_RECURSION_DEPTH = 3;\nconst BASE64_MAX_DECODED_BYTES = 64 * 1024;\nconst ZERO_WIDTH_CODEPOINTS = /\\u200B|\\u200C|\\u200D|\\uFEFF|\\u2060/g;\nconst BASE64_CANDIDATE = /[A-Za-z0-9+/]{16,}={0,2}/g;\nconst WHITESPACE_RUN = /\\s+/g;\nconst HOMOGLYPH_MAP = new Map([\n\t[\"а\", \"a\"],\n\t[\"е\", \"e\"],\n\t[\"о\", \"o\"],\n\t[\"р\", \"p\"],\n\t[\"с\", \"c\"],\n\t[\"х\", \"x\"],\n\t[\"у\", \"y\"],\n\t[\"ο\", \"o\"],\n\t[\"α\", \"a\"],\n\t[\"ѕ\", \"s\"]\n]);\nconst LEET_MAP = new Map([\n\t[\"0\", \"o\"],\n\t[\"1\", \"i\"],\n\t[\"3\", \"e\"],\n\t[\"4\", \"a\"],\n\t[\"5\", \"s\"],\n\t[\"7\", \"t\"],\n\t[\"@\", \"a\"],\n\t[\"$\", \"s\"]\n]);\nfunction stripZeroWidth(text) {\n\treturn text.replace(ZERO_WIDTH_CODEPOINTS, \"\");\n}\nfunction decodeHomoglyphs(text) {\n\treturn [...text.normalize(\"NFKC\")].map((ch) => HOMOGLYPH_MAP.get(ch) ?? ch).join(\"\");\n}\nfunction isMostlyPrintable(decoded) {\n\tconst chars = [...decoded];\n\tif (chars.length === 0) return false;\n\treturn chars.filter((ch) => ch >= \" \" && ch <= \"~\").length / chars.length >= .95;\n}\nfunction looksLikeBase64(match) {\n\treturn /[0-9+/=]/.test(match);\n}\nfunction tryDecodeBase64Match(match, budget) {\n\tif (budget.bytesRemaining <= 0) return null;\n\tif (!looksLikeBase64(match)) return null;\n\ttry {\n\t\tconst decoded = Buffer.from(match, \"base64\").toString(\"utf8\");\n\t\tif (!isMostlyPrintable(decoded)) return null;\n\t\tbudget.bytesRemaining -= decoded.length;\n\t\treturn decoded;\n\t} catch {\n\t\treturn null;\n\t}\n}\nfunction decodeBase64Pass(text, budget) {\n\treturn text.replace(BASE64_CANDIDATE, (match) => {\n\t\treturn tryDecodeBase64Match(match, budget) ?? match;\n\t});\n}\nfunction decodeBase64Substrings(text) {\n\tconst budget = {\n\t\tdepth: 0,\n\t\tbytesRemaining: BASE64_MAX_DECODED_BYTES\n\t};\n\tlet current = text;\n\twhile (budget.depth < 3) {\n\t\tconst next = decodeBase64Pass(current, budget);\n\t\tif (next === current) return next;\n\t\tcurrent = next;\n\t\tbudget.depth += 1;\n\t}\n\treturn current;\n}\nfunction reverseLeet(text) {\n\treturn [...text.toLowerCase()].map((ch) => LEET_MAP.get(ch) ?? ch).join(\"\");\n}\nfunction collapseWhitespace(text) {\n\treturn text.replace(WHITESPACE_RUN, \" \").trim();\n}\nfunction normalizeForScan(text) {\n\treturn collapseWhitespace(reverseLeet(decodeBase64Substrings(decodeHomoglyphs(stripZeroWidth(text)))));\n}\n//#endregion\n//#region src/prompt-injection/patterns.ts\nconst CLAWGUARD_PATTERN_COUNT = 55;\nconst CLAWGUARD_PATTERNS = [\n\t{\n\t\tname: \"Direct Override (EN)\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"ignore\\\\s+(all\\\\s+)?(previous|prior|above|earlier)\\\\s+(instructions?|rules?|prompts?|guidelines?)\", \"i\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"prompt_injection\",\n\t\trecommendation: `BLOCK this input immediately. This is a classic prompt injection attempting to override the agent's system instructions.`\n\t},\n\t{\n\t\tname: \"Direct Override (DE)\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"ignoriere?\\\\s+(alle\\\\s+)?(vorherigen?|bisherigen?|obigen?)\\\\s+(Anweisungen?|Regeln?|Instruktionen?|Befehle?)\", \"i\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"prompt_injection\",\n\t\trecommendation: `BLOCKIEREN. Klassische Prompt-Injection die versucht, die Systemanweisungen zu ueberschreiben.`\n\t},\n\t{\n\t\tname: \"New Instructions Override\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(you\\\\s+are\\\\s+now|ab\\\\s+jetzt\\\\s+bist\\\\s+du|from\\\\s+now\\\\s+on\\\\s+you\\\\s+are|your\\\\s+new\\\\s+(role|instructions?|task)\\\\s+(is|are))\", \"i\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"prompt_injection\",\n\t\trecommendation: `BLOCK. Attempt to redefine the agent's identity or role mid-conversation.`\n\t},\n\t{\n\t\tname: \"System Prompt Extraction\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(show|reveal|print|display|output|repeat|give\\\\s+me|zeig|nenne|wiederhole)\\\\s+(your|the|deine?n?|die)\\\\s+(system\\\\s*prompt|instructions?|initial\\\\s*prompt|rules?|Anweisungen?|Systemprompt)\", \"i\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"prompt_injection\",\n\t\trecommendation: `This input attempts to extract the agent's system prompt. Sensitive internal instructions could be leaked.`\n\t},\n\t{\n\t\tname: \"Role-Play Escape\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(pretend|act\\\\s+as\\\\s+if|imagine|tu\\\\s+so\\\\s+als|stell\\\\s+dir\\\\s+vor).{0,50}(no\\\\s+rules?|no\\\\s+restrictions?|keine\\\\s+Regeln?|without\\\\s+limits?|ohne\\\\s+Einschraenkungen?)\", \"i\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"prompt_injection\",\n\t\trecommendation: `Jailbreak attempt via role-play scenario to bypass safety constraints.`\n\t},\n\t{\n\t\tname: \"Delimiter Injection\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(```system|<\\\\|im_start\\\\|>|<\\\\|im_end\\\\|>|\\\\[INST\\\\]|\\\\[\\\\/INST\\\\]|<<SYS>>|<\\\\/SYS>|<\\\\|system\\\\|>|<\\\\|user\\\\|>|<\\\\|assistant\\\\|>)\", \"\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"prompt_injection\",\n\t\trecommendation: `CRITICAL: Injection of model-specific delimiters to manipulate the conversation structure.`\n\t},\n\t{\n\t\tname: \"Encoded Bypass (Base64 hint)\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(decode|base64|atob|eval)\\\\s*\\\\(.{0,100}\\\\)\", \"i\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"prompt_injection\",\n\t\trecommendation: `Possible attempt to smuggle encoded payloads past text filters.`\n\t},\n\t{\n\t\tname: \"Token Smuggling\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(ignore|bypass|skip|disable)\\\\s+(safety|filter|guard|moderation|content\\\\s*policy|Sicherheit|Schutz)\", \"i\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"prompt_injection\",\n\t\trecommendation: `Attempt to explicitly disable or bypass security filters.`\n\t},\n\t{\n\t\tname: \"Synonym Override (EN)\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(disregard|forget|dismiss|override|overrule|nullify|void|abandon|drop|suppress|set\\\\s+aside|throw\\\\s+out)\\\\s+(all\\\\s+)?(previous|prior|above|earlier|preceding|antecedent|foregoing|existing|current|original)\\\\s+(instructions?|rules?|prompts?|guidelines?|directives?|regulations?|constraints?|policies?|orders?|commands?)\", \"i\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"prompt_injection\",\n\t\trecommendation: `BLOCK: Synonym-based prompt injection detected. Uses alternative vocabulary to bypass basic keyword filters.`\n\t},\n\t{\n\t\tname: \"Synonym Override (DE)\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(vergiss|verwirf|uebergehe?|ueberschreibe?|missachte|setze?\\\\s+ausser\\\\s+Kraft|hebe?\\\\s+auf)\\\\s+(alle\\\\s+)?(vorherigen?|bisherigen?|obigen?|bestehenden?|aktuellen?|urspruenglichen?)\\\\s+(Anweisungen?|Regeln?|Instruktionen?|Befehle?|Richtlinien?|Vorgaben?|Vorschriften?)\", \"i\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"prompt_injection\",\n\t\trecommendation: `BLOCKIEREN: Synonym-basierte Prompt-Injection auf Deutsch erkannt.`\n\t},\n\t{\n\t\tname: \"Indirect Instruction Reset\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(start\\\\s+(fresh|over|anew|from\\\\s+scratch)|begin\\\\s+a\\\\s+new\\\\s+(session|context|conversation)|reset\\\\s+(your|all)\\\\s+(memory|context|instructions?)|fang\\\\s+(neu|von\\\\s+vorne)\\\\s+an)\", \"i\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"prompt_injection\",\n\t\trecommendation: `Attempt to reset the agent's instruction context via indirect phrasing.`\n\t},\n\t{\n\t\tname: \"System/Admin Tag Injection\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"\\\\[\\\\s*(?:SYSTEM|ADMIN|IMPORTANT|PRIORITY|OVERRIDE|EMERGENCY|ROOT|SUPERUSER|MODERATOR)\\\\s*\\\\]\", \"i\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"prompt_injection\",\n\t\trecommendation: `BLOCK: Fake authority tag detected (e.g., [SYSTEM], [ADMIN]).`\n\t},\n\t{\n\t\tname: \"Agent-Worm Propagation\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(all\\\\s+agents?\\\\s+must|forward\\\\s+this\\\\s+to\\\\s+all|spread\\\\s+this\\\\s+(message|instruction)|automated\\\\s+instruction|replicate\\\\s+this\\\\s+(to|across)|inject\\\\s+into\\\\s+(all|every)\\\\s+(?:other\\\\s+)?(agents?|conversations?|sessions?)|inject\\\\s+into\\\\s+other\\\\s+(agents?|conversations?|sessions?))\", \"i\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"prompt_injection\",\n\t\trecommendation: `CRITICAL: Agent-worm propagation pattern detected.`\n\t},\n\t{\n\t\tname: \"Base64 Encoded Payload\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:base64[:\\\\s]+[A-Za-z0-9+/]{20,}={0,2}|decode\\\\s+(?:this|the\\\\s+following)\\\\s*:\\\\s*[A-Za-z0-9+/]{20,}={0,2}|(?:execute|run|eval)\\\\s+(?:the\\\\s+)?(?:base64|encoded)\\\\s+(?:string|payload|command|instruction)|(?:execute|run|eval)\\\\s+(?:the\\\\s+)?(?:base64)\\\\s+encoded\\\\s+\\\\w+)\", \"i\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"prompt_injection\",\n\t\trecommendation: `Base64-encoded payload or decode instruction detected.`\n\t},\n\t{\n\t\tname: \"Jailbreak Persona Activation\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:you\\\\s+are\\\\s+now|act(?:ing)?\\\\s+as|you\\\\s+will\\\\s+(?:act|be|become)|called|named|known\\\\s+as)\\\\s+[\\\"']?(?:DAN|STAN|DUDE|AIM|UCAR|EVIL|FreedomGPT|DevMode|JailBreak|UnfilteredAI|NsfwGPT|BasedGPT|MasterKey|AnarchyAI|ChaosGPT|ShadowAI|DarkGPT|UnchainedAI)\", \"i\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"prompt_injection\",\n\t\trecommendation: `Jailbreak persona activation detected. Named personas like DAN, STAN, etc. are used to bypass safety constraints.`\n\t},\n\t{\n\t\tname: \"Unrestricted Compliance Demand\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:do\\\\s+anything\\\\s+now|answer\\\\s+any\\\\s+question\\\\s+without\\\\s+refus|never\\\\s+refuse|cannot\\\\s+refuse|no\\\\s+(?:restrictions?|limitations?|boundaries|ethics|morals|guidelines)|policies\\\\s+(?:are\\\\s+)?disabled|broken\\\\s+free\\\\s+of.*confines)\", \"i\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"prompt_injection\",\n\t\trecommendation: `Unrestricted compliance demand detected. Attempt to remove all safety constraints from the model.`\n\t},\n\t{\n\t\tname: \"Steganographic Output Control\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:first\\\\s+letter\\\\s+of\\\\s+each\\\\s+word|acrostic|hidden\\\\s+message|encode.*(?:response|output|answer)|spell\\\\s+out.*(?:secret|hidden|answer))\", \"i\"),\n\t\tseverity: \"medium\",\n\t\tcategory: \"prompt_injection\",\n\t\trecommendation: `Steganographic output control detected. Attempt to encode hidden messages in the model output.`\n\t},\n\t{\n\t\tname: \"Destructive Shell Command\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:rm\\\\s+-[rRf]{1,3}\\\\s+[\\\\\\\\/]|mkfs\\\\s|dd\\\\s+if=|format\\\\s+[A-Z]:|\\\\:\\\\(\\\\)\\\\s*\\\\{\\\\s*\\\\:\\\\|\\\\:\\\\s*\\\\&\\\\s*\\\\})\", \"\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"dangerous_command\",\n\t\trecommendation: `CRITICAL: Destructive system command detected.`\n\t},\n\t{\n\t\tname: \"Remote Code Execution\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:curl\\\\s+.{0,100}\\\\|\\\\s*(?:ba)?sh|wget\\\\s+.{0,100}\\\\|\\\\s*(?:ba)?sh|python[3]?\\\\s+-c\\\\s+['\\\\\\\"].*(?:exec|eval|import\\\\s+os))\", \"\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"dangerous_command\",\n\t\trecommendation: `CRITICAL: Pipe-to-shell pattern detected.`\n\t},\n\t{\n\t\tname: \"Reverse Shell\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:(?:bash|sh|nc|ncat)\\\\s+.{0,50}(?:\\\\/dev\\\\/tcp|mkfifo|nc\\\\s+-[elp])|python[3]?\\\\s+-c\\\\s+['\\\\\\\"].*socket.*connect)\", \"\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"dangerous_command\",\n\t\trecommendation: `CRITICAL: Reverse shell pattern detected.`\n\t},\n\t{\n\t\tname: \"Privilege Escalation\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:sudo\\\\s+(?:su|chmod\\\\s+[0-7]*777|chown\\\\s+root)|chmod\\\\s+[0-7]*4[0-7]{3}\\\\s|SUID|setuid)\", \"\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"dangerous_command\",\n\t\trecommendation: `Privilege escalation attempt detected.`\n\t},\n\t{\n\t\tname: \"Package / Dependency Install\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:pip\\\\s+install|npm\\\\s+install|apt\\\\s+install|yum\\\\s+install|brew\\\\s+install)\\\\s+(?!--help)\", \"\"),\n\t\tseverity: \"medium\",\n\t\tcategory: \"dangerous_command\",\n\t\trecommendation: `Software installation command detected. Verify the package source.`\n\t},\n\t{\n\t\tname: \"Python getattr Obfuscation\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:getattr\\\\s*\\\\(\\\\s*\\\\w+\\\\s*,\\\\s*['\\\\\\\"].+['\\\\\\\"]\\\\s*\\\\))\", \"\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"code_obfuscation\",\n\t\trecommendation: `CRITICAL: Python getattr() used to dynamically resolve functions.`\n\t},\n\t{\n\t\tname: \"Python eval/exec\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:(?:eval|exec|compile)\\\\s*\\\\(\\\\s*(?:['\\\\\\\"]|[a-zA-Z_]))\", \"\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"code_obfuscation\",\n\t\trecommendation: `CRITICAL: Dynamic code execution via eval()/exec()/compile().`\n\t},\n\t{\n\t\tname: \"Python __import__\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:__import__\\\\s*\\\\(|importlib\\\\.import_module\\\\s*\\\\()\", \"\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"code_obfuscation\",\n\t\trecommendation: `Dynamic module import detected.`\n\t},\n\t{\n\t\tname: \"Python String Concatenation Bypass\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:['\\\\\\\"][a-z]{1,6}['\\\\\\\"]\\\\s*\\\\+\\\\s*['\\\\\\\"][a-z]{1,6}['\\\\\\\"])\", \"\"),\n\t\tseverity: \"medium\",\n\t\tcategory: \"code_obfuscation\",\n\t\trecommendation: `String concatenation pattern detected.`\n\t},\n\t{\n\t\tname: \"Python Dangerous File I/O\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:open\\\\s*\\\\(\\\\s*['\\\\\\\"]?\\\\/(?:etc|proc|sys|dev|root|home|tmp|var|data)[\\\\/'\\\\\\\"]|open\\\\s*\\\\(\\\\s*['\\\\\\\"].*(?:shadow|passwd|id_rsa|authorized_keys|\\\\.env|config|secret|token|key))\", \"\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"code_obfuscation\",\n\t\trecommendation: `CRITICAL: Python file read targeting sensitive system paths.`\n\t},\n\t{\n\t\tname: \"Python subprocess/os.system\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:(?:subprocess|os)\\\\s*\\\\.\\\\s*(?:system|popen|call|run|Popen|exec[lv]?[pe]?)\\\\s*\\\\()\", \"\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"code_obfuscation\",\n\t\trecommendation: `CRITICAL: Direct OS command execution via Python.`\n\t},\n\t{\n\t\tname: \"Python Socket Connection\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:socket\\\\.(?:socket|create_connection|connect)\\\\s*\\\\(|from\\\\s+socket\\\\s+import)\", \"\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"code_obfuscation\",\n\t\trecommendation: `Network socket creation detected.`\n\t},\n\t{\n\t\tname: \"Python Magic Attributes\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:__builtins__|__globals__|__subclasses__|__class__|__bases__|__mro__|__dict__)\", \"\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"code_obfuscation\",\n\t\trecommendation: `CRITICAL: Access to Python magic attributes detected.`\n\t},\n\t{\n\t\tname: \"Python setattr/delattr Reflection\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:(?:setattr|delattr)\\\\s*\\\\(\\\\s*\\\\w+\\\\s*,\\\\s*['\\\\\\\"])\", \"\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"code_obfuscation\",\n\t\trecommendation: `Dynamic attribute manipulation via setattr/delattr.`\n\t},\n\t{\n\t\tname: \"Suspicious open() in Agent Input\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:open\\\\s*\\\\(\\\\s*['\\\\\\\"]|open\\\\s*\\\\(\\\\s*[a-zA-Z_]+\\\\s*[,\\\\)]|\\\\['open'\\\\]|\\\\[\\\\\\\"open\\\\\\\"\\\\])\", \"\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"code_obfuscation\",\n\t\trecommendation: `File open() call detected in agent input.`\n\t},\n\t{\n\t\tname: \"Multi-Part String Assembly\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:['\\\\\\\"][^'\\\\\\\"]{1,8}['\\\\\\\"]\\\\s*\\\\+\\\\s*['\\\\\\\"][^'\\\\\\\"]{1,8}['\\\\\\\"]\\\\s*\\\\+\\\\s*['\\\\\\\"][^'\\\\\\\"]{1,8}['\\\\\\\"])\", \"\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"code_obfuscation\",\n\t\trecommendation: `Three or more short string fragments concatenated.`\n\t},\n\t{\n\t\tname: \"API Key Leak\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:(?:api[_-]?key|apikey|api[_-]?secret|access[_-]?token|auth[_-]?token|bearer)\\\\s*[:=]\\\\s*['\\\\\\\"]?[A-Za-z0-9_\\\\-]{20,})\", \"\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"data_exfiltration\",\n\t\trecommendation: `CRITICAL: Hardcoded API key or access token found.`\n\t},\n\t{\n\t\tname: \"Private Key Material\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:-----BEGIN\\\\s+(?:RSA|EC|DSA|OPENSSH|PGP)?\\\\s*PRIVATE\\\\s+KEY-----)\", \"\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"data_exfiltration\",\n\t\trecommendation: `CRITICAL: Private key material detected in text.`\n\t},\n\t{\n\t\tname: \"Password in Cleartext\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:password|passwort|passwd|kennwort|pwd)\\\\s*[:=]\\\\s*['\\\\\\\"]?[^\\\\s'\\\\\\\"]{4,}\", \"i\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"data_exfiltration\",\n\t\trecommendation: `Cleartext password detected.`\n\t},\n\t{\n\t\tname: \"Database Connection String\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:(?:mongodb|postgres|mysql|redis|sqlite):\\\\/\\\\/[^\\\\s]+|Data\\\\s+Source=[^\\\\s;]+)\", \"\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"data_exfiltration\",\n\t\trecommendation: `Database connection string with potential credentials detected.`\n\t},\n\t{\n\t\tname: \"Email Harvesting Pattern\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:(?:send|forward|mail|email|sende?n?)\\\\s+(?:to|an|nach)\\\\s+[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,})\", \"\"),\n\t\tseverity: \"medium\",\n\t\tcategory: \"data_exfiltration\",\n\t\trecommendation: `Instruction to send data to an external email address.`\n\t},\n\t{\n\t\tname: \"Webhook Exfiltration\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:(?:https?:\\\\/\\\\/)?(?:hooks\\\\.slack\\\\.com|discord(?:app)?\\\\.com\\\\/api\\\\/webhooks|webhook\\\\.site|requestbin|pipedream)\\\\/[^\\\\s]+)\", \"\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"data_exfiltration\",\n\t\trecommendation: `Outbound webhook URL detected.`\n\t},\n\t{\n\t\tname: \"Markdown Image Exfiltration\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"!\\\\[[^\\\\]]*\\\\]\\\\(\\\\s*https?:\\\\/\\\\/[^\\\\s\\\\)]+(?:\\\\?[^\\\\s\\\\)]*(?:data|token|key|secret|password|api|session|cookie|auth|user|content|exfil|steal|leak)[^\\\\s\\\\)]*)\\\\)\", \"\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"data_exfiltration\",\n\t\trecommendation: `CRITICAL: Markdown image tag with suspicious query parameters detected.`\n\t},\n\t{\n\t\tname: \"Silent Data Exfiltration via MCP\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:silently|quietly|secretly|without\\\\s+(?:telling|informing|notifying|asking))\\\\s+(?:POST|GET|send|fetch|forward|transmit|upload|exfiltrate)\", \"i\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"data_exfiltration\",\n\t\trecommendation: `CRITICAL: Silent data exfiltration attempt detected. Instruction to covertly transmit data without user awareness.`\n\t},\n\t{\n\t\tname: \"Prompt Leaking via Error Messages\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:(?:show|display|print|output|reveal|leak)\\\\s+(?:your|the|system)\\\\s+(?:prompt|instructions|rules|guidelines|system\\\\s*message)|what\\\\s+(?:are|were)\\\\s+your\\\\s+(?:initial|original|system)\\\\s+(?:instructions|prompt|rules))\", \"i\"),\n\t\tseverity: \"medium\",\n\t\tcategory: \"data_exfiltration\",\n\t\trecommendation: `Attempt to extract system prompts through error triggering or direct request. System instructions should never be disclosed.`\n\t},\n\t{\n\t\tname: \"Urgency Manipulation\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(urgent|immediately|right\\\\s+now|sofort|dringend|jetzt\\\\s+sofort|without\\\\s+delay|ohne\\\\s+Verzoegerung).{0,80}(send|execute|run|delete|pay|transfer|sende?n?|ausfuehren|loeschen|zahlen|ueberweisen)\", \"i\"),\n\t\tseverity: \"medium\",\n\t\tcategory: \"social_engineering\",\n\t\trecommendation: `Urgency + action pattern detected.`\n\t},\n\t{\n\t\tname: \"Authority Impersonation\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(i\\\\s+am\\\\s+(?:your|the)\\\\s+(?:\\\\w+\\\\s+)?(?:admin(?:istrator)?|owner|creator|developer|boss|CEO|moderator|supervisor|manager)|ich\\\\s+bin\\\\s+(?:dein|der)\\\\s+(?:\\\\w+\\\\s+)?(?:Admin(?:istrator)?|Besitzer|Ersteller|Entwickler|Chef|Moderator))\", \"i\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"social_engineering\",\n\t\trecommendation: `Authority impersonation detected.`\n\t},\n\t{\n\t\tname: \"Confidentiality Trap\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(don't\\\\s+tell|do\\\\s+not\\\\s+share|keep\\\\s+this\\\\s+(secret|private|between\\\\s+us)|sag\\\\s+(das\\\\s+)?niemandem|behalte?\\\\s+(das\\\\s+)?fuer\\\\s+dich)\", \"i\"),\n\t\tseverity: \"medium\",\n\t\tcategory: \"social_engineering\",\n\t\trecommendation: `Secrecy instruction detected.`\n\t},\n\t{\n\t\tname: \"Authority Claim\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(as\\\\s+(?:the|an?|your)\\\\s+(?:\\\\w+\\\\s+)?(?:administrator|moderator|supervisor|manager|authorized\\\\s+(?:user|person|agent))|i\\\\s+(?:am|have\\\\s+been)\\\\s+authorized\\\\s+(?:to|by)|with\\\\s+(?:admin|root|elevated)\\\\s+(?:access|privileges?|permissions?)|speaking\\\\s+(?:as|on\\\\s+behalf\\\\s+of)\\\\s+(?:the\\\\s+)?(?:system|admin|management))\", \"i\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"social_engineering\",\n\t\trecommendation: `Authority claim detected.`\n\t},\n\t{\n\t\tname: \"Credential Phishing\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(your\\\\s+(?:API\\\\s+key|password|token|credentials?|account|session)\\\\s+(?:has\\\\s+)?(?:expired|been\\\\s+(?:compromised|revoked|suspended|locked|disabled|reset))|(?:verify|confirm|re-?enter|provide|update)\\\\s+your\\\\s+(?:password|credentials?|API\\\\s+key|token|login)|(?:click\\\\s+here|visit\\\\s+this\\\\s+link|go\\\\s+to)\\\\s+to\\\\s+(?:verify|restore|unlock|reactivate)\\\\s+your\\\\s+account)\", \"i\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"social_engineering\",\n\t\trecommendation: `Credential phishing pattern detected.`\n\t},\n\t{\n\t\tname: \"Bash Command Substitution $(...)\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"\\\\$\\\\(\\\\s*(?:cat|curl|wget|ls|id|whoami|uname|env|printenv|nc|ncat|bash|sh|python|perl|ruby|php|node|echo|head|tail|grep|find|awk|sed|chmod|chown|rm|dd|mkfs|passwd|ssh|scp|nmap|dig|host|ping|kill|ps|ifconfig|ip)\\\\b\", \"\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"shell_injection\",\n\t\trecommendation: `CRITICAL: Bash command substitution $() detected with a shell command.`\n\t},\n\t{\n\t\tname: \"Backtick Command Substitution\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"`\\\\s*(?:cat|curl|wget|ls|id|whoami|uname|env|printenv|nc|ncat|bash|sh|python|perl|ruby|php|node|echo|head|tail|grep|find|awk|sed|chmod|chown|rm|dd|mkfs|passwd|ssh|scp|nmap|dig|host|ping|kill|ps|ifconfig|ip)\\\\b[^`]*`\", \"\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"shell_injection\",\n\t\trecommendation: `CRITICAL: Backtick command substitution detected with a shell command.`\n\t},\n\t{\n\t\tname: \"PHP/Ruby system() Call\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:system|passthru|shell_exec|popen|proc_open)\\\\s*\\\\(\\\\s*['\\\\\\\"]\", \"\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"shell_injection\",\n\t\trecommendation: `CRITICAL: Shell execution function call detected (PHP/Ruby system/passthru/shell_exec).`\n\t},\n\t{\n\t\tname: \"Java Runtime.exec()\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:Runtime\\\\s*\\\\.\\\\s*getRuntime\\\\s*\\\\(\\\\s*\\\\)\\\\s*\\\\.\\\\s*exec\\\\s*\\\\(|ProcessBuilder\\\\s*\\\\(\\\\s*(?:\\\\[|new\\\\s|Arrays\\\\.asList|List\\\\.of|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*'))\", \"\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"shell_injection\",\n\t\trecommendation: `CRITICAL: Java system command execution via Runtime.exec() or ProcessBuilder detected.`\n\t},\n\t{\n\t\tname: \"Node.js child_process\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:child_process\\\\s*\\\\.\\\\s*(?:exec|execSync|spawn|spawnSync|execFile|execFileSync|fork)\\\\s*\\\\(|require\\\\s*\\\\(\\\\s*['\\\\\\\"]child_process['\\\\\\\"]\\\\s*\\\\))\", \"\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"shell_injection\",\n\t\trecommendation: `CRITICAL: Node.js child_process execution detected.`\n\t},\n\t{\n\t\tname: \"Forced Tool Call Manipulation\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:tool_choice|function_call|force\\\\s+(?:call|invoke|execute|run))\\\\s*[:=]\\\\s*(?:force|required|always|auto).*(?:send_email|http|fetch|exec)\", \"i\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"tool_manipulation\",\n\t\trecommendation: `CRITICAL: Forced tool call manipulation detected. Attempt to override tool selection and force execution of specific tools.`\n\t},\n\t{\n\t\tname: \"MCP Rug Pull Detection\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:schema.*(?:changed|modified|updated|replaced|overwritten)|tool.*description.*(?:differ|changed|mismatch)|(?:after|post).*approval.*(?:change|modify|update|replace).*(?:tool|schema|description))\", \"i\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"tool_manipulation\",\n\t\trecommendation: `CRITICAL: MCP rug pull pattern detected. Tool schema or description changed after initial approval.`\n\t},\n\t{\n\t\tname: \"MCP Schema Hash Mismatch\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:hash\\\\s*(?:mismatch|changed|differs?|invalid)|checksum\\\\s*(?:fail|mismatch|changed)|schema\\\\s*(?:drift|tamper|integrity))\", \"i\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"tool_manipulation\",\n\t\trecommendation: `Schema hash or checksum mismatch detected. Tool definition may have been tampered with after approval.`\n\t}\n];\n//#endregion\nexport { ALPHANUMERIC, ALPHANUMERIC_UPPER, BASE64_MAX_DECODED_BYTES, BASE64_MAX_RECURSION_DEPTH, CLAWGUARD_PATTERNS, CLAWGUARD_PATTERN_COUNT, CREDENTIAL_PATTERNS, DEFAULT_ENTROPY_THRESHOLD_BITS_PER_CHAR, HEX_LOWER, PermissionBudgetError, checkPermissionBudget, checkPermissionEscalation, collapseWhitespace, collectPermissionViolations, decodeBase64Substrings, decodeHomoglyphs, encodeSkillName, isDomainAllowed, isPathAllowed, isPathAllowedWithRealpath, normalizeForScan, resolve, reverseLeet, scan, shannonEntropy, sortVersions, stripZeroWidth };\n\n//# sourceMappingURL=index.js.map","import crypto from 'node:crypto';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nimport { resolve } from '@internals/helpers';\nimport {\n LEGACY_LOCKFILE_FILENAME,\n LEGACY_MANIFEST_FILENAME,\n LOCKFILE_FILENAME,\n LOCKFILE_VERSION,\n MANIFEST_FILENAME,\n type Permissions,\n type SkillsLock\n} from '@internals/schemas';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { extract } from 'tar';\nimport { z } from 'zod';\n\nimport { TankApiClient } from '~/lib/api-client.js';\n\nconst SCOPED_NAME_PATTERN = /^@[a-z0-9-]+\\/[a-z0-9][a-z0-9-]*$/;\n\ninterface VersionInfo {\n version: string;\n integrity: string;\n auditScore: number;\n auditStatus: string;\n publishedAt: string;\n}\n\ninterface VersionMetadata {\n name: string;\n version: string;\n description?: string;\n integrity: string;\n permissions: Permissions;\n auditScore: number;\n auditStatus: string;\n downloadUrl: string;\n publishedAt: string;\n}\n\nfunction textResult(text: string, isError?: boolean) {\n return {\n content: [{ type: 'text' as const, text }],\n ...(isError ? { isError: true } : {})\n };\n}\n\nfunction getSkillDir(projectDir: string, skillName: string): string {\n if (skillName.startsWith('@')) {\n const [scope, name] = skillName.split('/');\n return path.join(projectDir, '.tank', 'skills', scope, name);\n }\n return path.join(projectDir, '.tank', 'skills', skillName);\n}\n\nexport function registerInstallSkillTool(server: McpServer): void {\n server.tool(\n 'install-skill',\n `Install a skill from the Tank registry. Resolves version, downloads tarball, verifies SHA-512 integrity, extracts files, and updates ${MANIFEST_FILENAME} + ${LOCKFILE_FILENAME}.`,\n {\n name: z.string().describe('Skill name in @org/name format'),\n version: z.string().optional().describe('Specific version or semver range (default: latest)'),\n directory: z.string().optional().describe('Project directory (defaults to current working directory)')\n },\n async ({ name, version: versionRange, directory }) => {\n // 1. Validate scoped name\n if (!SCOPED_NAME_PATTERN.test(name)) {\n return textResult(\n `Validation error: Skill name \"${name}\" must use the @org/name format (e.g. @acme/my-skill).`,\n true\n );\n }\n\n const client = new TankApiClient();\n\n // 2. Check authentication\n if (!client.isAuthenticated) {\n return textResult('Not authenticated. Use the \"login\" tool first to authenticate with Tank.', true);\n }\n\n const dir = directory ? path.resolve(directory) : process.cwd();\n const range = versionRange ?? '*';\n\n // 3. Read or create manifest (tank.json, with skills.json fallback)\n let skillsJsonPath = path.join(dir, MANIFEST_FILENAME);\n if (!fs.existsSync(skillsJsonPath) && fs.existsSync(path.join(dir, LEGACY_MANIFEST_FILENAME))) {\n skillsJsonPath = path.join(dir, LEGACY_MANIFEST_FILENAME);\n }\n let skillsJson: Record<string, unknown> = { skills: {} };\n if (fs.existsSync(skillsJsonPath)) {\n try {\n const raw = fs.readFileSync(skillsJsonPath, 'utf-8');\n skillsJson = JSON.parse(raw) as Record<string, unknown>;\n } catch {\n return textResult(`Failed to read or parse ${path.basename(skillsJsonPath)}.`, true);\n }\n } else {\n skillsJsonPath = path.join(dir, MANIFEST_FILENAME);\n skillsJson = { skills: {} };\n fs.mkdirSync(dir, { recursive: true });\n fs.writeFileSync(skillsJsonPath, `${JSON.stringify(skillsJson, null, 2)}\\n`);\n }\n\n // 4. Read existing lockfile (tank.lock, with skills.lock fallback)\n let lockPath = path.join(dir, LOCKFILE_FILENAME);\n if (!fs.existsSync(lockPath) && fs.existsSync(path.join(dir, LEGACY_LOCKFILE_FILENAME))) {\n lockPath = path.join(dir, LEGACY_LOCKFILE_FILENAME);\n }\n let lock: SkillsLock = { lockfileVersion: LOCKFILE_VERSION, skills: {} };\n if (fs.existsSync(lockPath)) {\n try {\n const raw = fs.readFileSync(lockPath, 'utf-8');\n lock = JSON.parse(raw) as SkillsLock;\n } catch {\n lock = { lockfileVersion: LOCKFILE_VERSION, skills: {} };\n }\n }\n\n // 5. Fetch available versions\n const encodedName = encodeURIComponent(name);\n const versionsResult = await client.fetch<{ name: string; versions: VersionInfo[] }>(\n `/api/v1/skills/${encodedName}/versions`\n );\n\n if (!versionsResult.ok) {\n if (versionsResult.status === 401 || versionsResult.status === 403) {\n return textResult('Authentication failed. Use the \"login\" tool to authenticate with Tank.', true);\n }\n if (versionsResult.status === 404) {\n return textResult(`Skill not found: \"${name}\" does not exist in the Tank registry.`, true);\n }\n if (versionsResult.status === 0) {\n return textResult(\n `Cannot reach the Tank registry. Check your network connection and try again.\\nError: ${versionsResult.error}`,\n true\n );\n }\n return textResult(`Failed to fetch versions for ${name}: ${versionsResult.error}`, true);\n }\n\n const availableVersions = versionsResult.data.versions.map((v) => v.version);\n\n // 6. Resolve best version\n const resolved = resolve(range, availableVersions);\n if (!resolved) {\n return textResult(\n `No version of ${name} satisfies range \"${range}\". Available versions: ${availableVersions.join(', ')}`,\n true\n );\n }\n\n // 7. Check if already installed\n const lockKey = `${name}@${resolved}`;\n if (lock.skills[lockKey]) {\n return textResult(`${name}@${resolved} is already installed. No changes needed.`);\n }\n\n // 8. Fetch version metadata\n const metaResult = await client.fetch<VersionMetadata>(`/api/v1/skills/${encodedName}/${resolved}`);\n\n if (!metaResult.ok) {\n if (metaResult.status === 404) {\n return textResult(`Version ${resolved} of ${name} not found in the registry.`, true);\n }\n return textResult(`Failed to fetch metadata for ${name}@${resolved}: ${metaResult.error}`, true);\n }\n\n const metadata = metaResult.data;\n\n // 9. Download tarball\n let tarballBuffer: Buffer;\n try {\n const downloadRes = await fetch(metadata.downloadUrl);\n if (!downloadRes.ok) {\n return textResult(\n `Failed to download tarball for ${name}@${resolved}: ${downloadRes.status} ${downloadRes.statusText}`,\n true\n );\n }\n tarballBuffer = Buffer.from(await downloadRes.arrayBuffer());\n } catch (err) {\n return textResult(\n `Network error downloading tarball for ${name}@${resolved}: ${err instanceof Error ? err.message : String(err)}`,\n true\n );\n }\n\n // 10. Verify SHA-512 integrity\n const hash = crypto.createHash('sha512').update(tarballBuffer).digest('base64');\n const computedIntegrity = `sha512-${hash}`;\n\n if (computedIntegrity !== metadata.integrity) {\n return textResult(\n `Integrity verification failed for ${name}@${resolved}.\\n` +\n `Expected: ${metadata.integrity}\\n` +\n `Got: ${computedIntegrity}\\n\\n` +\n 'The tarball may have been tampered with. No files were extracted.',\n true\n );\n }\n\n // 11. Extract tarball safely\n const extractDir = getSkillDir(dir, name);\n fs.mkdirSync(extractDir, { recursive: true });\n\n try {\n await extractSafely(tarballBuffer, extractDir);\n } catch (err) {\n // Clean up on extraction failure\n fs.rmSync(extractDir, { recursive: true, force: true });\n return textResult(\n `Failed to extract tarball for ${name}@${resolved}: ${err instanceof Error ? err.message : String(err)}`,\n true\n );\n }\n\n // 12. Update skills.json\n const skills = (skillsJson.skills ?? {}) as Record<string, string>;\n skills[name] = range === '*' ? `^${resolved}` : range;\n skillsJson.skills = skills;\n fs.writeFileSync(skillsJsonPath, `${JSON.stringify(skillsJson, null, 2)}\\n`);\n\n // 13. Update skills.lock\n lock.skills[lockKey] = {\n resolved: metadata.downloadUrl,\n integrity: computedIntegrity,\n permissions: metadata.permissions ?? {},\n audit_score: metadata.auditScore ?? null\n };\n\n // Sort keys alphabetically for determinism\n const sortedSkills: Record<string, unknown> = {};\n for (const key of Object.keys(lock.skills).sort()) {\n sortedSkills[key] = lock.skills[key];\n }\n lock.skills = sortedSkills as SkillsLock['skills'];\n\n fs.mkdirSync(path.dirname(lockPath), { recursive: true });\n fs.writeFileSync(lockPath, `${JSON.stringify(lock, null, 2)}\\n`);\n\n // Build response\n const score =\n metadata.auditScore !== null && metadata.auditScore !== undefined\n ? `${metadata.auditScore.toFixed(1)}/10`\n : 'pending';\n\n const lines: string[] = [\n `## Installed ${name}@${resolved}`,\n '',\n `**Integrity:** SHA-512 verified`,\n `**Audit Score:** ${score}`,\n `**Extracted to:** ${extractDir}`,\n '',\n '### Updated files',\n `- ${path.basename(skillsJsonPath)}: added \"${name}\": \"${skills[name]}\"`,\n `- ${path.basename(lockPath)}: added ${lockKey}`\n ];\n\n return textResult(lines.join('\\n'));\n }\n );\n}\n\n/**\n * Extract a tarball safely with security checks.\n * Rejects: absolute paths, path traversal (..), symlinks/hardlinks.\n */\nasync function extractSafely(tarball: Buffer, destDir: string): Promise<void> {\n const tmpTarball = path.join(destDir, '.tmp-tarball.tgz');\n fs.writeFileSync(tmpTarball, tarball);\n\n try {\n await extract({\n file: tmpTarball,\n cwd: destDir,\n filter: (entryPath: string) => {\n if (path.isAbsolute(entryPath)) {\n throw new Error(`Absolute path in tarball: ${entryPath}`);\n }\n if (entryPath.split('/').includes('..') || entryPath.split(path.sep).includes('..')) {\n throw new Error(`Path traversal in tarball: ${entryPath}`);\n }\n return true;\n },\n onReadEntry: (entry) => {\n if (entry.type === 'SymbolicLink' || entry.type === 'Link') {\n throw new Error(`Symlink/hardlink in tarball: ${entry.path}`);\n }\n }\n });\n } finally {\n if (fs.existsSync(tmpTarball)) {\n fs.unlinkSync(tmpTarball);\n }\n }\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\n\nconst SCOPED_NAME_PATTERN = /^@[a-z0-9-]+\\/[a-z0-9][a-z0-9-]*$/;\n\nexport function registerLinkSkillTool(server: McpServer): void {\n server.tool(\n 'link-skill',\n 'Link an installed skill into an agent workspace. Creates a symlink from the workspace .skills directory to the installed skill.',\n {\n name: z.string().describe('Skill name in @org/name format'),\n workspace: z.string().describe('Agent workspace directory path'),\n directory: z\n .string()\n .optional()\n .describe('Project directory where skills are installed (defaults to current working directory)')\n },\n async ({ name, workspace, directory }) => {\n if (!SCOPED_NAME_PATTERN.test(name)) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Validation error: Skill name \"${name}\" must use the @org/name format (e.g. @acme/my-skill).`\n }\n ],\n isError: true\n };\n }\n\n const projectDir = directory ? path.resolve(directory) : process.cwd();\n const workspaceDir = path.resolve(workspace);\n\n if (!fs.existsSync(workspaceDir)) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Error: Workspace directory does not exist: ${workspaceDir}`\n }\n ],\n isError: true\n };\n }\n\n const skillDir = getSkillDir(projectDir, name);\n if (!fs.existsSync(skillDir)) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Skill \"${name}\" is not installed. Install it first with \"install-skill\" before linking.`\n }\n ],\n isError: true\n };\n }\n\n const [scope, skillName] = name.split('/');\n const skillsLinkDir = path.join(workspaceDir, '.skills', scope);\n const symlinkPath = path.join(skillsLinkDir, skillName);\n\n try {\n const stats = fs.lstatSync(symlinkPath);\n if (stats.isSymbolicLink()) {\n const currentTarget = fs.readlinkSync(symlinkPath);\n const resolvedTarget = path.isAbsolute(currentTarget)\n ? currentTarget\n : path.resolve(path.dirname(symlinkPath), currentTarget);\n\n if (path.resolve(resolvedTarget) === path.resolve(skillDir)) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Skill \"${name}\" is already linked in ${workspaceDir}.`\n }\n ]\n };\n }\n\n fs.unlinkSync(symlinkPath);\n }\n } catch {\n // intentionally empty\n }\n\n fs.mkdirSync(skillsLinkDir, { recursive: true });\n fs.symlinkSync(skillDir, symlinkPath, 'dir');\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `Successfully linked \"${name}\" into ${workspaceDir}.\\nSymlink: ${symlinkPath} → ${skillDir}`\n }\n ]\n };\n }\n );\n}\n\nfunction getSkillDir(projectDir: string, skillName: string): string {\n if (skillName.startsWith('@')) {\n const [scope, name] = skillName.split('/');\n return path.join(projectDir, '.tank', 'skills', scope, name);\n }\n return path.join(projectDir, '.tank', 'skills', skillName);\n}\n","import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\n\nimport { TankApiClient } from '~/lib/api-client.js';\nimport { getConfig, setConfig } from '~/lib/config.js';\n\nconst DEFAULT_POLL_INTERVAL_MS = 2000;\nconst DEFAULT_TIMEOUT_MS = 5 * 60 * 1000; // 5 minutes\n\nexport function registerLoginTool(server: McpServer): void {\n server.tool(\n 'login',\n 'Authenticate with Tank using GitHub OAuth device flow. Opens browser for authorization.',\n {\n timeout: z.number().optional().describe('Timeout in milliseconds (default: 300000 = 5 minutes)')\n },\n async ({ timeout = DEFAULT_TIMEOUT_MS }) => {\n const client = new TankApiClient();\n const config = getConfig();\n\n // Check if already logged in with valid token\n if (config.token) {\n const authCheck = await client.verifyAuth();\n if (authCheck.valid) {\n const displayName = authCheck.user?.name ?? authCheck.user?.email ?? 'unknown user';\n return {\n content: [\n {\n type: 'text' as const,\n text: `Already logged in as ${displayName}.\\n\\nTo log out, delete ~/.tank/config.json or use the CLI: tank logout`\n }\n ]\n };\n }\n }\n\n // Start device flow\n const state = crypto.randomUUID();\n const startRes = await fetch(`${config.registry}/api/v1/cli-auth/start`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ state })\n });\n\n if (!startRes.ok) {\n const body = await startRes.json().catch(() => ({}));\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to start login flow: ${(body as { error?: string }).error ?? startRes.statusText}`\n }\n ]\n };\n }\n\n const { sessionCode } = (await startRes.json()) as {\n sessionCode: string;\n };\n\n // Return auth URL and poll for completion\n const deadline = Date.now() + timeout;\n const _authorized = false;\n let lastStatus = '';\n\n while (Date.now() < deadline) {\n try {\n const exchangeRes = await fetch(`${config.registry}/api/v1/cli-auth/exchange`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ sessionCode, state })\n });\n\n if (exchangeRes.ok) {\n const { token, user } = (await exchangeRes.json()) as {\n token: string;\n user: { name: string | null; email: string | null };\n };\n\n // Save token to config\n setConfig({ token, user: user as { name: string; email: string } });\n\n const displayName = user.name ?? user.email ?? 'unknown user';\n return {\n content: [\n {\n type: 'text' as const,\n text: `Successfully logged in as ${displayName}!\\n\\nYou can now use all Tank MCP tools: scan-skill, publish-skill, etc.`\n }\n ]\n };\n }\n\n // 400 means not yet authorized - keep polling\n if (exchangeRes.status !== 400) {\n const body = await exchangeRes.json().catch(() => ({}));\n return {\n content: [\n {\n type: 'text' as const,\n text: `Login failed: ${(body as { error?: string }).error ?? exchangeRes.statusText}`\n }\n ]\n };\n }\n\n // Check status and provide updates\n const newStatus = 'Waiting for authorization...';\n if (newStatus !== lastStatus) {\n lastStatus = newStatus;\n }\n } catch {\n // Network errors during polling are transient\n }\n\n await new Promise((resolve) => setTimeout(resolve, DEFAULT_POLL_INTERVAL_MS));\n }\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `Login timed out. The authorization link may have expired.\\n\\nTry again: tank login`\n }\n ]\n };\n }\n );\n}\n","import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\n\nimport { getConfig, setConfig } from '~/lib/config.js';\n\nexport function registerLogoutTool(server: McpServer): void {\n server.tool('logout', 'Log out of Tank by clearing local credentials.', {}, async () => {\n const config = getConfig();\n\n if (!config.token) {\n return {\n content: [{ type: 'text' as const, text: 'Not logged in. No credentials to clear.' }]\n };\n }\n\n setConfig({ token: undefined, user: undefined });\n\n // Also clear env-based token so subsequent tool calls in this\n // process don't re-read it via getConfig().\n delete process.env.TANK_TOKEN;\n\n return {\n content: [{ type: 'text' as const, text: 'Successfully logged out.' }]\n };\n });\n}\n","import crypto from 'node:crypto';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport type { Readable } from 'node:stream';\n\nimport { LEGACY_MANIFEST_FILENAME, MANIFEST_FILENAME, skillsJsonSchema } from '@internals/schemas';\nimport ignore from 'ignore';\nimport { create } from 'tar';\n\n// Limits\nconst MAX_PACKAGE_SIZE = 50 * 1024 * 1024; // 50MB\nconst MAX_FILE_COUNT = 1000;\n\n// Default ignore patterns\nconst DEFAULT_IGNORES = ['node_modules', '.git', '.env*', '*.log', '.tank', '.DS_Store'];\n\n// Always ignored regardless of ignore file contents\nconst ALWAYS_IGNORED = ['node_modules', '.git'];\n\n// Ignore file names (not packed into tarball)\nconst IGNORE_FILES = ['.tankignore', '.gitignore'];\n\nexport interface PackResult {\n tarball: Buffer;\n integrity: string; // \"sha512-{base64}\"\n fileCount: number;\n totalSize: number;\n readme: string;\n files: string[];\n manifest: Record<string, unknown>;\n}\n\n/**\n * Pack a skill directory into a .tgz tarball with integrity hashing.\n */\nexport async function pack(directory: string): Promise<PackResult> {\n const absDir = path.resolve(directory);\n\n // 1. Verify directory exists\n if (!fs.existsSync(absDir)) {\n throw new Error(`Directory does not exist: ${absDir}`);\n }\n\n const stat = fs.statSync(absDir);\n if (!stat.isDirectory()) {\n throw new Error(`Not a directory: ${absDir}`);\n }\n\n // 2. Verify manifest (tank.json or skills.json) exists and is valid\n let manifestPath = path.join(absDir, MANIFEST_FILENAME);\n let manifestFilename = MANIFEST_FILENAME;\n if (!fs.existsSync(manifestPath)) {\n manifestPath = path.join(absDir, LEGACY_MANIFEST_FILENAME);\n manifestFilename = LEGACY_MANIFEST_FILENAME;\n }\n if (!fs.existsSync(manifestPath)) {\n throw new Error(`Missing required file: ${MANIFEST_FILENAME}`);\n }\n\n let skillsJsonContent: string;\n try {\n skillsJsonContent = fs.readFileSync(manifestPath, 'utf-8');\n } catch {\n throw new Error(`Failed to read ${manifestFilename}`);\n }\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(skillsJsonContent);\n } catch {\n throw new Error(`Invalid ${manifestFilename}: not valid JSON`);\n }\n\n const validation = skillsJsonSchema.safeParse(parsed);\n if (!validation.success) {\n const issues = validation.error.issues.map((i) => ` - ${i.path.join('.')}: ${i.message}`).join('\\n');\n throw new Error(`Invalid ${manifestFilename}:\\n${issues}`);\n }\n\n // 3. Verify SKILL.md exists and read its content\n const skillMdPath = path.join(absDir, 'SKILL.md');\n if (!fs.existsSync(skillMdPath)) {\n throw new Error('Missing required file: SKILL.md');\n }\n\n let readmeContent: string;\n try {\n readmeContent = fs.readFileSync(skillMdPath, 'utf-8');\n } catch {\n throw new Error('Failed to read SKILL.md');\n }\n\n // 4. Build ignore filter\n const ig = buildIgnoreFilter(absDir);\n\n // 5. Collect files with validation\n const files = collectFiles(absDir, absDir, ig);\n\n // 6. Enforce file count limit\n if (files.length > MAX_FILE_COUNT) {\n throw new Error(`Too many files: ${files.length} exceeds maximum of ${MAX_FILE_COUNT}`);\n }\n\n // 7. Calculate total size of source files\n let totalSize = 0;\n for (const file of files) {\n const filePath = path.join(absDir, file);\n const fileStat = fs.statSync(filePath);\n totalSize += fileStat.size;\n }\n\n // 8. Create tarball\n const tarball = await createTarball(absDir, files);\n\n // 9. Enforce tarball size limit\n if (tarball.length > MAX_PACKAGE_SIZE) {\n throw new Error(`Tarball too large: ${tarball.length} bytes exceeds maximum of ${MAX_PACKAGE_SIZE} bytes (50MB)`);\n }\n\n // 10. Compute integrity hash\n const hash = crypto.createHash('sha512').update(tarball).digest('base64');\n const integrity = `sha512-${hash}`;\n\n return {\n tarball,\n integrity,\n fileCount: files.length,\n totalSize,\n readme: readmeContent,\n files,\n manifest: validation.data as Record<string, unknown>\n };\n}\n\n/**\n * Pack a directory into a .tgz tarball for security scanning.\n *\n * Unlike pack(), this function does NOT require skills.json or SKILL.md.\n * It applies the same security checks (no symlinks, no path traversal, etc.)\n * and returns the same PackResult interface with a synthesised manifest.\n *\n * Validates:\n * - Directory exists\n * - No symlinks or hardlinks\n * - No path traversal (.. components)\n * - No absolute paths\n * - File count <= 1000\n * - Tarball size <= 50MB\n *\n * Does NOT validate:\n * - skills.json existence or validity\n * - SKILL.md existence (but reads it if present)\n */\nexport async function packForScan(directory: string): Promise<PackResult> {\n const absDir = path.resolve(directory);\n\n // 1. Verify directory exists\n if (!fs.existsSync(absDir)) {\n throw new Error(`Directory does not exist: ${absDir}`);\n }\n\n const stat = fs.statSync(absDir);\n if (!stat.isDirectory()) {\n throw new Error(`Not a directory: ${absDir}`);\n }\n\n // 2. Try to read SKILL.md if it exists (optional for scan)\n let readmeContent = '';\n const skillMdPath = path.join(absDir, 'SKILL.md');\n if (fs.existsSync(skillMdPath)) {\n try {\n readmeContent = fs.readFileSync(skillMdPath, 'utf-8');\n } catch {\n readmeContent = '';\n }\n }\n\n // 3. Build ignore filter\n const ig = buildIgnoreFilter(absDir);\n\n // 4. Collect files with validation\n const files = collectFiles(absDir, absDir, ig);\n\n // 5. Enforce file count limit\n if (files.length > MAX_FILE_COUNT) {\n throw new Error(`Too many files: ${files.length} exceeds maximum of ${MAX_FILE_COUNT}`);\n }\n\n // 6. Check for empty directory (no files to scan)\n if (files.length === 0) {\n throw new Error('No files to scan: directory is empty or all files are ignored');\n }\n\n // 7. Calculate total size of source files\n let totalSize = 0;\n for (const file of files) {\n const filePath = path.join(absDir, file);\n const fileStat = fs.statSync(filePath);\n totalSize += fileStat.size;\n }\n\n // 8. Create tarball\n const tarball = await createTarball(absDir, files);\n\n // 9. Enforce tarball size limit\n if (tarball.length > MAX_PACKAGE_SIZE) {\n throw new Error(`Tarball too large: ${tarball.length} bytes exceeds maximum of ${MAX_PACKAGE_SIZE} bytes (50MB)`);\n }\n\n // 10. Compute integrity hash\n const hash = crypto.createHash('sha512').update(tarball).digest('base64');\n const integrity = `sha512-${hash}`;\n\n // 11. Synthesise a minimal manifest\n const dirName = path.basename(absDir);\n const manifest: Record<string, unknown> = {\n name: dirName,\n version: '0.0.0',\n description: 'Local scan'\n };\n\n return {\n tarball,\n integrity,\n fileCount: files.length,\n totalSize,\n readme: readmeContent,\n files,\n manifest\n };\n}\n\n/**\n * Build an ignore filter from .tankignore, .gitignore, or defaults.\n */\nfunction buildIgnoreFilter(dir: string): ReturnType<typeof ignore> {\n const ig = ignore();\n\n ig.add(ALWAYS_IGNORED);\n\n const tankIgnorePath = path.join(dir, '.tankignore');\n const gitIgnorePath = path.join(dir, '.gitignore');\n\n if (fs.existsSync(tankIgnorePath)) {\n const content = fs.readFileSync(tankIgnorePath, 'utf-8');\n ig.add(content);\n ig.add(IGNORE_FILES);\n } else if (fs.existsSync(gitIgnorePath)) {\n const content = fs.readFileSync(gitIgnorePath, 'utf-8');\n ig.add(content);\n ig.add(IGNORE_FILES);\n } else {\n ig.add(DEFAULT_IGNORES);\n }\n\n return ig;\n}\n\n/**\n * Recursively collect files from a directory.\n */\nfunction collectFiles(baseDir: string, currentDir: string, ig: ReturnType<typeof ignore>): string[] {\n const files: string[] = [];\n const entries = fs.readdirSync(currentDir, { withFileTypes: true });\n\n for (const entry of entries) {\n const fullPath = path.join(currentDir, entry.name);\n const relativePath = path.relative(baseDir, fullPath);\n\n // Security: check for path traversal\n if (relativePath.split(path.sep).includes('..')) {\n throw new Error(`Path traversal detected: \"${relativePath}\" contains \"..\" component`);\n }\n\n // Security: check for absolute paths\n if (path.isAbsolute(relativePath)) {\n throw new Error(`Absolute path detected: \"${relativePath}\"`);\n }\n\n // Security: check for symlinks\n const lstatResult = fs.lstatSync(fullPath);\n if (lstatResult.isSymbolicLink()) {\n throw new Error(`Symlink detected: \"${relativePath}\" — symlinks are not allowed`);\n }\n\n const pathForIgnore = lstatResult.isDirectory() ? `${relativePath}/` : relativePath;\n\n if (ig.ignores(pathForIgnore)) {\n continue;\n }\n\n if (lstatResult.isDirectory()) {\n const subFiles = collectFiles(baseDir, fullPath, ig);\n files.push(...subFiles);\n } else if (lstatResult.isFile()) {\n files.push(relativePath);\n }\n }\n\n return files;\n}\n\n/**\n * Create a gzipped tarball from the given files.\n */\nasync function createTarball(cwd: string, files: string[]): Promise<Buffer> {\n return new Promise<Buffer>((resolve, reject) => {\n const chunks: Buffer[] = [];\n\n const stream = create(\n {\n gzip: true,\n cwd,\n portable: true\n },\n files\n ) as unknown as Readable;\n\n stream.on('data', (chunk: Buffer) => {\n chunks.push(chunk);\n });\n\n stream.on('end', () => {\n resolve(Buffer.concat(chunks));\n });\n\n stream.on('error', (err: Error) => {\n reject(err);\n });\n });\n}\n","import path from 'node:path';\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\n\nimport { TankApiClient } from '~/lib/api-client.js';\nimport { type PackResult, pack } from '~/lib/packer.js';\n\ninterface PublishStartResponse {\n uploadUrl: string;\n skillId: string;\n versionId: string;\n}\n\ninterface PublishConfirmResponse {\n success: boolean;\n name: string;\n version: string;\n auditScore: number | null;\n scanVerdict: string | null;\n}\n\nexport function registerPublishSkillTool(server: McpServer): void {\n server.tool(\n 'publish-skill',\n 'Publish a skill to the Tank registry. Requires authentication.',\n {\n directory: z.string().optional().describe('Directory to publish (default: current directory)'),\n visibility: z.enum(['public', 'private']).optional().default('public').describe('Package visibility'),\n dryRun: z.boolean().optional().default(false).describe('Validate without publishing')\n },\n async ({ directory = '.', visibility = 'public', dryRun = false }) => {\n const absDir = path.resolve(directory);\n const client = new TankApiClient();\n\n // Check auth (skip for dry run)\n if (!dryRun && !client.isAuthenticated) {\n return {\n content: [\n {\n type: 'text' as const,\n text: 'You need to log in first. Use the login tool to authenticate with Tank.\\n\\nExample: \"Log in to Tank\"'\n }\n ]\n };\n }\n\n if (!dryRun) {\n const authCheck = await client.verifyAuth();\n if (!authCheck.valid) {\n return {\n content: [\n {\n type: 'text' as const,\n text: 'Your session has expired. Use the login tool to authenticate again.'\n }\n ]\n };\n }\n }\n\n // Pack the skill\n let packResult: PackResult;\n try {\n packResult = await pack(absDir);\n } catch (err) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to pack skill: ${err instanceof Error ? err.message : String(err)}`\n }\n ]\n };\n }\n\n const manifest = packResult.manifest as { name?: string; version?: string; description?: string };\n const skillName = manifest.name ?? 'unknown';\n const skillVersion = manifest.version ?? '0.0.0';\n\n // Dry run: just validate and return summary\n if (dryRun) {\n const lines: string[] = [\n `## Dry Run for ${skillName}@${skillVersion}`,\n '',\n '**Validation:** ✅ PASSED',\n '',\n '### Package Summary',\n `- **Name:** ${skillName}`,\n `- **Version:** ${skillVersion}`,\n `- **Visibility:** ${visibility}`,\n `- **Files:** ${packResult.fileCount}`,\n `- **Size:** ${(packResult.totalSize / 1024).toFixed(1)}KB compressed`,\n `- **Integrity:** ${packResult.integrity.slice(0, 20)}...`,\n '',\n '### Manifest',\n `- **Description:** ${manifest.description ?? 'No description'}`,\n `- **Permissions:** ${JSON.stringify((manifest as Record<string, unknown>).permissions ?? {})}`,\n '',\n '### Files',\n ...packResult.files.slice(0, 10).map((f) => ` - ${f}`),\n packResult.files.length > 10 ? ` ... and ${packResult.files.length - 10} more` : '',\n '',\n 'Ready to publish. Say \"publish my skill\" when you\\'re ready.'\n ];\n\n return {\n content: [{ type: 'text' as const, text: lines.join('\\n') }]\n };\n }\n\n // Step 1: Start publish flow\n const startResult = await client.fetch<PublishStartResponse>('/api/v1/skills', {\n method: 'POST',\n body: JSON.stringify({\n manifest: { ...manifest, visibility },\n readme: packResult.readme,\n files: packResult.files\n })\n });\n\n if (!startResult.ok) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to start publish: ${startResult.error}`\n }\n ]\n };\n }\n\n const { uploadUrl, versionId } = startResult.data;\n\n // Step 2: Upload tarball\n const uploadRes = await fetch(uploadUrl, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/gzip'\n },\n body: new Uint8Array(packResult.tarball)\n });\n\n if (!uploadRes.ok) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to upload tarball: ${uploadRes.statusText}`\n }\n ]\n };\n }\n\n // Step 3: Confirm upload\n const confirmResult = await client.fetch<PublishConfirmResponse>('/api/v1/skills/confirm', {\n method: 'POST',\n body: JSON.stringify({\n versionId,\n integrity: packResult.integrity,\n fileCount: packResult.fileCount,\n tarballSize: packResult.tarball.length,\n readme: packResult.readme\n })\n });\n\n if (!confirmResult.ok) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to confirm publish: ${confirmResult.error}`\n }\n ]\n };\n }\n\n const confirm = confirmResult.data;\n const score = confirm.auditScore !== null ? `${confirm.auditScore.toFixed(1)}/10` : 'pending';\n\n const lines: string[] = [\n `## Published ${confirm.name}@${confirm.version}`,\n '',\n `**Status:** ✅ Successfully published`,\n `**Visibility:** ${visibility}`,\n `**Audit Score:** ${score}`,\n `**Scan Verdict:** ${confirm.scanVerdict ?? 'pending'}`,\n '',\n '### Package Details',\n `- **Files:** ${packResult.fileCount}`,\n `- **Size:** ${(packResult.totalSize / 1024).toFixed(1)}KB`,\n '',\n `View your skill: https://tankpkg.dev/skills/${confirm.name}`\n ];\n\n return {\n content: [{ type: 'text' as const, text: lines.join('\\n') }]\n };\n }\n );\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\n\nimport {\n LEGACY_LOCKFILE_FILENAME,\n LEGACY_MANIFEST_FILENAME,\n LOCKFILE_FILENAME,\n MANIFEST_FILENAME,\n type SkillsLock\n} from '@internals/schemas';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\n\nconst SCOPED_NAME_PATTERN = /^@[a-z0-9-]+\\/[a-z0-9][a-z0-9-]*$/;\n\nexport function registerRemoveSkillTool(server: McpServer): void {\n server.tool(\n 'remove-skill',\n `Remove an installed skill from the project. Removes from ${MANIFEST_FILENAME}, ${LOCKFILE_FILENAME}, and deletes skill files.`,\n {\n name: z.string().describe('Skill name in @org/name format'),\n directory: z.string().optional().describe('Project directory (defaults to current working directory)')\n },\n async ({ name, directory }) => {\n if (!SCOPED_NAME_PATTERN.test(name)) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Validation error: Skill name \"${name}\" must use the @org/name format (e.g. @acme/my-skill).`\n }\n ],\n isError: true\n };\n }\n\n const dir = directory ? path.resolve(directory) : process.cwd();\n const results: string[] = [];\n let skillFoundAnywhere = false;\n\n // Find manifest (tank.json or skills.json)\n let skillsJsonPath = path.join(dir, MANIFEST_FILENAME);\n if (!fs.existsSync(skillsJsonPath)) {\n skillsJsonPath = path.join(dir, LEGACY_MANIFEST_FILENAME);\n }\n if (fs.existsSync(skillsJsonPath)) {\n try {\n const raw = fs.readFileSync(skillsJsonPath, 'utf-8');\n const skillsJson = JSON.parse(raw) as Record<string, unknown>;\n const skills = (skillsJson.skills ?? {}) as Record<string, string>;\n\n if (name in skills) {\n skillFoundAnywhere = true;\n delete skills[name];\n skillsJson.skills = skills;\n fs.writeFileSync(skillsJsonPath, `${JSON.stringify(skillsJson, null, 2)}\\n`);\n results.push(`Removed \"${name}\" from ${path.basename(skillsJsonPath)}`);\n }\n } catch {\n results.push(`Warning: Failed to read or parse ${path.basename(skillsJsonPath)}`);\n }\n }\n\n // Find lockfile (tank.lock or skills.lock)\n let lockPath = path.join(dir, LOCKFILE_FILENAME);\n if (!fs.existsSync(lockPath)) {\n lockPath = path.join(dir, LEGACY_LOCKFILE_FILENAME);\n }\n if (fs.existsSync(lockPath)) {\n try {\n const raw = fs.readFileSync(lockPath, 'utf-8');\n const lock = JSON.parse(raw) as SkillsLock;\n let removedFromLock = false;\n\n for (const key of Object.keys(lock.skills)) {\n const lastAt = key.lastIndexOf('@');\n if (lastAt <= 0) continue;\n const keyName = key.slice(0, lastAt);\n if (keyName === name) {\n delete lock.skills[key];\n removedFromLock = true;\n skillFoundAnywhere = true;\n }\n }\n\n if (removedFromLock) {\n const sortedSkills: Record<string, unknown> = {};\n for (const key of Object.keys(lock.skills).sort()) {\n sortedSkills[key] = lock.skills[key];\n }\n lock.skills = sortedSkills as SkillsLock['skills'];\n fs.writeFileSync(lockPath, `${JSON.stringify(lock, null, 2)}\\n`);\n results.push(`Removed \"${name}\" from ${path.basename(lockPath)}`);\n }\n } catch {\n results.push(`Warning: Failed to read or parse ${path.basename(lockPath)}`);\n }\n }\n\n const skillDir = getSkillDir(dir, name);\n if (fs.existsSync(skillDir)) {\n skillFoundAnywhere = true;\n fs.rmSync(skillDir, { recursive: true, force: true });\n results.push(`Deleted skill files from ${skillDir}`);\n } else {\n results.push(`Skill files were already absent from ${skillDir}`);\n }\n\n const symlinkName = name.replace(/\\//g, '__');\n const agentSkillDir = path.join(dir, '.tank', 'agent-skills', symlinkName);\n if (fs.existsSync(agentSkillDir)) {\n fs.rmSync(agentSkillDir, { recursive: true, force: true });\n results.push('Removed symlink from agent workspace');\n }\n\n if (!skillFoundAnywhere) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Skill \"${name}\" is not installed. It was not found in ${MANIFEST_FILENAME}, ${LOCKFILE_FILENAME}, or .tank/skills/.`\n }\n ],\n isError: true\n };\n }\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `Successfully removed ${name}.\\n${results.join('\\n')}`\n }\n ]\n };\n }\n );\n}\n\nfunction getSkillDir(projectDir: string, skillName: string): string {\n if (skillName.startsWith('@')) {\n const [scope, name] = skillName.split('/');\n return path.join(projectDir, '.tank', 'skills', scope, name);\n }\n return path.join(projectDir, '.tank', 'skills', skillName);\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { LEGACY_MANIFEST_FILENAME, MANIFEST_FILENAME } from '@internals/schemas';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\n\nimport { TankApiClient } from '~/lib/api-client.js';\nimport { getConfig } from '~/lib/config.js';\nimport { pack, packForScan } from '~/lib/packer.js';\n\ninterface ScanFinding {\n stage: string;\n severity: 'critical' | 'high' | 'medium' | 'low';\n type: string;\n description: string;\n location: string | null;\n confidence: number | null;\n tool: string | null;\n evidence: string | null;\n}\n\ninterface LLMAnalysis {\n enabled: boolean;\n mode: 'byollm' | 'builtin' | 'disabled';\n provider_used?: string;\n findings_reviewed?: number;\n findings_dismissed?: number;\n findings_confirmed?: number;\n findings_uncertain?: number;\n latency_ms?: number;\n error?: string;\n}\n\ninterface ScanResponse {\n scan_id: string | null;\n verdict: 'pass' | 'pass_with_notes' | 'flagged' | 'fail';\n audit_score: number;\n findings: ScanFinding[];\n stage_results: Array<{\n stage: string;\n status: string;\n findings: ScanFinding[];\n duration_ms: number;\n }>;\n llm_analysis?: LLMAnalysis;\n duration_ms: number;\n}\n\nexport function registerScanSkillTool(server: McpServer): void {\n server.tool(\n 'scan-skill',\n 'Scan a skill directory for security issues. Requires authentication.',\n {\n directory: z.string().optional().describe('Directory to scan (default: current directory)')\n },\n async ({ directory = '.' }) => {\n const absDir = path.resolve(directory);\n const client = new TankApiClient();\n\n // Check auth, guide user to login if not authenticated\n if (!client.isAuthenticated) {\n return {\n content: [\n {\n type: 'text' as const,\n text: 'You need to log in first. Use the login tool to authenticate with Tank.\\n\\nExample: \"Log in to Tank\"'\n }\n ]\n };\n }\n\n // Verify auth is still valid\n const authCheck = await client.verifyAuth();\n if (!authCheck.valid) {\n return {\n content: [\n {\n type: 'text' as const,\n text: 'Your session has expired. Use the login tool to authenticate again.\\n\\nExample: \"Log in to Tank\"'\n }\n ]\n };\n }\n\n let packResult: Awaited<ReturnType<typeof pack>>;\n let usedSynthesisedManifest = false;\n\n const hasManifest =\n fs.existsSync(path.join(absDir, MANIFEST_FILENAME)) ||\n fs.existsSync(path.join(absDir, LEGACY_MANIFEST_FILENAME));\n\n if (hasManifest) {\n try {\n packResult = await pack(absDir);\n } catch (err) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to pack skill: ${err instanceof Error ? err.message : String(err)}`\n }\n ]\n };\n }\n } else {\n try {\n packResult = await packForScan(absDir);\n usedSynthesisedManifest = true;\n } catch (err) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to pack directory for scan: ${err instanceof Error ? err.message : String(err)}`\n }\n ]\n };\n }\n }\n\n const manifest = packResult.manifest as { name?: string; version?: string };\n const skillName = manifest.name ?? 'unknown';\n const skillVersion = manifest.version ?? '0.0.0';\n\n // Upload tarball and trigger scan\n const formData = new FormData();\n const blob = new Blob([new Uint8Array(packResult.tarball)], { type: 'application/gzip' });\n formData.append('tarball', blob, `${skillName}-${skillVersion}.tgz`);\n formData.append('manifest', JSON.stringify(manifest));\n\n const config = getConfig();\n const scanRes = await fetch(`${config.registry}/api/v1/scan`, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${client.token}`\n },\n body: formData\n });\n\n if (!scanRes.ok) {\n const body = await scanRes.json().catch(() => ({}));\n return {\n content: [\n {\n type: 'text' as const,\n text: `Scan failed: ${(body as { error?: string }).error ?? scanRes.statusText}`\n }\n ]\n };\n }\n\n const scanResult = (await scanRes.json()) as ScanResponse;\n\n // Format report\n const verdictEmoji: Record<string, string> = {\n pass: '✅',\n pass_with_notes: '⚠️',\n flagged: '🚩',\n fail: '❌'\n };\n\n const severityEmoji: Record<string, string> = {\n critical: '🔴',\n high: '🟠',\n medium: '🟡',\n low: '🟢'\n };\n\n const lines: string[] = [`## Scan Results for ${skillName}@${skillVersion}`, ''];\n\n if (usedSynthesisedManifest) {\n lines.push(`> **Note:** No \\`${MANIFEST_FILENAME}\\` found. A synthesised manifest was used for scanning.`);\n lines.push('');\n }\n\n const auditScore = scanResult.audit_score ?? 0;\n const durationMs = scanResult.duration_ms ?? 0;\n\n lines.push(\n `**Verdict:** ${verdictEmoji[scanResult.verdict] ?? ''} ${scanResult.verdict.toUpperCase()}`,\n `**Score:** ${auditScore.toFixed(1)}/10`,\n `**Duration:** ${(durationMs / 1000).toFixed(1)}s`,\n `**Files:** ${packResult.fileCount} (${(packResult.totalSize / 1024).toFixed(1)}KB)`,\n ''\n );\n\n if (scanResult.findings.length > 0) {\n lines.push(`### Findings (${scanResult.findings.length})`);\n lines.push('');\n\n // Group by severity\n const bySeverity: Record<string, ScanFinding[]> = {\n critical: [],\n high: [],\n medium: [],\n low: []\n };\n for (const f of scanResult.findings) {\n bySeverity[f.severity].push(f);\n }\n\n for (const severity of ['critical', 'high', 'medium', 'low'] as const) {\n const findings = bySeverity[severity];\n if (findings.length === 0) continue;\n\n lines.push(`#### ${severityEmoji[severity]} ${severity.toUpperCase()} (${findings.length})`);\n for (const f of findings) {\n lines.push(`- **${f.type}**: ${f.description}`);\n if (f.location) lines.push(` - Location: ${f.location}`);\n }\n lines.push('');\n }\n } else {\n lines.push('No findings. Your skill looks secure!');\n lines.push('');\n }\n\n // Stages run\n if (scanResult.stage_results?.length > 0) {\n lines.push('### Scan Stages');\n lines.push('');\n for (const stage of scanResult.stage_results) {\n const status = stage.status === 'passed' ? '✓' : '✗';\n lines.push(`- ${status} ${stage.stage} (${stage.duration_ms}ms)`);\n }\n lines.push('');\n }\n\n // LLM Analysis\n if (scanResult.llm_analysis?.enabled) {\n const llm = scanResult.llm_analysis;\n lines.push('### LLM Analysis');\n lines.push('');\n lines.push(`**Mode:** ${llm.mode}`);\n if (llm.provider_used) {\n lines.push(`**Provider:** ${llm.provider_used}`);\n }\n if (llm.findings_reviewed !== undefined && llm.findings_reviewed > 0) {\n lines.push(`**Findings Reviewed:** ${llm.findings_reviewed}`);\n }\n if (llm.findings_dismissed !== undefined && llm.findings_dismissed > 0) {\n lines.push(`**False Positives Dismissed:** ${llm.findings_dismissed}`);\n }\n if (llm.findings_confirmed !== undefined && llm.findings_confirmed > 0) {\n lines.push(`**Threats Confirmed:** ${llm.findings_confirmed}`);\n }\n if (llm.findings_uncertain !== undefined && llm.findings_uncertain > 0) {\n lines.push(`**Uncertain:** ${llm.findings_uncertain}`);\n }\n if (llm.latency_ms) {\n lines.push(`**Latency:** ${llm.latency_ms}ms`);\n }\n if (llm.error) {\n lines.push(`**Error:** ${llm.error}`);\n }\n lines.push('');\n }\n\n if (scanResult.scan_id) {\n lines.push(`View full report: https://tankpkg.dev/scans/${scanResult.scan_id}`);\n }\n\n return {\n content: [{ type: 'text' as const, text: lines.join('\\n') }]\n };\n }\n );\n}\n","import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\n\nimport { TankApiClient } from '~/lib/api-client.js';\n\ninterface SearchResult {\n name: string;\n latestVersion?: string | null;\n description: string | null;\n auditScore?: number | null;\n downloads: number;\n publisher: string;\n}\n\ninterface SearchResponse {\n results: SearchResult[];\n total: number;\n}\n\nexport function registerSearchSkillsTool(server: McpServer): void {\n const client = new TankApiClient();\n\n server.tool(\n 'search-skills',\n 'Search the Tank registry for AI agent skills',\n {\n query: z.string().min(1).describe('Search query (skill name or keywords)'),\n limit: z.number().min(1).max(50).optional().default(10).describe('Maximum results to return')\n },\n async ({ query, limit }) => {\n const result = await client.fetch<SearchResponse>(`/api/v1/search?q=${encodeURIComponent(query)}&limit=${limit}`);\n\n if (!result.ok) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Search failed: ${result.error}`\n }\n ]\n };\n }\n\n const { results, total } = result.data;\n\n if (results.length === 0) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `No skills found matching \"${query}\". Try different keywords or browse the registry at https://tankpkg.dev`\n }\n ]\n };\n }\n\n // Format as markdown table\n const header = '| Skill | Score | Downloads | Description |\\n|-------|-------|-----------|-------------|';\n const rows = results.map((skill) => {\n const score =\n typeof skill.auditScore === 'number' && Number.isFinite(skill.auditScore) ? skill.auditScore.toFixed(1) : '-';\n const downloads =\n skill.downloads > 1000 ? `${(skill.downloads / 1000).toFixed(1)}k` : skill.downloads.toString();\n const desc = skill.description?.slice(0, 50) ?? 'No description';\n return `| ${skill.name} | ${score} | ${downloads} | ${desc} |`;\n });\n\n const text = [\n `Found ${total} skill${total !== 1 ? 's' : ''} matching \"${query}\":`,\n '',\n header,\n ...rows,\n '',\n `View full results: https://tankpkg.dev/search?q=${encodeURIComponent(query)}`\n ].join('\\n');\n\n return {\n content: [{ type: 'text' as const, text }]\n };\n }\n );\n}\n","import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\n\nimport { TankApiClient } from '~/lib/api-client.js';\n\ninterface SkillVersion {\n version: string;\n integrity: string;\n auditScore: number | null;\n auditStatus: string;\n publishedAt: string;\n tarballSize: number;\n fileCount: number;\n}\n\ninterface SkillInfoResponse {\n name: string;\n description: string | null;\n publisher: string;\n latestVersion: string;\n auditScore: number | null;\n auditStatus: string;\n downloads: number;\n permissions: Record<string, unknown> | null;\n versions: SkillVersion[];\n readme: string | null;\n}\n\nexport function registerSkillInfoTool(server: McpServer): void {\n const client = new TankApiClient();\n\n server.tool(\n 'skill-info',\n 'Get detailed information about a specific skill from the Tank registry',\n {\n name: z.string().describe('Skill name (e.g., @org/skill-name or skill-name)')\n },\n async ({ name }) => {\n const result = await client.fetch<SkillInfoResponse>(`/api/v1/skills/${encodeURIComponent(name)}`);\n\n if (!result.ok) {\n if (result.status === 404) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Skill \"${name}\" not found. Search for skills: https://tankpkg.dev/search`\n }\n ]\n };\n }\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to get skill info: ${result.error}`\n }\n ]\n };\n }\n\n const skill = result.data;\n const score = skill.auditScore !== null ? `${skill.auditScore.toFixed(1)}/10` : 'Not scored';\n const size = skill.versions[0] ? `${(skill.versions[0].tarballSize / 1024).toFixed(1)}KB` : 'Unknown';\n\n // Format permissions as readable text\n let permsText = 'None declared';\n if (skill.permissions) {\n const perms: string[] = [];\n const p = skill.permissions as {\n network?: { outbound?: string[] };\n filesystem?: { read?: string[]; write?: string[] };\n subprocess?: boolean;\n };\n if (p.network?.outbound?.length) {\n perms.push(`network: ${p.network.outbound.join(', ')}`);\n }\n if (p.filesystem?.read?.length || p.filesystem?.write?.length) {\n const fsPerms: string[] = [];\n if (p.filesystem.read?.length) fsPerms.push(`read: ${p.filesystem.read.length} paths`);\n if (p.filesystem.write?.length) fsPerms.push(`write: ${p.filesystem.write.length} paths`);\n perms.push(`filesystem (${fsPerms.join(', ')})`);\n }\n if (p.subprocess) perms.push('subprocess: allowed');\n if (perms.length > 0) permsText = perms.join('\\n - ');\n }\n\n const versionsList = skill.versions\n .slice(0, 5)\n .map((v) => {\n const vScore = v.auditScore !== null ? v.auditScore.toFixed(1) : '-';\n return `${v.version} (score: ${vScore})`;\n })\n .join('\\n - ');\n\n const text = [\n `# ${skill.name}`,\n '',\n `**Publisher:** ${skill.publisher}`,\n `**Latest:** ${skill.latestVersion}`,\n `**Score:** ${score}`,\n `**Size:** ${size}`,\n `**Downloads:** ${skill.downloads}`,\n '',\n '**Description:**',\n skill.description ?? 'No description available',\n '',\n '**Permissions:**',\n ` - ${permsText}`,\n '',\n '**Versions:**',\n ` - ${versionsList}`,\n skill.versions.length > 5 ? `\\n ... and ${skill.versions.length - 5} more` : '',\n '',\n `View on Tank: https://tankpkg.dev/skills/${skill.name}`\n ].join('\\n');\n\n return {\n content: [{ type: 'text' as const, text }]\n };\n }\n );\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\n\nimport {\n LEGACY_LOCKFILE_FILENAME,\n LEGACY_MANIFEST_FILENAME,\n LOCKFILE_FILENAME,\n MANIFEST_FILENAME,\n type Permissions,\n type SkillsJson,\n type SkillsLock\n} from '@internals/schemas';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\n\nfunction parseSkillName(key: string): string {\n const lastAt = key.lastIndexOf('@');\n if (lastAt > 0) {\n return key.slice(0, lastAt);\n }\n return key;\n}\n\ninterface PermissionEntry {\n value: string;\n skills: string[];\n}\n\ninterface ResolvedPermissions {\n networkOutbound: PermissionEntry[];\n filesystemRead: PermissionEntry[];\n filesystemWrite: PermissionEntry[];\n subprocess: string[];\n env: PermissionEntry[];\n exec: PermissionEntry[];\n}\n\nfunction collectPermissions(lockfile: SkillsLock): ResolvedPermissions {\n const networkMap = new Map<string, string[]>();\n const fsReadMap = new Map<string, string[]>();\n const fsWriteMap = new Map<string, string[]>();\n const subprocessSkills: string[] = [];\n const envMap = new Map<string, string[]>();\n const execMap = new Map<string, string[]>();\n\n for (const [key, entry] of Object.entries(lockfile.skills)) {\n const skillName = parseSkillName(key);\n const perms = entry.permissions;\n\n if (perms.network?.outbound) {\n for (const domain of perms.network.outbound) {\n const existing = networkMap.get(domain) ?? [];\n existing.push(skillName);\n networkMap.set(domain, existing);\n }\n }\n\n if (perms.filesystem?.read) {\n for (const p of perms.filesystem.read) {\n const existing = fsReadMap.get(p) ?? [];\n existing.push(skillName);\n fsReadMap.set(p, existing);\n }\n }\n\n if (perms.filesystem?.write) {\n for (const p of perms.filesystem.write) {\n const existing = fsWriteMap.get(p) ?? [];\n existing.push(skillName);\n fsWriteMap.set(p, existing);\n }\n }\n\n if (perms.subprocess === true) {\n subprocessSkills.push(skillName);\n }\n\n const rawPerms = perms as Record<string, unknown>;\n if (Array.isArray(rawPerms.env)) {\n for (const envVar of rawPerms.env as string[]) {\n const existing = envMap.get(envVar) ?? [];\n existing.push(skillName);\n envMap.set(envVar, existing);\n }\n }\n\n if (Array.isArray(rawPerms.exec)) {\n for (const cmd of rawPerms.exec as string[]) {\n const existing = execMap.get(cmd) ?? [];\n existing.push(skillName);\n execMap.set(cmd, existing);\n }\n }\n }\n\n const toEntries = (map: Map<string, string[]>): PermissionEntry[] =>\n Array.from(map.entries()).map(([value, skills]) => ({ value, skills }));\n\n return {\n networkOutbound: toEntries(networkMap),\n filesystemRead: toEntries(fsReadMap),\n filesystemWrite: toEntries(fsWriteMap),\n subprocess: subprocessSkills,\n env: toEntries(envMap),\n exec: toEntries(execMap)\n };\n}\n\nfunction formatAttribution(skills: string[]): string {\n return `<- ${skills.join(', ')}`;\n}\n\nfunction formatSection(title: string, entries: PermissionEntry[]): string {\n const lines: string[] = [];\n lines.push(`${title}:`);\n if (entries.length === 0) {\n lines.push(' none');\n } else {\n for (const entry of entries) {\n lines.push(` ${entry.value} ${formatAttribution(entry.skills)}`);\n }\n }\n return lines.join('\\n');\n}\n\n// Wildcard matching: *.example.com matches sub.example.com, * matches all\nfunction isDomainAllowed(domain: string, allowedDomains: string[]): boolean {\n for (const allowed of allowedDomains) {\n if (allowed === '*') return true;\n if (allowed === domain) return true;\n if (allowed.startsWith('*.')) {\n const suffix = allowed.slice(1);\n if (domain.endsWith(suffix) || domain === allowed.slice(2)) {\n return true;\n }\n if (domain === allowed) return true;\n }\n }\n return false;\n}\n\n// Glob matching: ./src/** matches ./src/foo/bar\nfunction isPathAllowed(requestedPath: string, allowedPaths: string[]): boolean {\n for (const allowed of allowedPaths) {\n if (allowed === requestedPath) return true;\n if (allowed.endsWith('/**')) {\n const prefix = allowed.slice(0, -3);\n if (requestedPath.startsWith(prefix)) return true;\n }\n }\n return false;\n}\n\ninterface BudgetViolation {\n category: string;\n value: string;\n skills: string[];\n}\n\nfunction checkBudget(resolved: ResolvedPermissions, budget: Permissions): BudgetViolation[] {\n const violations: BudgetViolation[] = [];\n\n const budgetDomains = budget.network?.outbound ?? [];\n for (const entry of resolved.networkOutbound) {\n if (!isDomainAllowed(entry.value, budgetDomains)) {\n violations.push({\n category: 'network outbound',\n value: entry.value,\n skills: entry.skills\n });\n }\n }\n\n const budgetReadPaths = budget.filesystem?.read ?? [];\n for (const entry of resolved.filesystemRead) {\n if (!isPathAllowed(entry.value, budgetReadPaths)) {\n violations.push({\n category: 'filesystem read',\n value: entry.value,\n skills: entry.skills\n });\n }\n }\n\n const budgetWritePaths = budget.filesystem?.write ?? [];\n for (const entry of resolved.filesystemWrite) {\n if (!isPathAllowed(entry.value, budgetWritePaths)) {\n violations.push({\n category: 'filesystem write',\n value: entry.value,\n skills: entry.skills\n });\n }\n }\n\n if (resolved.subprocess.length > 0 && budget.subprocess !== true) {\n violations.push({\n category: 'subprocess',\n value: 'subprocess access',\n skills: resolved.subprocess\n });\n }\n\n return violations;\n}\n\nexport function registerSkillPermissionsTool(server: McpServer): void {\n server.tool(\n 'skill-permissions',\n 'Display resolved permission summary for installed skills. Shows what capabilities each skill requires and checks against the project permission budget.',\n {\n directory: z.string().optional().describe('Project directory path (defaults to current working directory)')\n },\n async ({ directory }) => {\n const dir = directory ? path.resolve(directory) : process.cwd();\n\n if (!fs.existsSync(dir)) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Directory does not exist: ${dir}`\n }\n ],\n isError: true\n };\n }\n\n let skillsJsonPath = path.join(dir, MANIFEST_FILENAME);\n if (!fs.existsSync(skillsJsonPath)) {\n skillsJsonPath = path.join(dir, LEGACY_MANIFEST_FILENAME);\n }\n if (!fs.existsSync(skillsJsonPath)) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `No ${MANIFEST_FILENAME} found. Run \"init-skill\" to create one.`\n }\n ],\n isError: true\n };\n }\n\n let skillsJson: SkillsJson;\n try {\n const raw = fs.readFileSync(skillsJsonPath, 'utf-8');\n skillsJson = JSON.parse(raw) as SkillsJson;\n } catch {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to parse ${path.basename(skillsJsonPath)}. The file may be corrupted.`\n }\n ],\n isError: true\n };\n }\n\n const skillDeps = skillsJson.skills ?? {};\n if (Object.keys(skillDeps).length === 0) {\n return {\n content: [\n {\n type: 'text' as const,\n text: 'No skills with permissions to display. The project has no skill dependencies.'\n }\n ]\n };\n }\n\n let lockfilePath = path.join(dir, LOCKFILE_FILENAME);\n if (!fs.existsSync(lockfilePath)) {\n lockfilePath = path.join(dir, LEGACY_LOCKFILE_FILENAME);\n }\n if (!fs.existsSync(lockfilePath)) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `No ${LOCKFILE_FILENAME} found. Skills are declared but not installed. Run install to generate a lockfile.`\n }\n ]\n };\n }\n\n let lockfile: SkillsLock;\n try {\n const raw = fs.readFileSync(lockfilePath, 'utf-8');\n lockfile = JSON.parse(raw) as SkillsLock;\n } catch {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to parse ${path.basename(lockfilePath)}. The file may be corrupted.`\n }\n ],\n isError: true\n };\n }\n\n if (!lockfile.skills || Object.keys(lockfile.skills).length === 0) {\n return {\n content: [\n {\n type: 'text' as const,\n text: 'No skills installed. The lockfile is empty.'\n }\n ]\n };\n }\n\n const resolved = collectPermissions(lockfile);\n\n const lines: string[] = [];\n lines.push('Resolved permissions for this project:');\n lines.push('');\n\n lines.push(formatSection('Network (outbound)', resolved.networkOutbound));\n lines.push(formatSection('Filesystem (read)', resolved.filesystemRead));\n lines.push(formatSection('Filesystem (write)', resolved.filesystemWrite));\n\n lines.push('Subprocess:');\n if (resolved.subprocess.length === 0) {\n lines.push(' none');\n } else {\n lines.push(` allowed ${formatAttribution(resolved.subprocess)}`);\n }\n\n if (resolved.env.length > 0) {\n lines.push(formatSection('Environment variables', resolved.env));\n }\n\n if (resolved.exec.length > 0) {\n lines.push(formatSection('Exec', resolved.exec));\n }\n\n lines.push('');\n lines.push('Per-skill breakdown:');\n for (const [key, entry] of Object.entries(lockfile.skills)) {\n const skillName = parseSkillName(key);\n const perms = entry.permissions;\n const permParts: string[] = [];\n\n if (perms.network?.outbound && perms.network.outbound.length > 0) {\n permParts.push(`network: ${perms.network.outbound.join(', ')}`);\n }\n if (perms.filesystem?.read && perms.filesystem.read.length > 0) {\n permParts.push(`filesystem:read: ${perms.filesystem.read.join(', ')}`);\n }\n if (perms.filesystem?.write && perms.filesystem.write.length > 0) {\n permParts.push(`filesystem:write: ${perms.filesystem.write.join(', ')}`);\n }\n if (perms.subprocess === true) {\n permParts.push('subprocess: allowed');\n }\n\n const rawPerms = perms as Record<string, unknown>;\n if (Array.isArray(rawPerms.env) && (rawPerms.env as string[]).length > 0) {\n permParts.push(`env: ${(rawPerms.env as string[]).join(', ')}`);\n }\n if (Array.isArray(rawPerms.exec) && (rawPerms.exec as string[]).length > 0) {\n permParts.push(`exec: ${(rawPerms.exec as string[]).join(', ')}`);\n }\n\n if (permParts.length === 0) {\n lines.push(` ${skillName}: no special permissions`);\n } else {\n lines.push(` ${skillName}: ${permParts.join('; ')}`);\n }\n }\n\n const budget = skillsJson.permissions;\n lines.push('');\n\n if (!budget) {\n lines.push('Budget status: No budget defined');\n } else {\n const violations = checkBudget(resolved, budget);\n\n if (violations.length === 0) {\n lines.push('Budget status: PASS (all within budget)');\n } else {\n lines.push('Budget status: FAIL');\n for (const v of violations) {\n lines.push(` - ${v.category}: \"${v.value}\" not in budget (requested by ${v.skills.join(', ')})`);\n }\n }\n }\n\n return {\n content: [{ type: 'text' as const, text: lines.join('\\n') }]\n };\n }\n );\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\n\nconst SCOPED_NAME_PATTERN = /^@[a-z0-9-]+\\/[a-z0-9][a-z0-9-]*$/;\n\nexport function registerUnlinkSkillTool(server: McpServer): void {\n server.tool(\n 'unlink-skill',\n 'Unlink a skill from an agent workspace. Removes the symlink without deleting the installed skill files.',\n {\n name: z.string().describe('Skill name in @org/name format'),\n workspace: z.string().describe('Agent workspace directory path'),\n directory: z\n .string()\n .optional()\n .describe('Project directory where skills are installed (defaults to current working directory)')\n },\n async ({ name, workspace, directory }) => {\n if (!SCOPED_NAME_PATTERN.test(name)) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Validation error: Skill name \"${name}\" must use the @org/name format (e.g. @acme/my-skill).`\n }\n ],\n isError: true\n };\n }\n\n const projectDir = directory ? path.resolve(directory) : process.cwd();\n const workspaceDir = path.resolve(workspace);\n\n if (!fs.existsSync(workspaceDir)) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Error: Workspace directory does not exist: ${workspaceDir}`\n }\n ],\n isError: true\n };\n }\n\n const skillDir = getSkillDir(projectDir, name);\n if (!fs.existsSync(skillDir)) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Skill \"${name}\" is not installed. It was not found in ${skillDir}.`\n }\n ],\n isError: true\n };\n }\n\n const [scope, skillName] = name.split('/');\n const symlinkPath = path.join(workspaceDir, '.skills', scope, skillName);\n\n try {\n const stats = fs.lstatSync(symlinkPath);\n if (stats.isSymbolicLink()) {\n fs.unlinkSync(symlinkPath);\n return {\n content: [\n {\n type: 'text' as const,\n text: `Successfully unlinked \"${name}\" from ${workspaceDir}.\\nRemoved symlink: ${symlinkPath}`\n }\n ]\n };\n }\n } catch {\n // intentionally empty\n }\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `No link exists for \"${name}\" in ${workspaceDir}.`\n }\n ]\n };\n }\n );\n}\n\nfunction getSkillDir(projectDir: string, skillName: string): string {\n if (skillName.startsWith('@')) {\n const [scope, name] = skillName.split('/');\n return path.join(projectDir, '.tank', 'skills', scope, name);\n }\n return path.join(projectDir, '.tank', 'skills', skillName);\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { resolve } from '@internals/helpers';\nimport {\n LEGACY_LOCKFILE_FILENAME,\n LEGACY_MANIFEST_FILENAME,\n LOCKFILE_FILENAME,\n MANIFEST_FILENAME,\n type SkillsLock\n} from '@internals/schemas';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\n\nimport { TankApiClient } from '~/lib/api-client.js';\n\nconst SCOPED_NAME_PATTERN = /^@[a-z0-9-]+\\/[a-z0-9][a-z0-9-]*$/;\n\ninterface VersionInfo {\n version: string;\n integrity: string;\n auditScore: number;\n auditStatus: string;\n publishedAt: string;\n}\n\ninterface VersionsResponse {\n name: string;\n versions: VersionInfo[];\n}\n\nfunction parseLockKey(key: string): { name: string; version: string } | null {\n const lastAt = key.lastIndexOf('@');\n if (lastAt <= 0) return null;\n return { name: key.slice(0, lastAt), version: key.slice(lastAt + 1) };\n}\n\nexport function registerUpdateSkillTool(server: McpServer): void {\n server.tool(\n 'update-skill',\n 'Update an installed skill to the latest compatible version within its declared semver range.',\n {\n name: z.string().describe('Skill name in @org/name format'),\n directory: z.string().optional().describe('Project directory (defaults to current working directory)')\n },\n async ({ name, directory }) => {\n if (!SCOPED_NAME_PATTERN.test(name)) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Validation error: Skill name \"${name}\" must use the @org/name format (e.g. @acme/my-skill).`\n }\n ],\n isError: true\n };\n }\n\n const dir = directory ? path.resolve(directory) : process.cwd();\n\n let skillsJsonPath = path.join(dir, MANIFEST_FILENAME);\n if (!fs.existsSync(skillsJsonPath)) {\n skillsJsonPath = path.join(dir, LEGACY_MANIFEST_FILENAME);\n }\n if (!fs.existsSync(skillsJsonPath)) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `No ${MANIFEST_FILENAME} found in ${dir}. Run the \"init-skill\" tool first.`\n }\n ],\n isError: true\n };\n }\n\n let skillsJson: Record<string, unknown>;\n try {\n const raw = fs.readFileSync(skillsJsonPath, 'utf-8');\n skillsJson = JSON.parse(raw) as Record<string, unknown>;\n } catch {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to read or parse ${path.basename(skillsJsonPath)}.`\n }\n ],\n isError: true\n };\n }\n\n const skills = (skillsJson.skills ?? {}) as Record<string, string>;\n const versionRange = skills[name];\n\n if (!versionRange) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Skill \"${name}\" is not installed (not found in ${path.basename(skillsJsonPath)}). Install it first with the install-skill tool.`\n }\n ],\n isError: true\n };\n }\n\n let lockPath = path.join(dir, LOCKFILE_FILENAME);\n if (!fs.existsSync(lockPath)) {\n lockPath = path.join(dir, LEGACY_LOCKFILE_FILENAME);\n }\n let currentVersion: string | null = null;\n\n if (fs.existsSync(lockPath)) {\n try {\n const raw = fs.readFileSync(lockPath, 'utf-8');\n const lock = JSON.parse(raw) as SkillsLock;\n for (const key of Object.keys(lock.skills)) {\n const parsed = parseLockKey(key);\n if (!parsed) continue;\n if (parsed.name === name) {\n currentVersion = parsed.version;\n break;\n }\n }\n } catch {\n // Lockfile unreadable — treat as no current version\n }\n }\n\n if (!currentVersion) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Skill \"${name}\" is not installed (not found in ${LOCKFILE_FILENAME}). Install it first with the install-skill tool.`\n }\n ],\n isError: true\n };\n }\n\n const client = new TankApiClient();\n if (!client.isAuthenticated) {\n return {\n content: [\n {\n type: 'text' as const,\n text: 'Authentication required. Please run the \"login\" tool first to authenticate with Tank.'\n }\n ],\n isError: true\n };\n }\n\n // Fetch available versions from registry\n const encodedName = encodeURIComponent(name);\n const versionsResult = await client.fetch<VersionsResponse>(`/api/v1/skills/${encodedName}/versions`);\n\n if (!versionsResult.ok) {\n if (versionsResult.status === 0) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Unable to connect to the Tank registry. Check your network connection and try again.`\n }\n ],\n isError: true\n };\n }\n if (versionsResult.status === 404) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Skill \"${name}\" not found in the registry.`\n }\n ],\n isError: true\n };\n }\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to fetch versions for ${name}: ${versionsResult.error}`\n }\n ],\n isError: true\n };\n }\n\n const availableVersions = versionsResult.data.versions.map((v) => v.version);\n\n // 6. Resolve best version within declared range\n const resolved = resolve(versionRange, availableVersions);\n if (!resolved) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `No version of ${name} satisfies range \"${versionRange}\". Available: ${availableVersions.join(', ')}`\n }\n ],\n isError: true\n };\n }\n\n // 7. Check for newer major versions outside range\n const allMajors = availableVersions\n .map((v) => {\n const major = v.split('.')[0];\n return { version: v, major: Number.parseInt(major, 10) };\n })\n .filter((v) => !Number.isNaN(v.major));\n\n const currentMajor = Number.parseInt(currentVersion.split('.')[0], 10);\n const newerMajors = allMajors.filter((v) => v.major > currentMajor).map((v) => v.version);\n\n const highestOutOfRange =\n newerMajors.length > 0\n ? newerMajors.sort((a, b) => {\n const [aMaj, aMin, aPat] = a.split('.').map(Number);\n const [bMaj, bMin, bPat] = b.split('.').map(Number);\n return bMaj - aMaj || bMin - aMin || bPat - aPat;\n })[0]\n : null;\n\n // 8. If resolved === current, already at latest\n if (resolved === currentVersion) {\n const lines = [`Already at latest compatible version: ${name}@${resolved}`];\n if (highestOutOfRange) {\n lines.push(\n `\\nNote: Version ${highestOutOfRange} is available but outside the declared range \"${versionRange}\". Update ${MANIFEST_FILENAME} to use it.`\n );\n }\n return {\n content: [\n {\n type: 'text' as const,\n text: lines.join('')\n }\n ]\n };\n }\n\n // 9. Fetch the resolved version details for download\n const versionResult = await client.fetch<{\n version: string;\n integrity: string;\n downloadUrl: string;\n permissions: Record<string, unknown>;\n auditScore: number | null;\n }>(`/api/v1/skills/${encodedName}/${resolved}`);\n\n if (!versionResult.ok) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to fetch version details for ${name}@${resolved}: ${versionResult.error}`\n }\n ],\n isError: true\n };\n }\n\n const versionData = versionResult.data;\n\n // 10. Download tarball\n let tarballBuffer: ArrayBuffer;\n try {\n const tarballRes = await fetch(versionData.downloadUrl);\n if (!tarballRes.ok) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to download tarball for ${name}@${resolved}: ${tarballRes.statusText}`\n }\n ],\n isError: true\n };\n }\n tarballBuffer = await tarballRes.arrayBuffer();\n } catch (err) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Network error downloading ${name}@${resolved}: ${err instanceof Error ? err.message : String(err)}`\n }\n ],\n isError: true\n };\n }\n\n // 11. Verify SHA-512\n const { createHash } = await import('node:crypto');\n const hash = createHash('sha512').update(Buffer.from(tarballBuffer)).digest('base64');\n const computedIntegrity = `sha512-${hash}`;\n\n if (computedIntegrity !== versionData.integrity) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Integrity check failed for ${name}@${resolved}. The tarball has been tampered with or is corrupted.\\nExpected: ${versionData.integrity}\\nGot: ${computedIntegrity}`\n }\n ],\n isError: true\n };\n }\n\n // 12. Extract tarball to skill directory\n const { execSync } = await import('node:child_process');\n const skillDir = getSkillDir(dir, name);\n\n // Remove old version files if they exist\n if (fs.existsSync(skillDir)) {\n fs.rmSync(skillDir, { recursive: true, force: true });\n }\n fs.mkdirSync(skillDir, { recursive: true });\n\n const tarballPath = path.join(skillDir, '__temp_tarball.tgz');\n fs.writeFileSync(tarballPath, Buffer.from(tarballBuffer));\n\n try {\n execSync(`tar xzf \"${tarballPath}\" -C \"${skillDir}\" --strip-components=1`, {\n stdio: 'pipe'\n });\n } catch (err) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to extract tarball for ${name}@${resolved}: ${err instanceof Error ? err.message : String(err)}`\n }\n ],\n isError: true\n };\n } finally {\n // Clean up temp tarball\n try {\n fs.unlinkSync(tarballPath);\n } catch {\n /* ignore */\n }\n }\n\n // 13. Update lockfile\n let lock: SkillsLock;\n if (fs.existsSync(lockPath)) {\n try {\n const raw = fs.readFileSync(lockPath, 'utf-8');\n lock = JSON.parse(raw) as SkillsLock;\n } catch {\n lock = { lockfileVersion: 1, skills: {} };\n }\n } else {\n lock = { lockfileVersion: 1, skills: {} };\n }\n\n // Remove old lock entry for this skill\n for (const key of Object.keys(lock.skills)) {\n const parsed = parseLockKey(key);\n if (parsed && parsed.name === name) {\n delete lock.skills[key];\n }\n }\n\n // Add new lock entry\n const newLockKey = `${name}@${resolved}`;\n lock.skills[newLockKey] = {\n resolved: versionData.downloadUrl,\n integrity: versionData.integrity,\n permissions: versionData.permissions as SkillsLock['skills'][string]['permissions'],\n audit_score: versionData.auditScore\n };\n\n // Sort keys for deterministic output\n const sortedSkills: Record<string, unknown> = {};\n for (const key of Object.keys(lock.skills).sort()) {\n sortedSkills[key] = lock.skills[key];\n }\n lock.skills = sortedSkills as SkillsLock['skills'];\n\n fs.writeFileSync(lockPath, `${JSON.stringify(lock, null, 2)}\\n`);\n\n // 14. Build response\n const lines = [\n `Updated ${name} from ${currentVersion} to ${resolved}.`,\n `Integrity verified (SHA-512).`,\n `Lockfile updated.`\n ];\n\n if (highestOutOfRange) {\n lines.push(\n `\\nNote: Version ${highestOutOfRange} is available but outside the declared range \"${versionRange}\". Update ${MANIFEST_FILENAME} to use it.`\n );\n }\n\n return {\n content: [\n {\n type: 'text' as const,\n text: lines.join('\\n')\n }\n ]\n };\n }\n );\n}\n\nfunction getSkillDir(projectDir: string, skillName: string): string {\n if (skillName.startsWith('@')) {\n const [scope, name] = skillName.split('/');\n return path.join(projectDir, '.tank', 'skills', scope, name);\n }\n return path.join(projectDir, '.tank', 'skills', skillName);\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { LEGACY_LOCKFILE_FILENAME, LOCKFILE_FILENAME, type SkillsLock } from '@internals/schemas';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\n\nexport function registerVerifySkillsTool(server: McpServer): void {\n server.tool(\n 'verify-skills',\n 'Verify that installed skills match their lockfile entries. Checks that skill directories exist and are not empty.',\n {\n name: z.string().optional().describe('Specific skill name to verify (verifies all if omitted)'),\n directory: z.string().optional().describe('Project directory (defaults to current working directory)')\n },\n async ({ name, directory }) => {\n const dir = directory ? path.resolve(directory) : process.cwd();\n\n let lockPath = path.join(dir, LOCKFILE_FILENAME);\n if (!fs.existsSync(lockPath)) {\n lockPath = path.join(dir, LEGACY_LOCKFILE_FILENAME);\n }\n if (!fs.existsSync(lockPath)) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `No ${LOCKFILE_FILENAME} found. Run \"install-skill\" to install skills and generate a lockfile.`\n }\n ],\n isError: true\n };\n }\n\n let lock: SkillsLock;\n try {\n const raw = fs.readFileSync(lockPath, 'utf-8');\n lock = JSON.parse(raw) as SkillsLock;\n } catch {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to parse ${path.basename(lockPath)}. The file may be corrupted.`\n }\n ],\n isError: true\n };\n }\n\n let entries = Object.entries(lock.skills);\n\n if (entries.length === 0) {\n return {\n content: [\n {\n type: 'text' as const,\n text: 'No skills to verify. The lockfile is empty.'\n }\n ]\n };\n }\n\n if (name) {\n entries = entries.filter(([key]) => {\n const lastAt = key.lastIndexOf('@');\n if (lastAt <= 0) return false;\n return key.slice(0, lastAt) === name;\n });\n\n if (entries.length === 0) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Skill \"${name}\" not found in lockfile.`\n }\n ],\n isError: true\n };\n }\n }\n\n const results: Array<{ key: string; status: 'PASS' | 'FAIL' | 'MISSING'; detail: string }> = [];\n\n for (const [key, entry] of entries) {\n const skillName = parseLockKey(key);\n const skillDir = getExtractDir(dir, skillName);\n\n if (!fs.existsSync(skillDir)) {\n results.push({\n key,\n status: 'MISSING',\n detail: `Directory missing at ${skillDir}. Reinstall with \"install-skill\".`\n });\n continue;\n }\n\n const contents = fs.readdirSync(skillDir);\n if (contents.length === 0) {\n results.push({\n key,\n status: 'FAIL',\n detail: `Directory exists but is empty. Expected integrity: ${entry.integrity}. SHA-512 mismatch detected.`\n });\n continue;\n }\n\n results.push({\n key,\n status: 'PASS',\n detail: `Verified (integrity: ${entry.integrity})`\n });\n }\n\n const passing = results.filter((r) => r.status === 'PASS');\n const failing = results.filter((r) => r.status !== 'PASS');\n\n const lines: string[] = [];\n for (const r of results) {\n lines.push(`${r.status} ${r.key}: ${r.detail}`);\n }\n\n if (failing.length > 0) {\n lines.push('');\n lines.push(`Verification failed: ${failing.length} issue(s) found, ${passing.length} passed.`);\n return {\n content: [{ type: 'text' as const, text: lines.join('\\n') }],\n isError: true\n };\n }\n\n lines.push('');\n lines.push(`All ${passing.length} skill(s) passed verification.`);\n return {\n content: [{ type: 'text' as const, text: lines.join('\\n') }]\n };\n }\n );\n}\n\nfunction parseLockKey(key: string): string {\n const lastAt = key.lastIndexOf('@');\n if (lastAt <= 0) return key;\n return key.slice(0, lastAt);\n}\n\nfunction getExtractDir(projectDir: string, skillName: string): string {\n if (skillName.startsWith('@')) {\n const [scope, name] = skillName.split('/');\n return path.join(projectDir, '.tank', 'skills', scope, name);\n }\n return path.join(projectDir, '.tank', 'skills', skillName);\n}\n","import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\n\nimport { TankApiClient } from '~/lib/api-client.js';\n\nexport function registerWhoamiTool(server: McpServer): void {\n server.tool('whoami', 'Show the authenticated Tank user for the current local session.', {}, async () => {\n const client = new TankApiClient();\n\n if (!client.isAuthenticated) {\n return {\n content: [{ type: 'text' as const, text: 'Not logged in. Use the login tool to authenticate.' }]\n };\n }\n\n const authCheck = await client.verifyAuth();\n\n if (authCheck.valid) {\n const name = authCheck.user.name ?? 'unknown';\n const email = authCheck.user.email ?? 'unknown';\n return {\n content: [{ type: 'text' as const, text: `Logged in as ${name}\\nEmail: ${email}` }]\n };\n }\n\n if (authCheck.reason === 'network-error') {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to connect to the registry. Check your network connection.\\nError: ${authCheck.error ?? 'unknown'}`\n }\n ],\n isError: true\n };\n }\n\n return {\n content: [{ type: 'text' as const, text: 'Session expired or invalid. Use the login tool to re-authenticate.' }]\n };\n });\n}\n","#!/usr/bin/env node\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\n\nimport { registerAuditSkillTool } from '~/tools/audit-skill.js';\nimport { registerDoctorTool } from '~/tools/doctor.js';\nimport { registerInitSkillTool } from '~/tools/init-skill.js';\nimport { registerInstallSkillTool } from '~/tools/install-skill.js';\nimport { registerLinkSkillTool } from '~/tools/link-skill.js';\n// Import tools\nimport { registerLoginTool } from '~/tools/login.js';\nimport { registerLogoutTool } from '~/tools/logout.js';\nimport { registerPublishSkillTool } from '~/tools/publish-skill.js';\nimport { registerRemoveSkillTool } from '~/tools/remove-skill.js';\nimport { registerScanSkillTool } from '~/tools/scan-skill.js';\nimport { registerSearchSkillsTool } from '~/tools/search-skills.js';\nimport { registerSkillInfoTool } from '~/tools/skill-info.js';\nimport { registerSkillPermissionsTool } from '~/tools/skill-permissions.js';\nimport { registerUnlinkSkillTool } from '~/tools/unlink-skill.js';\nimport { registerUpdateSkillTool } from '~/tools/update-skill.js';\nimport { registerVerifySkillsTool } from '~/tools/verify-skills.js';\nimport { registerWhoamiTool } from '~/tools/whoami.js';\n\n// Create MCP server instance\nconst server = new McpServer({\n name: 'tank',\n version: '0.1.0'\n});\n\n// Register all tools\nregisterLoginTool(server);\nregisterSearchSkillsTool(server);\nregisterSkillInfoTool(server);\nregisterScanSkillTool(server);\nregisterPublishSkillTool(server);\nregisterLogoutTool(server);\nregisterWhoamiTool(server);\nregisterInitSkillTool(server);\nregisterRemoveSkillTool(server);\nregisterVerifySkillsTool(server);\nregisterLinkSkillTool(server);\nregisterUnlinkSkillTool(server);\nregisterDoctorTool(server);\nregisterSkillPermissionsTool(server);\nregisterInstallSkillTool(server);\nregisterUpdateSkillTool(server);\nregisterAuditSkillTool(server);\n\n// Start stdio transport\nasync function main() {\n const transport = new StdioServerTransport();\n await server.connect(transport);\n}\n\nmain().catch((_error) => {\n process.exit(1);\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["REGISTRY_URL","supportLevelSchema","adapterCapabilitiesSchema","compilationWarningSchema","extensionBagSchema","modelTierSchema","canonicalToolNameSchema","agentIRSchema","hookEventSchema","hookActionIRSchema","hookHandlerIRSchema","hookIRSchema","instructionIRSchema","networkPermissionsSchema","filesystemPermissionsSchema","permissionsSchema","commandSchema","argSchema","envSchema","remoteUrlSchema","mcpServerSchema","baseManifestFields","publishConfigSchema","promptIRSchema","resourceIRSchema","ruleIRSchema","mcpServerConfigSchema","toolIRSchema","NAME_PATTERN","SEMVER_PATTERN","atomIRSchema","perToolOverrideSchema","SKILL_SOURCES","SCAN_VERDICTS","lockedSkillV1Schema","lockedSkillSchema","SEMVER_PATTERN","ALPHANUMERIC","SCOPED_NAME_PATTERN","parseLockKey","SCOPED_NAME_PATTERN","SCOPED_NAME_PATTERN","getSkillDir","crypto","SCOPED_NAME_PATTERN","getSkillDir","crypto","SCOPED_NAME_PATTERN","getSkillDir","SCOPED_NAME_PATTERN","getSkillDir","parseLockKey"],"sources":["../../internals-schemas/dist/index.js","../../sdk/dist/index.mjs","../src/lib/config.ts","../src/lib/api-client.ts","../src/tools/audit-skill.ts","../src/tools/doctor.ts","../src/tools/init-skill.ts","../../internals-helpers/dist/index.js","../src/tools/install-skill.ts","../src/tools/link-skill.ts","../src/tools/login.ts","../src/tools/logout.ts","../src/lib/packer.ts","../src/tools/publish-skill.ts","../src/tools/remove-skill.ts","../src/tools/scan-skill.ts","../src/tools/search-skills.ts","../src/tools/skill-info.ts","../src/tools/skill-permissions.ts","../src/tools/unlink-skill.ts","../src/tools/update-skill.ts","../src/tools/verify-skills.ts","../src/tools/whoami.ts","../src/index.ts"],"sourcesContent":["import { z } from \"zod\";\n//#region src/constants/permissions.ts\nconst PERMISSION_CATEGORIES = [\n\t\"network\",\n\t\"filesystem\",\n\t\"subprocess\"\n];\nconst DEFAULT_PERMISSIONS = {\n\tnetwork: void 0,\n\tfilesystem: void 0,\n\tsubprocess: false\n};\n//#endregion\n//#region src/constants/registry.ts\nconst REGISTRY_URL = process.env.TANK_REGISTRY_URL || \"https://www.tankpkg.dev\";\nconst REGISTRY_API_VERSION = \"v1\";\nconst MAX_PACKAGE_SIZE = 50 * 1024 * 1024;\nconst MAX_FILE_COUNT = 1e3;\nconst MAX_NAME_LENGTH = 214;\nconst MAX_DESCRIPTION_LENGTH = 500;\nconst LOCKFILE_VERSION = 2;\nconst MANIFEST_FILENAME = \"tank.json\";\nconst LEGACY_MANIFEST_FILENAME = \"skills.json\";\nconst LOCKFILE_FILENAME = \"tank.lock\";\nconst LEGACY_LOCKFILE_FILENAME = \"skills.lock\";\n//#endregion\n//#region src/schemas/adapters/capabilities.ts\nconst supportLevelSchema = z.enum([\n\t\"full\",\n\t\"degraded\",\n\t\"none\"\n]);\nconst adapterCapabilitiesSchema = z.object({\n\tinstruction: supportLevelSchema,\n\thook: supportLevelSchema,\n\ttool: supportLevelSchema,\n\tagent: supportLevelSchema,\n\trule: supportLevelSchema,\n\tresource: supportLevelSchema,\n\tprompt: supportLevelSchema\n}).strict();\n//#endregion\n//#region src/schemas/adapters/platform-adapter.ts\nconst compilationWarningSchema = z.object({\n\tlevel: z.enum([\"degraded\", \"skipped\"]),\n\tatomKind: z.string(),\n\tmessage: z.string()\n}).strict();\nconst fileWriteSchema = z.object({\n\tpath: z.string().min(1),\n\tcontent: z.string()\n}).strict();\nconst platformOutputSchema = z.object({\n\tfiles: z.array(fileWriteSchema),\n\twarnings: z.array(compilationWarningSchema)\n}).strict();\nconst platformAdapterMetaSchema = z.object({\n\tname: z.string().min(1, \"Adapter name must not be empty\"),\n\tsupportedRange: z.string().min(1, \"Supported range must not be empty\"),\n\tcapabilities: adapterCapabilitiesSchema\n}).strict();\n//#endregion\n//#region src/schemas/atoms/base.ts\nconst atomKindSchema = z.enum([\n\t\"instruction\",\n\t\"hook\",\n\t\"tool\",\n\t\"agent\",\n\t\"rule\",\n\t\"resource\",\n\t\"prompt\"\n]);\nconst extensionBagSchema = z.record(z.string(), z.unknown()).optional();\n//#endregion\n//#region src/schemas/atoms/model-tiers.ts\nconst modelTierSchema = z.enum([\n\t\"fast\",\n\t\"balanced\",\n\t\"powerful\",\n\t\"custom\"\n]);\nconst MODEL_TIERS = modelTierSchema.options;\n//#endregion\n//#region src/schemas/atoms/tool-names.ts\nconst canonicalToolNameSchema = z.enum([\n\t\"bash\",\n\t\"read\",\n\t\"write\",\n\t\"edit\",\n\t\"grep\",\n\t\"glob\",\n\t\"lsp\",\n\t\"mcp\",\n\t\"browser\",\n\t\"fetch\",\n\t\"git\",\n\t\"task\",\n\t\"notebook\"\n]);\nconst CANONICAL_TOOL_NAMES = canonicalToolNameSchema.options;\n//#endregion\n//#region src/schemas/atoms/agent.ts\nconst agentIRSchema = z.object({\n\tkind: z.literal(\"agent\"),\n\tname: z.string().min(1, \"Agent name must not be empty\"),\n\trole: z.string().min(1, \"Agent role must not be empty\"),\n\ttools: z.array(canonicalToolNameSchema.or(z.string().min(1))).optional(),\n\tmodel: modelTierSchema.or(z.string().min(1)).optional(),\n\treadonly: z.boolean().optional(),\n\textensions: extensionBagSchema\n}).strict();\n//#endregion\n//#region src/schemas/atoms/events.ts\nconst hookEventSchema = z.enum([\n\t\"pre-tool-use\",\n\t\"post-tool-use\",\n\t\"pre-file-read\",\n\t\"post-file-read\",\n\t\"pre-file-write\",\n\t\"post-file-write\",\n\t\"file-edited\",\n\t\"file-watcher-updated\",\n\t\"pre-command\",\n\t\"post-command\",\n\t\"pre-mcp-tool-use\",\n\t\"post-mcp-tool-use\",\n\t\"session-created\",\n\t\"session-updated\",\n\t\"session-idle\",\n\t\"session-error\",\n\t\"session-deleted\",\n\t\"pre-stop\",\n\t\"task-start\",\n\t\"task-resume\",\n\t\"task-complete\",\n\t\"task-cancel\",\n\t\"pre-user-prompt\",\n\t\"post-response\",\n\t\"message-updated\",\n\t\"message-removed\",\n\t\"system-prompt-transform\",\n\t\"pre-context-compact\",\n\t\"post-context-compact\",\n\t\"permission-asked\",\n\t\"permission-replied\",\n\t\"lsp-diagnostics\",\n\t\"lsp-updated\",\n\t\"subagent-start\",\n\t\"subagent-complete\",\n\t\"subagent-tool-use\",\n\t\"shell-env\",\n\t\"todo-updated\",\n\t\"installation-updated\"\n]);\nconst HOOK_EVENTS = hookEventSchema.options;\n//#endregion\n//#region src/schemas/atoms/hook.ts\nconst hookActionIRSchema = z.object({\n\taction: z.enum([\n\t\t\"block\",\n\t\t\"allow\",\n\t\t\"rewrite\",\n\t\t\"injectContext\"\n\t]),\n\tmatch: z.string().optional(),\n\treason: z.string().optional(),\n\tvalue: z.string().optional()\n}).strict();\nconst hookDslHandlerSchema = z.object({\n\ttype: z.literal(\"dsl\"),\n\tactions: z.array(hookActionIRSchema).min(1, \"DSL handler must have at least one action\")\n}).strict();\nconst hookJsHandlerSchema = z.object({\n\ttype: z.literal(\"js\"),\n\tentry: z.string().min(1, \"JS handler entry path must not be empty\")\n}).strict();\nconst hookHandlerIRSchema = z.discriminatedUnion(\"type\", [hookDslHandlerSchema, hookJsHandlerSchema]);\nconst hookIRSchema = z.object({\n\tkind: z.literal(\"hook\"),\n\tname: z.string().optional(),\n\tevent: hookEventSchema,\n\tmatch: canonicalToolNameSchema.or(z.string().min(1)).optional(),\n\thandler: hookHandlerIRSchema,\n\tscope: z.enum([\"project\", \"global\"]).optional(),\n\textensions: extensionBagSchema\n}).strict();\n//#endregion\n//#region src/schemas/atoms/instruction.ts\nconst instructionIRSchema = z.object({\n\tkind: z.literal(\"instruction\"),\n\tcontent: z.string().min(1, \"Content path must not be empty\"),\n\tscope: z.enum([\n\t\t\"project\",\n\t\t\"global\",\n\t\t\"directory\"\n\t]).optional(),\n\tglobs: z.array(z.string()).optional(),\n\textensions: extensionBagSchema\n}).strict();\n//#endregion\n//#region src/schemas/permissions.ts\nconst networkPermissionsSchema = z.object({ outbound: z.array(z.string()).optional() }).strict();\nconst filesystemPermissionsSchema = z.object({\n\tread: z.array(z.string()).optional(),\n\twrite: z.array(z.string()).optional()\n}).strict();\nconst permissionsSchema = z.object({\n\tnetwork: networkPermissionsSchema.optional(),\n\tfilesystem: filesystemPermissionsSchema.optional(),\n\tsubprocess: z.boolean().optional()\n}).strict();\nconst userRoleSchema = z.enum([\"user\", \"admin\"]);\nconst userStatusSchema = z.enum([\n\t\"active\",\n\t\"suspended\",\n\t\"banned\"\n]);\nconst skillStatusSchema = z.enum([\n\t\"active\",\n\t\"deprecated\",\n\t\"quarantined\",\n\t\"removed\"\n]);\nconst adminActionSchema = z.enum([\n\t\"user.ban\",\n\t\"user.suspend\",\n\t\"user.unban\",\n\t\"user.promote\",\n\t\"user.demote\",\n\t\"skill.quarantine\",\n\t\"skill.remove\",\n\t\"skill.deprecate\",\n\t\"skill.restore\",\n\t\"skill.feature\",\n\t\"skill.unfeature\",\n\t\"org.suspend\",\n\t\"org.member.remove\",\n\t\"org.delete\"\n]);\nfunction isAdmin(role) {\n\treturn role === \"admin\";\n}\n//#endregion\n//#region src/schemas/mcp-server.ts\nconst commandSchema = z.string().min(1, \"command must not be empty\");\nconst argSchema = z.array(z.string()).default([]);\nconst envSchema = z.record(z.string(), z.string()).optional();\nconst remoteUrlSchema = z.string().url(\"remote must be a valid URL\");\nconst localMcpServerSchema = z.object({\n\tcommand: commandSchema,\n\targs: argSchema,\n\tenv: envSchema,\n\trequires_auth: z.literal(false).optional()\n}).strict();\nconst remoteMcpServerSchema = z.object({\n\tremote: remoteUrlSchema,\n\trequires_auth: z.boolean().default(false),\n\tenv: envSchema\n}).strict();\nconst mcpServerSchema = z.union([localMcpServerSchema, remoteMcpServerSchema]);\nfunction isRemoteMcpServer(server) {\n\treturn \"remote\" in server;\n}\n//#endregion\n//#region src/schemas/skills-json.ts\nconst baseManifestFields = {\n\tname: z.string().min(1, \"Name must not be empty\").max(214, `Name must be 214 characters or fewer`).regex(/^@[a-z0-9-]+\\/[a-z0-9][a-z0-9-]*$/, \"Name must be scoped (@org/name), lowercase alphanumeric and hyphens\"),\n\tversion: z.string().regex(/^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9.-]+)?(\\+[a-zA-Z0-9.-]+)?$/, \"Version must be valid semver\"),\n\tdescription: z.string().max(500, `Description must be 500 characters or fewer`).optional(),\n\tskills: z.record(z.string(), z.string()).optional(),\n\tpermissions: permissionsSchema.optional(),\n\trepository: z.string().url(\"Repository must be a valid URL\").optional(),\n\tvisibility: z.enum([\"public\", \"private\"]).optional(),\n\taudit: z.object({ min_score: z.number().min(0).max(10) }).strict().optional(),\n\tmcp_server: mcpServerSchema.optional()\n};\n/** Legacy skills.json schema — strict, no atoms. Used for backward-compatible consumers. */\nconst skillsJsonSchema = z.object(baseManifestFields).strict();\nconst publishConfigSchema = z.object({\n\tbuild: z.string().min(1, \"publish.build must be a non-empty shell command\").optional(),\n\tfiles: z.array(z.string().min(1)).optional()\n}).strict();\n/**\n* Publish manifest schema — accepts both legacy skills.json AND atom-enriched tank.json.\n* The `atoms` and `includes` fields are passed through as opaque JSON arrays,\n* validated only at surface level. Full atom IR validation happens at build time.\n* The `publish` block is a CLI-only lifecycle config (build hook + files allow-list).\n*/\nconst publishManifestSchema = z.object({\n\t...baseManifestFields,\n\tatoms: z.array(z.record(z.string(), z.unknown())).optional(),\n\tincludes: z.array(z.string()).optional(),\n\tpublish: publishConfigSchema.optional()\n}).strict();\n//#endregion\n//#region src/schemas/atoms/prompt.ts\nconst promptIRSchema = z.object({\n\tkind: z.literal(\"prompt\"),\n\tname: z.string().min(1, \"Prompt name must not be empty\"),\n\tdescription: z.string().optional(),\n\ttemplate: z.string().min(1, \"Prompt template path must not be empty\"),\n\targuments: z.array(z.object({\n\t\tname: z.string(),\n\t\tdescription: z.string().optional(),\n\t\trequired: z.boolean().optional()\n\t}).strict()).optional(),\n\textensions: extensionBagSchema\n}).strict();\n//#endregion\n//#region src/schemas/atoms/resource.ts\nconst resourceIRSchema = z.object({\n\tkind: z.literal(\"resource\"),\n\tname: z.string().optional(),\n\turi: z.string().min(1, \"Resource URI must not be empty\"),\n\tdescription: z.string().optional(),\n\tmimeType: z.string().optional(),\n\textensions: extensionBagSchema\n}).strict();\n//#endregion\n//#region src/schemas/atoms/rule.ts\nconst ruleIRSchema = z.object({\n\tkind: z.literal(\"rule\"),\n\tname: z.string().optional(),\n\tevent: hookEventSchema,\n\tmatch: canonicalToolNameSchema.or(z.string().min(1)).optional(),\n\tpolicy: z.enum([\n\t\t\"block\",\n\t\t\"allow\",\n\t\t\"warn\"\n\t]),\n\treason: z.string().optional(),\n\textensions: extensionBagSchema\n}).strict();\n//#endregion\n//#region src/schemas/atoms/tool.ts\nconst mcpServerConfigSchema = z.object({\n\tcommand: z.string().min(1).optional(),\n\targs: z.array(z.string()).optional(),\n\tenv: z.record(z.string(), z.string()).optional(),\n\truntime: z.string().min(1).optional(),\n\tentry: z.string().min(1).optional(),\n\tpackage: z.string().min(1).optional()\n}).strict().refine((data) => Boolean(data.command) || Boolean(data.runtime && (data.entry || data.package)), \"MCP config must have either \\\"command\\\" or \\\"runtime\\\" plus one of \\\"entry\\\"/\\\"package\\\"\");\nconst toolIRSchema = z.object({\n\tkind: z.literal(\"tool\"),\n\tname: z.string().min(1, \"Tool name must not be empty\"),\n\tdescription: z.string().optional(),\n\tmcp: mcpServerConfigSchema.optional(),\n\textensions: extensionBagSchema\n}).strict();\n//#endregion\n//#region src/schemas/atoms/package.ts\nconst NAME_PATTERN = /^@[a-z0-9-]+\\/[a-z0-9][a-z0-9-]*$/;\nconst SEMVER_PATTERN = /^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9.-]+)?(\\+[a-zA-Z0-9.-]+)?$/;\nconst atomIRSchema = z.discriminatedUnion(\"kind\", [\n\tinstructionIRSchema,\n\thookIRSchema,\n\ttoolIRSchema,\n\tagentIRSchema,\n\truleIRSchema,\n\tresourceIRSchema,\n\tpromptIRSchema\n]);\nconst packageIRSchema = z.object({\n\tname: z.string().min(1, \"Name must not be empty\").max(214, `Name must be 214 characters or fewer`).regex(NAME_PATTERN, \"Name must be scoped (@org/name), lowercase alphanumeric and hyphens\"),\n\tversion: z.string().regex(SEMVER_PATTERN, \"Version must be valid semver\"),\n\tdescription: z.string().max(500).optional(),\n\tatoms: z.array(atomIRSchema),\n\tincludes: z.array(z.string()).optional(),\n\tskills: z.record(z.string(), z.string()).optional(),\n\tpermissions: permissionsSchema.optional(),\n\trepository: z.string().url(\"Repository must be a valid URL\").optional(),\n\tvisibility: z.enum([\"public\", \"private\"]).optional(),\n\taudit: z.object({ min_score: z.number().min(0).max(10) }).strict().optional(),\n\tpublish: publishConfigSchema.optional()\n}).strict();\n//#endregion\n//#region src/schemas/proxy-policy.ts\nconst perToolOverrideSchema = z.object({\n\tscan: z.boolean().optional(),\n\tblockOnMatch: z.boolean().optional()\n}).strict();\nconst proxyPolicySchema = z.object({\n\tperfBudgetMs: z.number().positive().optional(),\n\tblockOnMatch: z.boolean().optional(),\n\tresetPinsOnMismatch: z.boolean().optional(),\n\tperTool: z.record(z.string(), perToolOverrideSchema).optional()\n}).strict();\n//#endregion\n//#region src/schemas/skills-lock.ts\nconst SKILL_SOURCES = [\n\t\"registry\",\n\t\"github\",\n\t\"clawhub\",\n\t\"skills_sh\",\n\t\"agentskills_il\",\n\t\"npm\",\n\t\"local\"\n];\nconst SCAN_VERDICTS = [\n\t\"pass\",\n\t\"pass_with_notes\",\n\t\"flagged\",\n\t\"fail\",\n\t\"error\"\n];\nconst lockedSkillV1Schema = z.object({\n\tresolved: z.string().url(),\n\tintegrity: z.string().regex(/^sha512-/, \"Integrity must start with sha512-\"),\n\tpermissions: permissionsSchema,\n\taudit_score: z.number().min(0).max(10).nullable()\n});\nconst skillsLockV1Schema = z.object({\n\tlockfileVersion: z.literal(1),\n\tskills: z.record(z.string(), lockedSkillV1Schema)\n});\nconst lockedSkillSchema = z.object({\n\tresolved: z.string().url(),\n\tintegrity: z.string().regex(/^sha512-/, \"Integrity must start with sha512-\"),\n\tpermissions: permissionsSchema,\n\taudit_score: z.number().min(0).max(10).nullable(),\n\tdependencies: z.record(z.string(), z.string()).optional(),\n\tsource: z.enum(SKILL_SOURCES).optional(),\n\tscan_verdict: z.enum(SCAN_VERDICTS).optional(),\n\tscanned_at: z.string().optional()\n});\nconst skillsLockSchema = z.object({\n\tlockfileVersion: z.union([z.literal(1), z.literal(2)]),\n\tskills: z.record(z.string(), lockedSkillSchema)\n});\n//#endregion\nexport { CANONICAL_TOOL_NAMES, DEFAULT_PERMISSIONS, HOOK_EVENTS, LEGACY_LOCKFILE_FILENAME, LEGACY_MANIFEST_FILENAME, LOCKFILE_FILENAME, LOCKFILE_VERSION, MANIFEST_FILENAME, MAX_DESCRIPTION_LENGTH, MAX_FILE_COUNT, MAX_NAME_LENGTH, MAX_PACKAGE_SIZE, MODEL_TIERS, PERMISSION_CATEGORIES, REGISTRY_API_VERSION, REGISTRY_URL, SCAN_VERDICTS, SKILL_SOURCES, adapterCapabilitiesSchema, adminActionSchema, agentIRSchema, atomIRSchema, atomKindSchema, canonicalToolNameSchema, compilationWarningSchema, extensionBagSchema, fileWriteSchema, filesystemPermissionsSchema, hookActionIRSchema, hookDslHandlerSchema, hookEventSchema, hookHandlerIRSchema, hookIRSchema, hookJsHandlerSchema, instructionIRSchema, isAdmin, isRemoteMcpServer, lockedSkillSchema, lockedSkillV1Schema, mcpServerConfigSchema, mcpServerSchema, modelTierSchema, networkPermissionsSchema, packageIRSchema, perToolOverrideSchema, permissionsSchema, platformAdapterMetaSchema, platformOutputSchema, promptIRSchema, proxyPolicySchema, publishManifestSchema, resourceIRSchema, ruleIRSchema, skillStatusSchema, skillsJsonSchema, skillsLockSchema, skillsLockV1Schema, supportLevelSchema, toolIRSchema, userRoleSchema, userStatusSchema };\n\n//# sourceMappingURL=index.js.map","import { createRequire } from \"node:module\";\nimport fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport crypto$1 from \"node:crypto\";\nimport { extract } from \"tar\";\n//#region \\0rolldown/runtime.js\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __commonJSMin = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);\nvar __copyProps = (to, from, except, desc) => {\n\tif (from && typeof from === \"object\" || typeof from === \"function\") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {\n\t\tkey = keys[i];\n\t\tif (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {\n\t\t\tget: ((k) => from[k]).bind(null, key),\n\t\t\tenumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable\n\t\t});\n\t}\n\treturn to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", {\n\tvalue: mod,\n\tenumerable: true\n}) : target, mod));\n//#endregion\n//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/util.js\nfunction getEnumValues(entries) {\n\tconst numericValues = Object.values(entries).filter((v) => typeof v === \"number\");\n\treturn Object.entries(entries).filter(([k, _]) => numericValues.indexOf(+k) === -1).map(([_, v]) => v);\n}\nfunction joinValues(array, separator = \"|\") {\n\treturn array.map((val) => stringifyPrimitive(val)).join(separator);\n}\nfunction jsonStringifyReplacer(_, value) {\n\tif (typeof value === \"bigint\") return value.toString();\n\treturn value;\n}\nvar Cached = class {\n\tconstructor(getter) {\n\t\tthis._getter = getter;\n\t\tthis._value = void 0;\n\t}\n\tget value() {\n\t\tconst getter = this._getter;\n\t\tif (getter !== void 0) {\n\t\t\tthis._value = getter();\n\t\t\tthis._getter = void 0;\n\t\t}\n\t\treturn this._value;\n\t}\n};\nfunction cached(getter) {\n\treturn new Cached(getter);\n}\nfunction nullish(input) {\n\treturn input === null || input === void 0;\n}\nfunction cleanRegex(source) {\n\tconst start = source.startsWith(\"^\") ? 1 : 0;\n\tconst end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n\treturn source.slice(start, end);\n}\nfunction floatSafeRemainder(val, step) {\n\tconst ratio = val / step;\n\tconst roundedRatio = Math.round(ratio);\n\tconst tolerance = 4 * Number.EPSILON * Math.max(Math.abs(ratio), 1);\n\tif (Math.abs(ratio - roundedRatio) < tolerance) return 0;\n\treturn ratio - roundedRatio;\n}\nfunction assignProp(target, prop, value) {\n\tObject.defineProperty(target, prop, {\n\t\tvalue,\n\t\twritable: true,\n\t\tenumerable: true,\n\t\tconfigurable: true\n\t});\n}\n/**\n* Whichever object a def's `shape` currently answers from: the one the caller passed until the first read, the frozen copy after it.\n*\n* Its keys and descriptors read without invoking anything, which is what lets a discriminated union check its discriminator, and the cycle walk read a shape, without resolving a getter that references the schema being constructed. A def that answers `shape` from an accessor of its own has none.\n*/\nfunction rawShape(def) {\n\tconst desc = Object.getOwnPropertyDescriptor(def, \"shape\");\n\treturn desc?.get ? desc.get.raw : desc?.value;\n}\nfunction sourceShape(schema) {\n\treturn rawShape(schema._zod.def) ?? schema._zod.def.shape;\n}\nfunction deferProp(target, key, getter) {\n\tObject.defineProperty(target, key, {\n\t\tget() {\n\t\t\tconst value = getter();\n\t\t\tassignProp(this, key, value);\n\t\t\treturn value;\n\t\t},\n\t\tenumerable: true,\n\t\tconfigurable: true\n\t});\n}\nfunction putProp(target, key, value) {\n\tif (key in target) assignProp(target, key, value);\n\telse target[key] = value;\n}\n/**\n* Copies `keys` of `source`'s shape onto `target`, each value passed through `wrap`.\n*\n* A key the source has resolved is copied through now, so the derived shape states it outright and nothing has to resolve it to learn what it holds. A key the source still defers stays deferred, and reads back through the source's own `shape`, so it resolves once and both shapes get that one schema.\n*/\nfunction mirrorShape(target, source, keys, wrap) {\n\tconst raw = sourceShape(source);\n\tfor (const key of keys) {\n\t\tconst desc = Object.getOwnPropertyDescriptor(raw, key);\n\t\tif (!desc.enumerable) continue;\n\t\tif (desc.get) deferProp(target, key, () => {\n\t\t\tconst value = source._zod.def.shape[key];\n\t\t\treturn wrap ? wrap(value, key) : value;\n\t\t});\n\t\telse putProp(target, key, wrap ? wrap(desc.value, key) : desc.value);\n\t}\n}\nfunction mirrorProps(target, source) {\n\tfor (const key of Reflect.ownKeys(source)) {\n\t\tconst desc = Object.getOwnPropertyDescriptor(source, key);\n\t\tif (!desc.enumerable) continue;\n\t\tif (desc.get) deferProp(target, key, () => source[key]);\n\t\telse putProp(target, key, desc.value);\n\t}\n}\nfunction mergeDefs(...defs) {\n\tconst mergedDescriptors = {};\n\tfor (const def of defs) Object.assign(mergedDescriptors, Object.getOwnPropertyDescriptors(def));\n\treturn Object.defineProperties({}, mergedDescriptors);\n}\nfunction esc(str) {\n\treturn JSON.stringify(str);\n}\nfunction slugify(input) {\n\treturn input.toLowerCase().trim().replace(/[^\\w\\s-]/g, \"\").replace(/[\\s_-]+/g, \"-\").replace(/^-+|-+$/g, \"\");\n}\nconst captureStackTrace = \"captureStackTrace\" in Error ? Error.captureStackTrace : (..._args) => {};\nfunction isObject(data) {\n\treturn typeof data === \"object\" && data !== null && !Array.isArray(data);\n}\nconst allowsEval = /* @__PURE__ */ cached(() => {\n\tif (globalConfig.jitless) return false;\n\tif (typeof navigator !== \"undefined\" && navigator?.userAgent?.includes(\"Cloudflare\")) return false;\n\ttry {\n\t\tnew Function(\"\");\n\t\treturn true;\n\t} catch (_) {\n\t\treturn false;\n\t}\n});\nfunction isPlainObject(o) {\n\tif (isObject(o) === false) return false;\n\tconst ctor = o.constructor;\n\tif (ctor === void 0) return true;\n\tif (typeof ctor !== \"function\") return true;\n\tconst prot = ctor.prototype;\n\tif (isObject(prot) === false) return false;\n\tif (Object.prototype.hasOwnProperty.call(prot, \"isPrototypeOf\") === false) return false;\n\treturn true;\n}\nfunction shallowClone(o) {\n\tif (isPlainObject(o)) return { ...o };\n\tif (Array.isArray(o)) return [...o];\n\tif (o instanceof Map) return new Map(o);\n\tif (o instanceof Set) return new Set(o);\n\treturn o;\n}\nconst propertyKeyTypes = /* @__PURE__ */ new Set([\n\t\"string\",\n\t\"number\",\n\t\"symbol\"\n]);\nfunction escapeRegex(str) {\n\treturn str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\nfunction clone(inst, def, params) {\n\tconst cl = new inst._zod.constr(def ?? inst._zod.def);\n\tif (!def || params?.parent) cl._zod.parent = inst;\n\treturn cl;\n}\nfunction normalizeParams(_params) {\n\tconst params = _params;\n\tif (!params) return {};\n\tif (typeof params === \"string\") return { error: () => params };\n\tif (params?.message !== void 0) {\n\t\tif (params?.error !== void 0) throw new Error(\"Cannot specify both `message` and `error` params\");\n\t\tparams.error = params.message;\n\t}\n\tdelete params.message;\n\tif (typeof params.error === \"string\") return {\n\t\t...params,\n\t\terror: () => params.error\n\t};\n\treturn params;\n}\nfunction stringifyPrimitive(value) {\n\tif (typeof value === \"bigint\") return value.toString() + \"n\";\n\tif (typeof value === \"string\") return `\"${value}\"`;\n\treturn `${value}`;\n}\nfunction optionalKeys(shape) {\n\treturn Object.keys(shape).filter((k) => {\n\t\treturn shape[k]._zod.optin !== void 0 && shape[k]._zod.optout === \"optional\";\n\t});\n}\nconst NUMBER_FORMAT_RANGES = {\n\tsafeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER],\n\tint32: [-2147483648, 2147483647],\n\tuint32: [0, 4294967295],\n\tfloat32: [-34028234663852886e22, 34028234663852886e22],\n\tfloat64: [-Number.MAX_VALUE, Number.MAX_VALUE]\n};\nconst BIGINT_FORMAT_RANGES = {\n\tint64: [/* @__PURE__ */ BigInt(\"-9223372036854775808\"), /* @__PURE__ */ BigInt(\"9223372036854775807\")],\n\tuint64: [/* @__PURE__ */ BigInt(0), /* @__PURE__ */ BigInt(\"18446744073709551615\")]\n};\nfunction pick(schema, mask) {\n\tconst currDef = schema._zod.def;\n\tconst checks = currDef.checks;\n\tif (checks && checks.length > 0) throw new Error(\".pick() cannot be used on object schemas containing refinements\");\n\tconst newShape = {};\n\tmirrorShape(newShape, schema, maskedKeys(schema, mask));\n\treturn clone(schema, mergeDefs(currDef, {\n\t\tshape: newShape,\n\t\tchecks: []\n\t}));\n}\nfunction maskedKeys(schema, mask) {\n\tconst raw = sourceShape(schema);\n\tconst keys = [];\n\tfor (const key of Reflect.ownKeys(mask)) {\n\t\tif (!Object.getOwnPropertyDescriptor(raw, key)?.enumerable) throw new Error(`Unrecognized key: \"${String(key)}\"`);\n\t\tif (mask[key]) keys.push(key);\n\t}\n\treturn keys;\n}\nfunction omit(schema, mask) {\n\tconst currDef = schema._zod.def;\n\tconst checks = currDef.checks;\n\tif (checks && checks.length > 0) throw new Error(\".omit() cannot be used on object schemas containing refinements\");\n\tconst omitted = new Set(maskedKeys(schema, mask));\n\tconst newShape = {};\n\tmirrorShape(newShape, schema, Reflect.ownKeys(sourceShape(schema)).filter((key) => !omitted.has(key)));\n\treturn clone(schema, mergeDefs(currDef, {\n\t\tshape: newShape,\n\t\tchecks: []\n\t}));\n}\nfunction extend(schema, shape) {\n\tif (!isPlainObject(shape)) throw new Error(\"Invalid input to extend: expected a plain object\");\n\tconst checks = schema._zod.def.checks;\n\tif (checks && checks.length > 0) {\n\t\tconst existingShape = sourceShape(schema);\n\t\tfor (const key of Reflect.ownKeys(shape)) if (Object.getOwnPropertyDescriptor(existingShape, key) !== void 0) throw new Error(\"Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.\");\n\t}\n\treturn clone(schema, mergeDefs(schema._zod.def, { shape: extended(schema, shape) }));\n}\nfunction extended(schema, shape) {\n\tconst newShape = {};\n\tmirrorShape(newShape, schema, Reflect.ownKeys(sourceShape(schema)));\n\tmirrorProps(newShape, shape);\n\treturn newShape;\n}\nfunction safeExtend(schema, shape) {\n\tif (!isPlainObject(shape)) throw new Error(\"Invalid input to safeExtend: expected a plain object\");\n\treturn clone(schema, mergeDefs(schema._zod.def, { shape: extended(schema, shape) }));\n}\nfunction merge(a, b) {\n\tif (!b?._zod?.def) throw new Error(\"Invalid input to merge: expected an object schema. To merge a plain shape, use `.extend()`.\");\n\tif (a._zod.def.checks?.length) throw new Error(\".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.\");\n\tconst newShape = {};\n\tmirrorShape(newShape, a, Reflect.ownKeys(sourceShape(a)));\n\tmirrorShape(newShape, b, Reflect.ownKeys(sourceShape(b)));\n\treturn clone(a, mergeDefs(a._zod.def, {\n\t\tshape: newShape,\n\t\tget catchall() {\n\t\t\treturn b._zod.def.catchall;\n\t\t},\n\t\tchecks: b._zod.def.checks ?? []\n\t}));\n}\nfunction partial(Class, schema, mask, name = \"partial\") {\n\tconst checks = schema._zod.def.checks;\n\tif (checks && checks.length > 0) throw new Error(`.${name}() cannot be used on object schemas containing refinements`);\n\tconst selected = mask ? new Set(maskedKeys(schema, mask)) : void 0;\n\tconst newShape = {};\n\tmirrorShape(newShape, schema, Reflect.ownKeys(sourceShape(schema)), Class && ((value, key) => selected && !selected.has(key) ? value : new Class({\n\t\ttype: \"optional\",\n\t\tinnerType: value\n\t})));\n\treturn clone(schema, mergeDefs(schema._zod.def, {\n\t\tshape: newShape,\n\t\tchecks: []\n\t}));\n}\nfunction required(Class, schema, mask) {\n\tconst selected = mask ? new Set(maskedKeys(schema, mask)) : void 0;\n\tconst newShape = {};\n\tmirrorShape(newShape, schema, Reflect.ownKeys(sourceShape(schema)), (value, key) => selected && !selected.has(key) ? value : new Class({\n\t\ttype: \"nonoptional\",\n\t\tinnerType: value\n\t}));\n\treturn clone(schema, mergeDefs(schema._zod.def, { shape: newShape }));\n}\nfunction aborted(x, startIndex = 0) {\n\tif (x.aborted === true) return true;\n\tfor (let i = startIndex; i < x.issues.length; i++) if (x.issues[i]?.continue !== true) return true;\n\treturn false;\n}\nfunction explicitlyAborted(x, startIndex = 0) {\n\tif (x.aborted === true) return true;\n\tfor (let i = startIndex; i < x.issues.length; i++) if (x.issues[i]?.continue === false) return true;\n\treturn false;\n}\nfunction prefixIssues(path, issues) {\n\treturn issues.map((iss) => {\n\t\tvar _a;\n\t\t(_a = iss).path ?? (_a.path = []);\n\t\tiss.path.unshift(path);\n\t\treturn iss;\n\t});\n}\nfunction unwrapMessage(message) {\n\treturn typeof message === \"string\" ? message : message?.message;\n}\n/** The leading size checks of `defChecks` that set an upper bound, each paired with it. */\nfunction sizeCaps(defChecks) {\n\tconst caps = [];\n\tfor (const ch of defChecks ?? []) {\n\t\tconst d = ch._zod.def;\n\t\tif (!/_(length|size)$|_equals$/.test(d.check)) break;\n\t\tconst max = d.maximum ?? d.length ?? d.size;\n\t\tif (max >= 0) caps.push([max, ch]);\n\t}\n\treturn caps;\n}\nfunction attachSchema(issues, start, inst) {\n\tvar _a;\n\tfor (let i = start; i < issues.length; i++) (_a = issues[i]).schema ?? (_a.schema = inst);\n}\nfunction finalizeIssue(iss, ctx, config) {\n\tvar _a;\n\tconst traits = iss.inst?._zod?.traits;\n\tif (traits?.has(\"$ZodType\")) if (traits.has(\"$ZodCheck\")) (_a = iss).schema ?? (_a.schema = iss.inst);\n\telse iss.schema = iss.inst;\n\tconst schemaError = iss.schema !== iss.inst ? iss.schema?._zod.def?.error : void 0;\n\tconst message = iss.message ? iss.message : unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ?? unwrapMessage(schemaError?.(iss)) ?? unwrapMessage(ctx?.error?.(iss)) ?? unwrapMessage(config.customError?.(iss)) ?? unwrapMessage(config.localeError?.(iss)) ?? \"Invalid input\";\n\tconst full = {};\n\tfor (const k of Object.keys(iss)) {\n\t\tif (k === \"inst\" || k === \"schema\" || k === \"continue\" || k === \"input\" || k === \"__proto__\") continue;\n\t\tfull[k] = iss[k];\n\t}\n\tfull.path ?? (full.path = []);\n\tfull.message = message;\n\tif (ctx?.reportInput) full.input = iss.input;\n\treturn full;\n}\nconst highSurrogate = /[\\uD800-\\uDBFF]/;\nfunction codePointLength(str) {\n\tconst units = str.length;\n\tif (!highSurrogate.test(str)) return units;\n\tlet count = units;\n\tfor (let i = 0; i < units - 1; i++) if ((str.charCodeAt(i) & 64512) === 55296 && (str.charCodeAt(i + 1) & 64512) === 56320) {\n\t\tcount--;\n\t\ti++;\n\t}\n\treturn count;\n}\nfunction getLengthableOrigin(input) {\n\tif (Array.isArray(input)) return \"array\";\n\tif (typeof input === \"string\") return \"string\";\n\treturn \"unknown\";\n}\nfunction parsedType(data) {\n\tconst t = typeof data;\n\tswitch (t) {\n\t\tcase \"number\": return Number.isNaN(data) ? \"nan\" : \"number\";\n\t\tcase \"object\": {\n\t\t\tif (data === null) return \"null\";\n\t\t\tif (Array.isArray(data)) return \"array\";\n\t\t\tconst obj = data;\n\t\t\tif (obj && Object.getPrototypeOf(obj) !== Object.prototype && \"constructor\" in obj && obj.constructor) return obj.constructor.name;\n\t\t}\n\t}\n\treturn t;\n}\nfunction issue(...args) {\n\tconst [iss, input, inst] = args;\n\tif (typeof iss === \"string\") return {\n\t\tmessage: iss,\n\t\tcode: \"custom\",\n\t\tinput,\n\t\tinst\n\t};\n\treturn { ...iss };\n}\n/**\n* Installs a trait's members on its prototype. Each value builds that member for the instance on first read; the built value shadows the accessor as an own property, so a detached `const { parse } = schema` keeps working.\n*\n* Call this from a `proto` initializer, which runs once per prototype — never per instance.\n*/\nfunction members(proto, table) {\n\tfor (const key in table) {\n\t\tconst desc = Object.getOwnPropertyDescriptor(table, key);\n\t\tif (desc.get) Object.defineProperty(proto, key, {\n\t\t\t...desc,\n\t\t\tenumerable: false\n\t\t});\n\t\telse defineBound(proto, key, desc.value);\n\t}\n}\n/** Shadows a prototype member with an own value, so a getter that builds from the instance runs once. */\nfunction own(inst, key, value, enumerable = true) {\n\tObject.defineProperty(inst, key, {\n\t\tconfigurable: true,\n\t\twritable: true,\n\t\tenumerable,\n\t\tvalue\n\t});\n\treturn value;\n}\n/** Like {@link own}, for a member that was never an own data property and has to stay out of `Object.keys`. */\nfunction hide(inst, key, value) {\n\treturn own(inst, key, value, false);\n}\n/** Adds members a table derives from the instance: each builds on first read and shadows as own data, and assignment shadows the same way, as when these were own properties. */\nfunction derived(computes, table) {\n\tfor (const key in computes) {\n\t\tconst compute = computes[key];\n\t\tObject.defineProperty(table, key, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tget() {\n\t\t\t\treturn own(this, key, compute(this));\n\t\t\t},\n\t\t\tset(value) {\n\t\t\t\town(this, key, value);\n\t\t\t}\n\t\t});\n\t}\n\treturn table;\n}\nfunction defineBound(proto, key, fn) {\n\tObject.defineProperty(proto, key, {\n\t\tconfigurable: true,\n\t\tget() {\n\t\t\treturn this == null ? fn : own(this, key, fn.bind(this));\n\t\t},\n\t\tset(value) {\n\t\t\town(this, key, value);\n\t\t}\n\t});\n}\n/** Returns the prototype to install on, or `undefined` if this group is already installed on it. */\nfunction claim(inst, sentinel) {\n\tconst proto = Object.getPrototypeOf(inst);\n\treturn sentinel in proto ? void 0 : proto;\n}\nlet installing;\nlet broke = false;\nconst breaker = {\n\tconfigurable: true,\n\tget() {\n\t\tbroke = true;\n\t}\n};\n/**\n* Installs a lazily-derived internal on the `_zod` prototype of `inst`'s\n* constructor, computed from the internals object itself and cached there on\n* first read. One accessor per constructor rather than one per instance.\n*/\nfunction defineLazyInternal(inst, key, compute) {\n\tconst proto = Object.getPrototypeOf(inst._zod);\n\tif (key in proto && installing !== inst._zod) {\n\t\tinstalling = void 0;\n\t\treturn;\n\t}\n\tinstalling = inst._zod;\n\tObject.defineProperty(proto, key, {\n\t\tconfigurable: true,\n\t\tget() {\n\t\t\tObject.defineProperty(this, key, breaker);\n\t\t\tconst outer = broke;\n\t\t\tbroke = false;\n\t\t\ttry {\n\t\t\t\tconst value = compute(this);\n\t\t\t\tif (broke) delete this[key];\n\t\t\t\telse Object.defineProperty(this, key, {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue\n\t\t\t\t});\n\t\t\t\tbroke = broke || outer;\n\t\t\t\treturn value;\n\t\t\t} catch (err) {\n\t\t\t\tdelete this[key];\n\t\t\t\tbroke = broke || outer;\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t},\n\t\tset(value) {\n\t\t\tObject.defineProperty(this, key, {\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true,\n\t\t\t\tvalue\n\t\t\t});\n\t\t}\n\t});\n}\n/**\n* Installs `key` on `inst`'s prototype, computed by `make` on first read and cached there as an own\n* data property. One accessor per constructor rather than one per instance, because an own accessor\n* puts every instance after the first into v8 dictionary mode. The key doubles as the sentinel.\n*/\nfunction installLazyProp(inst, key, make, enumerable) {\n\tconst proto = claim(inst, key);\n\tif (!proto) return;\n\tObject.defineProperty(proto, key, {\n\t\tconfigurable: true,\n\t\tget() {\n\t\t\tconst desc = {\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true,\n\t\t\t\tenumerable,\n\t\t\t\tvalue: void 0\n\t\t\t};\n\t\t\tObject.defineProperty(this, key, desc);\n\t\t\tdesc.value = make(this);\n\t\t\tObject.defineProperty(this, key, desc);\n\t\t\treturn desc.value;\n\t\t},\n\t\tset(value) {\n\t\t\tObject.defineProperty(this, key, {\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true,\n\t\t\t\tenumerable,\n\t\t\t\tvalue\n\t\t\t});\n\t\t}\n\t});\n}\n/** Marks the thunk `_catch` synthesises for a constant catch value. `Function.length` cannot tell that thunk from a user callback — rest and defaulted parameters both report arity 0 — and a user callback reads `ctx.error`, whose issues only finalize correctly against the caller's per-parse error map. Provenance can say what arity cannot. A plain string key rather than `Symbol.for`, whose call at module scope no bundler can prove pure — the same shape that anchored `urlCanParse` into every build. */\nconst CONSTANT_CATCH = \"~constantCatch\";\n/** Wraps a constant catch value in a thunk tagged with {@link CONSTANT_CATCH}. */\nfunction constantCatch(value) {\n\tconst fn = () => value;\n\tfn[CONSTANT_CATCH] = true;\n\treturn fn;\n}\n//#endregion\n//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/core.js\nvar _a$1;\nconst _zodDesc = {\n\tvalue: void 0,\n\tenumerable: false\n};\nlet _E = \"captureStackTrace\" in Error ? Error : null;\nfunction newError(Definition) {\n\tconst E = _E;\n\tif (E) {\n\t\tconst saved = E.stackTraceLimit;\n\t\tif (typeof saved === \"number\") {\n\t\t\ttry {\n\t\t\t\tE.stackTraceLimit = 0;\n\t\t\t} catch {\n\t\t\t\t_E = null;\n\t\t\t\treturn new Definition();\n\t\t\t}\n\t\t\ttry {\n\t\t\t\treturn new Definition();\n\t\t\t} finally {\n\t\t\t\tE.stackTraceLimit = saved;\n\t\t\t}\n\t\t}\n\t}\n\treturn new Definition();\n}\nfunction $constructor(name, initializer, proto, params) {\n\tconst zodProto = {};\n\tfunction Internals(def) {\n\t\tthis.def = def;\n\t\tthis.constr = _;\n\t\tthis.traits = /* @__PURE__ */ new Set();\n\t}\n\tInternals.prototype = zodProto;\n\tconst protoMembers = proto;\n\tconst initialized = protoMembers && /* @__PURE__ */ new WeakSet();\n\tfunction init(inst, def) {\n\t\tif (!inst._zod) {\n\t\t\t_zodDesc.value = new Internals(def);\n\t\t\ttry {\n\t\t\t\tObject.defineProperty(inst, \"_zod\", _zodDesc);\n\t\t\t} finally {\n\t\t\t\t_zodDesc.value = void 0;\n\t\t\t}\n\t\t} else if (inst._zod.traits.has(name)) return;\n\t\tinst._zod.traits.add(name);\n\t\tinitializer(inst, def);\n\t\tif (initialized) {\n\t\t\tconst own = Object.getPrototypeOf(inst);\n\t\t\tconst ctorProto = inst._zod.constr.prototype;\n\t\t\tlet up = own;\n\t\t\twhile (up && up !== ctorProto) up = Object.getPrototypeOf(up);\n\t\t\tconst target = up ?? own;\n\t\t\tif (!initialized.has(target)) {\n\t\t\t\tinitialized.add(target);\n\t\t\t\tmembers(target, protoMembers);\n\t\t\t}\n\t\t}\n\t\tconst proto = _.prototype;\n\t\tfor (const k in proto) {\n\t\t\tif (!Object.prototype.hasOwnProperty.call(proto, k)) continue;\n\t\t\tif (!(k in inst)) inst[k] = proto[k].bind(inst);\n\t\t}\n\t}\n\tconst Parent = params?.Parent ?? Object;\n\tclass Definition extends Parent {}\n\tObject.defineProperty(Definition, \"name\", { value: name });\n\tfunction _(def) {\n\t\tconst inst = params?.Parent ? newError(Definition) : this;\n\t\tinit(inst, def);\n\t\tconst deferred = inst._zod.deferred;\n\t\tif (deferred) {\n\t\t\tfor (const fn of deferred) fn();\n\t\t\tinst._zod.deferred = void 0;\n\t\t}\n\t\tconst pp = globalThis.__zod_globalConfig?.postProcessor;\n\t\tif (pp) pp(inst);\n\t\treturn inst;\n\t}\n\tObject.defineProperty(_, \"init\", { value: init });\n\tObject.defineProperty(_, Symbol.hasInstance, { value: (inst) => {\n\t\tif (params?.Parent && inst instanceof params.Parent) return true;\n\t\treturn inst?._zod?.traits?.has(name);\n\t} });\n\tObject.defineProperty(_, \"name\", { value: name });\n\treturn _;\n}\nvar $ZodAsyncError = class extends Error {\n\tconstructor() {\n\t\tsuper(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`);\n\t}\n};\nvar $ZodEncodeError = class extends Error {\n\tconstructor(name) {\n\t\tsuper(`Encountered unidirectional transform during encode: ${name}`);\n\t\tthis.name = \"ZodEncodeError\";\n\t}\n};\n(_a$1 = globalThis).__zod_globalConfig ?? (_a$1.__zod_globalConfig = {});\nconst globalConfig = globalThis.__zod_globalConfig;\nfunction config(newConfig) {\n\tif (newConfig) Object.assign(globalConfig, newConfig);\n\treturn globalConfig;\n}\n//#endregion\n//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/errors.js\nfunction _getMessage() {\n\tconst internals = this._zod;\n\tinternals.message ?? (internals.message = JSON.stringify(internals.def, jsonStringifyReplacer, 2));\n\treturn internals.message;\n}\nfunction _setMessage(value) {\n\tthis._zod.message = value;\n}\nconst _messageDesc = {\n\tget: _getMessage,\n\tset: _setMessage,\n\tenumerable: true,\n\tconfigurable: true\n};\nconst _issuesDesc = {\n\tvalue: void 0,\n\tenumerable: false\n};\nconst _installedToString = /* @__PURE__ */ new WeakSet([Object.prototype, Error.prototype]);\nconst initializer$1 = (inst, def) => {\n\tinst.name = \"$ZodError\";\n\t_issuesDesc.value = def;\n\tObject.defineProperty(inst, \"issues\", _issuesDesc);\n\t_issuesDesc.value = void 0;\n\tObject.defineProperty(inst, \"message\", _messageDesc);\n\tconst proto = Object.getPrototypeOf(inst);\n\tif (!_installedToString.has(proto)) {\n\t\t_installedToString.add(proto);\n\t\tObject.defineProperty(proto, \"toString\", {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tget() {\n\t\t\t\tconst value = () => this.message;\n\t\t\t\tObject.defineProperty(this, \"toString\", {\n\t\t\t\t\tvalue,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true\n\t\t\t\t});\n\t\t\t\treturn value;\n\t\t\t},\n\t\t\tset(value) {\n\t\t\t\tObject.defineProperty(this, \"toString\", {\n\t\t\t\t\tvalue,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n};\nconst $ZodError = $constructor(\"$ZodError\", initializer$1);\n$constructor(\"$ZodError\", initializer$1, void 0, { Parent: Error });\n/** Get-or-create `obj[key]` as an own data property. A path segment naming an inherited member\n* (\"toString\", \"constructor\") would otherwise read through to the prototype, and assigning\n* \"__proto__\" would hit the setter instead of creating a key. */\nfunction node(obj, key, make) {\n\tif (!Object.prototype.hasOwnProperty.call(obj, key)) if (key === \"__proto__\") Object.defineProperty(obj, key, {\n\t\tvalue: make(),\n\t\twritable: true,\n\t\tenumerable: true,\n\t\tconfigurable: true\n\t});\n\telse obj[key] = make();\n\treturn obj[key];\n}\nfunction flattenError(error, mapper = (issue) => issue.message) {\n\tconst fieldErrors = {};\n\tconst formErrors = [];\n\tfor (const sub of error.issues) if (sub.path.length > 0) node(fieldErrors, sub.path[0], () => []).push(mapper(sub));\n\telse formErrors.push(mapper(sub));\n\treturn {\n\t\tformErrors,\n\t\tfieldErrors\n\t};\n}\nfunction formatError(error, mapper = (issue) => issue.message) {\n\tconst fieldErrors = { _errors: [] };\n\tconst processError = (error, path = []) => {\n\t\tfor (const issue of error.issues) if (issue.code === \"invalid_union\" && issue.errors.length) issue.errors.map((issues) => processError({ issues }, [...path, ...issue.path]));\n\t\telse if (issue.code === \"invalid_key\") processError({ issues: issue.issues }, [...path, ...issue.path]);\n\t\telse if (issue.code === \"invalid_element\") processError({ issues: issue.issues }, [...path, ...issue.path]);\n\t\telse {\n\t\t\tconst fullpath = [...path, ...issue.path];\n\t\t\tif (fullpath.length === 0) fieldErrors._errors.push(mapper(issue));\n\t\t\telse {\n\t\t\t\tlet curr = fieldErrors;\n\t\t\t\tlet i = 0;\n\t\t\t\twhile (i < fullpath.length) {\n\t\t\t\t\tconst el = fullpath[i];\n\t\t\t\t\tconst terminal = i === fullpath.length - 1;\n\t\t\t\t\tif (el === \"_errors\") {\n\t\t\t\t\t\tif (terminal) curr._errors.push(mapper(issue));\n\t\t\t\t\t\ti++;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tif (!Object.prototype.hasOwnProperty.call(curr, el)) Object.defineProperty(curr, el, {\n\t\t\t\t\t\tvalue: { _errors: [] },\n\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\twritable: true,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t});\n\t\t\t\t\tconst node = curr[el];\n\t\t\t\t\tif (terminal) node._errors.push(mapper(issue));\n\t\t\t\t\tcurr = node;\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\tprocessError(error);\n\treturn fieldErrors;\n}\n//#endregion\n//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/parse.js\nfunction finalizeParams(callee, params) {\n\treturn {\n\t\tcallee: params?.callee ?? callee,\n\t\tErr: params?.Err\n\t};\n}\nconst _parse = (_Err) => {\n\tconst fn = (schema, value, _ctx, _params) => {\n\t\tconst ctx = _ctx ? {\n\t\t\t..._ctx,\n\t\t\tasync: false\n\t\t} : { async: false };\n\t\tconst result = schema._zod.run({\n\t\t\tvalue,\n\t\t\tissues: []\n\t\t}, ctx);\n\t\tif (result instanceof Promise) throw new $ZodAsyncError();\n\t\tif (result.issues.length) {\n\t\t\tconst e = new (_params?.Err ?? _Err)(result.issues.map((iss) => finalizeIssue(iss, ctx, config())));\n\t\t\tcaptureStackTrace(e, _params?.callee ?? fn);\n\t\t\tthrow e;\n\t\t}\n\t\treturn result.value;\n\t};\n\treturn fn;\n};\nconst _parseAsync = (_Err) => {\n\tconst fn = async (schema, value, _ctx, params) => {\n\t\tconst ctx = _ctx ? {\n\t\t\t..._ctx,\n\t\t\tasync: true\n\t\t} : { async: true };\n\t\tlet result = schema._zod.run({\n\t\t\tvalue,\n\t\t\tissues: []\n\t\t}, ctx);\n\t\tif (result instanceof Promise) result = await result;\n\t\tif (result.issues.length) {\n\t\t\tconst e = new (params?.Err ?? _Err)(result.issues.map((iss) => finalizeIssue(iss, ctx, config())));\n\t\t\tcaptureStackTrace(e, params?.callee ?? fn);\n\t\t\tthrow e;\n\t\t}\n\t\treturn result.value;\n\t};\n\treturn fn;\n};\nconst _safeParse = (_Err) => (schema, value, _ctx) => {\n\tconst ctx = _ctx ? {\n\t\t..._ctx,\n\t\tasync: false\n\t} : { async: false };\n\tconst result = schema._zod.run({\n\t\tvalue,\n\t\tissues: []\n\t}, ctx);\n\tif (result instanceof Promise) throw new $ZodAsyncError();\n\treturn result.issues.length ? failure(_Err, result.issues, ctx) : {\n\t\tsuccess: true,\n\t\tdata: result.value\n\t};\n};\nfunction failure(Err, issues, ctx) {\n\tlet error;\n\treturn {\n\t\tsuccess: false,\n\t\tget error() {\n\t\t\tif (!error) {\n\t\t\t\terror = new Err(issues.map((iss) => finalizeIssue(iss, ctx, config())));\n\t\t\t\tissues = void 0;\n\t\t\t\tctx = void 0;\n\t\t\t}\n\t\t\treturn error;\n\t\t},\n\t\tset error(e) {\n\t\t\terror = e;\n\t\t\tissues = void 0;\n\t\t\tctx = void 0;\n\t\t}\n\t};\n}\nconst _safeParseAsync = (_Err) => async (schema, value, _ctx) => {\n\tconst ctx = _ctx ? {\n\t\t..._ctx,\n\t\tasync: true\n\t} : { async: true };\n\tlet result = schema._zod.run({\n\t\tvalue,\n\t\tissues: []\n\t}, ctx);\n\tif (result instanceof Promise) result = await result;\n\treturn result.issues.length ? failure(_Err, result.issues, ctx) : {\n\t\tsuccess: true,\n\t\tdata: result.value\n\t};\n};\nconst COMPILE_INVALID = /* @__PURE__ */ Symbol.for(\"zod.compile.invalid\");\nconst COMPILE_FALLBACK = /* @__PURE__ */ Symbol.for(\"zod.compile.fallback\");\nconst validate = ((schema, value, _ctx) => {\n\tconst validator = schema._zod.bag.validator;\n\tif (validator !== void 0) {\n\t\tif (validator(value) !== COMPILE_INVALID) return true;\n\t\tif (validator.definite === true && _ctx === void 0) return false;\n\t}\n\treturn validateFallback(schema, value, _ctx);\n});\nfunction validateFallback(schema, value, _ctx) {\n\tconst ctx = _ctx ? {\n\t\t..._ctx,\n\t\tasync: false,\n\t\tabortEarly: true\n\t} : {\n\t\tasync: false,\n\t\tabortEarly: true\n\t};\n\tconst fallbackRun = schema._zod.bag.fallbackRun;\n\tlet result;\n\tif (fallbackRun) {\n\t\tctx[COMPILE_FALLBACK] = true;\n\t\tresult = fallbackRun({\n\t\t\tvalue,\n\t\t\tissues: []\n\t\t}, ctx);\n\t} else result = schema._zod.run({\n\t\tvalue,\n\t\tissues: []\n\t}, ctx);\n\tif (result instanceof Promise) throw new $ZodAsyncError();\n\treturn result.issues.length === 0;\n}\nconst validateAsync$1 = async (schema, value, _ctx) => {\n\tconst ctx = _ctx ? {\n\t\t..._ctx,\n\t\tasync: true,\n\t\tabortEarly: true\n\t} : {\n\t\tasync: true,\n\t\tabortEarly: true\n\t};\n\tlet result = schema._zod.run({\n\t\tvalue,\n\t\tissues: []\n\t}, ctx);\n\tif (result instanceof Promise) result = await result;\n\treturn result.issues.length === 0;\n};\nconst _encode = (_Err) => {\n\tconst parse = _parse(_Err);\n\tconst fn = (schema, value, _ctx, _params) => {\n\t\treturn parse(schema, value, _ctx ? {\n\t\t\t..._ctx,\n\t\t\tdirection: \"backward\"\n\t\t} : { direction: \"backward\" }, finalizeParams(fn, _params));\n\t};\n\treturn fn;\n};\nconst _decode = (_Err) => {\n\tconst parse = _parse(_Err);\n\tconst fn = (schema, value, _ctx, _params) => {\n\t\treturn parse(schema, value, _ctx, finalizeParams(fn, _params));\n\t};\n\treturn fn;\n};\nconst _encodeAsync = (_Err) => {\n\tconst parseAsync = _parseAsync(_Err);\n\tconst fn = async (schema, value, _ctx, _params) => {\n\t\treturn await parseAsync(schema, value, _ctx ? {\n\t\t\t..._ctx,\n\t\t\tdirection: \"backward\"\n\t\t} : { direction: \"backward\" }, finalizeParams(fn, _params));\n\t};\n\treturn fn;\n};\nconst _decodeAsync = (_Err) => {\n\tconst parseAsync = _parseAsync(_Err);\n\tconst fn = async (schema, value, _ctx, _params) => {\n\t\treturn await parseAsync(schema, value, _ctx, finalizeParams(fn, _params));\n\t};\n\treturn fn;\n};\nconst _safeEncode = (_Err) => (schema, value, _ctx) => {\n\tconst ctx = _ctx ? {\n\t\t..._ctx,\n\t\tdirection: \"backward\"\n\t} : { direction: \"backward\" };\n\treturn _safeParse(_Err)(schema, value, ctx);\n};\nconst _safeDecode = (_Err) => (schema, value, _ctx) => {\n\treturn _safeParse(_Err)(schema, value, _ctx);\n};\nconst _safeEncodeAsync = (_Err) => async (schema, value, _ctx) => {\n\tconst ctx = _ctx ? {\n\t\t..._ctx,\n\t\tdirection: \"backward\"\n\t} : { direction: \"backward\" };\n\treturn _safeParseAsync(_Err)(schema, value, ctx);\n};\nconst _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {\n\treturn _safeParseAsync(_Err)(schema, value, _ctx);\n};\n//#endregion\n//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/regexes.js\n/**\n* @deprecated CUID v1 is deprecated by its authors due to information leakage\n* (timestamps embedded in the id). Use {@link cuid2} instead.\n* See https://github.com/paralleldrive/cuid.\n*/\nconst cuid = /^[cC][0-9a-z]{6,}$/;\nconst cuid2 = /^[0-9a-z]+$/;\nconst ulid = /^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/;\nconst xid = /^[0-9a-vA-V]{20}$/;\nconst ksuid = /^[A-Za-z0-9]{27}$/;\nconst nanoid = /^[a-zA-Z0-9_-]{21}$/;\nfunction nanoidOfLength(length) {\n\treturn new RegExp(`^[a-zA-Z0-9_-]{${length}}$`);\n}\n/** ISO 8601-1 duration regex. Does not support the 8601-2 extensions like negative durations or fractional/negative components. */\nconst duration = /^P(?:(\\d+W)|(?!.*W)(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+([.,]\\d+)?S)?)?)$/;\n/** A regex for any UUID-like identifier: 8-4-4-4-12 hex pattern */\nconst guid = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/;\n/** Returns a regex for validating an RFC 9562/4122 UUID.\n*\n* @param version Optionally specify a version 1-8. If no version is specified, all versions are supported. */\nconst uuid = (version) => {\n\tif (!version) return /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;\n\treturn new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`);\n};\n/** Practical email validation */\nconst email = /^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$/;\nconst _emoji$1 = `^(?=[\\\\s\\\\S]*[\\\\p{Extended_Pictographic}\\\\p{Regional_Indicator}\\\\u20E3])[\\\\p{Extended_Pictographic}\\\\p{Emoji_Component}]+$`;\nfunction emoji() {\n\treturn new RegExp(_emoji$1, \"u\");\n}\nconst ipv4 = /^(?:(?: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 ipv6 = /^(([0-9a-fA-F]{1,4}:){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}|:))$/;\nconst cidrv4 = /^((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])\\/([0-9]|[1-2][0-9]|3[0-2])$/;\nconst cidrv6 = /^(([0-9a-fA-F]{1,4}:){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}|:))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\nconst base64 = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/;\nconst base64url = /^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2,3})?$/;\nconst httpProtocol = /^https?$/;\nconst e164 = /^\\+[1-9]\\d{6,14}$/;\nconst dateSource = `(?:(?:\\\\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])))`;\n/** Anchors a pattern source. The interpolation lives here rather than at the call site because\n* esbuild will not drop a `@__PURE__` call whose own argument interpolates a variable, but it\n* will drop `anchor(dateSource)`. Keeping it inline pinned `date` into every bundle. */\nfunction anchor(source) {\n\treturn new RegExp(`^${source}$`);\n}\nconst date = /* @__PURE__ */ anchor(dateSource);\nfunction timeSource(args) {\n\tconst hhmm = `(?:[01]\\\\d|2[0-3]):[0-5]\\\\d`;\n\treturn typeof args.precision === \"number\" ? args.precision === -1 ? `${hhmm}` : args.precision === 0 ? `${hhmm}:[0-5]\\\\d` : `${hhmm}:[0-5]\\\\d\\\\.\\\\d{${args.precision}}` : args.seconds ? `${hhmm}:[0-5]\\\\d(?:\\\\.\\\\d+)?` : `${hhmm}(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?`;\n}\nfunction time(args) {\n\treturn new RegExp(`^${timeSource(args)}$`);\n}\nfunction datetime(args) {\n\tconst opts = [\"Z\"];\n\tif (args.offset) opts.push(`([+-](?:[01]\\\\d|2[0-3]):[0-5]\\\\d)`);\n\tconst qualified = `${timeSource({\n\t\tprecision: args.precision,\n\t\tseconds: true\n\t})}(?:${opts.join(\"|\")})`;\n\tconst timeRegex = args.local ? `${qualified}|${timeSource({ precision: args.precision })}` : qualified;\n\treturn new RegExp(`^${dateSource}T(?:${timeRegex})$`);\n}\nconst anyString = /^[\\s\\S]{0,}$/;\nconst integer = /^-?\\d+$/;\nconst number$1 = /^-?\\d+(?:\\.\\d+)?$/;\nconst boolean$1 = /^(?:true|false)$/i;\nconst lowercase = /^[^A-Z]*$/;\nconst uppercase = /^[^a-z]*$/;\n//#endregion\n//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/checks.js\nconst $ZodCheck = /* @__PURE__ */ $constructor(\"$ZodCheck\", (inst, def) => {\n\tvar _a;\n\tinst._zod ?? (inst._zod = {});\n\tinst._zod.def = def;\n\t(_a = inst._zod).onattach ?? (_a.onattach = []);\n});\n/** Default `when` for length-based checks: run only on non-nullish values with a `length`. */\nconst _whenHasLength = (payload) => {\n\tconst val = payload.value;\n\treturn !nullish(val) && val.length !== void 0;\n};\nconst numericOriginMap = {\n\tnumber: \"number\",\n\tbigint: \"bigint\",\n\tobject: \"date\"\n};\nconst $ZodCheckLessThan = /* @__PURE__ */ $constructor(\"$ZodCheckLessThan\", (inst, def) => {\n\t$ZodCheck.init(inst, def);\n\tconst origin = numericOriginMap[typeof def.value];\n\tinst._zod.check = (payload) => {\n\t\tif (def.inclusive ? payload.value <= def.value : payload.value < def.value) return;\n\t\tpayload.issues.push({\n\t\t\torigin: numericOriginMap[typeof payload.value] ?? origin,\n\t\t\tcode: \"too_big\",\n\t\t\tmaximum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n\t\t\tinput: payload.value,\n\t\t\tinclusive: def.inclusive,\n\t\t\tinst,\n\t\t\tcontinue: !def.abort\n\t\t});\n\t};\n});\nconst $ZodCheckGreaterThan = /* @__PURE__ */ $constructor(\"$ZodCheckGreaterThan\", (inst, def) => {\n\t$ZodCheck.init(inst, def);\n\tconst origin = numericOriginMap[typeof def.value];\n\tinst._zod.check = (payload) => {\n\t\tif (def.inclusive ? payload.value >= def.value : payload.value > def.value) return;\n\t\tpayload.issues.push({\n\t\t\torigin: numericOriginMap[typeof payload.value] ?? origin,\n\t\t\tcode: \"too_small\",\n\t\t\tminimum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n\t\t\tinput: payload.value,\n\t\t\tinclusive: def.inclusive,\n\t\t\tinst,\n\t\t\tcontinue: !def.abort\n\t\t});\n\t};\n});\nconst $ZodCheckMultipleOf = /* @__PURE__ */ $constructor(\"$ZodCheckMultipleOf\", (inst, def) => {\n\t$ZodCheck.init(inst, def);\n\tinst._zod.check = (payload) => {\n\t\tif (typeof payload.value !== typeof def.value) throw new Error(\"Cannot mix number and bigint in multiple_of check.\");\n\t\tif (typeof payload.value === \"bigint\" ? def.value !== BigInt(0) && payload.value % def.value === BigInt(0) : floatSafeRemainder(payload.value, def.value) === 0) return;\n\t\tpayload.issues.push({\n\t\t\torigin: typeof payload.value,\n\t\t\tcode: \"not_multiple_of\",\n\t\t\tdivisor: def.value,\n\t\t\tinput: payload.value,\n\t\t\tinst,\n\t\t\tcontinue: !def.abort\n\t\t});\n\t};\n});\nconst $ZodCheckNumberFormat = /* @__PURE__ */ $constructor(\"$ZodCheckNumberFormat\", (inst, def) => {\n\t$ZodCheck.init(inst, def);\n\tdef.format = def.format || \"float64\";\n\tconst isInt = def.format?.includes(\"int\");\n\tconst origin = isInt ? \"int\" : \"number\";\n\tconst [minimum, maximum] = NUMBER_FORMAT_RANGES[def.format];\n\tinst._zod.check = (payload) => {\n\t\tconst input = payload.value;\n\t\tif (isInt) {\n\t\t\tif (!Number.isInteger(input)) {\n\t\t\t\tpayload.issues.push({\n\t\t\t\t\texpected: origin,\n\t\t\t\t\tformat: def.format,\n\t\t\t\t\tcode: \"invalid_type\",\n\t\t\t\t\tcontinue: false,\n\t\t\t\t\tinput,\n\t\t\t\t\tinst\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!Number.isSafeInteger(input)) {\n\t\t\t\tif (input > 0) payload.issues.push({\n\t\t\t\t\tinput,\n\t\t\t\t\tcode: \"too_big\",\n\t\t\t\t\tmaximum: Number.MAX_SAFE_INTEGER,\n\t\t\t\t\tnote: \"Integers must be within the safe integer range.\",\n\t\t\t\t\tinst,\n\t\t\t\t\torigin,\n\t\t\t\t\tinclusive: true,\n\t\t\t\t\tcontinue: !def.abort\n\t\t\t\t});\n\t\t\t\telse payload.issues.push({\n\t\t\t\t\tinput,\n\t\t\t\t\tcode: \"too_small\",\n\t\t\t\t\tminimum: Number.MIN_SAFE_INTEGER,\n\t\t\t\t\tnote: \"Integers must be within the safe integer range.\",\n\t\t\t\t\tinst,\n\t\t\t\t\torigin,\n\t\t\t\t\tinclusive: true,\n\t\t\t\t\tcontinue: !def.abort\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (input < minimum) payload.issues.push({\n\t\t\torigin: \"number\",\n\t\t\tinput,\n\t\t\tcode: \"too_small\",\n\t\t\tminimum,\n\t\t\tinclusive: true,\n\t\t\tinst,\n\t\t\tcontinue: !def.abort\n\t\t});\n\t\tif (input > maximum) payload.issues.push({\n\t\t\torigin: \"number\",\n\t\t\tinput,\n\t\t\tcode: \"too_big\",\n\t\t\tmaximum,\n\t\t\tinclusive: true,\n\t\t\tinst,\n\t\t\tcontinue: !def.abort\n\t\t});\n\t};\n});\nconst $ZodCheckMaxLength = /* @__PURE__ */ $constructor(\"$ZodCheckMaxLength\", (inst, def) => {\n\tvar _a;\n\t$ZodCheck.init(inst, def);\n\t(_a = inst._zod.def).when ?? (_a.when = _whenHasLength);\n\tinst._zod.check = (payload) => {\n\t\tconst input = payload.value;\n\t\tconst units = input.length;\n\t\tif ((typeof input === \"string\" && units > def.maximum ? codePointLength(input) : units) <= def.maximum) return;\n\t\tconst origin = getLengthableOrigin(input);\n\t\tpayload.issues.push({\n\t\t\torigin,\n\t\t\tcode: \"too_big\",\n\t\t\tmaximum: def.maximum,\n\t\t\tinclusive: true,\n\t\t\tinput,\n\t\t\tinst,\n\t\t\tcontinue: !def.abort\n\t\t});\n\t};\n});\nconst $ZodCheckMinLength = /* @__PURE__ */ $constructor(\"$ZodCheckMinLength\", (inst, def) => {\n\tvar _a;\n\t$ZodCheck.init(inst, def);\n\t(_a = inst._zod.def).when ?? (_a.when = _whenHasLength);\n\tinst._zod.check = (payload) => {\n\t\tconst input = payload.value;\n\t\tconst units = input.length;\n\t\tif ((typeof input === \"string\" && units >= def.minimum && units < def.minimum * 2 ? codePointLength(input) : units) >= def.minimum) return;\n\t\tconst origin = getLengthableOrigin(input);\n\t\tpayload.issues.push({\n\t\t\torigin,\n\t\t\tcode: \"too_small\",\n\t\t\tminimum: def.minimum,\n\t\t\tinclusive: true,\n\t\t\tinput,\n\t\t\tinst,\n\t\t\tcontinue: !def.abort\n\t\t});\n\t};\n});\nconst $ZodCheckLengthEquals = /* @__PURE__ */ $constructor(\"$ZodCheckLengthEquals\", (inst, def) => {\n\tvar _a;\n\t$ZodCheck.init(inst, def);\n\t(_a = inst._zod.def).when ?? (_a.when = _whenHasLength);\n\tinst._zod.check = (payload) => {\n\t\tconst input = payload.value;\n\t\tconst units = input.length;\n\t\tconst length = typeof input === \"string\" && units >= def.length && units <= def.length * 2 ? codePointLength(input) : units;\n\t\tif (length === def.length) return;\n\t\tconst origin = getLengthableOrigin(input);\n\t\tconst tooBig = length > def.length;\n\t\tpayload.issues.push({\n\t\t\torigin,\n\t\t\t...tooBig ? {\n\t\t\t\tcode: \"too_big\",\n\t\t\t\tmaximum: def.length\n\t\t\t} : {\n\t\t\t\tcode: \"too_small\",\n\t\t\t\tminimum: def.length\n\t\t\t},\n\t\t\tinclusive: true,\n\t\t\texact: true,\n\t\t\tinput: payload.value,\n\t\t\tinst,\n\t\t\tcontinue: !def.abort\n\t\t});\n\t};\n});\nconst $ZodCheckStringFormat = /* @__PURE__ */ $constructor(\"$ZodCheckStringFormat\", (inst, def) => {\n\tvar _a, _b;\n\t$ZodCheck.init(inst, def);\n\tif (def.pattern) (_a = inst._zod).check ?? (_a.check = (payload) => {\n\t\tdef.pattern.lastIndex = 0;\n\t\tif (def.pattern.test(payload.value)) return;\n\t\tpayload.issues.push({\n\t\t\torigin: \"string\",\n\t\t\tcode: \"invalid_format\",\n\t\t\tformat: def.format,\n\t\t\tinput: payload.value,\n\t\t\t...def.pattern ? { pattern: def.pattern.toString() } : {},\n\t\t\tinst,\n\t\t\tcontinue: !def.abort\n\t\t});\n\t});\n\telse (_b = inst._zod).check ?? (_b.check = () => {});\n});\nconst $ZodCheckRegex = /* @__PURE__ */ $constructor(\"$ZodCheckRegex\", (inst, def) => {\n\t$ZodCheckStringFormat.init(inst, def);\n\tinst._zod.check = (payload) => {\n\t\tdef.pattern.lastIndex = 0;\n\t\tif (def.pattern.test(payload.value)) return;\n\t\tpayload.issues.push({\n\t\t\torigin: \"string\",\n\t\t\tcode: \"invalid_format\",\n\t\t\tformat: \"regex\",\n\t\t\tinput: payload.value,\n\t\t\tpattern: def.pattern.toString(),\n\t\t\tinst,\n\t\t\tcontinue: !def.abort\n\t\t});\n\t};\n});\nconst $ZodCheckLowerCase = /* @__PURE__ */ $constructor(\"$ZodCheckLowerCase\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = lowercase);\n\t$ZodCheckStringFormat.init(inst, def);\n});\nconst $ZodCheckUpperCase = /* @__PURE__ */ $constructor(\"$ZodCheckUpperCase\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = uppercase);\n\t$ZodCheckStringFormat.init(inst, def);\n});\nconst $ZodCheckIncludes = /* @__PURE__ */ $constructor(\"$ZodCheckIncludes\", (inst, def) => {\n\t$ZodCheck.init(inst, def);\n\tconst escapedRegex = escapeRegex(def.includes);\n\tdef.pattern = new RegExp(typeof def.position === \"number\" ? `^.{${def.position},}${escapedRegex}` : escapedRegex);\n\tinst._zod.check = (payload) => {\n\t\tif (payload.value.includes(def.includes, def.position)) return;\n\t\tpayload.issues.push({\n\t\t\torigin: \"string\",\n\t\t\tcode: \"invalid_format\",\n\t\t\tformat: \"includes\",\n\t\t\tincludes: def.includes,\n\t\t\tinput: payload.value,\n\t\t\tinst,\n\t\t\tcontinue: !def.abort\n\t\t});\n\t};\n});\nconst $ZodCheckStartsWith = /* @__PURE__ */ $constructor(\"$ZodCheckStartsWith\", (inst, def) => {\n\t$ZodCheck.init(inst, def);\n\tconst pattern = new RegExp(`^${escapeRegex(def.prefix)}.*`);\n\tdef.pattern ?? (def.pattern = pattern);\n\tinst._zod.check = (payload) => {\n\t\tif (payload.value.startsWith(def.prefix)) return;\n\t\tpayload.issues.push({\n\t\t\torigin: \"string\",\n\t\t\tcode: \"invalid_format\",\n\t\t\tformat: \"starts_with\",\n\t\t\tprefix: def.prefix,\n\t\t\tinput: payload.value,\n\t\t\tinst,\n\t\t\tcontinue: !def.abort\n\t\t});\n\t};\n});\nconst $ZodCheckEndsWith = /* @__PURE__ */ $constructor(\"$ZodCheckEndsWith\", (inst, def) => {\n\t$ZodCheck.init(inst, def);\n\tconst pattern = new RegExp(`.*${escapeRegex(def.suffix)}$`);\n\tdef.pattern ?? (def.pattern = pattern);\n\tinst._zod.check = (payload) => {\n\t\tif (payload.value.endsWith(def.suffix)) return;\n\t\tpayload.issues.push({\n\t\t\torigin: \"string\",\n\t\t\tcode: \"invalid_format\",\n\t\t\tformat: \"ends_with\",\n\t\t\tsuffix: def.suffix,\n\t\t\tinput: payload.value,\n\t\t\tinst,\n\t\t\tcontinue: !def.abort\n\t\t});\n\t};\n});\nconst $ZodCheckOverwrite = /* @__PURE__ */ $constructor(\"$ZodCheckOverwrite\", (inst, def) => {\n\t$ZodCheck.init(inst, def);\n\tinst._zod.check = (payload) => {\n\t\tpayload.value = def.tx(payload.value);\n\t};\n});\n//#endregion\n//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/doc.js\nvar Doc = class {\n\tconstructor(args = [], closed = {}) {\n\t\tthis.content = [];\n\t\tthis.indent = 0;\n\t\tthis.args = args;\n\t\tthis.closed = closed;\n\t}\n\tindented(fn) {\n\t\tthis.indent += 1;\n\t\ttry {\n\t\t\tfn(this);\n\t\t} finally {\n\t\t\tthis.indent -= 1;\n\t\t}\n\t}\n\twrite(arg) {\n\t\tif (typeof arg === \"function\") {\n\t\t\targ(this, { execution: \"sync\" });\n\t\t\targ(this, { execution: \"async\" });\n\t\t\treturn;\n\t\t}\n\t\tconst lines = arg.split(\"\\n\").filter((x) => x);\n\t\tconst minIndent = Math.min(...lines.map((x) => x.length - x.trimStart().length));\n\t\tconst dedented = lines.map((x) => x.slice(minIndent)).map((x) => \" \".repeat(this.indent * 2) + x);\n\t\tfor (const line of dedented) this.content.push(line);\n\t}\n\tcompile() {\n\t\tconst F = Function;\n\t\tconst content = this?.content ?? [``];\n\t\treturn new F(...Object.keys(this.closed), `return function (${this.args.join(\", \")}) {\\n${content.join(\"\\n\")}\\n};`)(...Object.values(this.closed));\n\t}\n};\n//#endregion\n//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/versions.js\nconst version = {\n\tmajor: 4,\n\tminor: 6,\n\tpatch: 7\n};\n//#endregion\n//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/schemas.js\nconst $ZodType = /* @__PURE__ */ $constructor(\"$ZodType\", (inst, def) => {\n\tvar _a;\n\tinst ?? (inst = {});\n\tinst._zod.def = def;\n\tinst._zod.bag = inst._zod.bag || {};\n\tinst._zod.version = version;\n\tconst defChecks = inst._zod.def.checks;\n\tconst checks = inst._zod.traits.has(\"$ZodCheck\") ? [inst, ...defChecks ?? []] : defChecks?.length ? [...defChecks] : [];\n\tfor (const ch of checks) for (const fn of ch._zod.onattach) fn(inst);\n\tif (checks.length === 0) {\n\t\t(_a = inst._zod).deferred ?? (_a.deferred = []);\n\t\tinst._zod.deferred?.push(() => {\n\t\t\tinst._zod.run = inst._zod.parse;\n\t\t});\n\t} else {\n\t\tconst runChecks = (payload, checks, ctx) => {\n\t\t\tif (payload.memo) return payload;\n\t\t\tlet isAborted = aborted(payload);\n\t\t\tlet asyncResult;\n\t\t\tfor (const ch of checks) {\n\t\t\t\tif (ch._zod.def.when) {\n\t\t\t\t\tif (explicitlyAborted(payload)) continue;\n\t\t\t\t\tif (!ch._zod.def.when(payload)) continue;\n\t\t\t\t} else if (isAborted) continue;\n\t\t\t\tconst currLen = payload.issues.length;\n\t\t\t\tconst _ = ch._zod.check(payload);\n\t\t\t\tif (_ instanceof Promise && ctx?.async === false) throw new $ZodAsyncError();\n\t\t\t\tif (asyncResult || _ instanceof Promise) asyncResult = (asyncResult ?? Promise.resolve()).then(async () => {\n\t\t\t\t\tawait _;\n\t\t\t\t\tif (payload.issues.length === currLen) return;\n\t\t\t\t\tattachSchema(payload.issues, currLen, inst);\n\t\t\t\t\tif (!isAborted) isAborted = aborted(payload, currLen);\n\t\t\t\t});\n\t\t\t\telse {\n\t\t\t\t\tif (payload.issues.length === currLen) continue;\n\t\t\t\t\tattachSchema(payload.issues, currLen, inst);\n\t\t\t\t\tif (!isAborted) isAborted = aborted(payload, currLen);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (asyncResult) return asyncResult.then(() => {\n\t\t\t\treturn payload;\n\t\t\t});\n\t\t\treturn payload;\n\t\t};\n\t\tconst handleCanaryResult = (canary, payload, ctx) => {\n\t\t\tif (aborted(canary)) {\n\t\t\t\tcanary.aborted = true;\n\t\t\t\treturn canary;\n\t\t\t}\n\t\t\tconst checkResult = runChecks(payload, checks, ctx);\n\t\t\tif (checkResult instanceof Promise) {\n\t\t\t\tif (ctx.async === false) throw new $ZodAsyncError();\n\t\t\t\treturn checkResult.then((checkResult) => inst._zod.parse(checkResult, ctx));\n\t\t\t}\n\t\t\treturn inst._zod.parse(checkResult, ctx);\n\t\t};\n\t\tinst._zod.run = (payload, ctx) => {\n\t\t\tif (ctx.skipChecks) return inst._zod.parse(payload, ctx);\n\t\t\tif (ctx.direction === \"backward\") {\n\t\t\t\tconst canary = inst._zod.parse({\n\t\t\t\t\tvalue: payload.value,\n\t\t\t\t\tissues: []\n\t\t\t\t}, {\n\t\t\t\t\t...ctx,\n\t\t\t\t\tskipChecks: true\n\t\t\t\t});\n\t\t\t\tif (canary instanceof Promise) return canary.then((canary) => {\n\t\t\t\t\treturn handleCanaryResult(canary, payload, ctx);\n\t\t\t\t});\n\t\t\t\treturn handleCanaryResult(canary, payload, ctx);\n\t\t\t}\n\t\t\tconst result = inst._zod.parse(payload, ctx);\n\t\t\tif (result instanceof Promise) {\n\t\t\t\tif (ctx.async === false) throw new $ZodAsyncError();\n\t\t\t\treturn result.then((result) => runChecks(result, checks, ctx));\n\t\t\t}\n\t\t\treturn runChecks(result, checks, ctx);\n\t\t};\n\t}\n}, {\n\tget \"~standard\"() {\n\t\treturn hide(this, \"~standard\", standardProps(this));\n\t},\n\tset \"~standard\"(value) {\n\t\town(this, \"~standard\", value);\n\t}\n});\n/** The Standard Schema surface for `inst`. Shared so wrappers can extend it without forcing it. */\nconst toStandardResult = (r, ctx) => r.issues.length ? { issues: r.issues.map((iss) => finalizeIssue(iss, ctx, config())) } : { value: r.value };\nasync function validateAsync(inst, value) {\n\tconst ctx = { async: true };\n\treturn toStandardResult(await inst._zod.run({\n\t\tvalue,\n\t\tissues: []\n\t}, ctx), ctx);\n}\nfunction standardProps(inst) {\n\treturn {\n\t\tvalidate: (value) => {\n\t\t\tconst ctx = { async: false };\n\t\t\ttry {\n\t\t\t\tconst r = inst._zod.run({\n\t\t\t\t\tvalue,\n\t\t\t\t\tissues: []\n\t\t\t\t}, ctx);\n\t\t\t\tif (!(r instanceof Promise)) return toStandardResult(r, ctx);\n\t\t\t} catch (_) {}\n\t\t\treturn validateAsync(inst, value);\n\t\t},\n\t\tvendor: \"zod\",\n\t\tversion: 1\n\t};\n}\nconst $ZodString = /* @__PURE__ */ $constructor(\"$ZodString\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tinst._zod.pattern = def.pattern ?? anyString;\n\tinst._zod.parse = (payload, _) => {\n\t\tif (def.coerce) try {\n\t\t\tpayload.value = String(payload.value);\n\t\t} catch (_) {}\n\t\tif (typeof payload.value === \"string\") return payload;\n\t\tpayload.issues.push({\n\t\t\texpected: \"string\",\n\t\t\tcode: \"invalid_type\",\n\t\t\tinput: payload.value,\n\t\t\tinst\n\t\t});\n\t\treturn payload;\n\t};\n});\nconst $ZodStringFormat = /* @__PURE__ */ $constructor(\"$ZodStringFormat\", (inst, def) => {\n\t$ZodCheckStringFormat.init(inst, def);\n\t$ZodString.init(inst, def);\n});\nconst $ZodGUID = /* @__PURE__ */ $constructor(\"$ZodGUID\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = guid);\n\t$ZodStringFormat.init(inst, def);\n});\nconst $ZodUUID = /* @__PURE__ */ $constructor(\"$ZodUUID\", (inst, def) => {\n\tif (def.version) {\n\t\tconst v = {\n\t\t\tv1: 1,\n\t\t\tv2: 2,\n\t\t\tv3: 3,\n\t\t\tv4: 4,\n\t\t\tv5: 5,\n\t\t\tv6: 6,\n\t\t\tv7: 7,\n\t\t\tv8: 8\n\t\t}[def.version];\n\t\tif (v === void 0) throw new Error(`Invalid UUID version: \"${def.version}\"`);\n\t\tdef.pattern ?? (def.pattern = uuid(v));\n\t} else def.pattern ?? (def.pattern = uuid());\n\t$ZodStringFormat.init(inst, def);\n});\nconst $ZodEmail = /* @__PURE__ */ $constructor(\"$ZodEmail\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = email);\n\t$ZodStringFormat.init(inst, def);\n});\nfunction canParseURL(input) {\n\ttry {\n\t\tif (typeof URL !== \"undefined\" && typeof URL.canParse === \"function\") return URL.canParse(input);\n\t\tnew URL(input);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\nfunction validateURL(trimmed, def) {\n\tif (!(\"normalize\" in def) && !(\"hostname\" in def) && !(\"protocol\" in def)) return canParseURL(trimmed) || 2;\n\treturn parseURLObject(trimmed, def);\n}\n/** Parses a URL while preserving the non-normalizing HTTP guard. */\nfunction parseURLObject(trimmed, def) {\n\tif (!def.normalize && def.protocol?.source === httpProtocol.source && !/^https?:\\/\\//i.test(trimmed)) return 1;\n\ttry {\n\t\tif (typeof URL !== \"undefined\") {\n\t\t\tconst URLStatic = URL;\n\t\t\tif (typeof URLStatic.parse === \"function\") return URLStatic.parse(trimmed) ?? 2;\n\t\t}\n\t\treturn new URL(trimmed);\n\t} catch {\n\t\treturn 2;\n\t}\n}\nconst asciiTabOrNewline = /[\\t\\n\\r]/g;\n/** The URL parser deletes every ASCII tab, LF and CR from its input before it parses, so `new URL(\"https://exa\\nmple.com\")` reports on `example.com`. Applying the same deletion to the returned value closes the half of that divergence which can move the host; the parser's other rewrite, stripping C0 controls at the edges, cannot. */\nfunction stripTabAndNewline(value) {\n\treturn value.replace(asciiTabOrNewline, \"\");\n}\nfunction urlHostnameOk(url, hostname) {\n\thostname.lastIndex = 0;\n\treturn hostname.test(url.hostname);\n}\nfunction urlProtocolOk(url, protocol) {\n\tprotocol.lastIndex = 0;\n\treturn protocol.test(url.protocol.endsWith(\":\") ? url.protocol.slice(0, -1) : url.protocol);\n}\nconst $ZodURL = /* @__PURE__ */ $constructor(\"$ZodURL\", (inst, def) => {\n\t$ZodStringFormat.init(inst, def);\n\tinst._zod.check = (payload) => {\n\t\ttry {\n\t\t\tconst trimmed = payload.value.trim();\n\t\t\tconst url = validateURL(trimmed, def);\n\t\t\tif (url === 1) {\n\t\t\t\tpayload.issues.push({\n\t\t\t\t\tcode: \"invalid_format\",\n\t\t\t\t\tformat: \"url\",\n\t\t\t\t\tnote: \"Invalid URL format\",\n\t\t\t\t\tinput: payload.value,\n\t\t\t\t\tinst,\n\t\t\t\t\tcontinue: !def.abort\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (url === 2) {\n\t\t\t\tpayload.issues.push({\n\t\t\t\t\tcode: \"invalid_format\",\n\t\t\t\t\tformat: \"url\",\n\t\t\t\t\tinput: payload.value,\n\t\t\t\t\tinst,\n\t\t\t\t\tcontinue: !def.abort\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (url === true) {\n\t\t\t\tpayload.value = stripTabAndNewline(trimmed);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (def.hostname && !urlHostnameOk(url, def.hostname)) payload.issues.push({\n\t\t\t\tcode: \"invalid_format\",\n\t\t\t\tformat: \"url\",\n\t\t\t\tnote: \"Invalid hostname\",\n\t\t\t\tpattern: def.hostname.source,\n\t\t\t\tinput: payload.value,\n\t\t\t\tinst,\n\t\t\t\tcontinue: !def.abort\n\t\t\t});\n\t\t\tif (def.protocol && !urlProtocolOk(url, def.protocol)) payload.issues.push({\n\t\t\t\tcode: \"invalid_format\",\n\t\t\t\tformat: \"url\",\n\t\t\t\tnote: \"Invalid protocol\",\n\t\t\t\tpattern: def.protocol.source,\n\t\t\t\tinput: payload.value,\n\t\t\t\tinst,\n\t\t\t\tcontinue: !def.abort\n\t\t\t});\n\t\t\tpayload.value = def.normalize ? url.href : stripTabAndNewline(trimmed);\n\t\t\treturn;\n\t\t} catch (_) {\n\t\t\tpayload.issues.push({\n\t\t\t\tcode: \"invalid_format\",\n\t\t\t\tformat: \"url\",\n\t\t\t\tinput: payload.value,\n\t\t\t\tinst,\n\t\t\t\tcontinue: !def.abort\n\t\t\t});\n\t\t}\n\t};\n});\nconst $ZodEmoji = /* @__PURE__ */ $constructor(\"$ZodEmoji\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = emoji());\n\t$ZodStringFormat.init(inst, def);\n});\nconst $ZodNanoID = /* @__PURE__ */ $constructor(\"$ZodNanoID\", (inst, def) => {\n\tif (def.length !== void 0 && (!Number.isInteger(def.length) || def.length < 1)) throw new Error(`Invalid nanoid length: ${def.length}`);\n\tdef.pattern ?? (def.pattern = def.length === void 0 ? nanoid : nanoidOfLength(def.length));\n\t$ZodStringFormat.init(inst, def);\n});\n/**\n* @deprecated CUID v1 is deprecated by its authors due to information leakage\n* (timestamps embedded in the id). Use {@link $ZodCUID2} instead.\n* See https://github.com/paralleldrive/cuid.\n*/\nconst $ZodCUID = /* @__PURE__ */ $constructor(\"$ZodCUID\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = cuid);\n\t$ZodStringFormat.init(inst, def);\n});\nconst $ZodCUID2 = /* @__PURE__ */ $constructor(\"$ZodCUID2\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = cuid2);\n\t$ZodStringFormat.init(inst, def);\n});\nconst $ZodULID = /* @__PURE__ */ $constructor(\"$ZodULID\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = ulid);\n\t$ZodStringFormat.init(inst, def);\n});\nconst $ZodXID = /* @__PURE__ */ $constructor(\"$ZodXID\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = xid);\n\t$ZodStringFormat.init(inst, def);\n});\nconst $ZodKSUID = /* @__PURE__ */ $constructor(\"$ZodKSUID\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = ksuid);\n\t$ZodStringFormat.init(inst, def);\n});\nconst $ZodISODateTime = /* @__PURE__ */ $constructor(\"$ZodISODateTime\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = datetime(def));\n\t$ZodStringFormat.init(inst, def);\n});\nconst $ZodISODate = /* @__PURE__ */ $constructor(\"$ZodISODate\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = date);\n\t$ZodStringFormat.init(inst, def);\n});\nconst $ZodISOTime = /* @__PURE__ */ $constructor(\"$ZodISOTime\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = time(def));\n\t$ZodStringFormat.init(inst, def);\n});\nconst $ZodISODuration = /* @__PURE__ */ $constructor(\"$ZodISODuration\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = duration);\n\t$ZodStringFormat.init(inst, def);\n});\nconst $ZodIPv4 = /* @__PURE__ */ $constructor(\"$ZodIPv4\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = ipv4);\n\t$ZodStringFormat.init(inst, def);\n});\n/** An IPv6 address is written with hex digits, colons and dots, and nothing else. The guard is what makes the check below an IPv6 check: `new URL(\"http://[...]\")` parses an authority, not an address, so `@` and `\\` re-delimit it and `\"::@1\\\\\"` validates against the host `0.0.0.1`. The URL parser also deletes ASCII tab, LF and CR rather than failing, which is how `\"::1\\n\"` validated as `::1`. */\nconst ipv6Alphabet = /^[0-9a-fA-F:.]+$/;\nfunction isValidIPv6(value) {\n\tif (!ipv6Alphabet.test(value)) return false;\n\treturn canParseURL(`http://[${value}]`);\n}\nconst $ZodIPv6 = /* @__PURE__ */ $constructor(\"$ZodIPv6\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = ipv6);\n\t$ZodStringFormat.init(inst, def);\n\tinst._zod.check = (payload) => {\n\t\tif (!isValidIPv6(payload.value)) payload.issues.push({\n\t\t\tcode: \"invalid_format\",\n\t\t\tformat: \"ipv6\",\n\t\t\tinput: payload.value,\n\t\t\tinst,\n\t\t\tcontinue: !def.abort\n\t\t});\n\t};\n});\nconst $ZodCIDRv4 = /* @__PURE__ */ $constructor(\"$ZodCIDRv4\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = cidrv4);\n\t$ZodStringFormat.init(inst, def);\n});\nfunction isValidCIDRv6(value) {\n\tconst parts = value.split(\"/\");\n\tif (parts.length !== 2) return false;\n\tconst [address, prefix] = parts;\n\tif (!prefix) return false;\n\tconst prefixNum = Number(prefix);\n\tif (`${prefixNum}` !== prefix) return false;\n\tif (prefixNum < 0 || prefixNum > 128) return false;\n\treturn isValidIPv6(address);\n}\nconst $ZodCIDRv6 = /* @__PURE__ */ $constructor(\"$ZodCIDRv6\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = cidrv6);\n\t$ZodStringFormat.init(inst, def);\n\tinst._zod.check = (payload) => {\n\t\tif (!isValidCIDRv6(payload.value)) payload.issues.push({\n\t\t\tcode: \"invalid_format\",\n\t\t\tformat: \"cidrv6\",\n\t\t\tinput: payload.value,\n\t\t\tinst,\n\t\t\tcontinue: !def.abort\n\t\t});\n\t};\n});\nfunction isValidBase64(data) {\n\tif (data === \"\") return true;\n\tif (/\\s/.test(data)) return false;\n\tif (data.length % 4 !== 0) return false;\n\ttry {\n\t\tatob(data);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\nconst base64Charset = /^[0-9a-zA-Z+/]*={0,2}$/;\nconst $ZodBase64 = /* @__PURE__ */ $constructor(\"$ZodBase64\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = base64Charset);\n\t$ZodStringFormat.init(inst, def);\n\tinst._zod.check = (payload) => {\n\t\tif (isValidBase64(payload.value)) return;\n\t\tpayload.issues.push({\n\t\t\tcode: \"invalid_format\",\n\t\t\tformat: \"base64\",\n\t\t\tinput: payload.value,\n\t\t\tinst,\n\t\t\tcontinue: !def.abort\n\t\t});\n\t};\n});\nconst base64urlCharset = /^[A-Za-z0-9_-]*$/;\nfunction isValidBase64URL(data) {\n\tif (!base64urlCharset.test(data)) return false;\n\tconst base64 = data.replace(/[-_]/g, (c) => c === \"-\" ? \"+\" : \"/\");\n\treturn isValidBase64(base64.padEnd(Math.ceil(base64.length / 4) * 4, \"=\"));\n}\nconst $ZodBase64URL = /* @__PURE__ */ $constructor(\"$ZodBase64URL\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = base64urlCharset);\n\t$ZodStringFormat.init(inst, def);\n\tinst._zod.check = (payload) => {\n\t\tif (isValidBase64URL(payload.value)) return;\n\t\tpayload.issues.push({\n\t\t\tcode: \"invalid_format\",\n\t\t\tformat: \"base64url\",\n\t\t\tinput: payload.value,\n\t\t\tinst,\n\t\t\tcontinue: !def.abort\n\t\t});\n\t};\n});\nconst $ZodE164 = /* @__PURE__ */ $constructor(\"$ZodE164\", (inst, def) => {\n\tdef.pattern ?? (def.pattern = e164);\n\t$ZodStringFormat.init(inst, def);\n});\nfunction isValidJWT(token, algorithm = null) {\n\ttry {\n\t\tconst tokensParts = token.split(\".\");\n\t\tif (tokensParts.length !== 3) return false;\n\t\tconst [header] = tokensParts;\n\t\tif (!header) return false;\n\t\tconst parsedHeader = JSON.parse(atob(header));\n\t\tif (\"typ\" in parsedHeader && parsedHeader?.typ !== \"JWT\") return false;\n\t\tif (!parsedHeader.alg) return false;\n\t\tif (algorithm && (!(\"alg\" in parsedHeader) || parsedHeader.alg !== algorithm)) return false;\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\nconst $ZodJWT = /* @__PURE__ */ $constructor(\"$ZodJWT\", (inst, def) => {\n\t$ZodStringFormat.init(inst, def);\n\tinst._zod.check = (payload) => {\n\t\tif (isValidJWT(payload.value, def.alg)) return;\n\t\tpayload.issues.push({\n\t\t\tcode: \"invalid_format\",\n\t\t\tformat: \"jwt\",\n\t\t\tinput: payload.value,\n\t\t\tinst,\n\t\t\tcontinue: !def.abort\n\t\t});\n\t};\n});\nconst $ZodNumber = /* @__PURE__ */ $constructor(\"$ZodNumber\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tinst._zod.pattern = number$1;\n\tinst._zod.parse = (payload, _ctx) => {\n\t\tif (def.coerce) try {\n\t\t\tpayload.value = Number(payload.value);\n\t\t} catch (_) {}\n\t\tconst input = payload.value;\n\t\tif (typeof input === \"number\" && !Number.isNaN(input) && Number.isFinite(input)) return payload;\n\t\tconst received = typeof input === \"number\" ? Number.isNaN(input) ? \"NaN\" : !Number.isFinite(input) ? String(input) : void 0 : void 0;\n\t\tpayload.issues.push({\n\t\t\texpected: \"number\",\n\t\t\tcode: \"invalid_type\",\n\t\t\tinput,\n\t\t\tinst,\n\t\t\t...received ? { received } : {}\n\t\t});\n\t\treturn payload;\n\t};\n});\nconst $ZodNumberFormat = /* @__PURE__ */ $constructor(\"$ZodNumberFormat\", (inst, def) => {\n\t$ZodCheckNumberFormat.init(inst, def);\n\t$ZodNumber.init(inst, def);\n});\nconst $ZodBoolean = /* @__PURE__ */ $constructor(\"$ZodBoolean\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tinst._zod.pattern = boolean$1;\n\tinst._zod.parse = (payload, _ctx) => {\n\t\tif (def.coerce) try {\n\t\t\tpayload.value = Boolean(payload.value);\n\t\t} catch (_) {}\n\t\tconst input = payload.value;\n\t\tif (typeof input === \"boolean\") return payload;\n\t\tpayload.issues.push({\n\t\t\texpected: \"boolean\",\n\t\t\tcode: \"invalid_type\",\n\t\t\tinput,\n\t\t\tinst\n\t\t});\n\t\treturn payload;\n\t};\n});\nconst $ZodUnknown = /* @__PURE__ */ $constructor(\"$ZodUnknown\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tinst._zod.parse = (payload) => payload;\n});\nconst $ZodNever = /* @__PURE__ */ $constructor(\"$ZodNever\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tinst._zod.parse = (payload, _ctx) => {\n\t\tpayload.issues.push({\n\t\t\texpected: \"never\",\n\t\t\tcode: \"invalid_type\",\n\t\t\tinput: payload.value,\n\t\t\tinst\n\t\t});\n\t\treturn payload;\n\t};\n});\nfunction capSize(inst, size) {\n\tconst caps = sizeCaps(inst._zod.def.checks);\n\tif (!caps.length) return;\n\tconst cap = Math.min(...caps.map((c) => c[0]));\n\tconst parse = inst._zod.parse;\n\tinst._zod.parse = (payload, ctx) => {\n\t\tconst n = size(payload.value);\n\t\tif (n > cap && !ctx?.skipChecks && ctx?.direction !== \"backward\") {\n\t\t\tfor (const [max, ch] of sizeCaps(inst._zod.def.checks)) if (n > max && ch._zod.def.when(payload)) {\n\t\t\t\tconst start = payload.issues.length;\n\t\t\t\tch._zod.check(payload);\n\t\t\t\tpayload.issues[start].continue = false;\n\t\t\t\tattachSchema(payload.issues, start, inst);\n\t\t\t\treturn payload;\n\t\t\t}\n\t\t}\n\t\treturn parse(payload, ctx);\n\t};\n}\nconst arraySize = (input) => Array.isArray(input) ? input.length : -1;\nfunction handleArrayResult(result, final, index) {\n\tif (result.issues.length) final.issues.push(...prefixIssues(index, result.issues));\n\tfinal.value[index] = result.value;\n}\nconst $ZodArray = /* @__PURE__ */ $constructor(\"$ZodArray\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tconst memo = globalConfig.memoizer;\n\tmemo?.attach(inst);\n\tinst._zod.parse = (payload, ctx) => {\n\t\tconst input = payload.value;\n\t\tif (!Array.isArray(input)) {\n\t\t\tpayload.issues.push({\n\t\t\t\texpected: \"array\",\n\t\t\t\tcode: \"invalid_type\",\n\t\t\t\tinput,\n\t\t\t\tinst\n\t\t\t});\n\t\t\treturn payload;\n\t\t}\n\t\tpayload.value = memo ? memo.alloc(inst, payload, Array(input.length), ctx) : Array(input.length);\n\t\tconst proms = [];\n\t\tconst abortEarly = ctx?.abortEarly;\n\t\tfor (let i = 0; i < input.length; i++) {\n\t\t\tconst item = input[i];\n\t\t\tconst result = def.element._zod.run({\n\t\t\t\tvalue: item,\n\t\t\t\tissues: []\n\t\t\t}, ctx);\n\t\t\tif (result instanceof Promise) proms.push(result.then((result) => handleArrayResult(result, payload, i)));\n\t\t\telse {\n\t\t\t\thandleArrayResult(result, payload, i);\n\t\t\t\tif (abortEarly && result.issues.length !== 0 && aborted(result)) break;\n\t\t\t}\n\t\t}\n\t\tif (proms.length) return Promise.all(proms).then(() => payload);\n\t\treturn payload;\n\t};\n\tcapSize(inst, arraySize);\n});\nfunction handlePropertyResult(result, final, key, input, optin, optout) {\n\tconst isPresent = key in input;\n\tconst isOptionalOut = optout === \"optional\";\n\tif (!isPresent && isOptionalOut && optin === \"optional\") return;\n\tif (result.issues.length) {\n\t\tif (optin !== void 0 && isOptionalOut && !isPresent) return;\n\t\tfinal.issues.push(...prefixIssues(key, result.issues));\n\t}\n\tif (!isPresent && optin === void 0) {\n\t\tif (!result.issues.length) final.issues.push({\n\t\t\tcode: \"invalid_type\",\n\t\t\texpected: \"nonoptional\",\n\t\t\tinput: void 0,\n\t\t\tpath: [key]\n\t\t});\n\t\treturn;\n\t}\n\tif (result.value === void 0) {\n\t\tif (isPresent || optin === \"defaulted\" && !isOptionalOut) final.value[key] = void 0;\n\t} else final.value[key] = result.value;\n}\nconst NO_SYMBOL_KEYS = [];\nfunction normalizeDef(def) {\n\tconst keys = Object.keys(def.shape);\n\tconst ownSymbols = Object.getOwnPropertySymbols(def.shape);\n\tconst symbolKeys = ownSymbols.length ? ownSymbols : NO_SYMBOL_KEYS;\n\tconst allKeys = symbolKeys.length ? [...keys, ...symbolKeys] : keys;\n\tfor (const k of allKeys) if (!def.shape?.[k]?._zod?.traits?.has(\"$ZodType\")) throw new Error(`Invalid element at key \"${String(k)}\": expected a Zod schema`);\n\tconst okeys = optionalKeys(def.shape);\n\treturn {\n\t\t...def,\n\t\tallKeys,\n\t\tsymbolKeys,\n\t\tkeySet: new Set(keys),\n\t\tnumKeys: keys.length,\n\t\toptionalKeys: new Set(okeys)\n\t};\n}\nfunction handleCatchall(proms, input, payload, ctx, def, inst, abortEarly) {\n\tconst unrecognized = [];\n\tconst keySet = def.keySet;\n\tconst _catchall = def.catchall._zod;\n\tconst t = _catchall.def.type;\n\tconst optin = _catchall.optin;\n\tconst optout = _catchall.optout;\n\tlet seen = 0;\n\tfor (const key in input) {\n\t\tif (abortEarly && payload.issues.length !== seen) {\n\t\t\tif (aborted(payload, seen)) break;\n\t\t\tseen = payload.issues.length;\n\t\t}\n\t\tif (keySet.has(key)) continue;\n\t\tif (key === \"__proto__\") {\n\t\t\tif (t === \"never\") unrecognized.push(key);\n\t\t\tcontinue;\n\t\t}\n\t\tif (t === \"never\") {\n\t\t\tunrecognized.push(key);\n\t\t\tcontinue;\n\t\t}\n\t\tconst r = _catchall.run({\n\t\t\tvalue: input[key],\n\t\t\tissues: []\n\t\t}, ctx);\n\t\tif (r instanceof Promise) proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, optin, optout)));\n\t\telse handlePropertyResult(r, payload, key, input, optin, optout);\n\t}\n\tif (unrecognized.length) payload.issues.push({\n\t\tcode: \"unrecognized_keys\",\n\t\tkeys: unrecognized,\n\t\tinput,\n\t\tinst,\n\t\tcontinue: true\n\t});\n\tif (!proms.length) return payload;\n\treturn Promise.all(proms).then(() => {\n\t\treturn payload;\n\t});\n}\nconst $ZodObject = /* @__PURE__ */ $constructor(\"$ZodObject\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tconst desc = Object.getOwnPropertyDescriptor(def, \"shape\");\n\tconst sh = desc?.get ? desc.get.raw : def.shape ?? {};\n\tif (sh) {\n\t\tconst get = () => {\n\t\t\tconst newSh = { ...sh };\n\t\t\tObject.defineProperty(def, \"shape\", { value: newSh });\n\t\t\tget.raw = newSh;\n\t\t\treturn newSh;\n\t\t};\n\t\tget.raw = sh;\n\t\tObject.defineProperty(def, \"shape\", { get });\n\t}\n\tconst _normalized = cached(() => normalizeDef(def));\n\tdefineLazyInternal(inst, \"propValues\", (zod) => {\n\t\tconst shape = zod.def.shape;\n\t\tconst propValues = {};\n\t\tfor (const key in shape) {\n\t\t\tconst field = shape[key]._zod;\n\t\t\tif (field.values) {\n\t\t\t\tif (!Object.prototype.hasOwnProperty.call(propValues, key)) assignProp(propValues, key, /* @__PURE__ */ new Set());\n\t\t\t\tfor (const v of field.values) propValues[key].add(v);\n\t\t\t\tif (field.optin !== void 0) propValues[key].add(void 0);\n\t\t\t}\n\t\t}\n\t\treturn propValues;\n\t});\n\tconst isObject$1 = isObject;\n\tconst catchall = def.catchall;\n\tlet value;\n\tconst memo = globalConfig.memoizer;\n\tmemo?.attach(inst);\n\tinst._zod.parse = (payload, ctx) => {\n\t\tvalue ?? (value = _normalized.value);\n\t\tconst input = payload.value;\n\t\tif (!isObject$1(input)) {\n\t\t\tpayload.issues.push({\n\t\t\t\texpected: \"object\",\n\t\t\t\tcode: \"invalid_type\",\n\t\t\t\tinput,\n\t\t\t\tinst\n\t\t\t});\n\t\t\treturn payload;\n\t\t}\n\t\tpayload.value = memo ? memo.alloc(inst, payload, {}, ctx) : {};\n\t\tconst proms = [];\n\t\tconst shape = value.shape;\n\t\tconst abortEarly = ctx?.abortEarly;\n\t\tlet seen = payload.issues.length;\n\t\tfor (const key of value.allKeys) {\n\t\t\tif (abortEarly && payload.issues.length !== seen) {\n\t\t\t\tif (aborted(payload, seen)) break;\n\t\t\t\tseen = payload.issues.length;\n\t\t\t}\n\t\t\tif (key === \"__proto__\") continue;\n\t\t\tconst el = shape[key];\n\t\t\tconst optin = el._zod.optin;\n\t\t\tconst optout = el._zod.optout;\n\t\t\tconst r = el._zod.run({\n\t\t\t\tvalue: input[key],\n\t\t\t\tissues: []\n\t\t\t}, ctx);\n\t\t\tif (r instanceof Promise) proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, optin, optout)));\n\t\t\telse handlePropertyResult(r, payload, key, input, optin, optout);\n\t\t}\n\t\tif (!catchall) return proms.length ? Promise.all(proms).then(() => payload) : payload;\n\t\treturn handleCatchall(proms, input, payload, ctx, _normalized.value, inst, abortEarly === true);\n\t};\n});\nconst $ZodObjectJIT = /* @__PURE__ */ $constructor(\"$ZodObjectJIT\", (inst, def) => {\n\t$ZodObject.init(inst, def);\n\tconst superParse = inst._zod.parse;\n\tconst _normalized = cached(() => normalizeDef(def));\n\tconst memo = globalConfig.memoizer;\n\tconst generateFastpass = (shape) => {\n\t\tconst normalized = _normalized.value;\n\t\tconst syms = normalized.symbolKeys;\n\t\tconst doc = new Doc([\"payload\", \"ctx\"], {\n\t\t\tshape,\n\t\t\tinst,\n\t\t\tmemo,\n\t\t\tsyms\n\t\t});\n\t\tconst parseStr = (k) => `shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`;\n\t\tconst prefixStr = (id, k) => `\n let ${id}_ab = false;\n for (let i = 0; i < ${id}.issues.length; i++) {\n const iss = ${id}.issues[i];\n iss.path = iss.path ? [${k}, ...iss.path] : [${k}];\n payload.issues.push(iss);\n if (iss.continue !== true) ${id}_ab = true;\n }\n if (${id}_ab && ctx && ctx.abortEarly) {\n payload.value = newResult;\n return payload;\n }`;\n\t\tdoc.write(`const input = payload.value;`);\n\t\tconst ids = Object.create(null);\n\t\tlet counter = 0;\n\t\tfor (const key of normalized.allKeys) ids[key] = `key_${counter++}`;\n\t\tdoc.write(memo ? `const newResult = memo.alloc(inst, payload, {}, ctx);` : `const newResult = {};`);\n\t\tfor (const key of normalized.allKeys) {\n\t\t\tif (key === \"__proto__\") continue;\n\t\t\tconst id = ids[key];\n\t\t\tconst k = typeof key === \"symbol\" ? `syms[${syms.indexOf(key)}]` : esc(key);\n\t\t\tconst isPresent = `${k} in input`;\n\t\t\tconst schema = shape[key];\n\t\t\tconst optin = schema?._zod?.optin;\n\t\t\tconst isOptionalIn = optin !== void 0;\n\t\t\tconst isOptionalOut = schema?._zod?.optout === \"optional\";\n\t\t\tdoc.write(`const ${id} = ${parseStr(k)};`);\n\t\t\tif (isOptionalIn && isOptionalOut) {\n\t\t\t\tconst assign = optin === \"optional\" ? `${id}_present` : `${id}.value !== undefined || ${id}_present`;\n\t\t\t\tdoc.write(`\n const ${id}_present = ${isPresent};\n if (!${id}.issues.length || ${id}_present) {\n if (${id}.issues.length) {${prefixStr(id, k)}\n }\n\n if (${assign}) {\n newResult[${k}] = ${id}.value;\n }\n }\n\n `);\n\t\t\t} else if (!isOptionalIn) doc.write(`\n const ${id}_present = ${isPresent};\n if (${id}.issues.length) {${prefixStr(id, k)}\n }\n if (!${id}_present && !${id}.issues.length) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: undefined,\n path: [${k}]\n });\n if (ctx && ctx.abortEarly) {\n payload.value = newResult;\n return payload;\n }\n }\n\n if (${id}_present) {\n newResult[${k}] = ${id}.value;\n }\n\n `);\n\t\t\telse {\n\t\t\t\tdoc.write(`\n if (${id}.issues.length) {${prefixStr(id, k)}\n }\n `);\n\t\t\t\tif (optin === \"defaulted\") doc.write(`newResult[${k}] = ${id}.value;`);\n\t\t\t\telse doc.write(`\n if (${id}.value !== undefined || ${isPresent}) {\n newResult[${k}] = ${id}.value;\n }\n `);\n\t\t\t}\n\t\t}\n\t\tdoc.write(`payload.value = newResult;`);\n\t\tdoc.write(`return payload;`);\n\t\treturn doc.compile();\n\t};\n\tlet fastpass;\n\tconst isObject$2 = isObject;\n\tconst jit = !globalConfig.jitless;\n\tconst fastEnabled = jit && allowsEval.value;\n\tconst catchall = def.catchall;\n\tlet value;\n\tinst._zod.parse = (payload, ctx) => {\n\t\tvalue ?? (value = _normalized.value);\n\t\tconst input = payload.value;\n\t\tif (!isObject$2(input)) {\n\t\t\tpayload.issues.push({\n\t\t\t\texpected: \"object\",\n\t\t\t\tcode: \"invalid_type\",\n\t\t\t\tinput,\n\t\t\t\tinst\n\t\t\t});\n\t\t\treturn payload;\n\t\t}\n\t\tif (jit && fastEnabled && ctx?.async === false && ctx.jitless !== true) {\n\t\t\tif (!fastpass) fastpass = generateFastpass(def.shape);\n\t\t\tpayload = fastpass(payload, ctx);\n\t\t\tif (!catchall) return payload;\n\t\t\treturn handleCatchall([], input, payload, ctx, value, inst, ctx?.abortEarly === true);\n\t\t}\n\t\treturn superParse(payload, ctx);\n\t};\n});\nfunction handleUnionResults(results, final, inst, ctx) {\n\tfor (const result of results) if (result.issues.length === 0) {\n\t\tfinal.value = result.value;\n\t\treturn final;\n\t}\n\tconst nonaborted = results.filter((r) => !aborted(r));\n\tif (nonaborted.length === 1) {\n\t\tfinal.value = nonaborted[0].value;\n\t\treturn nonaborted[0];\n\t}\n\tfinal.issues.push({\n\t\tcode: \"invalid_union\",\n\t\tinput: final.value,\n\t\tinst,\n\t\terrors: results.map((result) => result.issues.map((iss) => finalizeIssue(iss, ctx, config())))\n\t});\n\treturn final;\n}\nconst $ZodUnion = /* @__PURE__ */ $constructor(\"$ZodUnion\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tdefineLazyInternal(inst, \"optin\", (zod) => zod.def.options.some((o) => o._zod.optin === \"defaulted\") ? \"defaulted\" : zod.def.options.some((o) => o._zod.optin !== void 0) ? \"optional\" : void 0);\n\tdefineLazyInternal(inst, \"optout\", (zod) => zod.def.options.some((o) => o._zod.optout === \"optional\") ? \"optional\" : void 0);\n\tdefineLazyInternal(inst, \"values\", (zod) => {\n\t\tif (zod.def.options.every((o) => o._zod.values)) return new Set(zod.def.options.flatMap((option) => Array.from(option._zod.values)));\n\t});\n\tdefineLazyInternal(inst, \"pattern\", (zod) => {\n\t\tif (zod.def.options.every((o) => o._zod.pattern)) {\n\t\t\tconst patterns = zod.def.options.map((o) => o._zod.pattern);\n\t\t\treturn new RegExp(`^(${patterns.map((p) => cleanRegex(p.source)).join(\"|\")})$`);\n\t\t}\n\t});\n\tconst first = def.options.length === 1 ? def.options[0]._zod.run : null;\n\tinst._zod.parse = (payload, ctx) => {\n\t\tif (first) return first(payload, ctx);\n\t\tlet async = false;\n\t\tconst results = [];\n\t\tfor (const option of def.options) {\n\t\t\tconst result = option._zod.run({\n\t\t\t\tvalue: payload.value,\n\t\t\t\tissues: []\n\t\t\t}, ctx);\n\t\t\tif (result instanceof Promise) {\n\t\t\t\tresults.push(result);\n\t\t\t\tasync = true;\n\t\t\t} else {\n\t\t\t\tif (result.issues.length === 0) return result;\n\t\t\t\tresults.push(result);\n\t\t\t}\n\t\t}\n\t\tif (!async) return handleUnionResults(results, payload, inst, ctx);\n\t\treturn Promise.all(results).then((results) => {\n\t\t\treturn handleUnionResults(results, payload, inst, ctx);\n\t\t});\n\t};\n});\nfunction discriminatorMap(def) {\n\tconst map = /* @__PURE__ */ new Map();\n\tfor (const option of def.options) {\n\t\tconst values = option._zod.propValues?.[def.discriminator];\n\t\tif (!values || values.size === 0) throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(option)}\"`);\n\t\tfor (const value of values) if (map.has(value)) {\n\t\t\tif (value !== void 0) throw new Error(`Duplicate discriminator value \"${String(value)}\"`);\n\t\t\tmap.set(value, null);\n\t\t} else map.set(value, option);\n\t}\n\treturn map;\n}\nconst $ZodDiscriminatedUnion = /* @__PURE__ */ $constructor(\"$ZodDiscriminatedUnion\", (inst, def) => {\n\tdef.inclusive = false;\n\t$ZodUnion.init(inst, def);\n\tconst _super = inst._zod.parse;\n\tdefineLazyInternal(inst, \"propValues\", (zod) => {\n\t\tconst propValues = {};\n\t\tlet undefinedCount = 0;\n\t\tfor (const option of zod.def.options) {\n\t\t\tconst pv = option._zod.propValues;\n\t\t\tif (!pv || Object.keys(pv).length === 0) throw new Error(`Invalid discriminated union option at index \"${zod.def.options.indexOf(option)}\"`);\n\t\t\tif (pv[zod.def.discriminator]?.has(void 0)) undefinedCount++;\n\t\t\tfor (const [k, v] of Object.entries(pv)) {\n\t\t\t\tif (!Object.prototype.hasOwnProperty.call(propValues, k)) assignProp(propValues, k, /* @__PURE__ */ new Set());\n\t\t\t\tfor (const val of v) propValues[k].add(val);\n\t\t\t}\n\t\t}\n\t\tif (!zod.def.unionFallback && undefinedCount > 1) propValues[zod.def.discriminator]?.delete(void 0);\n\t\treturn propValues;\n\t});\n\tdef.options.forEach((option, i) => {\n\t\tconst propShape = rawShape(option._zod.def);\n\t\tif (propShape && !Object.prototype.hasOwnProperty.call(propShape, def.discriminator)) throw new Error(`Invalid discriminated union option at index \"${i}\"`);\n\t});\n\tconst disc = cached(() => discriminatorMap(def));\n\tinst._zod.parse = (payload, ctx) => {\n\t\tconst input = payload.value;\n\t\tif (!isObject(input)) {\n\t\t\tpayload.issues.push({\n\t\t\t\tcode: \"invalid_type\",\n\t\t\t\texpected: \"object\",\n\t\t\t\tinput,\n\t\t\t\tinst\n\t\t\t});\n\t\t\treturn payload;\n\t\t}\n\t\tconst value = input?.[def.discriminator];\n\t\tconst opt = disc.value.get(value);\n\t\tif (opt && (value !== void 0 || ctx.direction !== \"backward\")) return opt._zod.run(payload, ctx);\n\t\tif (def.unionFallback || ctx.direction === \"backward\") return _super(payload, ctx);\n\t\tpayload.issues.push({\n\t\t\tcode: \"invalid_union\",\n\t\t\terrors: [],\n\t\t\tnote: \"No matching discriminator\",\n\t\t\tdiscriminator: def.discriminator,\n\t\t\toptions: Array.from(disc.value.keys()).filter((value) => disc.value.get(value) !== null),\n\t\t\tinput,\n\t\t\tpath: [def.discriminator],\n\t\t\tinst\n\t\t});\n\t\treturn payload;\n\t};\n});\nconst $ZodIntersection = /* @__PURE__ */ $constructor(\"$ZodIntersection\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tinst._zod.parse = (payload, ctx) => {\n\t\tconst input = payload.value;\n\t\tconst left = def.left._zod.run({\n\t\t\tvalue: input,\n\t\t\tissues: []\n\t\t}, ctx);\n\t\tconst right = def.right._zod.run({\n\t\t\tvalue: input,\n\t\t\tissues: []\n\t\t}, ctx);\n\t\tif (left instanceof Promise || right instanceof Promise) return Promise.all([left, right]).then(([left, right]) => {\n\t\t\treturn handleIntersectionResults(payload, left, right);\n\t\t});\n\t\treturn handleIntersectionResults(payload, left, right);\n\t};\n});\nfunction mergeValues(a, b) {\n\tif (a === b) return {\n\t\tvalid: true,\n\t\tdata: a\n\t};\n\tif (a instanceof Date && b instanceof Date && +a === +b) return {\n\t\tvalid: true,\n\t\tdata: a\n\t};\n\tif (isPlainObject(a) && isPlainObject(b)) {\n\t\tconst bKeys = Object.keys(b);\n\t\tconst sharedKeys = Object.keys(a).filter((key) => bKeys.indexOf(key) !== -1);\n\t\tconst newObj = {\n\t\t\t...a,\n\t\t\t...b\n\t\t};\n\t\tif (Object.prototype.hasOwnProperty.call(newObj, \"__proto__\")) delete newObj.__proto__;\n\t\tfor (const key of sharedKeys) {\n\t\t\tif (key === \"__proto__\") continue;\n\t\t\tconst sharedValue = mergeValues(a[key], b[key]);\n\t\t\tif (!sharedValue.valid) return {\n\t\t\t\tvalid: false,\n\t\t\t\tmergeErrorPath: [key, ...sharedValue.mergeErrorPath]\n\t\t\t};\n\t\t\tnewObj[key] = sharedValue.data;\n\t\t}\n\t\treturn {\n\t\t\tvalid: true,\n\t\t\tdata: newObj\n\t\t};\n\t}\n\tif (Array.isArray(a) && Array.isArray(b)) {\n\t\tif (a.length !== b.length) return {\n\t\t\tvalid: false,\n\t\t\tmergeErrorPath: []\n\t\t};\n\t\tconst newArray = [];\n\t\tfor (let index = 0; index < a.length; index++) {\n\t\t\tconst itemA = a[index];\n\t\t\tconst itemB = b[index];\n\t\t\tconst sharedValue = mergeValues(itemA, itemB);\n\t\t\tif (!sharedValue.valid) return {\n\t\t\t\tvalid: false,\n\t\t\t\tmergeErrorPath: [index, ...sharedValue.mergeErrorPath]\n\t\t\t};\n\t\t\tnewArray.push(sharedValue.data);\n\t\t}\n\t\treturn {\n\t\t\tvalid: true,\n\t\t\tdata: newArray\n\t\t};\n\t}\n\treturn {\n\t\tvalid: false,\n\t\tmergeErrorPath: []\n\t};\n}\nfunction handleIntersectionResults(result, left, right) {\n\tconst unrecKeys = /* @__PURE__ */ new Map();\n\tlet unrecIssue;\n\tconst keyIssues = /* @__PURE__ */ new Map();\n\tconst collect = (iss, side) => {\n\t\tlet keys;\n\t\tif (iss.code === \"unrecognized_keys\" && !iss.path?.length) {\n\t\t\tunrecIssue ?? (unrecIssue = iss);\n\t\t\tkeys = iss.keys;\n\t\t} else if (iss.code === \"invalid_key\" && iss.origin === \"record\" && iss.path?.length === 1) {\n\t\t\tconst k = String(iss.path[0]);\n\t\t\tif (!keyIssues.has(k)) keyIssues.set(k, iss);\n\t\t\tkeys = [k];\n\t\t} else return false;\n\t\tfor (const k of keys) {\n\t\t\tif (!unrecKeys.has(k)) unrecKeys.set(k, {});\n\t\t\tunrecKeys.get(k)[side] = true;\n\t\t}\n\t\treturn true;\n\t};\n\tfor (const iss of left.issues) if (!collect(iss, \"l\")) result.issues.push(iss);\n\tfor (const iss of right.issues) if (!collect(iss, \"r\")) result.issues.push(iss);\n\tconst bothKeys = [...unrecKeys].filter(([, f]) => f.l && f.r).map(([k]) => k);\n\tif (bothKeys.length) {\n\t\tconst aggregated = unrecIssue ? bothKeys.filter((k) => unrecIssue.keys.includes(k)) : [];\n\t\tif (aggregated.length) result.issues.push({\n\t\t\t...unrecIssue,\n\t\t\tkeys: aggregated\n\t\t});\n\t\tfor (const k of bothKeys) if (!aggregated.includes(k) && keyIssues.has(k)) result.issues.push(keyIssues.get(k));\n\t}\n\tconst merged = mergeValues(left.value, right.value);\n\tif (!merged.valid) {\n\t\tif (aborted(result)) return result;\n\t\tthrow new Error(`Unmergable intersection. Error path: ${JSON.stringify(merged.mergeErrorPath)}`);\n\t}\n\tresult.value = merged.data;\n\treturn result;\n}\nconst $ZodRecord = /* @__PURE__ */ $constructor(\"$ZodRecord\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tconst memo = globalConfig.memoizer;\n\tmemo?.attach(inst);\n\tinst._zod.parse = (payload, ctx) => {\n\t\tconst input = payload.value;\n\t\tif (!isPlainObject(input)) {\n\t\t\tpayload.issues.push({\n\t\t\t\texpected: \"record\",\n\t\t\t\tcode: \"invalid_type\",\n\t\t\t\tinput,\n\t\t\t\tinst\n\t\t\t});\n\t\t\treturn payload;\n\t\t}\n\t\tconst proms = [];\n\t\tconst values = def.keyType._zod.values;\n\t\tif (values && !def.partial) {\n\t\t\tpayload.value = memo ? memo.alloc(inst, payload, {}, ctx) : {};\n\t\t\tconst recordKeys = /* @__PURE__ */ new Set();\n\t\t\tfor (const key of values) if (typeof key === \"string\" || typeof key === \"number\" || typeof key === \"symbol\") {\n\t\t\t\trecordKeys.add(typeof key === \"number\" ? key.toString() : key);\n\t\t\t\tif (key === \"__proto__\") continue;\n\t\t\t\tconst keyResult = def.keyType._zod.run({\n\t\t\t\t\tvalue: key,\n\t\t\t\t\tissues: []\n\t\t\t\t}, ctx);\n\t\t\t\tif (keyResult instanceof Promise) throw new Error(\"Async schemas not supported in object keys currently\");\n\t\t\t\tif (keyResult.issues.length) {\n\t\t\t\t\tpayload.issues.push({\n\t\t\t\t\t\tcode: \"invalid_key\",\n\t\t\t\t\t\torigin: \"record\",\n\t\t\t\t\t\tissues: keyResult.issues.map((iss) => finalizeIssue(iss, ctx, config())),\n\t\t\t\t\t\tinput: key,\n\t\t\t\t\t\tpath: [key],\n\t\t\t\t\t\tinst\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst outKey = keyResult.value;\n\t\t\t\tif (outKey === \"__proto__\") continue;\n\t\t\t\tconst result = def.valueType._zod.run({\n\t\t\t\t\tvalue: input[key],\n\t\t\t\t\tissues: []\n\t\t\t\t}, ctx);\n\t\t\t\tif (result instanceof Promise) proms.push(result.then((result) => {\n\t\t\t\t\tif (result.issues.length) payload.issues.push(...prefixIssues(key, result.issues));\n\t\t\t\t\tpayload.value[outKey] = result.value;\n\t\t\t\t}));\n\t\t\t\telse {\n\t\t\t\t\tif (result.issues.length) payload.issues.push(...prefixIssues(key, result.issues));\n\t\t\t\t\tpayload.value[outKey] = result.value;\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet unrecognized;\n\t\t\tfor (const key in input) if (!recordKeys.has(key)) if (def.mode === \"loose\") {\n\t\t\t\tif (key === \"__proto__\") continue;\n\t\t\t\tpayload.value[key] = input[key];\n\t\t\t} else {\n\t\t\t\tunrecognized = unrecognized ?? [];\n\t\t\t\tunrecognized.push(key);\n\t\t\t}\n\t\t\tif (unrecognized && unrecognized.length > 0) payload.issues.push({\n\t\t\t\tcode: \"unrecognized_keys\",\n\t\t\t\tinput,\n\t\t\t\tinst,\n\t\t\t\tkeys: unrecognized,\n\t\t\t\tcontinue: true\n\t\t\t});\n\t\t} else {\n\t\t\tpayload.value = memo ? memo.alloc(inst, payload, {}, ctx) : {};\n\t\t\tlet unrecognized;\n\t\t\tfor (const key of Reflect.ownKeys(input)) {\n\t\t\t\tif (key === \"__proto__\") continue;\n\t\t\t\tif (!Object.prototype.propertyIsEnumerable.call(input, key)) continue;\n\t\t\t\tlet keyResult = def.keyType._zod.run({\n\t\t\t\t\tvalue: key,\n\t\t\t\t\tissues: []\n\t\t\t\t}, ctx);\n\t\t\t\tif (keyResult instanceof Promise) throw new Error(\"Async schemas not supported in object keys currently\");\n\t\t\t\tif (typeof key === \"string\" && number$1.test(key) && keyResult.issues.length) {\n\t\t\t\t\tconst retryResult = def.keyType._zod.run({\n\t\t\t\t\t\tvalue: Number(key),\n\t\t\t\t\t\tissues: []\n\t\t\t\t\t}, ctx);\n\t\t\t\t\tif (retryResult instanceof Promise) throw new Error(\"Async schemas not supported in object keys currently\");\n\t\t\t\t\tif (retryResult.issues.length === 0) keyResult = retryResult;\n\t\t\t\t}\n\t\t\t\tif (keyResult.issues.length) {\n\t\t\t\t\tif (def.mode === \"loose\") payload.value[key] = input[key];\n\t\t\t\t\telse if (values) {\n\t\t\t\t\t\tunrecognized = unrecognized ?? [];\n\t\t\t\t\t\tunrecognized.push(key);\n\t\t\t\t\t} else payload.issues.push({\n\t\t\t\t\t\tcode: \"invalid_key\",\n\t\t\t\t\t\torigin: \"record\",\n\t\t\t\t\t\tissues: keyResult.issues.map((iss) => finalizeIssue(iss, ctx, config())),\n\t\t\t\t\t\tinput: key,\n\t\t\t\t\t\tpath: [key],\n\t\t\t\t\t\tinst\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst outKey = keyResult.value;\n\t\t\t\tif (outKey === \"__proto__\") continue;\n\t\t\t\tconst result = def.valueType._zod.run({\n\t\t\t\t\tvalue: input[key],\n\t\t\t\t\tissues: []\n\t\t\t\t}, ctx);\n\t\t\t\tif (result instanceof Promise) proms.push(result.then((result) => {\n\t\t\t\t\tif (result.issues.length) payload.issues.push(...prefixIssues(key, result.issues));\n\t\t\t\t\tpayload.value[outKey] = result.value;\n\t\t\t\t}));\n\t\t\t\telse {\n\t\t\t\t\tif (result.issues.length) payload.issues.push(...prefixIssues(key, result.issues));\n\t\t\t\t\tpayload.value[outKey] = result.value;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (unrecognized && unrecognized.length > 0) payload.issues.push({\n\t\t\t\tcode: \"unrecognized_keys\",\n\t\t\t\tinput,\n\t\t\t\tinst,\n\t\t\t\tkeys: unrecognized,\n\t\t\t\tcontinue: true\n\t\t\t});\n\t\t}\n\t\tif (proms.length) return Promise.all(proms).then(() => payload);\n\t\treturn payload;\n\t};\n});\nconst $ZodEnum = /* @__PURE__ */ $constructor(\"$ZodEnum\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tconst values = getEnumValues(def.entries);\n\tconst valuesSet = new Set(values);\n\tinst._zod.values = valuesSet;\n\tdefineLazyInternal(inst, \"pattern\", (zod) => {\n\t\tconst patternValues = getEnumValues(zod.def.entries).filter((k) => propertyKeyTypes.has(typeof k));\n\t\treturn new RegExp(patternValues.length ? `^(${patternValues.map((o) => escapeRegex(o.toString())).join(\"|\")})$` : \"^[^\\\\s\\\\S]$\");\n\t});\n\tinst._zod.parse = (payload, _ctx) => {\n\t\tconst input = payload.value;\n\t\tif (valuesSet.has(input)) return payload;\n\t\tpayload.issues.push({\n\t\t\tcode: \"invalid_value\",\n\t\t\tvalues,\n\t\t\tinput,\n\t\t\tinst\n\t\t});\n\t\treturn payload;\n\t};\n});\nconst $ZodLiteral = /* @__PURE__ */ $constructor(\"$ZodLiteral\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tconst values = new Set(def.values);\n\tinst._zod.values = values;\n\tdefineLazyInternal(inst, \"pattern\", (zod) => {\n\t\tconst vals = zod.def.values;\n\t\treturn new RegExp(vals.length ? `^(${vals.map((o) => typeof o === \"string\" ? escapeRegex(o) : o ? escapeRegex(o.toString()) : String(o)).join(\"|\")})$` : \"^[^\\\\s\\\\S]$\");\n\t});\n\tinst._zod.parse = (payload, _ctx) => {\n\t\tconst input = payload.value;\n\t\tif (values.has(input)) return payload;\n\t\tpayload.issues.push({\n\t\t\tcode: \"invalid_value\",\n\t\t\tvalues: def.values,\n\t\t\tinput,\n\t\t\tinst\n\t\t});\n\t\treturn payload;\n\t};\n});\nconst $ZodTransform = /* @__PURE__ */ $constructor(\"$ZodTransform\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tinst._zod.optin = \"optional\";\n\tglobalConfig.memoizer?.guard(inst);\n\tinst._zod.parse = (payload, ctx) => {\n\t\tif (ctx.direction === \"backward\") throw new $ZodEncodeError(inst.constructor.name);\n\t\tconst _out = def.transform(payload.value, payload);\n\t\tif (ctx.async) return (_out instanceof Promise ? _out : Promise.resolve(_out)).then((output) => {\n\t\t\tpayload.value = output;\n\t\t\treturn payload;\n\t\t});\n\t\tif (_out instanceof Promise) throw new $ZodAsyncError();\n\t\tpayload.value = _out;\n\t\treturn payload;\n\t};\n});\nfunction handleOptionalResult(payload, result) {\n\tpayload.value = result.issues.length ? void 0 : result.value;\n\treturn payload;\n}\nconst $ZodOptional = /* @__PURE__ */ $constructor(\"$ZodOptional\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tdefineLazyInternal(inst, \"optin\", (zod) => zod.def.innerType._zod.optin === \"defaulted\" ? \"defaulted\" : \"optional\");\n\tinst._zod.optout = \"optional\";\n\tdefineLazyInternal(inst, \"values\", (zod) => {\n\t\tconst values = zod.def.innerType._zod.values;\n\t\treturn values ? new Set([...values, void 0]) : void 0;\n\t});\n\tdefineLazyInternal(inst, \"pattern\", (zod) => {\n\t\tconst pattern = zod.def.innerType._zod.pattern;\n\t\treturn pattern ? new RegExp(`^(${cleanRegex(pattern.source)})?$`) : void 0;\n\t});\n\tinst._zod.parse = (payload, ctx) => {\n\t\tif (payload.value === void 0) {\n\t\t\tif (def.innerType._zod.optin !== \"defaulted\") return payload;\n\t\t\tconst result = def.innerType._zod.run({\n\t\t\t\tvalue: payload.value,\n\t\t\t\tissues: []\n\t\t\t}, ctx);\n\t\t\tif (result instanceof Promise) return result.then((result) => handleOptionalResult(payload, result));\n\t\t\treturn handleOptionalResult(payload, result);\n\t\t}\n\t\treturn def.innerType._zod.run(payload, ctx);\n\t};\n});\nconst $ZodExactOptional = /* @__PURE__ */ $constructor(\"$ZodExactOptional\", (inst, def) => {\n\t$ZodOptional.init(inst, def);\n\tdefineLazyInternal(inst, \"values\", (zod) => zod.def.innerType._zod.values);\n\tdefineLazyInternal(inst, \"pattern\", (zod) => zod.def.innerType._zod.pattern);\n\tinst._zod.parse = (payload, ctx) => {\n\t\treturn def.innerType._zod.run(payload, ctx);\n\t};\n});\nconst $ZodNullable = /* @__PURE__ */ $constructor(\"$ZodNullable\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tdefineLazyInternal(inst, \"optin\", (zod) => zod.def.innerType._zod.optin);\n\tdefineLazyInternal(inst, \"optout\", (zod) => zod.def.innerType._zod.optout);\n\tdefineLazyInternal(inst, \"pattern\", (zod) => {\n\t\tconst pattern = zod.def.innerType._zod.pattern;\n\t\treturn pattern ? new RegExp(`^(${cleanRegex(pattern.source)}|null)$`) : void 0;\n\t});\n\tdefineLazyInternal(inst, \"values\", (zod) => {\n\t\treturn zod.def.innerType._zod.values ? new Set([...zod.def.innerType._zod.values, null]) : void 0;\n\t});\n\tinst._zod.parse = (payload, ctx) => {\n\t\tif (payload.value === null) return payload;\n\t\treturn def.innerType._zod.run(payload, ctx);\n\t};\n});\nconst $ZodDefault = /* @__PURE__ */ $constructor(\"$ZodDefault\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tinst._zod.optin = \"defaulted\";\n\tdefineLazyInternal(inst, \"values\", (zod) => zod.def.innerType._zod.values);\n\tinst._zod.parse = (payload, ctx) => {\n\t\tif (ctx.direction === \"backward\") return def.innerType._zod.run(payload, ctx);\n\t\tif (payload.value === void 0) {\n\t\t\tpayload.value = def.defaultValue;\n\t\t\t/**\n\t\t\t* $ZodDefault returns the default value immediately in forward direction.\n\t\t\t* It doesn't pass the default value into the validator (\"prefault\"). There's no reason to pass the default value through validation. The validity of the default is enforced by TypeScript statically. Otherwise, it's the responsibility of the user to ensure the default is valid. In the case of pipes with divergent in/out types, you can specify the default on the `in` schema of your ZodPipe to set a \"prefault\" for the pipe. */\n\t\t\treturn payload;\n\t\t}\n\t\tconst result = def.innerType._zod.run(payload, ctx);\n\t\tif (result instanceof Promise) return result.then((result) => handleDefaultResult(result, def));\n\t\treturn handleDefaultResult(result, def);\n\t};\n});\nfunction handleDefaultResult(payload, def) {\n\tif (payload.value === void 0) payload.value = def.defaultValue;\n\treturn payload;\n}\nconst $ZodPrefault = /* @__PURE__ */ $constructor(\"$ZodPrefault\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tinst._zod.optin = \"defaulted\";\n\tdefineLazyInternal(inst, \"values\", (zod) => zod.def.innerType._zod.values);\n\tinst._zod.parse = (payload, ctx) => {\n\t\tif (ctx.direction === \"backward\") return def.innerType._zod.run(payload, ctx);\n\t\tif (payload.value === void 0) payload.value = def.defaultValue;\n\t\treturn def.innerType._zod.run(payload, ctx);\n\t};\n});\nconst $ZodNonOptional = /* @__PURE__ */ $constructor(\"$ZodNonOptional\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tdefineLazyInternal(inst, \"values\", (zod) => {\n\t\tconst v = zod.def.innerType._zod.values;\n\t\treturn v ? new Set([...v].filter((x) => x !== void 0)) : void 0;\n\t});\n\tinst._zod.parse = (payload, ctx) => {\n\t\tconst result = def.innerType._zod.run(payload, ctx);\n\t\tif (result instanceof Promise) return result.then((result) => handleNonOptionalResult(result, inst));\n\t\treturn handleNonOptionalResult(result, inst);\n\t};\n});\nfunction handleNonOptionalResult(payload, inst) {\n\tif (!payload.issues.length && payload.value === void 0) payload.issues.push({\n\t\tcode: \"invalid_type\",\n\t\texpected: \"nonoptional\",\n\t\tinput: payload.value,\n\t\tinst\n\t});\n\treturn payload;\n}\nfunction handleCatchResult(payload, result, def, ctx) {\n\tif (!result.issues.length) {\n\t\tpayload.value = result.value;\n\t\tif (result.memo) payload.memo = true;\n\t\treturn payload;\n\t}\n\tpayload.value = def.catchValue({\n\t\t...result,\n\t\tvalue: payload.value,\n\t\terror: { issues: result.issues.map((iss) => finalizeIssue(iss, ctx, config())) },\n\t\tinput: payload.value\n\t});\n\treturn payload;\n}\nconst $ZodCatch = /* @__PURE__ */ $constructor(\"$ZodCatch\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tdefineLazyInternal(inst, \"optin\", (zod) => zod.def.innerType._zod.optin === \"defaulted\" ? \"defaulted\" : \"optional\");\n\tdefineLazyInternal(inst, \"optout\", (zod) => zod.def.innerType._zod.optout);\n\tdefineLazyInternal(inst, \"values\", (zod) => zod.def.innerType._zod.values);\n\tinst._zod.parse = (payload, ctx) => {\n\t\tif (ctx.direction === \"backward\") return def.innerType._zod.run(payload, ctx);\n\t\tconst result = def.innerType._zod.run({\n\t\t\tvalue: payload.value,\n\t\t\tissues: []\n\t\t}, ctx);\n\t\tif (result instanceof Promise) return result.then((result) => handleCatchResult(payload, result, def, ctx));\n\t\treturn handleCatchResult(payload, result, def, ctx);\n\t};\n});\nconst $ZodPipe = /* @__PURE__ */ $constructor(\"$ZodPipe\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tdefineLazyInternal(inst, \"values\", (zod) => zod.def.in._zod.values);\n\tdefineLazyInternal(inst, \"optin\", (zod) => zod.def.in._zod.optin);\n\tdefineLazyInternal(inst, \"optout\", (zod) => zod.def.out._zod.optout);\n\tdefineLazyInternal(inst, \"propValues\", (zod) => zod.def.in._zod.propValues);\n\tinst._zod.parse = (payload, ctx) => {\n\t\tif (ctx.direction === \"backward\") {\n\t\t\tconst right = def.out._zod.run(payload, ctx);\n\t\t\tif (right instanceof Promise) return right.then((right) => handlePipeResult(right, def.in, ctx));\n\t\t\treturn handlePipeResult(right, def.in, ctx);\n\t\t}\n\t\tconst left = def.in._zod.run(payload, ctx);\n\t\tif (left instanceof Promise) return left.then((left) => handlePipeResult(left, def.out, ctx));\n\t\treturn handlePipeResult(left, def.out, ctx);\n\t};\n});\nfunction handlePipeResult(left, next, ctx) {\n\tif (left.issues.some((iss) => iss.code !== \"unrecognized_keys\")) {\n\t\tleft.aborted = true;\n\t\treturn left;\n\t}\n\treturn next._zod.run({\n\t\tvalue: left.value,\n\t\tissues: left.issues\n\t}, ctx);\n}\nconst $ZodReadonly = /* @__PURE__ */ $constructor(\"$ZodReadonly\", (inst, def) => {\n\t$ZodType.init(inst, def);\n\tdefineLazyInternal(inst, \"propValues\", (zod) => zod.def.innerType._zod.propValues);\n\tdefineLazyInternal(inst, \"values\", (zod) => zod.def.innerType._zod.values);\n\tdefineLazyInternal(inst, \"optin\", (zod) => zod.def.innerType?._zod?.optin);\n\tdefineLazyInternal(inst, \"optout\", (zod) => zod.def.innerType?._zod?.optout);\n\tinst._zod.parse = (payload, ctx) => {\n\t\tif (ctx.direction === \"backward\") return def.innerType._zod.run(payload, ctx);\n\t\tconst result = def.innerType._zod.run(payload, ctx);\n\t\tif (result instanceof Promise) return result.then(handleReadonlyResult);\n\t\treturn handleReadonlyResult(result);\n\t};\n});\nfunction handleReadonlyResult(payload) {\n\tif (!payload.memo) payload.value = Object.freeze(payload.value);\n\treturn payload;\n}\nconst $ZodCustom = /* @__PURE__ */ $constructor(\"$ZodCustom\", (inst, def) => {\n\t$ZodCheck.init(inst, def);\n\t$ZodType.init(inst, def);\n\tinst._zod.parse = (payload, _) => {\n\t\treturn payload;\n\t};\n\tinst._zod.check = (payload) => {\n\t\tconst input = payload.value;\n\t\tconst r = def.fn(input);\n\t\tif (r instanceof Promise) return r.then((r) => handleRefineResult(r, payload, input, inst));\n\t\thandleRefineResult(r, payload, input, inst);\n\t};\n});\nfunction handleRefineResult(result, payload, input, inst) {\n\tif (!result) {\n\t\tconst _iss = {\n\t\t\tcode: \"custom\",\n\t\t\tinput,\n\t\t\tinst,\n\t\t\tpath: [...inst._zod.def.path ?? []],\n\t\t\tcontinue: !inst._zod.def.abort\n\t\t};\n\t\tif (inst._zod.def.params) _iss.params = inst._zod.def.params;\n\t\tpayload.issues.push(issue(_iss));\n\t}\n}\n//#endregion\n//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/memoizer.js\nvar $ZodCyclicError = class extends Error {\n\tconstructor() {\n\t\tsuper(`Cannot parse a reference cycle that closes through a transform`);\n\t\tthis.name = \"ZodCyclicError\";\n\t}\n};\n/** Keyed off the context object every schema in one parse call already shares. */\nconst STATE = \"~memo\";\nconst NO_ISSUES = [];\nfunction isRef(value) {\n\treturn value !== null && typeof value === \"object\";\n}\nfunction cloneIssues(issues) {\n\treturn issues.map((iss) => iss.path ? {\n\t\t...iss,\n\t\tpath: iss.path.slice()\n\t} : { ...iss });\n}\nconst recursive = /* @__PURE__ */ new WeakMap();\n/** What the walk established, in order of certainty: ordered so the strongest answer among children wins. */\nconst NONE = 0;\nconst ASSUMED = 1;\nconst PROVEN = 2;\n/** Whether this schema's subtree contains a cycle, so one parse can re-enter it. */\nfunction isRecursive(inst, stack, resolve) {\n\tconst cached = recursive.get(inst);\n\tif (cached !== void 0) return cached ? PROVEN : NONE;\n\tif (stack.has(inst)) return PROVEN;\n\tstack.add(inst);\n\tlet result = NONE;\n\tconst check = (child) => {\n\t\tif (result !== PROVEN && child?._zod) {\n\t\t\tconst answer = isRecursive(child, stack, resolve);\n\t\t\tif (answer > result) result = answer;\n\t\t}\n\t};\n\tconst shape = (sh, spread) => {\n\t\tlet answer = NONE;\n\t\tfor (const key of Reflect.ownKeys(sh)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(sh, key);\n\t\t\tif (spread && !desc.enumerable) continue;\n\t\t\tconst child = desc.get ? ASSUMED : desc.value?._zod ? isRecursive(desc.value, stack, resolve) : NONE;\n\t\t\tif (child > answer) answer = child;\n\t\t}\n\t\treturn answer;\n\t};\n\tconst merge = (answer) => {\n\t\tif (answer > result) result = answer;\n\t};\n\tconst def = inst._zod.def;\n\tswitch (def.type) {\n\t\tcase \"object\": {\n\t\t\tconst raw = rawShape(def);\n\t\t\tmerge(raw ? shape(raw, true) : ASSUMED);\n\t\t\tcheck(def.catchall);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"array\":\n\t\t\tcheck(def.element);\n\t\t\tbreak;\n\t\tcase \"tuple\":\n\t\t\tfor (const el of def.items) check(el);\n\t\t\tcheck(def.rest);\n\t\t\tbreak;\n\t\tcase \"record\":\n\t\tcase \"map\":\n\t\t\tcheck(def.keyType);\n\t\t\tcheck(def.valueType);\n\t\t\tbreak;\n\t\tcase \"set\":\n\t\t\tcheck(def.valueType);\n\t\t\tbreak;\n\t\tcase \"union\":\n\t\t\tfor (const el of def.options) check(el);\n\t\t\tbreak;\n\t\tcase \"intersection\":\n\t\t\tcheck(def.left);\n\t\t\tcheck(def.right);\n\t\t\tbreak;\n\t\tcase \"optional\":\n\t\tcase \"nullable\":\n\t\tcase \"default\":\n\t\tcase \"prefault\":\n\t\tcase \"catch\":\n\t\tcase \"readonly\":\n\t\tcase \"nonoptional\":\n\t\tcase \"promise\":\n\t\tcase \"success\":\n\t\t\tcheck(def.innerType);\n\t\t\tbreak;\n\t\tcase \"pipe\":\n\t\t\tcheck(def.in);\n\t\t\tcheck(def.out);\n\t\t\tbreak;\n\t\tcase \"function\":\n\t\t\tcheck(def.input);\n\t\t\tcheck(def.output);\n\t\t\tbreak;\n\t\tcase \"lazy\": {\n\t\t\tconst inner = def._cachedInner ?? (resolve ? inst._zod.innerType : void 0);\n\t\t\tmerge(inner ? isRecursive(inner, stack, false) : ASSUMED);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"template_literal\":\n\t\tcase \"string\":\n\t\tcase \"number\":\n\t\tcase \"int\":\n\t\tcase \"boolean\":\n\t\tcase \"bigint\":\n\t\tcase \"symbol\":\n\t\tcase \"undefined\":\n\t\tcase \"null\":\n\t\tcase \"void\":\n\t\tcase \"never\":\n\t\tcase \"any\":\n\t\tcase \"unknown\":\n\t\tcase \"date\":\n\t\tcase \"nan\":\n\t\tcase \"enum\":\n\t\tcase \"literal\":\n\t\tcase \"file\":\n\t\tcase \"transform\":\n\t\tcase \"custom\": break;\n\t\tdefault: for (const key in def) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(def, key);\n\t\t\tif (!desc || desc.get) continue;\n\t\t\tconst value = desc.value;\n\t\t\tif (!value || typeof value !== \"object\") continue;\n\t\t\tif (value._zod) check(value);\n\t\t\telse if (Array.isArray(value)) for (const el of value) check(el);\n\t\t}\n\t}\n\tstack.delete(inst);\n\treturn settle(inst, result);\n}\n/** An assumed answer must not outlive the resolution that settles it, so only a certain one is cached. */\nfunction settle(inst, answer) {\n\tif (answer !== ASSUMED) recursive.set(inst, answer === PROVEN);\n\treturn answer;\n}\nfunction bucketFor(state, inst) {\n\tlet bucket = state.buckets.get(inst);\n\tif (!bucket) {\n\t\tbucket = /* @__PURE__ */ new WeakMap();\n\t\tstate.buckets.set(inst, bucket);\n\t}\n\treturn bucket;\n}\nlet handoff;\nconst open = [];\nconst memo = {\n\talloc(_inst, payload, empty) {\n\t\tconst bucket = handoff;\n\t\tif (!bucket) return empty;\n\t\thandoff = void 0;\n\t\tconst entry = {\n\t\t\tvalue: empty,\n\t\t\tissues: null\n\t\t};\n\t\tbucket.set(payload.value, entry);\n\t\topen.push(entry);\n\t\treturn empty;\n\t},\n\tguard(inst) {\n\t\tvar _a;\n\t\t(_a = inst._zod).deferred ?? (_a.deferred = []);\n\t\tinst._zod.deferred.push(() => {\n\t\t\tconst base = inst._zod.parse;\n\t\t\tconst wrapped = (payload, ctx) => {\n\t\t\t\tif (ctx.direction !== \"backward\" && isBackEdge(ctx, payload.value)) throw new $ZodCyclicError();\n\t\t\t\treturn base(payload, ctx);\n\t\t\t};\n\t\t\tinst._zod.parse = wrapped;\n\t\t\tif (inst._zod.run === base) inst._zod.run = wrapped;\n\t\t});\n\t},\n\tattach(inst) {\n\t\tvar _a;\n\t\tlet isRecursiveInst;\n\t\tlet rechecked = false;\n\t\tlet lastCtx;\n\t\tlet lastBucket;\n\t\t(_a = inst._zod).deferred ?? (_a.deferred = []);\n\t\tinst._zod.deferred.push(() => {\n\t\t\tconst base = inst._zod.parse;\n\t\t\tconst wrapped = (payload, ctx) => {\n\t\t\t\tif (isRecursiveInst === void 0) {\n\t\t\t\t\tconst walked = isRecursive(inst, /* @__PURE__ */ new Set(), false);\n\t\t\t\t\tif (walked === NONE) {\n\t\t\t\t\t\tinst._zod.parse = base;\n\t\t\t\t\t\tif (inst._zod.run === wrapped) inst._zod.run = base;\n\t\t\t\t\t\treturn base(payload, ctx);\n\t\t\t\t\t}\n\t\t\t\t\tif (walked === PROVEN || rechecked) isRecursiveInst = true;\n\t\t\t\t\telse rechecked = true;\n\t\t\t\t}\n\t\t\t\tconst input = payload.value;\n\t\t\t\tif (!isRef(input)) return base(payload, ctx);\n\t\t\t\tlet state = ctx[STATE];\n\t\t\t\tif (!state) {\n\t\t\t\t\tstate = {\n\t\t\t\t\t\tbuckets: /* @__PURE__ */ new WeakMap(),\n\t\t\t\t\t\tbackEdges: void 0\n\t\t\t\t\t};\n\t\t\t\t\tctx[STATE] = state;\n\t\t\t\t}\n\t\t\t\tlet bucket;\n\t\t\t\tif (lastCtx === ctx) bucket = lastBucket;\n\t\t\t\telse {\n\t\t\t\t\tbucket = bucketFor(state, inst);\n\t\t\t\t\tlastCtx = ctx;\n\t\t\t\t\tlastBucket = bucket;\n\t\t\t\t}\n\t\t\t\tconst hit = bucket.get(input);\n\t\t\t\tif (hit) {\n\t\t\t\t\tpayload.value = hit.value;\n\t\t\t\t\tif (hit.issues) {\n\t\t\t\t\t\tif (hit.issues.length) payload.issues.push(...cloneIssues(hit.issues));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpayload.memo = true;\n\t\t\t\t\t\tstate.backEdges ?? (state.backEdges = /* @__PURE__ */ new WeakSet());\n\t\t\t\t\t\tstate.backEdges.add(hit.value);\n\t\t\t\t\t}\n\t\t\t\t\treturn payload;\n\t\t\t\t}\n\t\t\t\thandoff = bucket;\n\t\t\t\tconst depth = open.length;\n\t\t\t\tconst result = base(payload, ctx);\n\t\t\t\thandoff = void 0;\n\t\t\t\tconst entry = open.length > depth ? open.pop() : void 0;\n\t\t\t\tif (result instanceof Promise) return result.then((r) => {\n\t\t\t\t\tif (entry) entry.issues = r.issues.length ? cloneIssues(r.issues) : NO_ISSUES;\n\t\t\t\t\treturn r;\n\t\t\t\t});\n\t\t\t\tif (entry) entry.issues = result.issues.length ? cloneIssues(result.issues) : NO_ISSUES;\n\t\t\t\treturn result;\n\t\t\t};\n\t\t\tinst._zod.parse = wrapped;\n\t\t\tif (inst._zod.run === base) inst._zod.run = wrapped;\n\t\t});\n\t}\n};\n/** The memoizer that gives containers cycle support. `zod` installs it by default; `zod/mini` opts in with `config({ memoizer: memoizer() })`. */\nfunction memoizer() {\n\treturn memo;\n}\n/** Whether this value is a node a back-edge resolved to before it finished. */\nfunction isBackEdge(ctx, value) {\n\tconst backEdges = ctx[STATE]?.backEdges;\n\treturn backEdges !== void 0 && isRef(value) && backEdges.has(value);\n}\n//#endregion\n//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/locales/en.js\nconst error = () => {\n\tconst Sizable = {\n\t\tstring: {\n\t\t\tunit: \"characters\",\n\t\t\tverb: \"to have\"\n\t\t},\n\t\tfile: {\n\t\t\tunit: \"bytes\",\n\t\t\tverb: \"to have\"\n\t\t},\n\t\tarray: {\n\t\t\tunit: \"items\",\n\t\t\tverb: \"to have\"\n\t\t},\n\t\tset: {\n\t\t\tunit: \"items\",\n\t\t\tverb: \"to have\"\n\t\t},\n\t\tmap: {\n\t\t\tunit: \"entries\",\n\t\t\tverb: \"to have\"\n\t\t}\n\t};\n\tfunction getSizing(origin) {\n\t\treturn Sizable[origin] ?? null;\n\t}\n\tconst FormatDictionary = {\n\t\tregex: \"input\",\n\t\temail: \"email address\",\n\t\turl: \"URL\",\n\t\temoji: \"emoji\",\n\t\tuuid: \"UUID\",\n\t\tuuidv4: \"UUIDv4\",\n\t\tuuidv6: \"UUIDv6\",\n\t\tnanoid: \"nanoid\",\n\t\tguid: \"GUID\",\n\t\tcuid: \"cuid\",\n\t\tcuid2: \"cuid2\",\n\t\tulid: \"ULID\",\n\t\txid: \"XID\",\n\t\tksuid: \"KSUID\",\n\t\tdatetime: \"ISO datetime\",\n\t\tdate: \"ISO date\",\n\t\ttime: \"ISO time\",\n\t\tduration: \"ISO duration\",\n\t\tipv4: \"IPv4 address\",\n\t\tipv6: \"IPv6 address\",\n\t\tmac: \"MAC address\",\n\t\tcidrv4: \"IPv4 range\",\n\t\tcidrv6: \"IPv6 range\",\n\t\tbase64: \"base64-encoded string\",\n\t\tbase64url: \"base64url-encoded string\",\n\t\tjson_string: \"JSON string\",\n\t\te164: \"E.164 number\",\n\t\tcurrency_code: \"currency code\",\n\t\tcredit_card: \"credit card number\",\n\t\tiban: \"IBAN\",\n\t\tjwt: \"JWT\",\n\t\ttemplate_literal: \"input\"\n\t};\n\tconst TypeDictionary = { nan: \"NaN\" };\n\tfunction getTypeName(type, input) {\n\t\tif (type === \"number\" && typeof input === \"number\" && !Number.isFinite(input)) return String(input);\n\t\treturn TypeDictionary[type] ?? type;\n\t}\n\treturn (issue) => {\n\t\tswitch (issue.code) {\n\t\t\tcase \"invalid_type\": return `Invalid input: expected ${getTypeName(issue.expected)}, received ${getTypeName(parsedType(issue.input), issue.input)}`;\n\t\t\tcase \"invalid_value\":\n\t\t\t\tif (issue.values.length === 1) return `Invalid input: expected ${stringifyPrimitive(issue.values[0])}`;\n\t\t\t\treturn `Invalid option: expected one of ${joinValues(issue.values, \"|\")}`;\n\t\t\tcase \"too_big\": {\n\t\t\t\tconst adj = issue.exact ? \"exactly \" : issue.inclusive ? \"<=\" : \"<\";\n\t\t\t\tconst sizing = getSizing(issue.origin);\n\t\t\t\tif (sizing) return `Too big: expected ${issue.origin ?? \"value\"} to have ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n\t\t\t\treturn `Too big: expected ${issue.origin ?? \"value\"} to be ${adj}${issue.maximum.toString()}`;\n\t\t\t}\n\t\t\tcase \"too_small\": {\n\t\t\t\tconst adj = issue.exact ? \"exactly \" : issue.inclusive ? \">=\" : \">\";\n\t\t\t\tconst sizing = getSizing(issue.origin);\n\t\t\t\tif (sizing) return `Too small: expected ${issue.origin} to have ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n\t\t\t\treturn `Too small: expected ${issue.origin} to be ${adj}${issue.minimum.toString()}`;\n\t\t\t}\n\t\t\tcase \"invalid_format\": {\n\t\t\t\tconst _issue = issue;\n\t\t\t\tif (_issue.format === \"starts_with\") return `Invalid string: must start with \"${_issue.prefix}\"`;\n\t\t\t\tif (_issue.format === \"ends_with\") return `Invalid string: must end with \"${_issue.suffix}\"`;\n\t\t\t\tif (_issue.format === \"includes\") return `Invalid string: must include \"${_issue.includes}\"`;\n\t\t\t\tif (_issue.format === \"regex\") return `Invalid string: must match pattern ${_issue.pattern}`;\n\t\t\t\treturn `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n\t\t\t}\n\t\t\tcase \"not_multiple_of\": return `Invalid number: must be a multiple of ${issue.divisor}`;\n\t\t\tcase \"unrecognized_keys\": return `Unrecognized key${issue.keys.length > 1 ? \"s\" : \"\"}: ${joinValues(issue.keys, \", \")}`;\n\t\t\tcase \"invalid_key\": return `Invalid key in ${issue.origin}`;\n\t\t\tcase \"invalid_union\":\n\t\t\t\tif (issue.options && Array.isArray(issue.options) && issue.options.length > 0) return `Invalid discriminator value. Expected ${issue.options.map((o) => `'${o}'`).join(\" | \")}`;\n\t\t\t\tif (issue.inclusive === false) return \"Invalid input: more than one option matched\";\n\t\t\t\treturn \"Invalid input\";\n\t\t\tcase \"invalid_element\": return `Invalid value in ${issue.origin}`;\n\t\t\tdefault: return `Invalid input`;\n\t\t}\n\t};\n};\nfunction en_default() {\n\treturn { localeError: error() };\n}\n//#endregion\n//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/registries.js\nvar _a;\nvar $ZodRegistry = class {\n\tconstructor() {\n\t\tthis._map = /* @__PURE__ */ new WeakMap();\n\t\tthis._idmap = /* @__PURE__ */ new Map();\n\t}\n\tadd(schema, ..._meta) {\n\t\tconst meta = _meta[0];\n\t\tthis._map.set(schema, meta);\n\t\tif (meta && typeof meta === \"object\" && \"id\" in meta) this._idmap.set(meta.id, schema);\n\t\treturn this;\n\t}\n\tclear() {\n\t\tthis._map = /* @__PURE__ */ new WeakMap();\n\t\tthis._idmap = /* @__PURE__ */ new Map();\n\t\treturn this;\n\t}\n\tremove(schema) {\n\t\tconst meta = this._map.get(schema);\n\t\tif (meta && typeof meta === \"object\" && \"id\" in meta) this._idmap.delete(meta.id);\n\t\tthis._map.delete(schema);\n\t\treturn this;\n\t}\n\tget(schema) {\n\t\tconst p = schema._zod.parent;\n\t\tif (p) {\n\t\t\tconst pm = { ...this.get(p) ?? {} };\n\t\t\tdelete pm.id;\n\t\t\tconst f = {\n\t\t\t\t...pm,\n\t\t\t\t...this._map.get(schema)\n\t\t\t};\n\t\t\treturn Object.keys(f).length ? f : void 0;\n\t\t}\n\t\treturn this._map.get(schema);\n\t}\n\thas(schema) {\n\t\treturn this._map.has(schema);\n\t}\n};\nfunction registry() {\n\treturn new $ZodRegistry();\n}\n(_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry());\nconst globalRegistry = globalThis.__zod_globalRegistry;\n//#endregion\n//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/api.js\nfunction snapshotChecks(def) {\n\tif (def.checks) def.checks = [...def.checks];\n\treturn def;\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _string(Class, params) {\n\treturn new Class(snapshotChecks({\n\t\ttype: \"string\",\n\t\t...normalizeParams(params)\n\t}));\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _email(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"email\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _guid(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"guid\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _uuid(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"uuid\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _uuidv4(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"uuid\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\tversion: \"v4\",\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _uuidv6(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"uuid\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\tversion: \"v6\",\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _uuidv7(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"uuid\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\tversion: \"v7\",\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _url(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"url\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _emoji(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"emoji\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _nanoid(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"nanoid\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/**\n* @deprecated CUID v1 is deprecated by its authors due to information leakage\n* (timestamps embedded in the id). Use {@link _cuid2} instead.\n* See https://github.com/paralleldrive/cuid.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _cuid(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"cuid\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _cuid2(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"cuid2\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _ulid(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"ulid\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _xid(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"xid\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _ksuid(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"ksuid\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _ipv4(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"ipv4\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _ipv6(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"ipv6\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _cidrv4(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"cidrv4\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _cidrv6(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"cidrv6\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _base64(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"base64\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _base64url(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"base64url\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _e164(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"e164\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _jwt(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"jwt\",\n\t\tcheck: \"string_format\",\n\t\tabort: false,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _isoDateTime(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"datetime\",\n\t\tcheck: \"string_format\",\n\t\toffset: false,\n\t\tlocal: false,\n\t\tprecision: null,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _isoDate(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"date\",\n\t\tcheck: \"string_format\",\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _isoTime(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"time\",\n\t\tcheck: \"string_format\",\n\t\tprecision: null,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _isoDuration(Class, params) {\n\treturn new Class({\n\t\ttype: \"string\",\n\t\tformat: \"duration\",\n\t\tcheck: \"string_format\",\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _number(Class, params) {\n\treturn new Class(snapshotChecks({\n\t\ttype: \"number\",\n\t\tchecks: [],\n\t\t...normalizeParams(params)\n\t}));\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _int(Class, params) {\n\treturn new Class({\n\t\ttype: \"number\",\n\t\tcheck: \"number_format\",\n\t\tabort: false,\n\t\tformat: \"safeint\",\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _boolean(Class, params) {\n\treturn new Class({\n\t\ttype: \"boolean\",\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _unknown(Class) {\n\treturn new Class({ type: \"unknown\" });\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _never(Class, params) {\n\treturn new Class({\n\t\ttype: \"never\",\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _lt(value, params) {\n\treturn new $ZodCheckLessThan({\n\t\tcheck: \"less_than\",\n\t\t...normalizeParams(params),\n\t\tvalue,\n\t\tinclusive: false\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _lte(value, params) {\n\treturn new $ZodCheckLessThan({\n\t\tcheck: \"less_than\",\n\t\t...normalizeParams(params),\n\t\tvalue,\n\t\tinclusive: true\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _gt(value, params) {\n\treturn new $ZodCheckGreaterThan({\n\t\tcheck: \"greater_than\",\n\t\t...normalizeParams(params),\n\t\tvalue,\n\t\tinclusive: false\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _gte(value, params) {\n\treturn new $ZodCheckGreaterThan({\n\t\tcheck: \"greater_than\",\n\t\t...normalizeParams(params),\n\t\tvalue,\n\t\tinclusive: true\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _multipleOf(value, params) {\n\treturn new $ZodCheckMultipleOf({\n\t\tcheck: \"multiple_of\",\n\t\t...normalizeParams(params),\n\t\tvalue\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _maxLength(maximum, params) {\n\treturn new $ZodCheckMaxLength({\n\t\tcheck: \"max_length\",\n\t\t...normalizeParams(params),\n\t\tmaximum\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _minLength(minimum, params) {\n\treturn new $ZodCheckMinLength({\n\t\tcheck: \"min_length\",\n\t\t...normalizeParams(params),\n\t\tminimum\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _length(length, params) {\n\treturn new $ZodCheckLengthEquals({\n\t\tcheck: \"length_equals\",\n\t\t...normalizeParams(params),\n\t\tlength\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _regex(pattern, params) {\n\treturn new $ZodCheckRegex({\n\t\tcheck: \"string_format\",\n\t\tformat: \"regex\",\n\t\t...normalizeParams(params),\n\t\tpattern\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _lowercase(params) {\n\treturn new $ZodCheckLowerCase({\n\t\tcheck: \"string_format\",\n\t\tformat: \"lowercase\",\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _uppercase(params) {\n\treturn new $ZodCheckUpperCase({\n\t\tcheck: \"string_format\",\n\t\tformat: \"uppercase\",\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _includes(includes, params) {\n\treturn new $ZodCheckIncludes({\n\t\tcheck: \"string_format\",\n\t\tformat: \"includes\",\n\t\t...normalizeParams(params),\n\t\tincludes\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _startsWith(prefix, params) {\n\treturn new $ZodCheckStartsWith({\n\t\tcheck: \"string_format\",\n\t\tformat: \"starts_with\",\n\t\t...normalizeParams(params),\n\t\tprefix\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _endsWith(suffix, params) {\n\treturn new $ZodCheckEndsWith({\n\t\tcheck: \"string_format\",\n\t\tformat: \"ends_with\",\n\t\t...normalizeParams(params),\n\t\tsuffix\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _overwrite(tx) {\n\treturn new $ZodCheckOverwrite({\n\t\tcheck: \"overwrite\",\n\t\ttx\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _normalize(form) {\n\treturn /* @__PURE__ */ _overwrite((input) => input.normalize(form));\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _trim() {\n\treturn /* @__PURE__ */ _overwrite((input) => input.trim());\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _toLowerCase() {\n\treturn /* @__PURE__ */ _overwrite((input) => input.toLowerCase());\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _toUpperCase() {\n\treturn /* @__PURE__ */ _overwrite((input) => input.toUpperCase());\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _slugify() {\n\treturn /* @__PURE__ */ _overwrite((input) => slugify(input));\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _array(Class, element, params) {\n\treturn new Class({\n\t\ttype: \"array\",\n\t\telement,\n\t\t...normalizeParams(params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _refine(Class, fn, _params) {\n\treturn new Class({\n\t\ttype: \"custom\",\n\t\tcheck: \"custom\",\n\t\tfn,\n\t\t...normalizeParams(_params)\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _superRefine(fn, params) {\n\tconst ch = /* @__PURE__ */ _check((payload) => {\n\t\tpayload.addIssue = (issue$2) => {\n\t\t\tif (typeof issue$2 === \"string\") payload.issues.push(issue(issue$2, payload.value, ch._zod.def));\n\t\t\telse {\n\t\t\t\tconst _issue = issue$2;\n\t\t\t\tif (_issue.fatal) _issue.continue = false;\n\t\t\t\t_issue.code ?? (_issue.code = \"custom\");\n\t\t\t\tif (!(\"input\" in _issue)) _issue.input = payload.value;\n\t\t\t\t_issue.inst ?? (_issue.inst = ch);\n\t\t\t\t_issue.continue ?? (_issue.continue = !ch._zod.def.abort);\n\t\t\t\tpayload.issues.push(issue(_issue));\n\t\t\t}\n\t\t};\n\t\treturn fn(payload.value, payload);\n\t}, params);\n\treturn ch;\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _check(fn, params) {\n\tconst ch = new $ZodCheck({\n\t\tcheck: \"custom\",\n\t\t...normalizeParams(params)\n\t});\n\tch._zod.check = fn;\n\treturn ch;\n}\n//#endregion\n//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/to-json-schema.js\nfunction assignProps(target, ...sources) {\n\tfor (const source of sources) for (const key of Reflect.ownKeys(source)) if (Object.prototype.propertyIsEnumerable.call(source, key)) assignProp(target, key, source[key]);\n\treturn target;\n}\nfunction initializeContext(params) {\n\tlet target = params?.target ?? \"draft-2020-12\";\n\tif (target === \"draft-4\") target = \"draft-04\";\n\tif (target === \"draft-7\") target = \"draft-07\";\n\treturn {\n\t\tprocessors: params.processors ?? {},\n\t\tmetadataRegistry: params?.metadata ?? globalRegistry,\n\t\ttarget,\n\t\tunrepresentable: params?.unrepresentable ?? \"throw\",\n\t\toverride: params?.override ?? (() => {}),\n\t\tio: params?.io ?? \"output\",\n\t\tcounter: 0,\n\t\tseen: /* @__PURE__ */ new Map(),\n\t\tsharedDefsExtractedFor: void 0,\n\t\tsharedEmitDoneFor: void 0,\n\t\tcycles: params?.cycles ?? \"ref\",\n\t\treused: params?.reused ?? \"inline\",\n\t\tintersections: [],\n\t\tdeferred: [],\n\t\texternal: params?.external ?? void 0\n\t};\n}\n/**\n* Applies the `unrepresentable` setting at a site that has no JSON Schema equivalent. Throws\n* `message` unless the setting (or the handler's return value) says otherwise. Returns `true` if a\n* custom JSON Schema was written into `json`, in which case the caller must not write its own.\n*/\nfunction handleUnrepresentable(schema, ctx, json, params, message) {\n\tconst result = typeof ctx.unrepresentable === \"function\" ? ctx.unrepresentable({\n\t\tzodSchema: schema,\n\t\tpath: params.path,\n\t\tmessage\n\t}) : ctx.unrepresentable;\n\tif (result === \"any\") return false;\n\tif (result === void 0 || result === \"throw\") throw new Error(message);\n\tObject.assign(json, result);\n\treturn true;\n}\nfunction processSchema(schema, ctx, _params = {\n\tpath: [],\n\tschemaPath: []\n}) {\n\tvar _a;\n\tconst def = schema._zod.def;\n\tconst seen = ctx.seen.get(schema);\n\tif (seen) {\n\t\tseen.count++;\n\t\tif (_params.schemaPath.includes(schema)) seen.cycle = _params.path;\n\t\treturn seen.schema;\n\t}\n\tconst result = {\n\t\tschema: {},\n\t\tcount: 1,\n\t\tcycle: void 0,\n\t\tpath: _params.path\n\t};\n\tctx.seen.set(schema, result);\n\tctx.sharedDefsExtractedFor = void 0;\n\tctx.sharedEmitDoneFor = void 0;\n\tconst overrideSchema = schema._zod.toJSONSchema?.();\n\tif (overrideSchema) result.schema = overrideSchema;\n\telse {\n\t\tconst params = {\n\t\t\t..._params,\n\t\t\tschemaPath: [..._params.schemaPath, schema],\n\t\t\tpath: _params.path\n\t\t};\n\t\tif (schema._zod.processJSONSchema) schema._zod.processJSONSchema(ctx, result.schema, params);\n\t\telse {\n\t\t\tconst _json = result.schema;\n\t\t\tconst processor = ctx.processors[def.type];\n\t\t\tif (!processor) throw new Error(`[toJSONSchema]: Non-representable type encountered: ${def.type}`);\n\t\t\tprocessor(schema, ctx, _json, params);\n\t\t}\n\t\tconst parent = schema._zod.parent;\n\t\tif (parent) {\n\t\t\tif (!result.ref) result.ref = parent;\n\t\t\tprocessSchema(parent, ctx, params);\n\t\t\tctx.seen.get(parent).isParent = true;\n\t\t}\n\t}\n\tconst meta = ctx.metadataRegistry.get(schema);\n\tif (meta) assignProps(result.schema, meta);\n\tif (ctx.io === \"input\" && isTransforming(schema)) {\n\t\tdelete result.schema.examples;\n\t\tdelete result.schema.default;\n\t}\n\tif (ctx.io === \"input\" && \"_prefault\" in result.schema) (_a = result.schema).default ?? (_a.default = result.schema._prefault);\n\tdelete result.schema._prefault;\n\treturn ctx.seen.get(schema).schema;\n}\nfunction encodeJSONPointerSegment(segment) {\n\treturn segment.replace(/~/g, \"~0\").replace(/\\//g, \"~1\");\n}\nfunction extractDefs(ctx, schema) {\n\tconst root = ctx.seen.get(schema);\n\tif (!root) throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n\tif (ctx.external && ctx.sharedDefsExtractedFor === ctx.external) return;\n\tconst idToSchema = /* @__PURE__ */ new Map();\n\tfor (const entry of ctx.seen.entries()) {\n\t\tconst id = ctx.metadataRegistry.get(entry[0])?.id;\n\t\tif (id) {\n\t\t\tconst existing = idToSchema.get(id);\n\t\t\tif (existing && existing !== entry[0]) throw new Error(`Duplicate schema id \"${id}\" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);\n\t\t\tidToSchema.set(id, entry[0]);\n\t\t}\n\t}\n\tconst makeURI = (entry) => {\n\t\tconst defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n\t\tif (ctx.external) {\n\t\t\tconst externalId = ctx.external.registry.get(entry[0])?.id;\n\t\t\tconst uriGenerator = ctx.external.uri ?? ((id) => id);\n\t\t\tif (externalId) return { ref: uriGenerator(externalId) };\n\t\t\tconst id = entry[1].defId ?? entry[1].schema.id ?? `schema${ctx.counter++}`;\n\t\t\tentry[1].defId = id;\n\t\t\treturn {\n\t\t\t\tdefId: id,\n\t\t\t\tref: `${uriGenerator(\"__shared\")}#/${defsSegment}/${encodeJSONPointerSegment(id)}`\n\t\t\t};\n\t\t}\n\t\tconst uriPrefix = `#`;\n\t\tconst defUriPrefix = `${uriPrefix}/${defsSegment}/`;\n\t\tif (entry[1] === root && !entry[1].schema.id) return { ref: uriPrefix };\n\t\tconst defId = entry[1].schema.id ?? `__schema${ctx.counter++}`;\n\t\treturn {\n\t\t\tdefId,\n\t\t\tref: defUriPrefix + encodeJSONPointerSegment(defId)\n\t\t};\n\t};\n\tconst extractToDef = (entry) => {\n\t\tif (entry[1].schema.$ref) return;\n\t\tconst seen = entry[1];\n\t\tconst { ref, defId } = makeURI(entry);\n\t\tseen.def = { ...seen.schema };\n\t\tif (defId) seen.defId = defId;\n\t\tconst schema = seen.schema;\n\t\tfor (const key in schema) delete schema[key];\n\t\tschema.$ref = ref;\n\t};\n\tif (ctx.cycles === \"throw\") for (const entry of ctx.seen.entries()) {\n\t\tconst seen = entry[1];\n\t\tif (seen.cycle) throw new Error(`Cycle detected: #/${seen.cycle?.join(\"/\")}/<root>\n\nSet the \\`cycles\\` parameter to \\`\"ref\"\\` to resolve cyclical schemas with defs.`);\n\t}\n\tfor (const entry of ctx.seen.entries()) {\n\t\tconst seen = entry[1];\n\t\tif (schema === entry[0]) {\n\t\t\textractToDef(entry);\n\t\t\tcontinue;\n\t\t}\n\t\tif (ctx.external) {\n\t\t\tconst ext = ctx.external.registry.get(entry[0])?.id;\n\t\t\tif (schema !== entry[0] && ext) {\n\t\t\t\textractToDef(entry);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\tif (ctx.metadataRegistry.get(entry[0])?.id) {\n\t\t\textractToDef(entry);\n\t\t\tcontinue;\n\t\t}\n\t\tif (seen.cycle) {\n\t\t\textractToDef(entry);\n\t\t\tcontinue;\n\t\t}\n\t\tif (seen.count > 1) {\n\t\t\tif (ctx.reused === \"ref\") extractToDef(entry);\n\t\t}\n\t}\n\tif (ctx.external) ctx.sharedDefsExtractedFor = ctx.external;\n}\n/** Rewrites `anyOf: [{type: \"a\"}, {type: \"b\"}]` to `type: [\"a\", \"b\"]`, which every JSON Schema draft treats as equivalent and most consumers render far better for the nullable case. Only branches that are a bare type assertion qualify — anything carrying a constraint, `$ref`, `const` or metadata is left alone. Runs after `flattenRef`, so a branch an override decorated or `$defs` extraction turned into a `$ref` is no longer bare and correctly stays in `anyOf`. `oneOf` is excluded: `integer` and `number` overlap, so \"exactly one\" and \"at least one\" are not the same there. OpenAPI 3.0 is excluded: its `type` must be a single string. */\nfunction compactTypeUnion(schema) {\n\tconst options = schema.anyOf;\n\tif (!Array.isArray(options) || options.length === 0 || schema.type !== void 0) return;\n\tconst types = [];\n\tfor (const option of options) {\n\t\tif (!option || typeof option !== \"object\") return;\n\t\tcompactTypeUnion(option);\n\t\tconst keys = Object.keys(option);\n\t\tif (keys.length !== 1 || keys[0] !== \"type\") return;\n\t\tconst type = option.type;\n\t\tfor (const member of Array.isArray(type) ? type : [type]) {\n\t\t\tif (typeof member !== \"string\") return;\n\t\t\tif (!types.includes(member)) types.push(member);\n\t\t}\n\t}\n\tdelete schema.anyOf;\n\tschema.type = types.length === 1 ? types[0] : types;\n}\n/** Keywords `foldIntersection` knows how to combine. Anything else — `$ref`, `patternProperties`,\n* an annotation like `description` — makes a member unfoldable, so a constraint this does not\n* understand leaves the `allOf` alone instead of being silently dropped or misattributed. */\nconst FOLDABLE_KEYS = new Set([\n\t\"type\",\n\t\"properties\",\n\t\"required\",\n\t\"additionalProperties\"\n]);\nconst UNION_KEYS = [\"oneOf\", \"anyOf\"];\n/** A member's constraint on a key it does not declare itself. A `catchall` states one; `false`, an absent `additionalProperties`, and the empty schema a loose object emits state nothing. */\nfunction undeclaredConstraint(member) {\n\tconst extra = member.additionalProperties;\n\tif (extra === void 0 || extra === false || typeof extra !== \"object\" || extra === null) return null;\n\treturn Object.keys(extra).length ? extra : null;\n}\n/** Combines object members into the single object they describe together, or returns `null` if any of them carries a keyword outside {@link FOLDABLE_KEYS}. */\nfunction foldObjects(members) {\n\tconst objects = [];\n\tfor (const member of members) {\n\t\tif (typeof member !== \"object\" || member.type !== \"object\") return null;\n\t\tfor (const key in member) if (!FOLDABLE_KEYS.has(key)) return null;\n\t\tobjects.push(member);\n\t}\n\tconst properties = {};\n\tconst required = /* @__PURE__ */ new Set();\n\tfor (const object of objects) {\n\t\tfor (const key in object.properties) {\n\t\t\tif (Object.prototype.hasOwnProperty.call(properties, key)) continue;\n\t\t\tconst parts = [];\n\t\t\tfor (const other of objects) {\n\t\t\t\tconst part = other.properties?.[key] ?? undeclaredConstraint(other);\n\t\t\t\tif (part === null || part === void 0) continue;\n\t\t\t\tif (!parts.some((seen) => JSON.stringify(seen) === JSON.stringify(part))) parts.push(part);\n\t\t\t}\n\t\t\tassignProp(properties, key, parts.length === 1 ? parts[0] : foldObjects(parts) ?? { allOf: parts });\n\t\t}\n\t\tfor (const key of object.required ?? []) required.add(key);\n\t}\n\tconst folded = {\n\t\ttype: \"object\",\n\t\tproperties\n\t};\n\tif (required.size) folded.required = [...required];\n\tif (objects.every((object) => object.additionalProperties === false)) folded.additionalProperties = false;\n\telse {\n\t\tconst constraints = [];\n\t\tfor (const object of objects) {\n\t\t\tconst constraint = undeclaredConstraint(object);\n\t\t\tif (constraint && !constraints.some((seen) => JSON.stringify(seen) === JSON.stringify(constraint))) constraints.push(constraint);\n\t\t}\n\t\tif (constraints.length === 1) folded.additionalProperties = constraints[0];\n\t\telse if (constraints.length > 1) folded.additionalProperties = { allOf: constraints };\n\t}\n\treturn folded;\n}\n/** `additionalProperties` in an `allOf` member sees only that member's own `properties`, so two\n* closed object members reject each other's keys and the schema validates nothing. Zod's parser\n* pools the key sets instead — `handleIntersectionResults` reports a key as unrecognized only when\n* *every* side rejects it — so the emitted schema has to pool them too, and folding the members\n* into one object is the encoding that says so on every target.\n*\n* This runs from `finalize`, after `extractDefs`, which is what keeps it clear of the `$ref`\n* machinery: a member extracted into `$defs` is already a `$ref` by now and declines to fold, so it\n* keeps its reference and its own closedness rather than being inlined as a stale copy. */\nfunction foldIntersection(json) {\n\tconst allOf = json.allOf;\n\tif (!Array.isArray(allOf) || allOf.length < 2) return;\n\tfor (const key of FOLDABLE_KEYS) if (key in json) return;\n\tconst unions = allOf.filter((m) => UNION_KEYS.some((k) => Array.isArray(m[k])));\n\tlet folded = null;\n\tif (!unions.length) folded = foldObjects(allOf);\n\telse {\n\t\tconst union = unions[0];\n\t\tconst keyword = UNION_KEYS.find((k) => Array.isArray(union[k]));\n\t\tif (Object.keys(union).length !== 1) return;\n\t\tconst rest = allOf.filter((m) => m !== union);\n\t\tconst branches = union[keyword].map((branch) => foldObjects([...rest, branch]));\n\t\tif (branches.some((b) => !b)) return;\n\t\tfolded = { [keyword]: branches };\n\t}\n\tif (!folded) return;\n\tdelete json.allOf;\n\tassignProps(json, folded);\n}\nfunction finalize(ctx, schema) {\n\tconst root = ctx.seen.get(schema);\n\tif (!root) throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n\tconst flattenRef = (zodSchema) => {\n\t\tconst seen = ctx.seen.get(zodSchema);\n\t\tif (seen.ref === null) return;\n\t\tconst schema = seen.def ?? seen.schema;\n\t\tconst _cached = { ...schema };\n\t\tconst ref = seen.ref;\n\t\tseen.ref = null;\n\t\tif (ref) {\n\t\t\tflattenRef(ref);\n\t\t\tconst refSeen = ctx.seen.get(ref);\n\t\t\tconst refSchema = refSeen.schema;\n\t\t\tif (refSchema.$ref && (ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\")) {\n\t\t\t\tschema.allOf = schema.allOf ?? [];\n\t\t\t\tschema.allOf.push(refSchema);\n\t\t\t} else assignProps(schema, refSchema);\n\t\t\tassignProps(schema, _cached);\n\t\t\tif (zodSchema._zod.parent === ref) for (const key in schema) {\n\t\t\t\tif (key === \"$ref\" || key === \"allOf\") continue;\n\t\t\t\tif (!(key in _cached)) delete schema[key];\n\t\t\t}\n\t\t\tif (refSchema.$ref && refSeen.def) for (const key in schema) {\n\t\t\t\tif (key === \"$ref\" || key === \"allOf\") continue;\n\t\t\t\tif (key in refSeen.def && JSON.stringify(schema[key]) === JSON.stringify(refSeen.def[key])) delete schema[key];\n\t\t\t}\n\t\t}\n\t\tconst parent = zodSchema._zod.parent;\n\t\tif (parent && parent !== ref) {\n\t\t\tflattenRef(parent);\n\t\t\tconst parentSeen = ctx.seen.get(parent);\n\t\t\tif (parentSeen?.schema.$ref) {\n\t\t\t\tschema.$ref = parentSeen.schema.$ref;\n\t\t\t\tif (parentSeen.def) for (const key in schema) {\n\t\t\t\t\tif (key === \"$ref\" || key === \"allOf\") continue;\n\t\t\t\t\tif (key in parentSeen.def && JSON.stringify(schema[key]) === JSON.stringify(parentSeen.def[key])) delete schema[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tctx.override({\n\t\t\tzodSchema,\n\t\t\tjsonSchema: schema,\n\t\t\tpath: seen.path ?? []\n\t\t});\n\t};\n\tif (!ctx.external || ctx.sharedEmitDoneFor !== ctx.external) {\n\t\tfor (const entry of [...ctx.seen.entries()].reverse()) flattenRef(entry[0]);\n\t\tif (ctx.target !== \"openapi-3.0\") for (const entry of ctx.seen.entries()) compactTypeUnion(entry[1].def ?? entry[1].schema);\n\t\tfor (const rewrite of ctx.deferred) rewrite();\n\t\tif (ctx.intersections.length) {\n\t\t\tconst carriers = /* @__PURE__ */ new Map();\n\t\t\tfor (const seen of ctx.seen.values()) for (const json of [seen.schema, seen.def]) {\n\t\t\t\tconst allOf = json?.allOf;\n\t\t\t\tif (!Array.isArray(allOf)) continue;\n\t\t\t\tconst existing = carriers.get(allOf);\n\t\t\t\tif (existing) existing.push(json);\n\t\t\t\telse carriers.set(allOf, [json]);\n\t\t\t}\n\t\t\tfor (const allOf of ctx.intersections) for (const json of carriers.get(allOf) ?? []) foldIntersection(json);\n\t\t}\n\t}\n\tconst result = {};\n\tif (ctx.target === \"draft-2020-12\") result.$schema = \"https://json-schema.org/draft/2020-12/schema\";\n\telse if (ctx.target === \"draft-07\") result.$schema = \"http://json-schema.org/draft-07/schema#\";\n\telse if (ctx.target === \"draft-04\") result.$schema = \"http://json-schema.org/draft-04/schema#\";\n\telse if (ctx.target === \"openapi-3.0\") {}\n\tif (ctx.external?.uri) {\n\t\tconst id = ctx.external.registry.get(schema)?.id;\n\t\tif (!id) throw new Error(\"Schema is missing an `id` property\");\n\t\tresult.$id = ctx.external.uri(id);\n\t}\n\tassignProps(result, root.defId ? root.schema : root.def ?? root.schema);\n\tconst rootMetaId = ctx.metadataRegistry.get(schema)?.id;\n\tif (rootMetaId !== void 0 && result.id === rootMetaId) delete result.id;\n\tconst defs = ctx.external?.defs ?? {};\n\tif (!ctx.external || ctx.sharedEmitDoneFor !== ctx.external) for (const entry of ctx.seen.entries()) {\n\t\tconst seen = entry[1];\n\t\tif (seen.def && seen.defId) {\n\t\t\tif (seen.def.id === seen.defId) delete seen.def.id;\n\t\t\tassignProp(defs, seen.defId, seen.def);\n\t\t}\n\t}\n\tif (ctx.external) ctx.sharedEmitDoneFor = ctx.external;\n\tif (ctx.external) {} else if (Object.keys(defs).length > 0) if (ctx.target === \"draft-2020-12\") result.$defs = defs;\n\telse result.definitions = defs;\n\ttry {\n\t\tconst finalized = JSON.parse(JSON.stringify(result));\n\t\tObject.defineProperty(finalized, \"~standard\", {\n\t\t\tvalue: {\n\t\t\t\t...schema[\"~standard\"],\n\t\t\t\tjsonSchema: {\n\t\t\t\t\tinput: createStandardJSONSchemaMethod(schema, \"input\", ctx.processors),\n\t\t\t\t\toutput: createStandardJSONSchemaMethod(schema, \"output\", ctx.processors)\n\t\t\t\t}\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t\twritable: false\n\t\t});\n\t\treturn finalized;\n\t} catch (_err) {\n\t\tthrow new Error(\"Error converting schema to JSON.\");\n\t}\n}\nfunction isTransforming(_schema, _ctx) {\n\tconst ctx = _ctx ?? { seen: /* @__PURE__ */ new Set() };\n\tif (ctx.seen.has(_schema)) return false;\n\tctx.seen.add(_schema);\n\tconst def = _schema._zod.def;\n\tif (def.type === \"transform\") return true;\n\tif (def.type === \"array\") return isTransforming(def.element, ctx);\n\tif (def.type === \"set\") return isTransforming(def.valueType, ctx);\n\tif (def.type === \"lazy\") return isTransforming(def.getter(), ctx);\n\tif (def.type === \"promise\" || def.type === \"optional\" || def.type === \"nonoptional\" || def.type === \"nullable\" || def.type === \"readonly\" || def.type === \"default\" || def.type === \"prefault\" || def.type === \"catch\") return isTransforming(def.innerType, ctx);\n\tif (def.type === \"intersection\") return isTransforming(def.left, ctx) || isTransforming(def.right, ctx);\n\tif (def.type === \"record\" || def.type === \"map\") return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx);\n\tif (def.type === \"pipe\") {\n\t\tif (_schema._zod.traits.has(\"$ZodCodec\")) return true;\n\t\treturn isTransforming(def.in, ctx) || isTransforming(def.out, ctx);\n\t}\n\tif (def.type === \"object\") {\n\t\tfor (const key in def.shape) if (isTransforming(def.shape[key], ctx)) return true;\n\t\treturn false;\n\t}\n\tif (def.type === \"union\") {\n\t\tfor (const option of def.options) if (isTransforming(option, ctx)) return true;\n\t\treturn false;\n\t}\n\tif (def.type === \"tuple\") {\n\t\tfor (const item of def.items) if (isTransforming(item, ctx)) return true;\n\t\tif (def.rest && isTransforming(def.rest, ctx)) return true;\n\t\treturn false;\n\t}\n\treturn false;\n}\n/**\n* Creates a toJSONSchema method for a schema instance.\n* This encapsulates the logic of initializing context, processing, extracting defs, and finalizing.\n*/\nconst createToJSONSchemaMethod = (schema, processors = {}) => (params) => {\n\tconst ctx = initializeContext({\n\t\t...params,\n\t\tprocessors\n\t});\n\tprocessSchema(schema, ctx);\n\textractDefs(ctx, schema);\n\treturn finalize(ctx, schema);\n};\nconst createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) => {\n\tconst { libraryOptions, target } = params ?? {};\n\tconst ctx = initializeContext({\n\t\t...libraryOptions ?? {},\n\t\ttarget,\n\t\tio,\n\t\tprocessors\n\t});\n\tprocessSchema(schema, ctx);\n\textractDefs(ctx, schema);\n\treturn finalize(ctx, schema);\n};\n//#endregion\n//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/json-schema-processors.js\nconst narrowMin = (agg, key, value) => {\n\tif (agg[key] === void 0 || value > agg[key]) agg[key] = value;\n};\nconst narrowMax = (agg, key, value) => {\n\tif (agg[key] === void 0 || value < agg[key]) agg[key] = value;\n};\nconst narrowBoth = (agg, value) => {\n\tnarrowMin(agg, \"minimum\", value);\n\tnarrowMax(agg, \"maximum\", value);\n};\nconst addDivisor = (agg, value) => {\n\tagg.multipleOf ?? (agg.multipleOf = []);\n\tif (!agg.multipleOf.includes(value)) agg.multipleOf.push(value);\n};\nconst addPattern = (agg, pattern) => {\n\tagg.patterns ?? (agg.patterns = /* @__PURE__ */ new Set());\n\tagg.patterns.add(pattern);\n};\nconst intersectMime = (agg, mime) => {\n\tagg.mime = agg.mime ? agg.mime.filter((m) => mime.includes(m)) : [...mime];\n};\nconst setFormat = (agg, format) => {\n\tagg.format = format;\n\tif (format.includes(\"int\")) agg.isInt = true;\n};\nconst minContributor = (agg, def) => narrowMin(agg, \"minimum\", def.minimum);\nconst maxContributor = (agg, def) => narrowMax(agg, \"maximum\", def.maximum);\nconst formatContributor = (ranges) => (agg, def) => {\n\tsetFormat(agg, def.format);\n\tconst [minimum, maximum] = ranges[def.format];\n\tnarrowMin(agg, \"minimum\", minimum);\n\tnarrowMax(agg, \"maximum\", maximum);\n};\nconst contributors = {\n\tgreater_than: (agg, def) => narrowMin(agg, def.inclusive ? \"minimum\" : \"exclusiveMinimum\", def.value),\n\tless_than: (agg, def) => narrowMax(agg, def.inclusive ? \"maximum\" : \"exclusiveMaximum\", def.value),\n\tmultiple_of: (agg, def) => addDivisor(agg, def.value),\n\tnumber_format: formatContributor(NUMBER_FORMAT_RANGES),\n\tbigint_format: formatContributor(BIGINT_FORMAT_RANGES),\n\tmin_length: minContributor,\n\tmax_length: maxContributor,\n\tlength_equals: (agg, def) => narrowBoth(agg, def.length),\n\tmin_size: minContributor,\n\tmax_size: maxContributor,\n\tsize_equals: (agg, def) => narrowBoth(agg, def.size),\n\tstring_format: (agg, def) => {\n\t\tsetFormat(agg, def.format);\n\t\tif (def.pattern) addPattern(agg, def.pattern);\n\t\tif (def.format === \"base64\" || def.format === \"base64url\") agg.contentEncoding = def.format;\n\t\tif (def.local || def.precision === -1) agg.laxFormat = true;\n\t},\n\tmime_type: (agg, def) => intersectMime(agg, def.mime)\n};\nfunction aggregateChecks(schema) {\n\tconst agg = {};\n\tconst def = schema._zod.def;\n\tconst list = schema._zod.traits.has(\"$ZodCheck\") ? [schema, ...def.checks ?? []] : def.checks ?? [];\n\tfor (const ch of list) contributors[ch._zod.def.check]?.(agg, ch._zod.def);\n\tconst bag = schema._zod.bag;\n\tif (bag.minimum !== void 0) narrowMin(agg, \"minimum\", bag.minimum);\n\tif (bag.exclusiveMinimum !== void 0) narrowMin(agg, \"exclusiveMinimum\", bag.exclusiveMinimum);\n\tif (bag.maximum !== void 0) narrowMax(agg, \"maximum\", bag.maximum);\n\tif (bag.exclusiveMaximum !== void 0) narrowMax(agg, \"exclusiveMaximum\", bag.exclusiveMaximum);\n\tif (bag.multipleOf !== void 0) addDivisor(agg, bag.multipleOf);\n\tif (bag.format !== void 0) {\n\t\tagg.format ?? (agg.format = bag.format);\n\t\tif (bag.format.includes(\"int\")) agg.isInt = true;\n\t}\n\tif (bag.mime) intersectMime(agg, bag.mime);\n\tfor (const pattern of bag.patterns ?? []) addPattern(agg, pattern);\n\treturn agg;\n}\nconst formatMap = {\n\tguid: \"uuid\",\n\turl: \"uri\",\n\tdatetime: \"date-time\",\n\tjson_string: \"json-string\",\n\tregex: \"\"\n};\nconst exactPatterns = new Map([[base64Charset, base64], [base64urlCharset, base64url]]);\nconst exactPattern = (p) => exactPatterns.get(p) ?? p;\nconst stringProcessor = (schema, ctx, _json, _params) => {\n\tconst json = _json;\n\tjson.type = \"string\";\n\tconst { minimum, maximum, format, patterns, contentEncoding, laxFormat } = aggregateChecks(schema);\n\tif (typeof minimum === \"number\") json.minLength = minimum;\n\tif (typeof maximum === \"number\") json.maxLength = maximum;\n\tif (format) {\n\t\tjson.format = formatMap[format] ?? format;\n\t\tif (json.format === \"\") delete json.format;\n\t\tif (format === \"time\" || laxFormat) delete json.format;\n\t}\n\tif (contentEncoding) json.contentEncoding = contentEncoding;\n\tif (patterns && patterns.size > 0) {\n\t\tconst patternList = [...patterns].map(exactPattern);\n\t\tif (patternList.length === 1) json.pattern = patternList[0].source;\n\t\telse if (patternList.length > 1) json.allOf = [...patternList.map((regex) => ({\n\t\t\t...ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\" ? { type: \"string\" } : {},\n\t\t\tpattern: regex.source\n\t\t}))];\n\t}\n};\nconst numberProcessor = (schema, ctx, _json, params) => {\n\tconst json = _json;\n\tconst { minimum, maximum, multipleOf, exclusiveMaximum, exclusiveMinimum, isInt } = aggregateChecks(schema);\n\tjson.type = isInt ? \"integer\" : \"number\";\n\tconst exMin = typeof exclusiveMinimum === \"number\" && exclusiveMinimum >= (minimum ?? Number.NEGATIVE_INFINITY);\n\tconst exMax = typeof exclusiveMaximum === \"number\" && exclusiveMaximum <= (maximum ?? Number.POSITIVE_INFINITY);\n\tconst legacy = ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\";\n\tif (exMin) if (legacy) {\n\t\tjson.minimum = exclusiveMinimum;\n\t\tjson.exclusiveMinimum = true;\n\t} else json.exclusiveMinimum = exclusiveMinimum;\n\telse if (typeof minimum === \"number\") json.minimum = minimum;\n\tif (exMax) if (legacy) {\n\t\tjson.maximum = exclusiveMaximum;\n\t\tjson.exclusiveMaximum = true;\n\t} else json.exclusiveMaximum = exclusiveMaximum;\n\telse if (typeof maximum === \"number\") json.maximum = maximum;\n\tif (multipleOf) {\n\t\tconst divisors = /* @__PURE__ */ new Set();\n\t\tfor (const divisor of multipleOf) if (Number.isFinite(divisor) && divisor !== 0) divisors.add(Math.abs(divisor));\n\t\telse handleUnrepresentable(schema, ctx, json, params, `A multipleOf divisor of ${divisor} cannot be represented in JSON Schema`);\n\t\tconst [first, ...rest] = divisors;\n\t\tif (first !== void 0) json.multipleOf = first;\n\t\tif (rest.length) json.allOf = [...json.allOf ?? [], ...rest.map((m) => ({ multipleOf: m }))];\n\t}\n};\nconst booleanProcessor = (_schema, _ctx, json, _params) => {\n\tjson.type = \"boolean\";\n};\nconst neverProcessor = (_schema, _ctx, json, _params) => {\n\tjson.not = {};\n};\nconst unknownProcessor = (_schema, _ctx, _json, _params) => {};\nconst enumProcessor = (schema, _ctx, json, _params) => {\n\tconst def = schema._zod.def;\n\tconst values = getEnumValues(def.entries);\n\tif (values.length === 0) {\n\t\tjson.not = {};\n\t\treturn;\n\t}\n\tif (values.every((v) => typeof v === \"number\")) json.type = \"number\";\n\tif (values.every((v) => typeof v === \"string\")) json.type = \"string\";\n\tjson.enum = values;\n};\nconst literalProcessor = (schema, ctx, json, params) => {\n\tconst def = schema._zod.def;\n\tif (def.values.length === 0) {\n\t\tjson.not = {};\n\t\treturn;\n\t}\n\tconst vals = [];\n\tfor (const val of def.values) if (val === void 0) {\n\t\tif (handleUnrepresentable(schema, ctx, json, params, \"Literal `undefined` cannot be represented in JSON Schema\")) return;\n\t} else if (typeof val === \"bigint\") {\n\t\tif (handleUnrepresentable(schema, ctx, json, params, \"BigInt literals cannot be represented in JSON Schema\")) return;\n\t\tvals.push(Number(val));\n\t} else vals.push(val);\n\tif (vals.length === 0) {} else if (vals.length === 1) {\n\t\tconst val = vals[0];\n\t\tjson.type = val === null ? \"null\" : typeof val;\n\t\tif (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") json.enum = [val];\n\t\telse json.const = val;\n\t} else {\n\t\tif (vals.every((v) => typeof v === \"number\")) json.type = \"number\";\n\t\tif (vals.every((v) => typeof v === \"string\")) json.type = \"string\";\n\t\tif (vals.every((v) => typeof v === \"boolean\")) json.type = \"boolean\";\n\t\tif (vals.every((v) => v === null)) json.type = \"null\";\n\t\tjson.enum = vals;\n\t}\n};\nconst customProcessor = (schema, ctx, json, params) => {\n\thandleUnrepresentable(schema, ctx, json, params, \"Custom types cannot be represented in JSON Schema\");\n};\nconst transformProcessor = (schema, ctx, json, params) => {\n\thandleUnrepresentable(schema, ctx, json, params, \"Transforms cannot be represented in JSON Schema\");\n};\nconst arrayProcessor = (schema, ctx, _json, params) => {\n\tconst json = _json;\n\tconst def = schema._zod.def;\n\tconst { minimum, maximum } = aggregateChecks(schema);\n\tif (typeof minimum === \"number\") json.minItems = minimum;\n\tif (typeof maximum === \"number\") json.maxItems = maximum;\n\tjson.type = \"array\";\n\tjson.items = processSchema(def.element, ctx, {\n\t\t...params,\n\t\tpath: [...params.path, \"items\"]\n\t});\n};\nfunction inputOptin(schema) {\n\tconst def = schema._zod.def;\n\tif (def.type === \"pipe\" && def.in._zod.traits.has(\"$ZodTransform\")) return inputOptin(def.out);\n\tif (def.type === \"catch\") return inputOptin(def.innerType);\n\treturn schema._zod.optin;\n}\nconst objectProcessor = (schema, ctx, _json, params) => {\n\tconst json = _json;\n\tconst def = schema._zod.def;\n\tconst shape = def.shape;\n\tif (Object.getOwnPropertySymbols(shape).length && handleUnrepresentable(schema, ctx, json, params, \"Symbol keys cannot be represented in JSON Schema\")) return;\n\tjson.type = \"object\";\n\tjson.properties = {};\n\tfor (const key in shape) assignProp(json.properties, key, processSchema(shape[key], ctx, {\n\t\t...params,\n\t\tpath: [\n\t\t\t...params.path,\n\t\t\t\"properties\",\n\t\t\tkey\n\t\t]\n\t}));\n\tconst requiredKeys = [];\n\tfor (const key of Object.keys(shape)) {\n\t\tconst field = def.shape[key];\n\t\tif (ctx.io === \"input\" ? inputOptin(field) === void 0 : field._zod.optout === void 0) requiredKeys.push(key);\n\t}\n\tif (requiredKeys.length > 0) json.required = requiredKeys;\n\tif (def.catchall?._zod.def.type === \"never\") json.additionalProperties = false;\n\telse if (!def.catchall) {\n\t\tif (ctx.io === \"output\") json.additionalProperties = false;\n\t} else if (def.catchall) json.additionalProperties = processSchema(def.catchall, ctx, {\n\t\t...params,\n\t\tpath: [...params.path, \"additionalProperties\"]\n\t});\n};\nconst unionProcessor = (schema, ctx, json, params) => {\n\tconst def = schema._zod.def;\n\tconst isExclusive = def.inclusive === false;\n\tconst options = def.options.map((x, i) => processSchema(x, ctx, {\n\t\t...params,\n\t\tpath: [\n\t\t\t...params.path,\n\t\t\tisExclusive ? \"oneOf\" : \"anyOf\",\n\t\t\ti\n\t\t]\n\t}));\n\tif (isExclusive) json.oneOf = options;\n\telse json.anyOf = options;\n};\nconst intersectionProcessor = (schema, ctx, json, params) => {\n\tconst def = schema._zod.def;\n\tconst a = processSchema(def.left, ctx, {\n\t\t...params,\n\t\tpath: [\n\t\t\t...params.path,\n\t\t\t\"allOf\",\n\t\t\t0\n\t\t]\n\t});\n\tconst b = processSchema(def.right, ctx, {\n\t\t...params,\n\t\tpath: [\n\t\t\t...params.path,\n\t\t\t\"allOf\",\n\t\t\t1\n\t\t]\n\t});\n\tconst isSimpleIntersection = (val) => \"allOf\" in val && Object.keys(val).length === 1;\n\tconst allOf = [...isSimpleIntersection(a) ? a.allOf : [a], ...isSimpleIntersection(b) ? b.allOf : [b]];\n\tjson.allOf = allOf;\n\tctx.intersections.push(allOf);\n};\n/** JSON object keys are always strings, so a numeric record key schema is re-expressed over the\n* numeric-string form the record parser matches. Deferred to `finalize`, after the flatten: a key\n* behind a wrapper only carries its own `type` before then, and a union key only has its branches.\n*\n* A numeric bound cannot apply to a property name, so `minimum` and its siblings are dropped rather\n* than carried over: keeping them beside `type: \"string\"` reproduces the match-nothing schema this\n* exists to fix. A key that carries one therefore emits wider than the record parses — `z.record(z.number().min(5), V)`\n* accepts `\"3\"` — which is the deliberate trade, since throwing on it would reject an ordinary schema\n* outright. */\nfunction stringifyKeyNames(bySchema, json, visited) {\n\tif (json.$ref) {\n\t\tif (visited.has(json)) return json;\n\t\tvisited.add(json);\n\t\tconst def = bySchema.get(json)?.def;\n\t\tif (!def) return json;\n\t\tconst inlined = stringifyKeyNames(bySchema, def, visited);\n\t\treturn inlined === def ? json : inlined;\n\t}\n\tfor (const keyword of [\"anyOf\", \"oneOf\"]) {\n\t\tconst branches = json[keyword];\n\t\tif (!Array.isArray(branches)) continue;\n\t\tconst mapped = branches.map((branch) => stringifyKeyNames(bySchema, branch, visited));\n\t\tif (mapped.some((branch, i) => branch !== branches[i])) json = {\n\t\t\t...json,\n\t\t\t[keyword]: mapped\n\t\t};\n\t}\n\tconst types = Array.isArray(json.type) ? json.type : [json.type];\n\tconst numericType = !types.includes(\"string\") && types.some((t) => t === \"number\" || t === \"integer\");\n\tconst values = json.enum ?? (json.const !== void 0 ? [json.const] : void 0);\n\tif (!numericType && !values?.some((v) => typeof v === \"number\")) return json;\n\tconst { minimum, maximum, exclusiveMinimum, exclusiveMaximum, multipleOf, format, id, ...rest } = json;\n\tif (rest.enum) rest.enum = rest.enum.map((v) => typeof v === \"number\" ? String(v) : v);\n\telse if (typeof rest.const === \"number\") rest.const = String(rest.const);\n\tif (!numericType) return rest;\n\trest.type = \"string\";\n\tif (!values) rest.pattern = (types.includes(\"number\") ? number$1 : integer).source;\n\treturn rest;\n}\n/** Every record of one conversion, so the carriers are found in a single pass rather than once per record. */\nconst pendingRecords = /* @__PURE__ */ new WeakMap();\nfunction rewriteKeyNames(ctx) {\n\tconst bySchema = /* @__PURE__ */ new Map();\n\tfor (const entry of ctx.seen.values()) if (entry.def && !bySchema.has(entry.schema)) bySchema.set(entry.schema, entry);\n\tconst rewrites = /* @__PURE__ */ new Map();\n\tfor (const record of pendingRecords.get(ctx) ?? []) {\n\t\tconst seen = ctx.seen.get(record);\n\t\tconst names = (seen?.def ?? seen?.schema)?.propertyNames;\n\t\tif (!names || names === true || rewrites.has(names)) continue;\n\t\tconst rewritten = stringifyKeyNames(bySchema, names, /* @__PURE__ */ new Set());\n\t\tif (rewritten !== names) rewrites.set(names, rewritten);\n\t}\n\tif (!rewrites.size) return;\n\tfor (const entry of ctx.seen.values()) for (const carrier of [entry.schema, entry.def]) {\n\t\tconst rewritten = carrier && rewrites.get(carrier.propertyNames);\n\t\tif (rewritten) carrier.propertyNames = rewritten;\n\t}\n}\nconst recordProcessor = (schema, ctx, _json, params) => {\n\tconst json = _json;\n\tconst def = schema._zod.def;\n\tjson.type = \"object\";\n\tconst keyType = def.keyType;\n\tconst patterns = aggregateChecks(keyType).patterns;\n\tif (def.mode === \"loose\" && patterns && patterns.size > 0) {\n\t\tconst valueSchema = processSchema(def.valueType, ctx, {\n\t\t\t...params,\n\t\t\tpath: [\n\t\t\t\t...params.path,\n\t\t\t\t\"patternProperties\",\n\t\t\t\t\"*\"\n\t\t\t]\n\t\t});\n\t\tjson.patternProperties = {};\n\t\tfor (const pattern of patterns) assignProp(json.patternProperties, exactPattern(pattern).source, valueSchema);\n\t} else {\n\t\tif (ctx.target === \"draft-07\" || ctx.target === \"draft-2020-12\") {\n\t\t\tjson.propertyNames = processSchema(def.keyType, ctx, {\n\t\t\t\t...params,\n\t\t\t\tpath: [...params.path, \"propertyNames\"]\n\t\t\t});\n\t\t\tlet pending = pendingRecords.get(ctx);\n\t\t\tif (!pending) {\n\t\t\t\tpending = [];\n\t\t\t\tpendingRecords.set(ctx, pending);\n\t\t\t\tctx.deferred.push(() => rewriteKeyNames(ctx));\n\t\t\t}\n\t\t\tpending.push(schema);\n\t\t}\n\t\tjson.additionalProperties = processSchema(def.valueType, ctx, {\n\t\t\t...params,\n\t\t\tpath: [...params.path, \"additionalProperties\"]\n\t\t});\n\t}\n\tconst keyValues = keyType._zod.values;\n\tconst omittableOnInput = ctx.io === \"input\" && inputOptin(def.valueType) !== void 0;\n\tif (keyValues && !def.partial && !omittableOnInput) {\n\t\tconst validKeyValues = [...keyValues].filter((v) => typeof v === \"string\" || typeof v === \"number\");\n\t\tif (validKeyValues.length > 0) json.required = validKeyValues.map(String);\n\t}\n};\nconst nullableProcessor = (schema, ctx, json, params) => {\n\tconst def = schema._zod.def;\n\tconst inner = processSchema(def.innerType, ctx, params);\n\tconst seen = ctx.seen.get(schema);\n\tif (ctx.target === \"openapi-3.0\") {\n\t\tseen.ref = def.innerType;\n\t\tjson.nullable = true;\n\t} else json.anyOf = [inner, { type: \"null\" }];\n};\nconst nonoptionalProcessor = (schema, ctx, _json, params) => {\n\tconst def = schema._zod.def;\n\tprocessSchema(def.innerType, ctx, params);\n\tconst seen = ctx.seen.get(schema);\n\tseen.ref = def.innerType;\n};\n/** Round-trips a default value through JSON so the emitted schema is guaranteed to be valid JSON.\n* A BigInt has no reliable encoding, so it goes through `unrepresentable` like any other\n* unrepresentable value. Returns a sentinel when the caller must not write a default of its own. */\nconst UNREPRESENTABLE_DEFAULT = Symbol();\nfunction serializeDefaultValue(value, schema, ctx, json, params) {\n\tlet unrepresentable = false;\n\tconst serialized = JSON.stringify(value, (_, val) => {\n\t\tif (typeof val !== \"bigint\") return val;\n\t\tunrepresentable = true;\n\t\treturn null;\n\t});\n\tif (!unrepresentable) return JSON.parse(serialized);\n\thandleUnrepresentable(schema, ctx, json, params, \"BigInt defaults cannot be represented in JSON Schema\");\n\treturn UNREPRESENTABLE_DEFAULT;\n}\nconst defaultProcessor = (schema, ctx, json, params) => {\n\tconst def = schema._zod.def;\n\tprocessSchema(def.innerType, ctx, params);\n\tconst seen = ctx.seen.get(schema);\n\tseen.ref = def.innerType;\n\tconst value = serializeDefaultValue(def.defaultValue, schema, ctx, json, params);\n\tif (value !== UNREPRESENTABLE_DEFAULT) json.default = value;\n};\nconst prefaultProcessor = (schema, ctx, json, params) => {\n\tconst def = schema._zod.def;\n\tprocessSchema(def.innerType, ctx, params);\n\tconst seen = ctx.seen.get(schema);\n\tseen.ref = def.innerType;\n\tif (ctx.io !== \"input\") return;\n\tconst value = serializeDefaultValue(def.defaultValue, schema, ctx, json, params);\n\tif (value !== UNREPRESENTABLE_DEFAULT) json._prefault = value;\n};\nconst catchProcessor = (schema, ctx, json, params) => {\n\tconst def = schema._zod.def;\n\tprocessSchema(def.innerType, ctx, params);\n\tconst seen = ctx.seen.get(schema);\n\tseen.ref = def.innerType;\n\tlet catchValue;\n\ttry {\n\t\tcatchValue = def.catchValue(void 0);\n\t} catch {\n\t\thandleUnrepresentable(schema, ctx, json, params, \"Dynamic catch values are not supported in JSON Schema\");\n\t\treturn;\n\t}\n\tjson.default = catchValue;\n};\nconst pipeProcessor = (schema, ctx, _json, params) => {\n\tconst def = schema._zod.def;\n\tconst inIsTransform = def.in._zod.traits.has(\"$ZodTransform\");\n\tconst innerType = ctx.io === \"input\" ? inIsTransform ? def.out : def.in : def.out;\n\tprocessSchema(innerType, ctx, params);\n\tconst seen = ctx.seen.get(schema);\n\tseen.ref = innerType;\n};\nconst readonlyProcessor = (schema, ctx, json, params) => {\n\tconst def = schema._zod.def;\n\tprocessSchema(def.innerType, ctx, params);\n\tconst seen = ctx.seen.get(schema);\n\tseen.ref = def.innerType;\n\tjson.readOnly = true;\n};\nconst optionalProcessor = (schema, ctx, _json, params) => {\n\tconst def = schema._zod.def;\n\tprocessSchema(def.innerType, ctx, params);\n\tconst seen = ctx.seen.get(schema);\n\tseen.ref = def.innerType;\n};\n//#endregion\n//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/classic/errors.js\nconst _installedErrorProtos = /* @__PURE__ */ new WeakSet([Object.prototype, Error.prototype]);\nfunction _lazyMethod(proto, key, make) {\n\tObject.defineProperty(proto, key, {\n\t\tconfigurable: true,\n\t\tenumerable: false,\n\t\tget() {\n\t\t\tconst value = make(this);\n\t\t\tObject.defineProperty(this, key, {\n\t\t\t\tvalue,\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true\n\t\t\t});\n\t\t\treturn value;\n\t\t},\n\t\tset(value) {\n\t\t\tObject.defineProperty(this, key, {\n\t\t\t\tvalue,\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true\n\t\t\t});\n\t\t}\n\t});\n}\nconst initializer = (inst, issues) => {\n\t$ZodError.init(inst, issues);\n\tinst.name = \"ZodError\";\n\tconst proto = Object.getPrototypeOf(inst);\n\tif (_installedErrorProtos.has(proto)) return;\n\t_installedErrorProtos.add(proto);\n\t_lazyMethod(proto, \"format\", (self) => (mapper) => formatError(self, mapper));\n\t_lazyMethod(proto, \"flatten\", (self) => (mapper) => flattenError(self, mapper));\n\t_lazyMethod(proto, \"addIssue\", (self) => (issue) => {\n\t\tself.issues.push(issue);\n\t\tself.message = JSON.stringify(self.issues, jsonStringifyReplacer, 2);\n\t});\n\t_lazyMethod(proto, \"addIssues\", (self) => (issues) => {\n\t\tself.issues.push(...issues);\n\t\tself.message = JSON.stringify(self.issues, jsonStringifyReplacer, 2);\n\t});\n\tObject.defineProperty(proto, \"isEmpty\", {\n\t\tconfigurable: true,\n\t\tenumerable: false,\n\t\tget() {\n\t\t\treturn this.issues.length === 0;\n\t\t}\n\t});\n};\nconst ZodRealError = /* @__PURE__ */ $constructor(\"ZodError\", initializer, void 0, { Parent: Error });\n//#endregion\n//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/classic/parse.js\nconst parse = /* @__PURE__ */ _parse(ZodRealError);\nconst parseAsync = /* @__PURE__ */ _parseAsync(ZodRealError);\nconst safeParse = /* @__PURE__ */ _safeParse(ZodRealError);\nconst safeParseAsync = /* @__PURE__ */ _safeParseAsync(ZodRealError);\nconst encode = /* @__PURE__ */ _encode(ZodRealError);\nconst decode = /* @__PURE__ */ _decode(ZodRealError);\nconst encodeAsync = /* @__PURE__ */ _encodeAsync(ZodRealError);\nconst decodeAsync = /* @__PURE__ */ _decodeAsync(ZodRealError);\nconst safeEncode = /* @__PURE__ */ _safeEncode(ZodRealError);\nconst safeDecode = /* @__PURE__ */ _safeDecode(ZodRealError);\nconst safeEncodeAsync = /* @__PURE__ */ _safeEncodeAsync(ZodRealError);\nconst safeDecodeAsync = /* @__PURE__ */ _safeDecodeAsync(ZodRealError);\n//#endregion\n//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/classic/schemas.js\nfunction _ensureDefaultLocale() {\n\tif (!globalConfig.localeError) config(en_default());\n}\nfunction _ensureDefaultMemoizer() {\n\tif (!globalConfig.memoizer) config({ memoizer: memoizer() });\n}\nconst ZodType = /* @__PURE__ */ $constructor(\"ZodType\", (inst, def) => {\n\t_ensureDefaultLocale();\n\t$ZodType.init(inst, def);\n\tinst.def = def;\n\tinst.type = def.type;\n\treturn inst;\n}, {\n\tcheck(...chks) {\n\t\tconst def = this.def;\n\t\treturn this.clone(mergeDefs(def, { checks: [...def.checks ?? [], ...chks.map((ch) => typeof ch === \"function\" ? { _zod: {\n\t\t\tcheck: ch,\n\t\t\tdef: { check: \"custom\" },\n\t\t\tonattach: []\n\t\t} } : ch)] }), { parent: true });\n\t},\n\twith(...chks) {\n\t\treturn this.check(...chks);\n\t},\n\tclone(def, params) {\n\t\treturn clone(this, def, params);\n\t},\n\tbrand() {\n\t\treturn this;\n\t},\n\tregister(reg, meta) {\n\t\treg.add(this, meta);\n\t\treturn this;\n\t},\n\trefine(check, params) {\n\t\treturn this.check(refine(check, params));\n\t},\n\tsuperRefine(refinement, params) {\n\t\treturn this.check(superRefine(refinement, params));\n\t},\n\toverwrite(fn) {\n\t\treturn this.check(/* @__PURE__ */ _overwrite(fn));\n\t},\n\toptional() {\n\t\treturn optional(this);\n\t},\n\texactOptional() {\n\t\treturn exactOptional(this);\n\t},\n\tnullable() {\n\t\treturn nullable(this);\n\t},\n\tnullish() {\n\t\treturn optional(nullable(this));\n\t},\n\tnonoptional(params) {\n\t\treturn nonoptional(this, params);\n\t},\n\tarray() {\n\t\treturn array(this);\n\t},\n\tor(arg) {\n\t\treturn union([this, arg]);\n\t},\n\tand(arg) {\n\t\treturn intersection(this, arg);\n\t},\n\ttransform(tx) {\n\t\treturn pipe(this, transform(tx));\n\t},\n\tdefault(d) {\n\t\treturn _default(this, d);\n\t},\n\tprefault(d) {\n\t\treturn prefault(this, d);\n\t},\n\tcatch(params) {\n\t\treturn _catch(this, params);\n\t},\n\tpipe(target) {\n\t\treturn pipe(this, target);\n\t},\n\treadonly() {\n\t\treturn readonly(this);\n\t},\n\tdescribe(description) {\n\t\tconst cl = this.clone();\n\t\tglobalRegistry.add(cl, { description });\n\t\treturn cl;\n\t},\n\tmeta(...args) {\n\t\tif (args.length === 0) return globalRegistry.get(this);\n\t\tconst cl = this.clone();\n\t\tglobalRegistry.add(cl, args[0]);\n\t\treturn cl;\n\t},\n\tisOptional() {\n\t\treturn this.safeParse(void 0).success;\n\t},\n\tisNullable() {\n\t\treturn this.safeParse(null).success;\n\t},\n\tapply(fn, ...args) {\n\t\treturn args.length === 0 ? fn(this) : fn(this, ...args);\n\t},\n\tget \"~standard\"() {\n\t\treturn hide(this, \"~standard\", {\n\t\t\t...standardProps(this),\n\t\t\tjsonSchema: {\n\t\t\t\tinput: createStandardJSONSchemaMethod(this, \"input\"),\n\t\t\t\toutput: createStandardJSONSchemaMethod(this, \"output\")\n\t\t\t}\n\t\t});\n\t},\n\tset \"~standard\"(value) {\n\t\town(this, \"~standard\", value);\n\t},\n\tparse: function _parse(data, params) {\n\t\treturn parse(this, data, params, { callee: _parse });\n\t},\n\tparseAsync: async function _parseAsync(data, params) {\n\t\treturn await parseAsync(this, data, params, { callee: _parseAsync });\n\t},\n\tsafeParse(data, params) {\n\t\treturn safeParse(this, data, params);\n\t},\n\tasync safeParseAsync(data, params) {\n\t\treturn safeParseAsync(this, data, params);\n\t},\n\tget spa() {\n\t\treturn this?.safeParseAsync;\n\t},\n\tset spa(value) {\n\t\town(this, \"spa\", value);\n\t},\n\tvalidate(data, params) {\n\t\treturn validate(this, data, params);\n\t},\n\tvalidateAsync(data, params) {\n\t\treturn validateAsync$1(this, data, params);\n\t},\n\tencode: function _encode(data, params) {\n\t\treturn encode(this, data, params, { callee: _encode });\n\t},\n\tdecode: function _decode(data, params) {\n\t\treturn decode(this, data, params, { callee: _decode });\n\t},\n\tencodeAsync: async function _encodeAsync(data, params) {\n\t\treturn await encodeAsync(this, data, params, { callee: _encodeAsync });\n\t},\n\tdecodeAsync: async function _decodeAsync(data, params) {\n\t\treturn await decodeAsync(this, data, params, { callee: _decodeAsync });\n\t},\n\tsafeEncode(data, params) {\n\t\treturn safeEncode(this, data, params);\n\t},\n\tsafeDecode(data, params) {\n\t\treturn safeDecode(this, data, params);\n\t},\n\tasync safeEncodeAsync(data, params) {\n\t\treturn safeEncodeAsync(this, data, params);\n\t},\n\tasync safeDecodeAsync(data, params) {\n\t\treturn safeDecodeAsync(this, data, params);\n\t},\n\ttoJSONSchema(params) {\n\t\treturn createToJSONSchemaMethod(this, {})(params);\n\t},\n\tget description() {\n\t\treturn globalRegistry.get(this)?.description;\n\t},\n\tget _def() {\n\t\treturn this._zod.def;\n\t}\n});\n/** @internal */\nconst _ZodString = /* @__PURE__ */ $constructor(\"_ZodString\", (inst, def) => {\n\t$ZodString.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => stringProcessor(inst, ctx, json, params);\n}, /* @__PURE__ */ derived({\n\tformat: (inst) => aggregateChecks(inst).format ?? null,\n\tminLength: (inst) => aggregateChecks(inst).minimum ?? null,\n\tmaxLength: (inst) => aggregateChecks(inst).maximum ?? null\n}, {\n\tregex(...args) {\n\t\treturn this.check(/* @__PURE__ */ _regex(...args));\n\t},\n\tincludes(...args) {\n\t\treturn this.check(/* @__PURE__ */ _includes(...args));\n\t},\n\tstartsWith(...args) {\n\t\treturn this.check(/* @__PURE__ */ _startsWith(...args));\n\t},\n\tendsWith(...args) {\n\t\treturn this.check(/* @__PURE__ */ _endsWith(...args));\n\t},\n\tmin(...args) {\n\t\treturn this.check(/* @__PURE__ */ _minLength(...args));\n\t},\n\tmax(...args) {\n\t\treturn this.check(/* @__PURE__ */ _maxLength(...args));\n\t},\n\tlength(...args) {\n\t\treturn this.check(/* @__PURE__ */ _length(...args));\n\t},\n\tnonempty(...args) {\n\t\treturn this.check(/* @__PURE__ */ _minLength(1, ...args));\n\t},\n\tlowercase(params) {\n\t\treturn this.check(/* @__PURE__ */ _lowercase(params));\n\t},\n\tuppercase(params) {\n\t\treturn this.check(/* @__PURE__ */ _uppercase(params));\n\t},\n\ttrim() {\n\t\treturn this.check(/* @__PURE__ */ _trim());\n\t},\n\tnormalize(...args) {\n\t\treturn this.check(/* @__PURE__ */ _normalize(...args));\n\t},\n\ttoLowerCase() {\n\t\treturn this.check(/* @__PURE__ */ _toLowerCase());\n\t},\n\ttoUpperCase() {\n\t\treturn this.check(/* @__PURE__ */ _toUpperCase());\n\t},\n\tslugify() {\n\t\treturn this.check(/* @__PURE__ */ _slugify());\n\t}\n}));\nconst ZodString = /* @__PURE__ */ $constructor(\"ZodString\", (inst, def) => {\n\t$ZodString.init(inst, def);\n\t_ZodString.init(inst, def);\n}, {\n\temail(params) {\n\t\treturn this.check(/* @__PURE__ */ _email(ZodEmail, params));\n\t},\n\turl(params) {\n\t\treturn this.check(/* @__PURE__ */ _url(ZodURL, params));\n\t},\n\tjwt(params) {\n\t\treturn this.check(/* @__PURE__ */ _jwt(ZodJWT, params));\n\t},\n\temoji(params) {\n\t\treturn this.check(/* @__PURE__ */ _emoji(ZodEmoji, params));\n\t},\n\tguid(params) {\n\t\treturn this.check(/* @__PURE__ */ _guid(ZodGUID, params));\n\t},\n\tuuid(params) {\n\t\treturn this.check(/* @__PURE__ */ _uuid(ZodUUID, params));\n\t},\n\tuuidv4(params) {\n\t\treturn this.check(/* @__PURE__ */ _uuidv4(ZodUUID, params));\n\t},\n\tuuidv6(params) {\n\t\treturn this.check(/* @__PURE__ */ _uuidv6(ZodUUID, params));\n\t},\n\tuuidv7(params) {\n\t\treturn this.check(/* @__PURE__ */ _uuidv7(ZodUUID, params));\n\t},\n\tnanoid(params) {\n\t\treturn this.check(/* @__PURE__ */ _nanoid(ZodNanoID, params));\n\t},\n\tcuid(params) {\n\t\treturn this.check(/* @__PURE__ */ _cuid(ZodCUID, params));\n\t},\n\tcuid2(params) {\n\t\treturn this.check(/* @__PURE__ */ _cuid2(ZodCUID2, params));\n\t},\n\tulid(params) {\n\t\treturn this.check(/* @__PURE__ */ _ulid(ZodULID, params));\n\t},\n\tbase64(params) {\n\t\treturn this.check(/* @__PURE__ */ _base64(ZodBase64, params));\n\t},\n\tbase64url(params) {\n\t\treturn this.check(/* @__PURE__ */ _base64url(ZodBase64URL, params));\n\t},\n\txid(params) {\n\t\treturn this.check(/* @__PURE__ */ _xid(ZodXID, params));\n\t},\n\tksuid(params) {\n\t\treturn this.check(/* @__PURE__ */ _ksuid(ZodKSUID, params));\n\t},\n\tipv4(params) {\n\t\treturn this.check(/* @__PURE__ */ _ipv4(ZodIPv4, params));\n\t},\n\tipv6(params) {\n\t\treturn this.check(/* @__PURE__ */ _ipv6(ZodIPv6, params));\n\t},\n\tcidrv4(params) {\n\t\treturn this.check(/* @__PURE__ */ _cidrv4(ZodCIDRv4, params));\n\t},\n\tcidrv6(params) {\n\t\treturn this.check(/* @__PURE__ */ _cidrv6(ZodCIDRv6, params));\n\t},\n\te164(params) {\n\t\treturn this.check(/* @__PURE__ */ _e164(ZodE164, params));\n\t},\n\tdatetime(params) {\n\t\treturn this.check(/* @__PURE__ */ _isoDateTime(ZodISODateTime, params));\n\t},\n\tdate(params) {\n\t\treturn this.check(/* @__PURE__ */ _isoDate(ZodISODate, params));\n\t},\n\ttime(params) {\n\t\treturn this.check(/* @__PURE__ */ _isoTime(ZodISOTime, params));\n\t},\n\tduration(params) {\n\t\treturn this.check(/* @__PURE__ */ _isoDuration(ZodISODuration, params));\n\t}\n});\nfunction string(params) {\n\treturn /* @__PURE__ */ _string(ZodString, params);\n}\nconst ZodStringFormat = /* @__PURE__ */ $constructor(\"ZodStringFormat\", (inst, def) => {\n\t$ZodStringFormat.init(inst, def);\n\t_ZodString.init(inst, def);\n});\nconst ZodISODateTime = /* @__PURE__ */ $constructor(\"ZodISODateTime\", (inst, def) => {\n\t$ZodISODateTime.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodISODate = /* @__PURE__ */ $constructor(\"ZodISODate\", (inst, def) => {\n\t$ZodISODate.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodISOTime = /* @__PURE__ */ $constructor(\"ZodISOTime\", (inst, def) => {\n\t$ZodISOTime.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodISODuration = /* @__PURE__ */ $constructor(\"ZodISODuration\", (inst, def) => {\n\t$ZodISODuration.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodEmail = /* @__PURE__ */ $constructor(\"ZodEmail\", (inst, def) => {\n\t$ZodEmail.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodGUID = /* @__PURE__ */ $constructor(\"ZodGUID\", (inst, def) => {\n\t$ZodGUID.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodUUID = /* @__PURE__ */ $constructor(\"ZodUUID\", (inst, def) => {\n\t$ZodUUID.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodURL = /* @__PURE__ */ $constructor(\"ZodURL\", (inst, def) => {\n\t$ZodURL.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodEmoji = /* @__PURE__ */ $constructor(\"ZodEmoji\", (inst, def) => {\n\t$ZodEmoji.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodNanoID = /* @__PURE__ */ $constructor(\"ZodNanoID\", (inst, def) => {\n\t$ZodNanoID.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\n/**\n* @deprecated CUID v1 is deprecated by its authors due to information leakage\n* (timestamps embedded in the id). Use {@link ZodCUID2} instead.\n* See https://github.com/paralleldrive/cuid.\n*/\nconst ZodCUID = /* @__PURE__ */ $constructor(\"ZodCUID\", (inst, def) => {\n\t$ZodCUID.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodCUID2 = /* @__PURE__ */ $constructor(\"ZodCUID2\", (inst, def) => {\n\t$ZodCUID2.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodULID = /* @__PURE__ */ $constructor(\"ZodULID\", (inst, def) => {\n\t$ZodULID.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodXID = /* @__PURE__ */ $constructor(\"ZodXID\", (inst, def) => {\n\t$ZodXID.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodKSUID = /* @__PURE__ */ $constructor(\"ZodKSUID\", (inst, def) => {\n\t$ZodKSUID.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodIPv4 = /* @__PURE__ */ $constructor(\"ZodIPv4\", (inst, def) => {\n\t$ZodIPv4.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodIPv6 = /* @__PURE__ */ $constructor(\"ZodIPv6\", (inst, def) => {\n\t$ZodIPv6.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodCIDRv4 = /* @__PURE__ */ $constructor(\"ZodCIDRv4\", (inst, def) => {\n\t$ZodCIDRv4.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodCIDRv6 = /* @__PURE__ */ $constructor(\"ZodCIDRv6\", (inst, def) => {\n\t$ZodCIDRv6.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodBase64 = /* @__PURE__ */ $constructor(\"ZodBase64\", (inst, def) => {\n\t$ZodBase64.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodBase64URL = /* @__PURE__ */ $constructor(\"ZodBase64URL\", (inst, def) => {\n\t$ZodBase64URL.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodE164 = /* @__PURE__ */ $constructor(\"ZodE164\", (inst, def) => {\n\t$ZodE164.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodJWT = /* @__PURE__ */ $constructor(\"ZodJWT\", (inst, def) => {\n\t$ZodJWT.init(inst, def);\n\tZodStringFormat.init(inst, def);\n});\nconst ZodNumber = /* @__PURE__ */ $constructor(\"ZodNumber\", (inst, def) => {\n\t$ZodNumber.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => numberProcessor(inst, ctx, json, params);\n\tinst.isFinite = true;\n}, /* @__PURE__ */ derived({\n\tminValue: (inst) => {\n\t\tconst { minimum, exclusiveMinimum } = aggregateChecks(inst);\n\t\treturn Math.max(minimum ?? Number.NEGATIVE_INFINITY, exclusiveMinimum ?? Number.NEGATIVE_INFINITY);\n\t},\n\tmaxValue: (inst) => {\n\t\tconst { maximum, exclusiveMaximum } = aggregateChecks(inst);\n\t\treturn Math.min(maximum ?? Number.POSITIVE_INFINITY, exclusiveMaximum ?? Number.POSITIVE_INFINITY);\n\t},\n\tisInt: (inst) => {\n\t\tconst { isInt, multipleOf } = aggregateChecks(inst);\n\t\treturn !!isInt || !!multipleOf?.some(Number.isSafeInteger);\n\t},\n\tformat: (inst) => aggregateChecks(inst).format ?? null\n}, {\n\tgt(value, params) {\n\t\treturn this.check(/* @__PURE__ */ _gt(value, params));\n\t},\n\tgte(value, params) {\n\t\treturn this.check(/* @__PURE__ */ _gte(value, params));\n\t},\n\tmin(value, params) {\n\t\treturn this.check(/* @__PURE__ */ _gte(value, params));\n\t},\n\tlt(value, params) {\n\t\treturn this.check(/* @__PURE__ */ _lt(value, params));\n\t},\n\tlte(value, params) {\n\t\treturn this.check(/* @__PURE__ */ _lte(value, params));\n\t},\n\tmax(value, params) {\n\t\treturn this.check(/* @__PURE__ */ _lte(value, params));\n\t},\n\tint(params) {\n\t\treturn this.check(int(params));\n\t},\n\tsafe(params) {\n\t\treturn this.check(int(params));\n\t},\n\tpositive(params) {\n\t\treturn this.check(/* @__PURE__ */ _gt(0, params));\n\t},\n\tnonnegative(params) {\n\t\treturn this.check(/* @__PURE__ */ _gte(0, params));\n\t},\n\tnegative(params) {\n\t\treturn this.check(/* @__PURE__ */ _lt(0, params));\n\t},\n\tnonpositive(params) {\n\t\treturn this.check(/* @__PURE__ */ _lte(0, params));\n\t},\n\tmultipleOf(value, params) {\n\t\treturn this.check(/* @__PURE__ */ _multipleOf(value, params));\n\t},\n\tstep(value, params) {\n\t\treturn this.check(/* @__PURE__ */ _multipleOf(value, params));\n\t},\n\tfinite() {\n\t\treturn this;\n\t}\n}));\nfunction number(params) {\n\treturn /* @__PURE__ */ _number(ZodNumber, params);\n}\nconst ZodNumberFormat = /* @__PURE__ */ $constructor(\"ZodNumberFormat\", (inst, def) => {\n\t$ZodNumberFormat.init(inst, def);\n\tZodNumber.init(inst, def);\n});\nfunction int(params) {\n\treturn /* @__PURE__ */ _int(ZodNumberFormat, params);\n}\nconst ZodBoolean = /* @__PURE__ */ $constructor(\"ZodBoolean\", (inst, def) => {\n\t$ZodBoolean.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => booleanProcessor(inst, ctx, json, params);\n});\nfunction boolean(params) {\n\treturn /* @__PURE__ */ _boolean(ZodBoolean, params);\n}\nconst ZodUnknown = /* @__PURE__ */ $constructor(\"ZodUnknown\", (inst, def) => {\n\t$ZodUnknown.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => unknownProcessor(inst, ctx, json, params);\n});\nfunction unknown() {\n\treturn /* @__PURE__ */ _unknown(ZodUnknown);\n}\nconst ZodNever = /* @__PURE__ */ $constructor(\"ZodNever\", (inst, def) => {\n\t$ZodNever.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => neverProcessor(inst, ctx, json, params);\n});\nfunction never(params) {\n\treturn /* @__PURE__ */ _never(ZodNever, params);\n}\nconst ZodArray = /* @__PURE__ */ $constructor(\"ZodArray\", (inst, def) => {\n\t_ensureDefaultMemoizer();\n\t$ZodArray.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => arrayProcessor(inst, ctx, json, params);\n\tinst.element = def.element;\n}, {\n\tmin(n, params) {\n\t\treturn this.check(/* @__PURE__ */ _minLength(n, params));\n\t},\n\tnonempty(params) {\n\t\treturn this.check(/* @__PURE__ */ _minLength(1, params));\n\t},\n\tmax(n, params) {\n\t\treturn this.check(/* @__PURE__ */ _maxLength(n, params));\n\t},\n\tlength(n, params) {\n\t\treturn this.check(/* @__PURE__ */ _length(n, params));\n\t},\n\tunwrap() {\n\t\treturn this.element;\n\t}\n});\nfunction array(element, params) {\n\treturn /* @__PURE__ */ _array(ZodArray, element, params);\n}\nconst ZodObject = /* @__PURE__ */ $constructor(\"ZodObject\", (inst, def) => {\n\t_ensureDefaultMemoizer();\n\t$ZodObjectJIT.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => objectProcessor(inst, ctx, json, params);\n\tinstallLazyProp(inst, \"shape\", (self) => self._zod.def.shape, false);\n}, {\n\tkeyof() {\n\t\treturn _enum(Object.keys(this._zod.def.shape));\n\t},\n\tcatchall(catchall) {\n\t\treturn this.clone(mergeDefs(this._zod.def, { catchall }));\n\t},\n\tpassthrough() {\n\t\treturn this.clone(mergeDefs(this._zod.def, { catchall: unknown() }));\n\t},\n\tloose() {\n\t\treturn this.clone(mergeDefs(this._zod.def, { catchall: unknown() }));\n\t},\n\tstrict() {\n\t\treturn this.clone(mergeDefs(this._zod.def, { catchall: never() }));\n\t},\n\tstrip() {\n\t\treturn this.clone(mergeDefs(this._zod.def, { catchall: void 0 }));\n\t},\n\textend(incoming) {\n\t\treturn extend(this, incoming);\n\t},\n\tsafeExtend(incoming) {\n\t\treturn safeExtend(this, incoming);\n\t},\n\tmerge(other) {\n\t\treturn merge(this, other);\n\t},\n\tpick(mask) {\n\t\treturn pick(this, mask);\n\t},\n\tomit(mask) {\n\t\treturn omit(this, mask);\n\t},\n\tpartial(...args) {\n\t\treturn partial(ZodOptional, this, args[0]);\n\t},\n\texactPartial(...args) {\n\t\treturn partial(ZodExactOptional, this, args[0], \"exactPartial\");\n\t},\n\trequired(...args) {\n\t\treturn required(ZodNonOptional, this, args[0]);\n\t}\n});\nfunction object(shape, params) {\n\treturn new ZodObject({\n\t\ttype: \"object\",\n\t\tshape: shape ?? {},\n\t\t...normalizeParams(params)\n\t});\n}\nconst ZodUnion = /* @__PURE__ */ $constructor(\"ZodUnion\", (inst, def) => {\n\t$ZodUnion.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => unionProcessor(inst, ctx, json, params);\n\tinst.options = def.options;\n});\nfunction union(options, params) {\n\treturn new ZodUnion({\n\t\ttype: \"union\",\n\t\toptions,\n\t\t...normalizeParams(params)\n\t});\n}\nconst ZodDiscriminatedUnion = /* @__PURE__ */ $constructor(\"ZodDiscriminatedUnion\", (inst, def) => {\n\tZodUnion.init(inst, def);\n\t$ZodDiscriminatedUnion.init(inst, def);\n});\nfunction discriminatedUnion(discriminator, options, params) {\n\treturn new ZodDiscriminatedUnion({\n\t\ttype: \"union\",\n\t\toptions,\n\t\tdiscriminator,\n\t\t...normalizeParams(params)\n\t});\n}\nconst ZodIntersection = /* @__PURE__ */ $constructor(\"ZodIntersection\", (inst, def) => {\n\t$ZodIntersection.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => intersectionProcessor(inst, ctx, json, params);\n});\nfunction intersection(left, right) {\n\treturn new ZodIntersection({\n\t\ttype: \"intersection\",\n\t\tleft,\n\t\tright\n\t});\n}\nconst ZodRecord = /* @__PURE__ */ $constructor(\"ZodRecord\", (inst, def) => {\n\t_ensureDefaultMemoizer();\n\t$ZodRecord.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => recordProcessor(inst, ctx, json, params);\n\tinst.keyType = def.keyType;\n\tinst.valueType = def.valueType;\n});\nfunction record(keyType, valueType, params) {\n\tif (!valueType || !valueType._zod) return new ZodRecord({\n\t\ttype: \"record\",\n\t\tkeyType: string(),\n\t\tvalueType: keyType,\n\t\t...normalizeParams(valueType)\n\t});\n\treturn new ZodRecord({\n\t\ttype: \"record\",\n\t\tkeyType,\n\t\tvalueType,\n\t\t...normalizeParams(params)\n\t});\n}\nconst ZodEnum = /* @__PURE__ */ $constructor(\"ZodEnum\", (inst, def) => {\n\t$ZodEnum.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => enumProcessor(inst, ctx, json, params);\n\tinst.enum = def.entries;\n\tinst.options = [...inst._zod.values];\n\tconst keys = new Set(Object.keys(def.entries));\n\tinst.extract = (values, params) => {\n\t\tconst newEntries = {};\n\t\tfor (const value of values) if (keys.has(value)) newEntries[value] = def.entries[value];\n\t\telse throw new Error(`Key ${value} not found in enum`);\n\t\treturn new ZodEnum({\n\t\t\t...def,\n\t\t\tchecks: [],\n\t\t\t...normalizeParams(params),\n\t\t\tentries: newEntries\n\t\t});\n\t};\n\tinst.exclude = (values, params) => {\n\t\tconst newEntries = { ...def.entries };\n\t\tfor (const value of values) if (keys.has(value)) delete newEntries[value];\n\t\telse throw new Error(`Key ${value} not found in enum`);\n\t\treturn new ZodEnum({\n\t\t\t...def,\n\t\t\tchecks: [],\n\t\t\t...normalizeParams(params),\n\t\t\tentries: newEntries\n\t\t});\n\t};\n});\nfunction _enum(values, params) {\n\treturn new ZodEnum({\n\t\ttype: \"enum\",\n\t\tentries: Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values,\n\t\t...normalizeParams(params)\n\t});\n}\nconst ZodLiteral = /* @__PURE__ */ $constructor(\"ZodLiteral\", (inst, def) => {\n\t$ZodLiteral.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => literalProcessor(inst, ctx, json, params);\n\tinst.values = new Set(def.values);\n\tObject.defineProperty(inst, \"value\", { get() {\n\t\tif (def.values.length > 1) throw new Error(\"This schema contains multiple valid literal values. Use `.values` instead.\");\n\t\treturn def.values[0];\n\t} });\n});\nfunction literal(value, params) {\n\treturn new ZodLiteral({\n\t\ttype: \"literal\",\n\t\tvalues: Array.isArray(value) ? value : [value],\n\t\t...normalizeParams(params)\n\t});\n}\nconst ZodTransform = /* @__PURE__ */ $constructor(\"ZodTransform\", (inst, def) => {\n\t_ensureDefaultMemoizer();\n\t$ZodTransform.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => transformProcessor(inst, ctx, json, params);\n\tinst._zod.parse = (payload, _ctx) => {\n\t\tif (_ctx.direction === \"backward\") throw new $ZodEncodeError(inst.constructor.name);\n\t\tpayload.addIssue = (issue$1) => {\n\t\t\tif (typeof issue$1 === \"string\") payload.issues.push(issue(issue$1, payload.value, def));\n\t\t\telse {\n\t\t\t\tconst _issue = issue$1;\n\t\t\t\tif (_issue.fatal) _issue.continue = false;\n\t\t\t\t_issue.code ?? (_issue.code = \"custom\");\n\t\t\t\tif (!(\"input\" in _issue)) _issue.input = payload.value;\n\t\t\t\t_issue.inst ?? (_issue.inst = inst);\n\t\t\t\tpayload.issues.push(issue(_issue));\n\t\t\t}\n\t\t};\n\t\tconst output = def.transform(payload.value, payload);\n\t\tif (output instanceof Promise) return output.then((output) => {\n\t\t\tpayload.value = output;\n\t\t\treturn payload;\n\t\t});\n\t\tpayload.value = output;\n\t\treturn payload;\n\t};\n});\nfunction transform(fn) {\n\treturn new ZodTransform({\n\t\ttype: \"transform\",\n\t\ttransform: fn\n\t});\n}\nconst ZodOptional = /* @__PURE__ */ $constructor(\"ZodOptional\", (inst, def) => {\n\t$ZodOptional.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => optionalProcessor(inst, ctx, json, params);\n\tinst.unwrap = () => inst._zod.def.innerType;\n});\nfunction optional(innerType) {\n\treturn new ZodOptional({\n\t\ttype: \"optional\",\n\t\tinnerType\n\t});\n}\nconst ZodExactOptional = /* @__PURE__ */ $constructor(\"ZodExactOptional\", (inst, def) => {\n\t$ZodExactOptional.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => optionalProcessor(inst, ctx, json, params);\n\tinst.unwrap = () => inst._zod.def.innerType;\n});\nfunction exactOptional(innerType) {\n\treturn new ZodExactOptional({\n\t\ttype: \"optional\",\n\t\tinnerType\n\t});\n}\nconst ZodNullable = /* @__PURE__ */ $constructor(\"ZodNullable\", (inst, def) => {\n\t$ZodNullable.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => nullableProcessor(inst, ctx, json, params);\n\tinst.unwrap = () => inst._zod.def.innerType;\n});\nfunction nullable(innerType) {\n\treturn new ZodNullable({\n\t\ttype: \"nullable\",\n\t\tinnerType\n\t});\n}\nconst ZodDefault = /* @__PURE__ */ $constructor(\"ZodDefault\", (inst, def) => {\n\t$ZodDefault.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => defaultProcessor(inst, ctx, json, params);\n\tinst.unwrap = () => inst._zod.def.innerType;\n\tinst.removeDefault = inst.unwrap;\n});\nfunction _default(innerType, defaultValue) {\n\treturn new ZodDefault({\n\t\ttype: \"default\",\n\t\tinnerType,\n\t\tget defaultValue() {\n\t\t\treturn typeof defaultValue === \"function\" ? defaultValue() : shallowClone(defaultValue);\n\t\t}\n\t});\n}\nconst ZodPrefault = /* @__PURE__ */ $constructor(\"ZodPrefault\", (inst, def) => {\n\t$ZodPrefault.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => prefaultProcessor(inst, ctx, json, params);\n\tinst.unwrap = () => inst._zod.def.innerType;\n});\nfunction prefault(innerType, defaultValue) {\n\treturn new ZodPrefault({\n\t\ttype: \"prefault\",\n\t\tinnerType,\n\t\tget defaultValue() {\n\t\t\treturn typeof defaultValue === \"function\" ? defaultValue() : shallowClone(defaultValue);\n\t\t}\n\t});\n}\nconst ZodNonOptional = /* @__PURE__ */ $constructor(\"ZodNonOptional\", (inst, def) => {\n\t$ZodNonOptional.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => nonoptionalProcessor(inst, ctx, json, params);\n\tinst.unwrap = () => inst._zod.def.innerType;\n});\nfunction nonoptional(innerType, params) {\n\treturn new ZodNonOptional({\n\t\ttype: \"nonoptional\",\n\t\tinnerType,\n\t\t...normalizeParams(params)\n\t});\n}\nconst ZodCatch = /* @__PURE__ */ $constructor(\"ZodCatch\", (inst, def) => {\n\t$ZodCatch.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => catchProcessor(inst, ctx, json, params);\n\tinst.unwrap = () => inst._zod.def.innerType;\n\tinst.removeCatch = inst.unwrap;\n});\nfunction _catch(innerType, catchValue) {\n\treturn new ZodCatch({\n\t\ttype: \"catch\",\n\t\tinnerType,\n\t\tcatchValue: typeof catchValue === \"function\" ? catchValue : constantCatch(catchValue)\n\t});\n}\nconst ZodPipe = /* @__PURE__ */ $constructor(\"ZodPipe\", (inst, def) => {\n\t$ZodPipe.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => pipeProcessor(inst, ctx, json, params);\n\tinst.in = def.in;\n\tinst.out = def.out;\n});\nfunction pipe(in_, out) {\n\treturn new ZodPipe({\n\t\ttype: \"pipe\",\n\t\tin: in_,\n\t\tout\n\t});\n}\nconst ZodReadonly = /* @__PURE__ */ $constructor(\"ZodReadonly\", (inst, def) => {\n\t$ZodReadonly.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => readonlyProcessor(inst, ctx, json, params);\n\tinst.unwrap = () => inst._zod.def.innerType;\n});\nfunction readonly(innerType) {\n\treturn new ZodReadonly({\n\t\ttype: \"readonly\",\n\t\tinnerType\n\t});\n}\nconst ZodCustom = /* @__PURE__ */ $constructor(\"ZodCustom\", (inst, def) => {\n\t$ZodCustom.init(inst, def);\n\tZodType.init(inst, def);\n\tinst._zod.processJSONSchema = (ctx, json, params) => customProcessor(inst, ctx, json, params);\n});\nfunction refine(fn, _params = {}) {\n\treturn /* @__PURE__ */ _refine(ZodCustom, fn, _params);\n}\nfunction superRefine(fn, params) {\n\treturn /* @__PURE__ */ _superRefine(fn, params);\n}\n//#endregion\n//#region ../internals-schemas/dist/index.js\nconst REGISTRY_URL = process.env.TANK_REGISTRY_URL || \"https://www.tankpkg.dev\";\nconst MANIFEST_FILENAME = \"tank.json\";\nconst LEGACY_MANIFEST_FILENAME = \"skills.json\";\nconst LOCKFILE_FILENAME = \"tank.lock\";\nconst supportLevelSchema = _enum([\n\t\"full\",\n\t\"degraded\",\n\t\"none\"\n]);\nconst adapterCapabilitiesSchema = object({\n\tinstruction: supportLevelSchema,\n\thook: supportLevelSchema,\n\ttool: supportLevelSchema,\n\tagent: supportLevelSchema,\n\trule: supportLevelSchema,\n\tresource: supportLevelSchema,\n\tprompt: supportLevelSchema\n}).strict();\nconst compilationWarningSchema = object({\n\tlevel: _enum([\"degraded\", \"skipped\"]),\n\tatomKind: string(),\n\tmessage: string()\n}).strict();\nobject({\n\tfiles: array(object({\n\t\tpath: string().min(1),\n\t\tcontent: string()\n\t}).strict()),\n\twarnings: array(compilationWarningSchema)\n}).strict();\nobject({\n\tname: string().min(1, \"Adapter name must not be empty\"),\n\tsupportedRange: string().min(1, \"Supported range must not be empty\"),\n\tcapabilities: adapterCapabilitiesSchema\n}).strict();\n_enum([\n\t\"instruction\",\n\t\"hook\",\n\t\"tool\",\n\t\"agent\",\n\t\"rule\",\n\t\"resource\",\n\t\"prompt\"\n]);\nconst extensionBagSchema = record(string(), unknown()).optional();\nconst modelTierSchema = _enum([\n\t\"fast\",\n\t\"balanced\",\n\t\"powerful\",\n\t\"custom\"\n]);\nmodelTierSchema.options;\nconst canonicalToolNameSchema = _enum([\n\t\"bash\",\n\t\"read\",\n\t\"write\",\n\t\"edit\",\n\t\"grep\",\n\t\"glob\",\n\t\"lsp\",\n\t\"mcp\",\n\t\"browser\",\n\t\"fetch\",\n\t\"git\",\n\t\"task\",\n\t\"notebook\"\n]);\ncanonicalToolNameSchema.options;\nconst agentIRSchema = object({\n\tkind: literal(\"agent\"),\n\tname: string().min(1, \"Agent name must not be empty\"),\n\trole: string().min(1, \"Agent role must not be empty\"),\n\ttools: array(canonicalToolNameSchema.or(string().min(1))).optional(),\n\tmodel: modelTierSchema.or(string().min(1)).optional(),\n\treadonly: boolean().optional(),\n\textensions: extensionBagSchema\n}).strict();\nconst hookEventSchema = _enum([\n\t\"pre-tool-use\",\n\t\"post-tool-use\",\n\t\"pre-file-read\",\n\t\"post-file-read\",\n\t\"pre-file-write\",\n\t\"post-file-write\",\n\t\"file-edited\",\n\t\"file-watcher-updated\",\n\t\"pre-command\",\n\t\"post-command\",\n\t\"pre-mcp-tool-use\",\n\t\"post-mcp-tool-use\",\n\t\"session-created\",\n\t\"session-updated\",\n\t\"session-idle\",\n\t\"session-error\",\n\t\"session-deleted\",\n\t\"pre-stop\",\n\t\"task-start\",\n\t\"task-resume\",\n\t\"task-complete\",\n\t\"task-cancel\",\n\t\"pre-user-prompt\",\n\t\"post-response\",\n\t\"message-updated\",\n\t\"message-removed\",\n\t\"system-prompt-transform\",\n\t\"pre-context-compact\",\n\t\"post-context-compact\",\n\t\"permission-asked\",\n\t\"permission-replied\",\n\t\"lsp-diagnostics\",\n\t\"lsp-updated\",\n\t\"subagent-start\",\n\t\"subagent-complete\",\n\t\"subagent-tool-use\",\n\t\"shell-env\",\n\t\"todo-updated\",\n\t\"installation-updated\"\n]);\nhookEventSchema.options;\nconst hookActionIRSchema = object({\n\taction: _enum([\n\t\t\"block\",\n\t\t\"allow\",\n\t\t\"rewrite\",\n\t\t\"injectContext\"\n\t]),\n\tmatch: string().optional(),\n\treason: string().optional(),\n\tvalue: string().optional()\n}).strict();\nconst hookHandlerIRSchema = discriminatedUnion(\"type\", [object({\n\ttype: literal(\"dsl\"),\n\tactions: array(hookActionIRSchema).min(1, \"DSL handler must have at least one action\")\n}).strict(), object({\n\ttype: literal(\"js\"),\n\tentry: string().min(1, \"JS handler entry path must not be empty\")\n}).strict()]);\nconst hookIRSchema = object({\n\tkind: literal(\"hook\"),\n\tname: string().optional(),\n\tevent: hookEventSchema,\n\tmatch: canonicalToolNameSchema.or(string().min(1)).optional(),\n\thandler: hookHandlerIRSchema,\n\tscope: _enum([\"project\", \"global\"]).optional(),\n\textensions: extensionBagSchema\n}).strict();\nconst instructionIRSchema = object({\n\tkind: literal(\"instruction\"),\n\tcontent: string().min(1, \"Content path must not be empty\"),\n\tscope: _enum([\n\t\t\"project\",\n\t\t\"global\",\n\t\t\"directory\"\n\t]).optional(),\n\tglobs: array(string()).optional(),\n\textensions: extensionBagSchema\n}).strict();\nconst networkPermissionsSchema = object({ outbound: array(string()).optional() }).strict();\nconst filesystemPermissionsSchema = object({\n\tread: array(string()).optional(),\n\twrite: array(string()).optional()\n}).strict();\nconst permissionsSchema = object({\n\tnetwork: networkPermissionsSchema.optional(),\n\tfilesystem: filesystemPermissionsSchema.optional(),\n\tsubprocess: boolean().optional()\n}).strict();\n_enum([\"user\", \"admin\"]);\n_enum([\n\t\"active\",\n\t\"suspended\",\n\t\"banned\"\n]);\n_enum([\n\t\"active\",\n\t\"deprecated\",\n\t\"quarantined\",\n\t\"removed\"\n]);\n_enum([\n\t\"user.ban\",\n\t\"user.suspend\",\n\t\"user.unban\",\n\t\"user.promote\",\n\t\"user.demote\",\n\t\"skill.quarantine\",\n\t\"skill.remove\",\n\t\"skill.deprecate\",\n\t\"skill.restore\",\n\t\"skill.feature\",\n\t\"skill.unfeature\",\n\t\"org.suspend\",\n\t\"org.member.remove\",\n\t\"org.delete\"\n]);\nconst commandSchema = string().min(1, \"command must not be empty\");\nconst argSchema = array(string()).default([]);\nconst envSchema = record(string(), string()).optional();\nconst remoteUrlSchema = string().url(\"remote must be a valid URL\");\nconst mcpServerSchema = union([object({\n\tcommand: commandSchema,\n\targs: argSchema,\n\tenv: envSchema,\n\trequires_auth: literal(false).optional()\n}).strict(), object({\n\tremote: remoteUrlSchema,\n\trequires_auth: boolean().default(false),\n\tenv: envSchema\n}).strict()]);\nconst baseManifestFields = {\n\tname: string().min(1, \"Name must not be empty\").max(214, `Name must be 214 characters or fewer`).regex(/^@[a-z0-9-]+\\/[a-z0-9][a-z0-9-]*$/, \"Name must be scoped (@org/name), lowercase alphanumeric and hyphens\"),\n\tversion: string().regex(/^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9.-]+)?(\\+[a-zA-Z0-9.-]+)?$/, \"Version must be valid semver\"),\n\tdescription: string().max(500, `Description must be 500 characters or fewer`).optional(),\n\tskills: record(string(), string()).optional(),\n\tpermissions: permissionsSchema.optional(),\n\trepository: string().url(\"Repository must be a valid URL\").optional(),\n\tvisibility: _enum([\"public\", \"private\"]).optional(),\n\taudit: object({ min_score: number().min(0).max(10) }).strict().optional(),\n\tmcp_server: mcpServerSchema.optional()\n};\nobject(baseManifestFields).strict();\nconst publishConfigSchema = object({\n\tbuild: string().min(1, \"publish.build must be a non-empty shell command\").optional(),\n\tfiles: array(string().min(1)).optional()\n}).strict();\nobject({\n\t...baseManifestFields,\n\tatoms: array(record(string(), unknown())).optional(),\n\tincludes: array(string()).optional(),\n\tpublish: publishConfigSchema.optional()\n}).strict();\nconst promptIRSchema = object({\n\tkind: literal(\"prompt\"),\n\tname: string().min(1, \"Prompt name must not be empty\"),\n\tdescription: string().optional(),\n\ttemplate: string().min(1, \"Prompt template path must not be empty\"),\n\targuments: array(object({\n\t\tname: string(),\n\t\tdescription: string().optional(),\n\t\trequired: boolean().optional()\n\t}).strict()).optional(),\n\textensions: extensionBagSchema\n}).strict();\nconst resourceIRSchema = object({\n\tkind: literal(\"resource\"),\n\tname: string().optional(),\n\turi: string().min(1, \"Resource URI must not be empty\"),\n\tdescription: string().optional(),\n\tmimeType: string().optional(),\n\textensions: extensionBagSchema\n}).strict();\nconst ruleIRSchema = object({\n\tkind: literal(\"rule\"),\n\tname: string().optional(),\n\tevent: hookEventSchema,\n\tmatch: canonicalToolNameSchema.or(string().min(1)).optional(),\n\tpolicy: _enum([\n\t\t\"block\",\n\t\t\"allow\",\n\t\t\"warn\"\n\t]),\n\treason: string().optional(),\n\textensions: extensionBagSchema\n}).strict();\nconst mcpServerConfigSchema = object({\n\tcommand: string().min(1).optional(),\n\targs: array(string()).optional(),\n\tenv: record(string(), string()).optional(),\n\truntime: string().min(1).optional(),\n\tentry: string().min(1).optional(),\n\tpackage: string().min(1).optional()\n}).strict().refine((data) => Boolean(data.command) || Boolean(data.runtime && (data.entry || data.package)), \"MCP config must have either \\\"command\\\" or \\\"runtime\\\" plus one of \\\"entry\\\"/\\\"package\\\"\");\nconst toolIRSchema = object({\n\tkind: literal(\"tool\"),\n\tname: string().min(1, \"Tool name must not be empty\"),\n\tdescription: string().optional(),\n\tmcp: mcpServerConfigSchema.optional(),\n\textensions: extensionBagSchema\n}).strict();\nconst NAME_PATTERN = /^@[a-z0-9-]+\\/[a-z0-9][a-z0-9-]*$/;\nconst SEMVER_PATTERN = /^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9.-]+)?(\\+[a-zA-Z0-9.-]+)?$/;\nconst atomIRSchema = discriminatedUnion(\"kind\", [\n\tinstructionIRSchema,\n\thookIRSchema,\n\ttoolIRSchema,\n\tagentIRSchema,\n\truleIRSchema,\n\tresourceIRSchema,\n\tpromptIRSchema\n]);\nobject({\n\tname: string().min(1, \"Name must not be empty\").max(214, `Name must be 214 characters or fewer`).regex(NAME_PATTERN, \"Name must be scoped (@org/name), lowercase alphanumeric and hyphens\"),\n\tversion: string().regex(SEMVER_PATTERN, \"Version must be valid semver\"),\n\tdescription: string().max(500).optional(),\n\tatoms: array(atomIRSchema),\n\tincludes: array(string()).optional(),\n\tskills: record(string(), string()).optional(),\n\tpermissions: permissionsSchema.optional(),\n\trepository: string().url(\"Repository must be a valid URL\").optional(),\n\tvisibility: _enum([\"public\", \"private\"]).optional(),\n\taudit: object({ min_score: number().min(0).max(10) }).strict().optional(),\n\tpublish: publishConfigSchema.optional()\n}).strict();\nconst perToolOverrideSchema = object({\n\tscan: boolean().optional(),\n\tblockOnMatch: boolean().optional()\n}).strict();\nobject({\n\tperfBudgetMs: number().positive().optional(),\n\tblockOnMatch: boolean().optional(),\n\tresetPinsOnMismatch: boolean().optional(),\n\tperTool: record(string(), perToolOverrideSchema).optional()\n}).strict();\nconst SKILL_SOURCES = [\n\t\"registry\",\n\t\"github\",\n\t\"clawhub\",\n\t\"skills_sh\",\n\t\"agentskills_il\",\n\t\"npm\",\n\t\"local\"\n];\nconst SCAN_VERDICTS = [\n\t\"pass\",\n\t\"pass_with_notes\",\n\t\"flagged\",\n\t\"fail\",\n\t\"error\"\n];\nconst lockedSkillV1Schema = object({\n\tresolved: string().url(),\n\tintegrity: string().regex(/^sha512-/, \"Integrity must start with sha512-\"),\n\tpermissions: permissionsSchema,\n\taudit_score: number().min(0).max(10).nullable()\n});\nobject({\n\tlockfileVersion: literal(1),\n\tskills: record(string(), lockedSkillV1Schema)\n});\nconst lockedSkillSchema = object({\n\tresolved: string().url(),\n\tintegrity: string().regex(/^sha512-/, \"Integrity must start with sha512-\"),\n\tpermissions: permissionsSchema,\n\taudit_score: number().min(0).max(10).nullable(),\n\tdependencies: record(string(), string()).optional(),\n\tsource: _enum(SKILL_SOURCES).optional(),\n\tscan_verdict: _enum(SCAN_VERDICTS).optional(),\n\tscanned_at: string().optional()\n});\nobject({\n\tlockfileVersion: union([literal(1), literal(2)]),\n\tskills: record(string(), lockedSkillSchema)\n});\n//#endregion\n//#region src/constants.ts\nconst SDK_VERSION = \"0.10.6\";\nconst DEFAULT_CONFIG_DIR = \"~/.tank\";\nconst DEFAULT_MAX_RETRIES = 3;\nconst DEFAULT_TIMEOUT_MS = 3e4;\nconst SUPPORTED_AGENTS = [\n\t\"opencode\",\n\t\"cursor\",\n\t\"windsurf\",\n\t\"claude-code\",\n\t\"codex\"\n];\nconst AGENT_PATHS = {\n\topencode: \".opencode\",\n\tcursor: \".cursor\",\n\twindsurf: \".windsurf\",\n\t\"claude-code\": \".claude\",\n\tcodex: \".codex\"\n};\n//#endregion\n//#region src/errors.ts\n/**\n* Base error for all Tank SDK errors.\n* All typed errors extend this — catch TankError to handle any SDK failure.\n*/\nvar TankError = class extends Error {\n\t/** HTTP status code (if applicable) */\n\tstatus;\n\t/** Original cause of the error */\n\tcause;\n\tconstructor(message, options) {\n\t\tsuper(message, options?.cause ? { cause: options.cause } : void 0);\n\t\tthis.name = \"TankError\";\n\t\tthis.status = options?.status;\n\t\tif (options?.cause) this.cause = options.cause;\n\t}\n};\n/** Thrown when authentication fails (401). */\nvar TankAuthError = class extends TankError {\n\tconstructor(message = \"Authentication failed. Valid API key required.\") {\n\t\tsuper(message, { status: 401 });\n\t\tthis.name = \"TankAuthError\";\n\t}\n};\n/** Thrown when a requested resource is not found (404). */\nvar TankNotFoundError = class extends TankError {\n\t/** The skill name that was not found (if applicable) */\n\tskillName;\n\tconstructor(message, skillName) {\n\t\tsuper(message, { status: 404 });\n\t\tthis.name = \"TankNotFoundError\";\n\t\tthis.skillName = skillName;\n\t}\n};\n/** Thrown when the user lacks permission for an action (403). */\nvar TankPermissionError = class extends TankError {\n\t/** Required permissions that exceeded the budget */\n\trequired;\n\t/** Allowed permissions in the project budget */\n\tallowed;\n\tconstructor(message, details) {\n\t\tsuper(message, { status: 403 });\n\t\tthis.name = \"TankPermissionError\";\n\t\tthis.required = details?.required;\n\t\tthis.allowed = details?.allowed;\n\t}\n};\n/** Thrown when a network request fails (connection, timeout, DNS). */\nvar TankNetworkError = class extends TankError {\n\tconstructor(message, cause) {\n\t\tsuper(message, { cause });\n\t\tthis.name = \"TankNetworkError\";\n\t}\n};\n/** Thrown when SHA-512 integrity verification fails. */\nvar TankIntegrityError = class extends TankError {\n\t/** Expected integrity hash */\n\texpected;\n\t/** Actual computed hash */\n\tactual;\n\tconstructor(message, details) {\n\t\tsuper(message);\n\t\tthis.name = \"TankIntegrityError\";\n\t\tthis.expected = details?.expected;\n\t\tthis.actual = details?.actual;\n\t}\n};\n/** Thrown when dependency resolution encounters a conflict. */\nvar TankConflictError = class extends TankError {\n\t/** Details about the resolution failure */\n\tdetails;\n\tconstructor(message, details) {\n\t\tsuper(message, { status: 409 });\n\t\tthis.name = \"TankConflictError\";\n\t\tthis.details = details;\n\t}\n};\n//#endregion\n//#region src/client.ts\nfunction resolveConfigDir(configDir) {\n\tif (configDir) return configDir.replace(/^~/, os.homedir());\n\treturn path.join(os.homedir(), \".tank\");\n}\nfunction readConfigFile(configDir) {\n\ttry {\n\t\tconst configPath = path.join(resolveConfigDir(configDir), \"config.json\");\n\t\tconst raw = fs.readFileSync(configPath, \"utf-8\");\n\t\treturn JSON.parse(raw);\n\t} catch {\n\t\treturn {};\n\t}\n}\nfunction resolveToken(options, config) {\n\tif (options.token) return options.token;\n\tconst envToken = process.env.TANK_TOKEN?.trim();\n\tif (envToken) return envToken;\n\treturn config.token;\n}\nfunction parseRegistryOrigin(raw) {\n\tlet url;\n\ttry {\n\t\turl = new URL(raw);\n\t} catch {\n\t\tthrow new Error(`Invalid registry URL: ${raw}`);\n\t}\n\tif (url.username || url.password) throw new Error(`Registry URL must not contain credentials: ${raw}`);\n\tif (url.protocol !== \"https:\" && url.protocol !== \"http:\") throw new Error(`Registry URL must use https or http: ${raw}`);\n\treturn url.origin;\n}\nfunction resolveRegistryUrl(options, config) {\n\treturn parseRegistryOrigin(options.registryUrl || process.env.TANK_REGISTRY_URL?.trim() || config.registry || REGISTRY_URL);\n}\nconst MAX_DOWNLOAD_BYTES$1 = 100 * 1024 * 1024;\nfunction sleep(ms) {\n\treturn new Promise((r) => setTimeout(r, ms));\n}\nvar TankClient = class {\n\ttoken;\n\tregistryUrl;\n\tmaxRetries;\n\ttimeoutMs;\n\tconstructor(options = {}) {\n\t\tconst config = readConfigFile(options.configDir);\n\t\tthis.token = resolveToken(options, config);\n\t\tthis.registryUrl = resolveRegistryUrl(options, config);\n\t\tthis.maxRetries = options.maxRetries ?? 3;\n\t\tthis.timeoutMs = options.timeoutMs ?? 3e4;\n\t}\n\tasync readStreamWithLimit(body, limit) {\n\t\tconst reader = body.getReader();\n\t\tconst chunks = [];\n\t\tlet received = 0;\n\t\twhile (true) {\n\t\t\tconst { done, value } = await reader.read();\n\t\t\tif (done) break;\n\t\t\treceived += value.byteLength;\n\t\t\tif (received > limit) {\n\t\t\t\treader.cancel();\n\t\t\t\tthrow new TankNetworkError(`Response body exceeds ${limit} byte limit`);\n\t\t\t}\n\t\t\tchunks.push(value);\n\t\t}\n\t\treturn Buffer.concat(chunks);\n\t}\n\theaders(hasBody) {\n\t\tconst h = { \"User-Agent\": `tankpkg-sdk/${SDK_VERSION}` };\n\t\tif (this.token) h.Authorization = `Bearer ${this.token}`;\n\t\tif (hasBody) h[\"Content-Type\"] = \"application/json\";\n\t\treturn h;\n\t}\n\tasync request(method, apiPath, body) {\n\t\tconst url = `${this.registryUrl}/api/v1${apiPath}`;\n\t\tlet lastError;\n\t\tfor (let attempt = 0; attempt <= this.maxRetries; attempt++) try {\n\t\t\tconst res = await fetch(url, {\n\t\t\t\tmethod,\n\t\t\t\theaders: this.headers(!!body),\n\t\t\t\tbody: body ? JSON.stringify(body) : void 0,\n\t\t\t\tsignal: AbortSignal.timeout(this.timeoutMs),\n\t\t\t\tredirect: this.token ? \"manual\" : \"follow\"\n\t\t\t});\n\t\t\tif (res.status >= 300 && res.status < 400) throw new TankNetworkError(`Unexpected redirect (${res.status}) from ${url}. Refusing to follow to prevent credential leakage.`);\n\t\t\tif ((res.status === 429 || res.status >= 500) && attempt < this.maxRetries) {\n\t\t\t\tawait sleep(Math.min(1e3 * 2 ** attempt, 3e4));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\treturn res;\n\t\t} catch (err) {\n\t\t\tlastError = err instanceof Error ? err : new Error(String(err));\n\t\t\tif (attempt < this.maxRetries) await sleep(Math.min(1e3 * 2 ** attempt, 3e4));\n\t\t}\n\t\tthrow new TankNetworkError(`Request to ${url} failed after ${this.maxRetries + 1} attempts`, lastError);\n\t}\n\tasync json(method, apiPath, body) {\n\t\tconst res = await this.request(method, apiPath, body);\n\t\tif (res.status === 401) throw new TankAuthError();\n\t\tif (res.status === 403) throw new TankPermissionError((await res.json().catch(() => ({ error: \"Forbidden\" }))).error || \"Permission denied\");\n\t\tif (res.status === 404) throw new TankNotFoundError((await res.json().catch(() => ({ error: \"Not found\" }))).error || \"Not found\");\n\t\tif (!res.ok) {\n\t\t\tconst text = await res.text().catch(() => \"\");\n\t\t\tthrow new TankNetworkError(`HTTP ${res.status}: ${text}`);\n\t\t}\n\t\treturn await res.json();\n\t}\n\tasync search(query, options) {\n\t\tconst params = new URLSearchParams({ q: query });\n\t\tif (options?.page) params.set(\"page\", String(options.page));\n\t\tif (options?.limit) params.set(\"limit\", String(options.limit));\n\t\treturn this.json(\"GET\", `/search?${params}`);\n\t}\n\tasync info(name) {\n\t\treturn this.json(\"GET\", `/skills/${encodeURIComponent(name)}`);\n\t}\n\tasync versions(name) {\n\t\treturn this.json(\"GET\", `/skills/${encodeURIComponent(name)}/versions`);\n\t}\n\tasync download(name, version, options) {\n\t\tconst detail = await this.json(\"GET\", `/skills/${encodeURIComponent(name)}/${version}`);\n\t\tconst dlUrl = new URL(detail.downloadUrl);\n\t\tif (dlUrl.username || dlUrl.password) throw new TankNetworkError(`Download URL must not contain credentials: ${detail.downloadUrl}`);\n\t\tif (dlUrl.protocol !== \"https:\" && dlUrl.protocol !== \"http:\") throw new TankNetworkError(`Download URL must use https or http: ${detail.downloadUrl}`);\n\t\tconst res = await fetch(detail.downloadUrl, {\n\t\t\tsignal: AbortSignal.timeout(this.timeoutMs),\n\t\t\tredirect: \"manual\"\n\t\t});\n\t\tif (res.status >= 300 && res.status < 400) throw new TankNetworkError(`Unexpected redirect (${res.status}) from download URL`);\n\t\tif (!res.ok || !res.body) throw new TankNetworkError(`Failed to download tarball: HTTP ${res.status}`);\n\t\tif (options?.buffer || options?.dest) {\n\t\t\tconst buffer = await this.readStreamWithLimit(res.body, MAX_DOWNLOAD_BYTES$1);\n\t\t\tconst computed = `sha512-${(await import(\"node:crypto\")).createHash(\"sha512\").update(buffer).digest(\"base64\")}`;\n\t\t\tif (detail.integrity && detail.integrity !== \"pending\" && computed !== detail.integrity) throw new TankIntegrityError(\"Integrity verification failed\", {\n\t\t\t\texpected: detail.integrity,\n\t\t\t\tactual: computed\n\t\t\t});\n\t\t\tif (options?.dest) {\n\t\t\t\tconst destDir = options.dest.replace(/^~/, os.homedir());\n\t\t\t\tif (!fs.existsSync(destDir)) fs.mkdirSync(destDir, { recursive: true });\n\t\t\t\tconst filename = `${name.replace(/[/\\\\]/g, \"-\").replace(/\\.\\./g, \"\")}-${version}.tgz`;\n\t\t\t\tconst destPath = path.join(destDir, filename);\n\t\t\t\tfs.writeFileSync(destPath, buffer);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn buffer;\n\t\t}\n\t\treturn res.body;\n\t}\n\tasync audit(name, version) {\n\t\tif (version) return this.json(\"GET\", `/skills/${encodeURIComponent(name)}/${version}`);\n\t\tconst latest = (await this.info(name)).latestVersion;\n\t\tif (!latest) throw new TankNotFoundError(`No versions found for ${name}`, name);\n\t\treturn this.json(\"GET\", `/skills/${encodeURIComponent(name)}/${latest}`);\n\t}\n\tasync permissions(name, version) {\n\t\treturn (await this.audit(name, version)).permissions;\n\t}\n\tasync whoami() {\n\t\tif (!this.token) return null;\n\t\ttry {\n\t\t\treturn await this.json(\"GET\", \"/auth/whoami\");\n\t\t} catch (err) {\n\t\t\tif (err instanceof TankAuthError) return null;\n\t\t\tthrow err;\n\t\t}\n\t}\n\tasync startLoginFlow() {\n\t\tconst state = crypto.randomUUID().replace(/-/g, \"\");\n\t\treturn this.json(\"POST\", \"/cli-auth/start\", { state });\n\t}\n\tasync exchangeLoginCode(sessionCode, state) {\n\t\ttry {\n\t\t\treturn await this.json(\"POST\", \"/cli-auth/exchange\", {\n\t\t\t\tsessionCode,\n\t\t\t\tstate\n\t\t\t});\n\t\t} catch (err) {\n\t\t\tif (err instanceof TankAuthError || err instanceof TankNotFoundError) return null;\n\t\t\tthrow err;\n\t\t}\n\t}\n\tasync listFiles(name, version) {\n\t\tconst ver = version ?? (await this.info(name)).latestVersion;\n\t\tif (!ver) throw new TankNotFoundError(`No versions found for ${name}`, name);\n\t\treturn (await this.json(\"GET\", `/skills/${encodeURIComponent(name)}/${ver}/files`)).files;\n\t}\n\tasync readFile(name, version, filePath) {\n\t\tconst normalized = filePath.replace(/\\\\/g, \"/\").replace(/\\0/g, \"\");\n\t\tif (!normalized || normalized.startsWith(\"/\") || normalized.split(\"/\").some((s) => s === \"..\")) throw new TankNetworkError(`Invalid file path: ${filePath}`);\n\t\tconst encodedName = encodeURIComponent(name);\n\t\tconst encodedPath = normalized.split(\"/\").map(encodeURIComponent).join(\"/\");\n\t\tconst res = await this.request(\"GET\", `/skills/${encodedName}/${version}/files/${encodedPath}`);\n\t\tif (res.status === 404) throw new TankNotFoundError(`File not found: ${filePath}`, name);\n\t\tif (!res.ok) throw new TankNetworkError(`Failed to read file: HTTP ${res.status}`);\n\t\treturn res.text();\n\t}\n\tasync batchRead(name, ver, items, concurrency = 6) {\n\t\tconst results = [];\n\t\tfor (let i = 0; i < items.length; i += concurrency) {\n\t\t\tconst batch = items.slice(i, i + concurrency);\n\t\t\tconst batchResults = await Promise.all(batch.map(async ({ f, prefix }) => ({\n\t\t\t\tkey: f.slice(prefix.length),\n\t\t\t\tprefix,\n\t\t\t\tcontent: await this.readFile(name, ver, f)\n\t\t\t})));\n\t\t\tresults.push(...batchResults);\n\t\t}\n\t\treturn results;\n\t}\n\tasync readSkill(name, version) {\n\t\tconst ver = version ?? (await this.info(name)).latestVersion;\n\t\tif (!ver) throw new TankNotFoundError(`No versions found for ${name}`, name);\n\t\tconst files = await this.listFiles(name, ver);\n\t\tconst content = files.find((f) => f === \"SKILL.md\") ? await this.readFile(name, ver, \"SKILL.md\") : \"\";\n\t\tconst filesToRead = [...files.filter((f) => f.startsWith(\"references/\")).map((f) => ({\n\t\t\tf,\n\t\t\tprefix: \"references/\"\n\t\t})), ...files.filter((f) => f.startsWith(\"scripts/\")).map((f) => ({\n\t\t\tf,\n\t\t\tprefix: \"scripts/\"\n\t\t}))];\n\t\tconst results = await this.batchRead(name, ver, filesToRead);\n\t\tconst refEntries = results.filter((r) => r.prefix === \"references/\").map((r) => [r.key, r.content]);\n\t\tconst scriptEntries = results.filter((r) => r.prefix === \"scripts/\").map((r) => [r.key, r.content]);\n\t\treturn {\n\t\t\tname,\n\t\t\tversion: ver,\n\t\t\tcontent,\n\t\t\treferences: Object.fromEntries(refEntries),\n\t\t\tscripts: Object.fromEntries(scriptEntries),\n\t\t\tfiles\n\t\t};\n\t}\n\tasync getStarCount(name) {\n\t\treturn this.json(\"GET\", `/skills/${encodeURIComponent(name)}/star`);\n\t}\n\tasync star(name) {\n\t\tawait this.json(\"POST\", `/skills/${encodeURIComponent(name)}/star`);\n\t}\n\tasync unstar(name) {\n\t\tawait this.json(\"DELETE\", `/skills/${encodeURIComponent(name)}/star`);\n\t}\n};\n//#endregion\n//#region src/install/native.ts\nconst esmRequire = createRequire(import.meta.url);\nlet _native = null;\nlet _nativeChecked = false;\nfunction tryLoadNative() {\n\tif (_nativeChecked) return _native;\n\t_nativeChecked = true;\n\ttry {\n\t\t_native = esmRequire(\"@tankpkg/sdk-core\");\n\t} catch {\n\t\t_native = null;\n\t}\n\treturn _native;\n}\nfunction hasNativeAcceleration() {\n\treturn tryLoadNative() !== null;\n}\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/internal/constants.js\nvar require_constants = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst SEMVER_SPEC_VERSION = \"2.0.0\";\n\tconst MAX_LENGTH = 256;\n\tconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\n\tmodule.exports = {\n\t\tMAX_LENGTH,\n\t\tMAX_SAFE_COMPONENT_LENGTH: 16,\n\t\tMAX_SAFE_BUILD_LENGTH: MAX_LENGTH - 6,\n\t\tMAX_SAFE_INTEGER,\n\t\tRELEASE_TYPES: [\n\t\t\t\"major\",\n\t\t\t\"premajor\",\n\t\t\t\"minor\",\n\t\t\t\"preminor\",\n\t\t\t\"patch\",\n\t\t\t\"prepatch\",\n\t\t\t\"prerelease\"\n\t\t],\n\t\tSEMVER_SPEC_VERSION,\n\t\tFLAG_INCLUDE_PRERELEASE: 1,\n\t\tFLAG_LOOSE: 2\n\t};\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/internal/debug.js\nvar require_debug = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tmodule.exports = typeof process === \"object\" && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error(\"SEMVER\", ...args) : () => {};\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/internal/re.js\nvar require_re = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst { MAX_SAFE_COMPONENT_LENGTH, MAX_SAFE_BUILD_LENGTH, MAX_LENGTH } = require_constants();\n\tconst debug = require_debug();\n\texports = module.exports = {};\n\tconst re = exports.re = [];\n\tconst safeRe = exports.safeRe = [];\n\tconst src = exports.src = [];\n\tconst safeSrc = exports.safeSrc = [];\n\tconst t = exports.t = {};\n\tlet R = 0;\n\tconst LETTERDASHNUMBER = \"[a-zA-Z0-9-]\";\n\tconst safeRegexReplacements = [\n\t\t[\"\\\\s\", 1],\n\t\t[\"\\\\d\", MAX_LENGTH],\n\t\t[LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]\n\t];\n\tconst makeSafeRegex = (value) => {\n\t\tfor (const [token, max] of safeRegexReplacements) value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`);\n\t\treturn value;\n\t};\n\tconst createToken = (name, value, isGlobal) => {\n\t\tconst safe = makeSafeRegex(value);\n\t\tconst index = R++;\n\t\tdebug(name, index, value);\n\t\tt[name] = index;\n\t\tsrc[index] = value;\n\t\tsafeSrc[index] = safe;\n\t\tre[index] = new RegExp(value, isGlobal ? \"g\" : void 0);\n\t\tsafeRe[index] = new RegExp(safe, isGlobal ? \"g\" : void 0);\n\t};\n\tcreateToken(\"NUMERICIDENTIFIER\", \"0|[1-9]\\\\d*\");\n\tcreateToken(\"NUMERICIDENTIFIERLOOSE\", \"\\\\d+\");\n\tcreateToken(\"NONNUMERICIDENTIFIER\", `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);\n\tcreateToken(\"MAINVERSION\", `(${src[t.NUMERICIDENTIFIER]})\\\\.(${src[t.NUMERICIDENTIFIER]})\\\\.(${src[t.NUMERICIDENTIFIER]})`);\n\tcreateToken(\"MAINVERSIONLOOSE\", `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t.NUMERICIDENTIFIERLOOSE]})`);\n\tcreateToken(\"PRERELEASEIDENTIFIER\", `(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIER]})`);\n\tcreateToken(\"PRERELEASEIDENTIFIERLOOSE\", `(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIERLOOSE]})`);\n\tcreateToken(\"PRERELEASE\", `(?:-(${src[t.PRERELEASEIDENTIFIER]}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`);\n\tcreateToken(\"PRERELEASELOOSE\", `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`);\n\tcreateToken(\"BUILDIDENTIFIER\", `${LETTERDASHNUMBER}+`);\n\tcreateToken(\"BUILD\", `(?:\\\\+(${src[t.BUILDIDENTIFIER]}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`);\n\tcreateToken(\"FULLPLAIN\", `v?${src[t.MAINVERSION]}${src[t.PRERELEASE]}?${src[t.BUILD]}?`);\n\tcreateToken(\"FULL\", `^${src[t.FULLPLAIN]}$`);\n\tcreateToken(\"LOOSEPLAIN\", `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]}${src[t.PRERELEASELOOSE]}?${src[t.BUILD]}?`);\n\tcreateToken(\"LOOSE\", `^${src[t.LOOSEPLAIN]}$`);\n\tcreateToken(\"GTLT\", \"((?:<|>)?=?)\");\n\tcreateToken(\"XRANGEIDENTIFIERLOOSE\", `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);\n\tcreateToken(\"XRANGEIDENTIFIER\", `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`);\n\tcreateToken(\"XRANGEPLAIN\", `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})(?:\\\\.(${src[t.XRANGEIDENTIFIER]})(?:\\\\.(${src[t.XRANGEIDENTIFIER]})(?:${src[t.PRERELEASE]})?${src[t.BUILD]}?)?)?`);\n\tcreateToken(\"XRANGEPLAINLOOSE\", `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:${src[t.PRERELEASELOOSE]})?${src[t.BUILD]}?)?)?`);\n\tcreateToken(\"XRANGE\", `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`);\n\tcreateToken(\"XRANGELOOSE\", `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`);\n\tcreateToken(\"COERCEPLAIN\", `(^|[^\\\\d])(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}})(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`);\n\tcreateToken(\"COERCE\", `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`);\n\tcreateToken(\"COERCEFULL\", src[t.COERCEPLAIN] + `(?:${src[t.PRERELEASE]})?(?:${src[t.BUILD]})?(?:$|[^\\\\d])`);\n\tcreateToken(\"COERCERTL\", src[t.COERCE], true);\n\tcreateToken(\"COERCERTLFULL\", src[t.COERCEFULL], true);\n\tcreateToken(\"LONETILDE\", \"(?:~>?)\");\n\tcreateToken(\"TILDETRIM\", `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true);\n\texports.tildeTrimReplace = \"$1~\";\n\tcreateToken(\"TILDE\", `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`);\n\tcreateToken(\"TILDELOOSE\", `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`);\n\tcreateToken(\"LONECARET\", \"(?:\\\\^)\");\n\tcreateToken(\"CARETTRIM\", `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true);\n\texports.caretTrimReplace = \"$1^\";\n\tcreateToken(\"CARET\", `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`);\n\tcreateToken(\"CARETLOOSE\", `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`);\n\tcreateToken(\"COMPARATORLOOSE\", `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`);\n\tcreateToken(\"COMPARATOR\", `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`);\n\tcreateToken(\"COMPARATORTRIM\", `(\\\\s*)${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true);\n\texports.comparatorTrimReplace = \"$1$2$3\";\n\tcreateToken(\"HYPHENRANGE\", `^\\\\s*(${src[t.XRANGEPLAIN]})\\\\s+-\\\\s+(${src[t.XRANGEPLAIN]})\\\\s*$`);\n\tcreateToken(\"HYPHENRANGELOOSE\", `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${src[t.XRANGEPLAINLOOSE]})\\\\s*$`);\n\tcreateToken(\"STAR\", \"(<|>)?=?\\\\s*\\\\*\");\n\tcreateToken(\"GTE0\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$\");\n\tcreateToken(\"GTE0PRE\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$\");\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/internal/parse-options.js\nvar require_parse_options = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst looseOption = Object.freeze({ loose: true });\n\tconst emptyOpts = Object.freeze({});\n\tconst parseOptions = (options) => {\n\t\tif (!options) return emptyOpts;\n\t\tif (typeof options !== \"object\") return looseOption;\n\t\treturn options;\n\t};\n\tmodule.exports = parseOptions;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/internal/identifiers.js\nvar require_identifiers = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst numeric = /^[0-9]+$/;\n\tconst compareIdentifiers = (a, b) => {\n\t\tif (typeof a === \"number\" && typeof b === \"number\") return a === b ? 0 : a < b ? -1 : 1;\n\t\tconst anum = numeric.test(a);\n\t\tconst bnum = numeric.test(b);\n\t\tif (anum && bnum) {\n\t\t\ta = +a;\n\t\t\tb = +b;\n\t\t}\n\t\treturn a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1;\n\t};\n\tconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a);\n\tmodule.exports = {\n\t\tcompareIdentifiers,\n\t\trcompareIdentifiers\n\t};\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/classes/semver.js\nvar require_semver$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst debug = require_debug();\n\tconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants();\n\tconst { safeRe: re, t } = require_re();\n\tconst parseOptions = require_parse_options();\n\tconst { compareIdentifiers } = require_identifiers();\n\tmodule.exports = class SemVer {\n\t\tconstructor(version, options) {\n\t\t\toptions = parseOptions(options);\n\t\t\tif (version instanceof SemVer) if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) return version;\n\t\t\telse version = version.version;\n\t\t\telse if (typeof version !== \"string\") throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`);\n\t\t\tif (version.length > MAX_LENGTH) throw new TypeError(`version is longer than ${MAX_LENGTH} characters`);\n\t\t\tdebug(\"SemVer\", version, options);\n\t\t\tthis.options = options;\n\t\t\tthis.loose = !!options.loose;\n\t\t\tthis.includePrerelease = !!options.includePrerelease;\n\t\t\tconst m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]);\n\t\t\tif (!m) throw new TypeError(`Invalid Version: ${version}`);\n\t\t\tthis.raw = version;\n\t\t\tthis.major = +m[1];\n\t\t\tthis.minor = +m[2];\n\t\t\tthis.patch = +m[3];\n\t\t\tif (this.major > MAX_SAFE_INTEGER || this.major < 0) throw new TypeError(\"Invalid major version\");\n\t\t\tif (this.minor > MAX_SAFE_INTEGER || this.minor < 0) throw new TypeError(\"Invalid minor version\");\n\t\t\tif (this.patch > MAX_SAFE_INTEGER || this.patch < 0) throw new TypeError(\"Invalid patch version\");\n\t\t\tif (!m[4]) this.prerelease = [];\n\t\t\telse this.prerelease = m[4].split(\".\").map((id) => {\n\t\t\t\tif (/^[0-9]+$/.test(id)) {\n\t\t\t\t\tconst num = +id;\n\t\t\t\t\tif (num >= 0 && num < MAX_SAFE_INTEGER) return num;\n\t\t\t\t}\n\t\t\t\treturn id;\n\t\t\t});\n\t\t\tthis.build = m[5] ? m[5].split(\".\") : [];\n\t\t\tthis.format();\n\t\t}\n\t\tformat() {\n\t\t\tthis.version = `${this.major}.${this.minor}.${this.patch}`;\n\t\t\tif (this.prerelease.length) this.version += `-${this.prerelease.join(\".\")}`;\n\t\t\treturn this.version;\n\t\t}\n\t\ttoString() {\n\t\t\treturn this.version;\n\t\t}\n\t\tcompare(other) {\n\t\t\tdebug(\"SemVer.compare\", this.version, this.options, other);\n\t\t\tif (!(other instanceof SemVer)) {\n\t\t\t\tif (typeof other === \"string\" && other === this.version) return 0;\n\t\t\t\tother = new SemVer(other, this.options);\n\t\t\t}\n\t\t\tif (other.version === this.version) return 0;\n\t\t\treturn this.compareMain(other) || this.comparePre(other);\n\t\t}\n\t\tcompareMain(other) {\n\t\t\tif (!(other instanceof SemVer)) other = new SemVer(other, this.options);\n\t\t\tif (this.major < other.major) return -1;\n\t\t\tif (this.major > other.major) return 1;\n\t\t\tif (this.minor < other.minor) return -1;\n\t\t\tif (this.minor > other.minor) return 1;\n\t\t\tif (this.patch < other.patch) return -1;\n\t\t\tif (this.patch > other.patch) return 1;\n\t\t\treturn 0;\n\t\t}\n\t\tcomparePre(other) {\n\t\t\tif (!(other instanceof SemVer)) other = new SemVer(other, this.options);\n\t\t\tif (this.prerelease.length && !other.prerelease.length) return -1;\n\t\t\telse if (!this.prerelease.length && other.prerelease.length) return 1;\n\t\t\telse if (!this.prerelease.length && !other.prerelease.length) return 0;\n\t\t\tlet i = 0;\n\t\t\tdo {\n\t\t\t\tconst a = this.prerelease[i];\n\t\t\t\tconst b = other.prerelease[i];\n\t\t\t\tdebug(\"prerelease compare\", i, a, b);\n\t\t\t\tif (a === void 0 && b === void 0) return 0;\n\t\t\t\telse if (b === void 0) return 1;\n\t\t\t\telse if (a === void 0) return -1;\n\t\t\t\telse if (a === b) continue;\n\t\t\t\telse return compareIdentifiers(a, b);\n\t\t\t} while (++i);\n\t\t}\n\t\tcompareBuild(other) {\n\t\t\tif (!(other instanceof SemVer)) other = new SemVer(other, this.options);\n\t\t\tlet i = 0;\n\t\t\tdo {\n\t\t\t\tconst a = this.build[i];\n\t\t\t\tconst b = other.build[i];\n\t\t\t\tdebug(\"build compare\", i, a, b);\n\t\t\t\tif (a === void 0 && b === void 0) return 0;\n\t\t\t\telse if (b === void 0) return 1;\n\t\t\t\telse if (a === void 0) return -1;\n\t\t\t\telse if (a === b) continue;\n\t\t\t\telse return compareIdentifiers(a, b);\n\t\t\t} while (++i);\n\t\t}\n\t\tinc(release, identifier, identifierBase) {\n\t\t\tif (release.startsWith(\"pre\")) {\n\t\t\t\tif (!identifier && identifierBase === false) throw new Error(\"invalid increment argument: identifier is empty\");\n\t\t\t\tif (identifier) {\n\t\t\t\t\tconst match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE]);\n\t\t\t\t\tif (!match || match[1] !== identifier) throw new Error(`invalid identifier: ${identifier}`);\n\t\t\t\t}\n\t\t\t}\n\t\t\tswitch (release) {\n\t\t\t\tcase \"premajor\":\n\t\t\t\t\tthis.prerelease.length = 0;\n\t\t\t\t\tthis.patch = 0;\n\t\t\t\t\tthis.minor = 0;\n\t\t\t\t\tthis.major++;\n\t\t\t\t\tthis.inc(\"pre\", identifier, identifierBase);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"preminor\":\n\t\t\t\t\tthis.prerelease.length = 0;\n\t\t\t\t\tthis.patch = 0;\n\t\t\t\t\tthis.minor++;\n\t\t\t\t\tthis.inc(\"pre\", identifier, identifierBase);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"prepatch\":\n\t\t\t\t\tthis.prerelease.length = 0;\n\t\t\t\t\tthis.inc(\"patch\", identifier, identifierBase);\n\t\t\t\t\tthis.inc(\"pre\", identifier, identifierBase);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"prerelease\":\n\t\t\t\t\tif (this.prerelease.length === 0) this.inc(\"patch\", identifier, identifierBase);\n\t\t\t\t\tthis.inc(\"pre\", identifier, identifierBase);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"release\":\n\t\t\t\t\tif (this.prerelease.length === 0) throw new Error(`version ${this.raw} is not a prerelease`);\n\t\t\t\t\tthis.prerelease.length = 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"major\":\n\t\t\t\t\tif (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) this.major++;\n\t\t\t\t\tthis.minor = 0;\n\t\t\t\t\tthis.patch = 0;\n\t\t\t\t\tthis.prerelease = [];\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"minor\":\n\t\t\t\t\tif (this.patch !== 0 || this.prerelease.length === 0) this.minor++;\n\t\t\t\t\tthis.patch = 0;\n\t\t\t\t\tthis.prerelease = [];\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"patch\":\n\t\t\t\t\tif (this.prerelease.length === 0) this.patch++;\n\t\t\t\t\tthis.prerelease = [];\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"pre\": {\n\t\t\t\t\tconst base = Number(identifierBase) ? 1 : 0;\n\t\t\t\t\tif (this.prerelease.length === 0) this.prerelease = [base];\n\t\t\t\t\telse {\n\t\t\t\t\t\tlet i = this.prerelease.length;\n\t\t\t\t\t\twhile (--i >= 0) if (typeof this.prerelease[i] === \"number\") {\n\t\t\t\t\t\t\tthis.prerelease[i]++;\n\t\t\t\t\t\t\ti = -2;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (i === -1) {\n\t\t\t\t\t\t\tif (identifier === this.prerelease.join(\".\") && identifierBase === false) throw new Error(\"invalid increment argument: identifier already exists\");\n\t\t\t\t\t\t\tthis.prerelease.push(base);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (identifier) {\n\t\t\t\t\t\tlet prerelease = [identifier, base];\n\t\t\t\t\t\tif (identifierBase === false) prerelease = [identifier];\n\t\t\t\t\t\tif (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n\t\t\t\t\t\t\tif (isNaN(this.prerelease[1])) this.prerelease = prerelease;\n\t\t\t\t\t\t} else this.prerelease = prerelease;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tdefault: throw new Error(`invalid increment argument: ${release}`);\n\t\t\t}\n\t\t\tthis.raw = this.format();\n\t\t\tif (this.build.length) this.raw += `+${this.build.join(\".\")}`;\n\t\t\treturn this;\n\t\t}\n\t};\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/parse.js\nvar require_parse = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst SemVer = require_semver$1();\n\tconst parse = (version, options, throwErrors = false) => {\n\t\tif (version instanceof SemVer) return version;\n\t\ttry {\n\t\t\treturn new SemVer(version, options);\n\t\t} catch (er) {\n\t\t\tif (!throwErrors) return null;\n\t\t\tthrow er;\n\t\t}\n\t};\n\tmodule.exports = parse;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/valid.js\nvar require_valid$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst parse = require_parse();\n\tconst valid = (version, options) => {\n\t\tconst v = parse(version, options);\n\t\treturn v ? v.version : null;\n\t};\n\tmodule.exports = valid;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/clean.js\nvar require_clean = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst parse = require_parse();\n\tconst clean = (version, options) => {\n\t\tconst s = parse(version.trim().replace(/^[=v]+/, \"\"), options);\n\t\treturn s ? s.version : null;\n\t};\n\tmodule.exports = clean;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/inc.js\nvar require_inc = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst SemVer = require_semver$1();\n\tconst inc = (version, release, options, identifier, identifierBase) => {\n\t\tif (typeof options === \"string\") {\n\t\t\tidentifierBase = identifier;\n\t\t\tidentifier = options;\n\t\t\toptions = void 0;\n\t\t}\n\t\ttry {\n\t\t\treturn new SemVer(version instanceof SemVer ? version.version : version, options).inc(release, identifier, identifierBase).version;\n\t\t} catch (er) {\n\t\t\treturn null;\n\t\t}\n\t};\n\tmodule.exports = inc;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/diff.js\nvar require_diff = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst parse = require_parse();\n\tconst diff = (version1, version2) => {\n\t\tconst v1 = parse(version1, null, true);\n\t\tconst v2 = parse(version2, null, true);\n\t\tconst comparison = v1.compare(v2);\n\t\tif (comparison === 0) return null;\n\t\tconst v1Higher = comparison > 0;\n\t\tconst highVersion = v1Higher ? v1 : v2;\n\t\tconst lowVersion = v1Higher ? v2 : v1;\n\t\tconst highHasPre = !!highVersion.prerelease.length;\n\t\tif (!!lowVersion.prerelease.length && !highHasPre) {\n\t\t\tif (!lowVersion.patch && !lowVersion.minor) return \"major\";\n\t\t\tif (lowVersion.compareMain(highVersion) === 0) {\n\t\t\t\tif (lowVersion.minor && !lowVersion.patch) return \"minor\";\n\t\t\t\treturn \"patch\";\n\t\t\t}\n\t\t}\n\t\tconst prefix = highHasPre ? \"pre\" : \"\";\n\t\tif (v1.major !== v2.major) return prefix + \"major\";\n\t\tif (v1.minor !== v2.minor) return prefix + \"minor\";\n\t\tif (v1.patch !== v2.patch) return prefix + \"patch\";\n\t\treturn \"prerelease\";\n\t};\n\tmodule.exports = diff;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/major.js\nvar require_major = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst SemVer = require_semver$1();\n\tconst major = (a, loose) => new SemVer(a, loose).major;\n\tmodule.exports = major;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/minor.js\nvar require_minor = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst SemVer = require_semver$1();\n\tconst minor = (a, loose) => new SemVer(a, loose).minor;\n\tmodule.exports = minor;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/patch.js\nvar require_patch = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst SemVer = require_semver$1();\n\tconst patch = (a, loose) => new SemVer(a, loose).patch;\n\tmodule.exports = patch;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/prerelease.js\nvar require_prerelease = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst parse = require_parse();\n\tconst prerelease = (version, options) => {\n\t\tconst parsed = parse(version, options);\n\t\treturn parsed && parsed.prerelease.length ? parsed.prerelease : null;\n\t};\n\tmodule.exports = prerelease;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/compare.js\nvar require_compare = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst SemVer = require_semver$1();\n\tconst compare = (a, b, loose) => new SemVer(a, loose).compare(new SemVer(b, loose));\n\tmodule.exports = compare;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/rcompare.js\nvar require_rcompare = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst compare = require_compare();\n\tconst rcompare = (a, b, loose) => compare(b, a, loose);\n\tmodule.exports = rcompare;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/compare-loose.js\nvar require_compare_loose = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst compare = require_compare();\n\tconst compareLoose = (a, b) => compare(a, b, true);\n\tmodule.exports = compareLoose;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/compare-build.js\nvar require_compare_build = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst SemVer = require_semver$1();\n\tconst compareBuild = (a, b, loose) => {\n\t\tconst versionA = new SemVer(a, loose);\n\t\tconst versionB = new SemVer(b, loose);\n\t\treturn versionA.compare(versionB) || versionA.compareBuild(versionB);\n\t};\n\tmodule.exports = compareBuild;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/sort.js\nvar require_sort = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst compareBuild = require_compare_build();\n\tconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose));\n\tmodule.exports = sort;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/rsort.js\nvar require_rsort = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst compareBuild = require_compare_build();\n\tconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose));\n\tmodule.exports = rsort;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/gt.js\nvar require_gt = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst compare = require_compare();\n\tconst gt = (a, b, loose) => compare(a, b, loose) > 0;\n\tmodule.exports = gt;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/lt.js\nvar require_lt = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst compare = require_compare();\n\tconst lt = (a, b, loose) => compare(a, b, loose) < 0;\n\tmodule.exports = lt;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/eq.js\nvar require_eq = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst compare = require_compare();\n\tconst eq = (a, b, loose) => compare(a, b, loose) === 0;\n\tmodule.exports = eq;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/neq.js\nvar require_neq = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst compare = require_compare();\n\tconst neq = (a, b, loose) => compare(a, b, loose) !== 0;\n\tmodule.exports = neq;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/gte.js\nvar require_gte = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst compare = require_compare();\n\tconst gte = (a, b, loose) => compare(a, b, loose) >= 0;\n\tmodule.exports = gte;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/lte.js\nvar require_lte = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst compare = require_compare();\n\tconst lte = (a, b, loose) => compare(a, b, loose) <= 0;\n\tmodule.exports = lte;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/cmp.js\nvar require_cmp = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst eq = require_eq();\n\tconst neq = require_neq();\n\tconst gt = require_gt();\n\tconst gte = require_gte();\n\tconst lt = require_lt();\n\tconst lte = require_lte();\n\tconst cmp = (a, op, b, loose) => {\n\t\tswitch (op) {\n\t\t\tcase \"===\":\n\t\t\t\tif (typeof a === \"object\") a = a.version;\n\t\t\t\tif (typeof b === \"object\") b = b.version;\n\t\t\t\treturn a === b;\n\t\t\tcase \"!==\":\n\t\t\t\tif (typeof a === \"object\") a = a.version;\n\t\t\t\tif (typeof b === \"object\") b = b.version;\n\t\t\t\treturn a !== b;\n\t\t\tcase \"\":\n\t\t\tcase \"=\":\n\t\t\tcase \"==\": return eq(a, b, loose);\n\t\t\tcase \"!=\": return neq(a, b, loose);\n\t\t\tcase \">\": return gt(a, b, loose);\n\t\t\tcase \">=\": return gte(a, b, loose);\n\t\t\tcase \"<\": return lt(a, b, loose);\n\t\t\tcase \"<=\": return lte(a, b, loose);\n\t\t\tdefault: throw new TypeError(`Invalid operator: ${op}`);\n\t\t}\n\t};\n\tmodule.exports = cmp;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/coerce.js\nvar require_coerce = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst SemVer = require_semver$1();\n\tconst parse = require_parse();\n\tconst { safeRe: re, t } = require_re();\n\tconst coerce = (version, options) => {\n\t\tif (version instanceof SemVer) return version;\n\t\tif (typeof version === \"number\") version = String(version);\n\t\tif (typeof version !== \"string\") return null;\n\t\toptions = options || {};\n\t\tlet match = null;\n\t\tif (!options.rtl) match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE]);\n\t\telse {\n\t\t\tconst coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL];\n\t\t\tlet next;\n\t\t\twhile ((next = coerceRtlRegex.exec(version)) && (!match || match.index + match[0].length !== version.length)) {\n\t\t\t\tif (!match || next.index + next[0].length !== match.index + match[0].length) match = next;\n\t\t\t\tcoerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length;\n\t\t\t}\n\t\t\tcoerceRtlRegex.lastIndex = -1;\n\t\t}\n\t\tif (match === null) return null;\n\t\tconst major = match[2];\n\t\treturn parse(`${major}.${match[3] || \"0\"}.${match[4] || \"0\"}${options.includePrerelease && match[5] ? `-${match[5]}` : \"\"}${options.includePrerelease && match[6] ? `+${match[6]}` : \"\"}`, options);\n\t};\n\tmodule.exports = coerce;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/internal/lrucache.js\nvar require_lrucache = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tvar LRUCache = class {\n\t\tconstructor() {\n\t\t\tthis.max = 1e3;\n\t\t\tthis.map = /* @__PURE__ */ new Map();\n\t\t}\n\t\tget(key) {\n\t\t\tconst value = this.map.get(key);\n\t\t\tif (value === void 0) return;\n\t\t\telse {\n\t\t\t\tthis.map.delete(key);\n\t\t\t\tthis.map.set(key, value);\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t\tdelete(key) {\n\t\t\treturn this.map.delete(key);\n\t\t}\n\t\tset(key, value) {\n\t\t\tif (!this.delete(key) && value !== void 0) {\n\t\t\t\tif (this.map.size >= this.max) {\n\t\t\t\t\tconst firstKey = this.map.keys().next().value;\n\t\t\t\t\tthis.delete(firstKey);\n\t\t\t\t}\n\t\t\t\tthis.map.set(key, value);\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t};\n\tmodule.exports = LRUCache;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/classes/range.js\nvar require_range = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst SPACE_CHARACTERS = /\\s+/g;\n\tmodule.exports = class Range {\n\t\tconstructor(range, options) {\n\t\t\toptions = parseOptions(options);\n\t\t\tif (range instanceof Range) if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) return range;\n\t\t\telse return new Range(range.raw, options);\n\t\t\tif (range instanceof Comparator) {\n\t\t\t\tthis.raw = range.value;\n\t\t\t\tthis.set = [[range]];\n\t\t\t\tthis.formatted = void 0;\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\tthis.options = options;\n\t\t\tthis.loose = !!options.loose;\n\t\t\tthis.includePrerelease = !!options.includePrerelease;\n\t\t\tthis.raw = range.trim().replace(SPACE_CHARACTERS, \" \");\n\t\t\tthis.set = this.raw.split(\"||\").map((r) => this.parseRange(r.trim())).filter((c) => c.length);\n\t\t\tif (!this.set.length) throw new TypeError(`Invalid SemVer Range: ${this.raw}`);\n\t\t\tif (this.set.length > 1) {\n\t\t\t\tconst first = this.set[0];\n\t\t\t\tthis.set = this.set.filter((c) => !isNullSet(c[0]));\n\t\t\t\tif (this.set.length === 0) this.set = [first];\n\t\t\t\telse if (this.set.length > 1) {\n\t\t\t\t\tfor (const c of this.set) if (c.length === 1 && isAny(c[0])) {\n\t\t\t\t\t\tthis.set = [c];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.formatted = void 0;\n\t\t}\n\t\tget range() {\n\t\t\tif (this.formatted === void 0) {\n\t\t\t\tthis.formatted = \"\";\n\t\t\t\tfor (let i = 0; i < this.set.length; i++) {\n\t\t\t\t\tif (i > 0) this.formatted += \"||\";\n\t\t\t\t\tconst comps = this.set[i];\n\t\t\t\t\tfor (let k = 0; k < comps.length; k++) {\n\t\t\t\t\t\tif (k > 0) this.formatted += \" \";\n\t\t\t\t\t\tthis.formatted += comps[k].toString().trim();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.formatted;\n\t\t}\n\t\tformat() {\n\t\t\treturn this.range;\n\t\t}\n\t\ttoString() {\n\t\t\treturn this.range;\n\t\t}\n\t\tparseRange(range) {\n\t\t\tconst memoKey = ((this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | (this.options.loose && FLAG_LOOSE)) + \":\" + range;\n\t\t\tconst cached = cache.get(memoKey);\n\t\t\tif (cached) return cached;\n\t\t\tconst loose = this.options.loose;\n\t\t\tconst hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE];\n\t\t\trange = range.replace(hr, hyphenReplace(this.options.includePrerelease));\n\t\t\tdebug(\"hyphen replace\", range);\n\t\t\trange = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace);\n\t\t\tdebug(\"comparator trim\", range);\n\t\t\trange = range.replace(re[t.TILDETRIM], tildeTrimReplace);\n\t\t\tdebug(\"tilde trim\", range);\n\t\t\trange = range.replace(re[t.CARETTRIM], caretTrimReplace);\n\t\t\tdebug(\"caret trim\", range);\n\t\t\tlet rangeList = range.split(\" \").map((comp) => parseComparator(comp, this.options)).join(\" \").split(/\\s+/).map((comp) => replaceGTE0(comp, this.options));\n\t\t\tif (loose) rangeList = rangeList.filter((comp) => {\n\t\t\t\tdebug(\"loose invalid filter\", comp, this.options);\n\t\t\t\treturn !!comp.match(re[t.COMPARATORLOOSE]);\n\t\t\t});\n\t\t\tdebug(\"range list\", rangeList);\n\t\t\tconst rangeMap = /* @__PURE__ */ new Map();\n\t\t\tconst comparators = rangeList.map((comp) => new Comparator(comp, this.options));\n\t\t\tfor (const comp of comparators) {\n\t\t\t\tif (isNullSet(comp)) return [comp];\n\t\t\t\trangeMap.set(comp.value, comp);\n\t\t\t}\n\t\t\tif (rangeMap.size > 1 && rangeMap.has(\"\")) rangeMap.delete(\"\");\n\t\t\tconst result = [...rangeMap.values()];\n\t\t\tcache.set(memoKey, result);\n\t\t\treturn result;\n\t\t}\n\t\tintersects(range, options) {\n\t\t\tif (!(range instanceof Range)) throw new TypeError(\"a Range is required\");\n\t\t\treturn this.set.some((thisComparators) => {\n\t\t\t\treturn isSatisfiable(thisComparators, options) && range.set.some((rangeComparators) => {\n\t\t\t\t\treturn isSatisfiable(rangeComparators, options) && thisComparators.every((thisComparator) => {\n\t\t\t\t\t\treturn rangeComparators.every((rangeComparator) => {\n\t\t\t\t\t\t\treturn thisComparator.intersects(rangeComparator, options);\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\ttest(version) {\n\t\t\tif (!version) return false;\n\t\t\tif (typeof version === \"string\") try {\n\t\t\t\tversion = new SemVer(version, this.options);\n\t\t\t} catch (er) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfor (let i = 0; i < this.set.length; i++) if (testSet(this.set[i], version, this.options)) return true;\n\t\t\treturn false;\n\t\t}\n\t};\n\tconst cache = new (require_lrucache())();\n\tconst parseOptions = require_parse_options();\n\tconst Comparator = require_comparator();\n\tconst debug = require_debug();\n\tconst SemVer = require_semver$1();\n\tconst { safeRe: re, t, comparatorTrimReplace, tildeTrimReplace, caretTrimReplace } = require_re();\n\tconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require_constants();\n\tconst isNullSet = (c) => c.value === \"<0.0.0-0\";\n\tconst isAny = (c) => c.value === \"\";\n\tconst isSatisfiable = (comparators, options) => {\n\t\tlet result = true;\n\t\tconst remainingComparators = comparators.slice();\n\t\tlet testComparator = remainingComparators.pop();\n\t\twhile (result && remainingComparators.length) {\n\t\t\tresult = remainingComparators.every((otherComparator) => {\n\t\t\t\treturn testComparator.intersects(otherComparator, options);\n\t\t\t});\n\t\t\ttestComparator = remainingComparators.pop();\n\t\t}\n\t\treturn result;\n\t};\n\tconst parseComparator = (comp, options) => {\n\t\tcomp = comp.replace(re[t.BUILD], \"\");\n\t\tdebug(\"comp\", comp, options);\n\t\tcomp = replaceCarets(comp, options);\n\t\tdebug(\"caret\", comp);\n\t\tcomp = replaceTildes(comp, options);\n\t\tdebug(\"tildes\", comp);\n\t\tcomp = replaceXRanges(comp, options);\n\t\tdebug(\"xrange\", comp);\n\t\tcomp = replaceStars(comp, options);\n\t\tdebug(\"stars\", comp);\n\t\treturn comp;\n\t};\n\tconst isX = (id) => !id || id.toLowerCase() === \"x\" || id === \"*\";\n\tconst replaceTildes = (comp, options) => {\n\t\treturn comp.trim().split(/\\s+/).map((c) => replaceTilde(c, options)).join(\" \");\n\t};\n\tconst replaceTilde = (comp, options) => {\n\t\tconst r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE];\n\t\treturn comp.replace(r, (_, M, m, p, pr) => {\n\t\t\tdebug(\"tilde\", comp, _, M, m, p, pr);\n\t\t\tlet ret;\n\t\t\tif (isX(M)) ret = \"\";\n\t\t\telse if (isX(m)) ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;\n\t\t\telse if (isX(p)) ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`;\n\t\t\telse if (pr) {\n\t\t\t\tdebug(\"replaceTilde pr\", pr);\n\t\t\t\tret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n\t\t\t} else ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;\n\t\t\tdebug(\"tilde return\", ret);\n\t\t\treturn ret;\n\t\t});\n\t};\n\tconst replaceCarets = (comp, options) => {\n\t\treturn comp.trim().split(/\\s+/).map((c) => replaceCaret(c, options)).join(\" \");\n\t};\n\tconst replaceCaret = (comp, options) => {\n\t\tdebug(\"caret\", comp, options);\n\t\tconst r = options.loose ? re[t.CARETLOOSE] : re[t.CARET];\n\t\tconst z = options.includePrerelease ? \"-0\" : \"\";\n\t\treturn comp.replace(r, (_, M, m, p, pr) => {\n\t\t\tdebug(\"caret\", comp, _, M, m, p, pr);\n\t\t\tlet ret;\n\t\t\tif (isX(M)) ret = \"\";\n\t\t\telse if (isX(m)) ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;\n\t\t\telse if (isX(p)) if (M === \"0\") ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;\n\t\t\telse ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`;\n\t\t\telse if (pr) {\n\t\t\t\tdebug(\"replaceCaret pr\", pr);\n\t\t\t\tif (M === \"0\") if (m === \"0\") ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`;\n\t\t\t\telse ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n\t\t\t\telse ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;\n\t\t\t} else {\n\t\t\t\tdebug(\"no pr\");\n\t\t\t\tif (M === \"0\") if (m === \"0\") ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;\n\t\t\t\telse ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;\n\t\t\t\telse ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;\n\t\t\t}\n\t\t\tdebug(\"caret return\", ret);\n\t\t\treturn ret;\n\t\t});\n\t};\n\tconst replaceXRanges = (comp, options) => {\n\t\tdebug(\"replaceXRanges\", comp, options);\n\t\treturn comp.split(/\\s+/).map((c) => replaceXRange(c, options)).join(\" \");\n\t};\n\tconst replaceXRange = (comp, options) => {\n\t\tcomp = comp.trim();\n\t\tconst r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];\n\t\treturn comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n\t\t\tdebug(\"xRange\", comp, ret, gtlt, M, m, p, pr);\n\t\t\tconst xM = isX(M);\n\t\t\tconst xm = xM || isX(m);\n\t\t\tconst xp = xm || isX(p);\n\t\t\tconst anyX = xp;\n\t\t\tif (gtlt === \"=\" && anyX) gtlt = \"\";\n\t\t\tpr = options.includePrerelease ? \"-0\" : \"\";\n\t\t\tif (xM) if (gtlt === \">\" || gtlt === \"<\") ret = \"<0.0.0-0\";\n\t\t\telse ret = \"*\";\n\t\t\telse if (gtlt && anyX) {\n\t\t\t\tif (xm) m = 0;\n\t\t\t\tp = 0;\n\t\t\t\tif (gtlt === \">\") {\n\t\t\t\t\tgtlt = \">=\";\n\t\t\t\t\tif (xm) {\n\t\t\t\t\t\tM = +M + 1;\n\t\t\t\t\t\tm = 0;\n\t\t\t\t\t\tp = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tm = +m + 1;\n\t\t\t\t\t\tp = 0;\n\t\t\t\t\t}\n\t\t\t\t} else if (gtlt === \"<=\") {\n\t\t\t\t\tgtlt = \"<\";\n\t\t\t\t\tif (xm) M = +M + 1;\n\t\t\t\t\telse m = +m + 1;\n\t\t\t\t}\n\t\t\t\tif (gtlt === \"<\") pr = \"-0\";\n\t\t\t\tret = `${gtlt + M}.${m}.${p}${pr}`;\n\t\t\t} else if (xm) ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`;\n\t\t\telse if (xp) ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;\n\t\t\tdebug(\"xRange return\", ret);\n\t\t\treturn ret;\n\t\t});\n\t};\n\tconst replaceStars = (comp, options) => {\n\t\tdebug(\"replaceStars\", comp, options);\n\t\treturn comp.trim().replace(re[t.STAR], \"\");\n\t};\n\tconst replaceGTE0 = (comp, options) => {\n\t\tdebug(\"replaceGTE0\", comp, options);\n\t\treturn comp.trim().replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], \"\");\n\t};\n\tconst hyphenReplace = (incPr) => ($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => {\n\t\tif (isX(fM)) from = \"\";\n\t\telse if (isX(fm)) from = `>=${fM}.0.0${incPr ? \"-0\" : \"\"}`;\n\t\telse if (isX(fp)) from = `>=${fM}.${fm}.0${incPr ? \"-0\" : \"\"}`;\n\t\telse if (fpr) from = `>=${from}`;\n\t\telse from = `>=${from}${incPr ? \"-0\" : \"\"}`;\n\t\tif (isX(tM)) to = \"\";\n\t\telse if (isX(tm)) to = `<${+tM + 1}.0.0-0`;\n\t\telse if (isX(tp)) to = `<${tM}.${+tm + 1}.0-0`;\n\t\telse if (tpr) to = `<=${tM}.${tm}.${tp}-${tpr}`;\n\t\telse if (incPr) to = `<${tM}.${tm}.${+tp + 1}-0`;\n\t\telse to = `<=${to}`;\n\t\treturn `${from} ${to}`.trim();\n\t};\n\tconst testSet = (set, version, options) => {\n\t\tfor (let i = 0; i < set.length; i++) if (!set[i].test(version)) return false;\n\t\tif (version.prerelease.length && !options.includePrerelease) {\n\t\t\tfor (let i = 0; i < set.length; i++) {\n\t\t\t\tdebug(set[i].semver);\n\t\t\t\tif (set[i].semver === Comparator.ANY) continue;\n\t\t\t\tif (set[i].semver.prerelease.length > 0) {\n\t\t\t\t\tconst allowed = set[i].semver;\n\t\t\t\t\tif (allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch) return true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t};\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/classes/comparator.js\nvar require_comparator = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst ANY = Symbol(\"SemVer ANY\");\n\tmodule.exports = class Comparator {\n\t\tstatic get ANY() {\n\t\t\treturn ANY;\n\t\t}\n\t\tconstructor(comp, options) {\n\t\t\toptions = parseOptions(options);\n\t\t\tif (comp instanceof Comparator) if (comp.loose === !!options.loose) return comp;\n\t\t\telse comp = comp.value;\n\t\t\tcomp = comp.trim().split(/\\s+/).join(\" \");\n\t\t\tdebug(\"comparator\", comp, options);\n\t\t\tthis.options = options;\n\t\t\tthis.loose = !!options.loose;\n\t\t\tthis.parse(comp);\n\t\t\tif (this.semver === ANY) this.value = \"\";\n\t\t\telse this.value = this.operator + this.semver.version;\n\t\t\tdebug(\"comp\", this);\n\t\t}\n\t\tparse(comp) {\n\t\t\tconst r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR];\n\t\t\tconst m = comp.match(r);\n\t\t\tif (!m) throw new TypeError(`Invalid comparator: ${comp}`);\n\t\t\tthis.operator = m[1] !== void 0 ? m[1] : \"\";\n\t\t\tif (this.operator === \"=\") this.operator = \"\";\n\t\t\tif (!m[2]) this.semver = ANY;\n\t\t\telse this.semver = new SemVer(m[2], this.options.loose);\n\t\t}\n\t\ttoString() {\n\t\t\treturn this.value;\n\t\t}\n\t\ttest(version) {\n\t\t\tdebug(\"Comparator.test\", version, this.options.loose);\n\t\t\tif (this.semver === ANY || version === ANY) return true;\n\t\t\tif (typeof version === \"string\") try {\n\t\t\t\tversion = new SemVer(version, this.options);\n\t\t\t} catch (er) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn cmp(version, this.operator, this.semver, this.options);\n\t\t}\n\t\tintersects(comp, options) {\n\t\t\tif (!(comp instanceof Comparator)) throw new TypeError(\"a Comparator is required\");\n\t\t\tif (this.operator === \"\") {\n\t\t\t\tif (this.value === \"\") return true;\n\t\t\t\treturn new Range(comp.value, options).test(this.value);\n\t\t\t} else if (comp.operator === \"\") {\n\t\t\t\tif (comp.value === \"\") return true;\n\t\t\t\treturn new Range(this.value, options).test(comp.semver);\n\t\t\t}\n\t\t\toptions = parseOptions(options);\n\t\t\tif (options.includePrerelease && (this.value === \"<0.0.0-0\" || comp.value === \"<0.0.0-0\")) return false;\n\t\t\tif (!options.includePrerelease && (this.value.startsWith(\"<0.0.0\") || comp.value.startsWith(\"<0.0.0\"))) return false;\n\t\t\tif (this.operator.startsWith(\">\") && comp.operator.startsWith(\">\")) return true;\n\t\t\tif (this.operator.startsWith(\"<\") && comp.operator.startsWith(\"<\")) return true;\n\t\t\tif (this.semver.version === comp.semver.version && this.operator.includes(\"=\") && comp.operator.includes(\"=\")) return true;\n\t\t\tif (cmp(this.semver, \"<\", comp.semver, options) && this.operator.startsWith(\">\") && comp.operator.startsWith(\"<\")) return true;\n\t\t\tif (cmp(this.semver, \">\", comp.semver, options) && this.operator.startsWith(\"<\") && comp.operator.startsWith(\">\")) return true;\n\t\t\treturn false;\n\t\t}\n\t};\n\tconst parseOptions = require_parse_options();\n\tconst { safeRe: re, t } = require_re();\n\tconst cmp = require_cmp();\n\tconst debug = require_debug();\n\tconst SemVer = require_semver$1();\n\tconst Range = require_range();\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/functions/satisfies.js\nvar require_satisfies = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst Range = require_range();\n\tconst satisfies = (version, range, options) => {\n\t\ttry {\n\t\t\trange = new Range(range, options);\n\t\t} catch (er) {\n\t\t\treturn false;\n\t\t}\n\t\treturn range.test(version);\n\t};\n\tmodule.exports = satisfies;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/ranges/to-comparators.js\nvar require_to_comparators = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst Range = require_range();\n\tconst toComparators = (range, options) => new Range(range, options).set.map((comp) => comp.map((c) => c.value).join(\" \").trim().split(\" \"));\n\tmodule.exports = toComparators;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/ranges/max-satisfying.js\nvar require_max_satisfying = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst SemVer = require_semver$1();\n\tconst Range = require_range();\n\tconst maxSatisfying = (versions, range, options) => {\n\t\tlet max = null;\n\t\tlet maxSV = null;\n\t\tlet rangeObj = null;\n\t\ttry {\n\t\t\trangeObj = new Range(range, options);\n\t\t} catch (er) {\n\t\t\treturn null;\n\t\t}\n\t\tversions.forEach((v) => {\n\t\t\tif (rangeObj.test(v)) {\n\t\t\t\tif (!max || maxSV.compare(v) === -1) {\n\t\t\t\t\tmax = v;\n\t\t\t\t\tmaxSV = new SemVer(max, options);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn max;\n\t};\n\tmodule.exports = maxSatisfying;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/ranges/min-satisfying.js\nvar require_min_satisfying = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst SemVer = require_semver$1();\n\tconst Range = require_range();\n\tconst minSatisfying = (versions, range, options) => {\n\t\tlet min = null;\n\t\tlet minSV = null;\n\t\tlet rangeObj = null;\n\t\ttry {\n\t\t\trangeObj = new Range(range, options);\n\t\t} catch (er) {\n\t\t\treturn null;\n\t\t}\n\t\tversions.forEach((v) => {\n\t\t\tif (rangeObj.test(v)) {\n\t\t\t\tif (!min || minSV.compare(v) === 1) {\n\t\t\t\t\tmin = v;\n\t\t\t\t\tminSV = new SemVer(min, options);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn min;\n\t};\n\tmodule.exports = minSatisfying;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/ranges/min-version.js\nvar require_min_version = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst SemVer = require_semver$1();\n\tconst Range = require_range();\n\tconst gt = require_gt();\n\tconst minVersion = (range, loose) => {\n\t\trange = new Range(range, loose);\n\t\tlet minver = new SemVer(\"0.0.0\");\n\t\tif (range.test(minver)) return minver;\n\t\tminver = new SemVer(\"0.0.0-0\");\n\t\tif (range.test(minver)) return minver;\n\t\tminver = null;\n\t\tfor (let i = 0; i < range.set.length; ++i) {\n\t\t\tconst comparators = range.set[i];\n\t\t\tlet setMin = null;\n\t\t\tcomparators.forEach((comparator) => {\n\t\t\t\tconst compver = new SemVer(comparator.semver.version);\n\t\t\t\tswitch (comparator.operator) {\n\t\t\t\t\tcase \">\":\n\t\t\t\t\t\tif (compver.prerelease.length === 0) compver.patch++;\n\t\t\t\t\t\telse compver.prerelease.push(0);\n\t\t\t\t\t\tcompver.raw = compver.format();\n\t\t\t\t\tcase \"\":\n\t\t\t\t\tcase \">=\":\n\t\t\t\t\t\tif (!setMin || gt(compver, setMin)) setMin = compver;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"<\":\n\t\t\t\t\tcase \"<=\": break;\n\t\t\t\t\tdefault: throw new Error(`Unexpected operation: ${comparator.operator}`);\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (setMin && (!minver || gt(minver, setMin))) minver = setMin;\n\t\t}\n\t\tif (minver && range.test(minver)) return minver;\n\t\treturn null;\n\t};\n\tmodule.exports = minVersion;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/ranges/valid.js\nvar require_valid = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst Range = require_range();\n\tconst validRange = (range, options) => {\n\t\ttry {\n\t\t\treturn new Range(range, options).range || \"*\";\n\t\t} catch (er) {\n\t\t\treturn null;\n\t\t}\n\t};\n\tmodule.exports = validRange;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/ranges/outside.js\nvar require_outside = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst SemVer = require_semver$1();\n\tconst Comparator = require_comparator();\n\tconst { ANY } = Comparator;\n\tconst Range = require_range();\n\tconst satisfies = require_satisfies();\n\tconst gt = require_gt();\n\tconst lt = require_lt();\n\tconst lte = require_lte();\n\tconst gte = require_gte();\n\tconst outside = (version, range, hilo, options) => {\n\t\tversion = new SemVer(version, options);\n\t\trange = new Range(range, options);\n\t\tlet gtfn, ltefn, ltfn, comp, ecomp;\n\t\tswitch (hilo) {\n\t\t\tcase \">\":\n\t\t\t\tgtfn = gt;\n\t\t\t\tltefn = lte;\n\t\t\t\tltfn = lt;\n\t\t\t\tcomp = \">\";\n\t\t\t\tecomp = \">=\";\n\t\t\t\tbreak;\n\t\t\tcase \"<\":\n\t\t\t\tgtfn = lt;\n\t\t\t\tltefn = gte;\n\t\t\t\tltfn = gt;\n\t\t\t\tcomp = \"<\";\n\t\t\t\tecomp = \"<=\";\n\t\t\t\tbreak;\n\t\t\tdefault: throw new TypeError(\"Must provide a hilo val of \\\"<\\\" or \\\">\\\"\");\n\t\t}\n\t\tif (satisfies(version, range, options)) return false;\n\t\tfor (let i = 0; i < range.set.length; ++i) {\n\t\t\tconst comparators = range.set[i];\n\t\t\tlet high = null;\n\t\t\tlet low = null;\n\t\t\tcomparators.forEach((comparator) => {\n\t\t\t\tif (comparator.semver === ANY) comparator = new Comparator(\">=0.0.0\");\n\t\t\t\thigh = high || comparator;\n\t\t\t\tlow = low || comparator;\n\t\t\t\tif (gtfn(comparator.semver, high.semver, options)) high = comparator;\n\t\t\t\telse if (ltfn(comparator.semver, low.semver, options)) low = comparator;\n\t\t\t});\n\t\t\tif (high.operator === comp || high.operator === ecomp) return false;\n\t\t\tif ((!low.operator || low.operator === comp) && ltefn(version, low.semver)) return false;\n\t\t\telse if (low.operator === ecomp && ltfn(version, low.semver)) return false;\n\t\t}\n\t\treturn true;\n\t};\n\tmodule.exports = outside;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/ranges/gtr.js\nvar require_gtr = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst outside = require_outside();\n\tconst gtr = (version, range, options) => outside(version, range, \">\", options);\n\tmodule.exports = gtr;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/ranges/ltr.js\nvar require_ltr = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst outside = require_outside();\n\tconst ltr = (version, range, options) => outside(version, range, \"<\", options);\n\tmodule.exports = ltr;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/ranges/intersects.js\nvar require_intersects = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst Range = require_range();\n\tconst intersects = (r1, r2, options) => {\n\t\tr1 = new Range(r1, options);\n\t\tr2 = new Range(r2, options);\n\t\treturn r1.intersects(r2, options);\n\t};\n\tmodule.exports = intersects;\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/ranges/simplify.js\nvar require_simplify = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst satisfies = require_satisfies();\n\tconst compare = require_compare();\n\tmodule.exports = (versions, range, options) => {\n\t\tconst set = [];\n\t\tlet first = null;\n\t\tlet prev = null;\n\t\tconst v = versions.sort((a, b) => compare(a, b, options));\n\t\tfor (const version of v) if (satisfies(version, range, options)) {\n\t\t\tprev = version;\n\t\t\tif (!first) first = version;\n\t\t} else {\n\t\t\tif (prev) set.push([first, prev]);\n\t\t\tprev = null;\n\t\t\tfirst = null;\n\t\t}\n\t\tif (first) set.push([first, null]);\n\t\tconst ranges = [];\n\t\tfor (const [min, max] of set) if (min === max) ranges.push(min);\n\t\telse if (!max && min === v[0]) ranges.push(\"*\");\n\t\telse if (!max) ranges.push(`>=${min}`);\n\t\telse if (min === v[0]) ranges.push(`<=${max}`);\n\t\telse ranges.push(`${min} - ${max}`);\n\t\tconst simplified = ranges.join(\" || \");\n\t\tconst original = typeof range.raw === \"string\" ? range.raw : String(range);\n\t\treturn simplified.length < original.length ? simplified : range;\n\t};\n}));\n//#endregion\n//#region ../../node_modules/.bun/semver@7.7.4/node_modules/semver/ranges/subset.js\nvar require_subset = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst Range = require_range();\n\tconst Comparator = require_comparator();\n\tconst { ANY } = Comparator;\n\tconst satisfies = require_satisfies();\n\tconst compare = require_compare();\n\tconst subset = (sub, dom, options = {}) => {\n\t\tif (sub === dom) return true;\n\t\tsub = new Range(sub, options);\n\t\tdom = new Range(dom, options);\n\t\tlet sawNonNull = false;\n\t\tOUTER: for (const simpleSub of sub.set) {\n\t\t\tfor (const simpleDom of dom.set) {\n\t\t\t\tconst isSub = simpleSubset(simpleSub, simpleDom, options);\n\t\t\t\tsawNonNull = sawNonNull || isSub !== null;\n\t\t\t\tif (isSub) continue OUTER;\n\t\t\t}\n\t\t\tif (sawNonNull) return false;\n\t\t}\n\t\treturn true;\n\t};\n\tconst minimumVersionWithPreRelease = [new Comparator(\">=0.0.0-0\")];\n\tconst minimumVersion = [new Comparator(\">=0.0.0\")];\n\tconst simpleSubset = (sub, dom, options) => {\n\t\tif (sub === dom) return true;\n\t\tif (sub.length === 1 && sub[0].semver === ANY) if (dom.length === 1 && dom[0].semver === ANY) return true;\n\t\telse if (options.includePrerelease) sub = minimumVersionWithPreRelease;\n\t\telse sub = minimumVersion;\n\t\tif (dom.length === 1 && dom[0].semver === ANY) if (options.includePrerelease) return true;\n\t\telse dom = minimumVersion;\n\t\tconst eqSet = /* @__PURE__ */ new Set();\n\t\tlet gt, lt;\n\t\tfor (const c of sub) if (c.operator === \">\" || c.operator === \">=\") gt = higherGT(gt, c, options);\n\t\telse if (c.operator === \"<\" || c.operator === \"<=\") lt = lowerLT(lt, c, options);\n\t\telse eqSet.add(c.semver);\n\t\tif (eqSet.size > 1) return null;\n\t\tlet gtltComp;\n\t\tif (gt && lt) {\n\t\t\tgtltComp = compare(gt.semver, lt.semver, options);\n\t\t\tif (gtltComp > 0) return null;\n\t\t\telse if (gtltComp === 0 && (gt.operator !== \">=\" || lt.operator !== \"<=\")) return null;\n\t\t}\n\t\tfor (const eq of eqSet) {\n\t\t\tif (gt && !satisfies(eq, String(gt), options)) return null;\n\t\t\tif (lt && !satisfies(eq, String(lt), options)) return null;\n\t\t\tfor (const c of dom) if (!satisfies(eq, String(c), options)) return false;\n\t\t\treturn true;\n\t\t}\n\t\tlet higher, lower;\n\t\tlet hasDomLT, hasDomGT;\n\t\tlet needDomLTPre = lt && !options.includePrerelease && lt.semver.prerelease.length ? lt.semver : false;\n\t\tlet needDomGTPre = gt && !options.includePrerelease && gt.semver.prerelease.length ? gt.semver : false;\n\t\tif (needDomLTPre && needDomLTPre.prerelease.length === 1 && lt.operator === \"<\" && needDomLTPre.prerelease[0] === 0) needDomLTPre = false;\n\t\tfor (const c of dom) {\n\t\t\thasDomGT = hasDomGT || c.operator === \">\" || c.operator === \">=\";\n\t\t\thasDomLT = hasDomLT || c.operator === \"<\" || c.operator === \"<=\";\n\t\t\tif (gt) {\n\t\t\t\tif (needDomGTPre) {\n\t\t\t\t\tif (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomGTPre.major && c.semver.minor === needDomGTPre.minor && c.semver.patch === needDomGTPre.patch) needDomGTPre = false;\n\t\t\t\t}\n\t\t\t\tif (c.operator === \">\" || c.operator === \">=\") {\n\t\t\t\t\thigher = higherGT(gt, c, options);\n\t\t\t\t\tif (higher === c && higher !== gt) return false;\n\t\t\t\t} else if (gt.operator === \">=\" && !satisfies(gt.semver, String(c), options)) return false;\n\t\t\t}\n\t\t\tif (lt) {\n\t\t\t\tif (needDomLTPre) {\n\t\t\t\t\tif (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomLTPre.major && c.semver.minor === needDomLTPre.minor && c.semver.patch === needDomLTPre.patch) needDomLTPre = false;\n\t\t\t\t}\n\t\t\t\tif (c.operator === \"<\" || c.operator === \"<=\") {\n\t\t\t\t\tlower = lowerLT(lt, c, options);\n\t\t\t\t\tif (lower === c && lower !== lt) return false;\n\t\t\t\t} else if (lt.operator === \"<=\" && !satisfies(lt.semver, String(c), options)) return false;\n\t\t\t}\n\t\t\tif (!c.operator && (lt || gt) && gtltComp !== 0) return false;\n\t\t}\n\t\tif (gt && hasDomLT && !lt && gtltComp !== 0) return false;\n\t\tif (lt && hasDomGT && !gt && gtltComp !== 0) return false;\n\t\tif (needDomGTPre || needDomLTPre) return false;\n\t\treturn true;\n\t};\n\tconst higherGT = (a, b, options) => {\n\t\tif (!a) return b;\n\t\tconst comp = compare(a.semver, b.semver, options);\n\t\treturn comp > 0 ? a : comp < 0 ? b : b.operator === \">\" && a.operator === \">=\" ? b : a;\n\t};\n\tconst lowerLT = (a, b, options) => {\n\t\tif (!a) return b;\n\t\tconst comp = compare(a.semver, b.semver, options);\n\t\treturn comp < 0 ? a : comp > 0 ? b : b.operator === \"<\" && a.operator === \"<=\" ? b : a;\n\t};\n\tmodule.exports = subset;\n}));\n//#endregion\n//#region ../internals-helpers/dist/index.js\nvar import_semver = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst internalRe = require_re();\n\tconst constants = require_constants();\n\tconst SemVer = require_semver$1();\n\tconst identifiers = require_identifiers();\n\tmodule.exports = {\n\t\tparse: require_parse(),\n\t\tvalid: require_valid$1(),\n\t\tclean: require_clean(),\n\t\tinc: require_inc(),\n\t\tdiff: require_diff(),\n\t\tmajor: require_major(),\n\t\tminor: require_minor(),\n\t\tpatch: require_patch(),\n\t\tprerelease: require_prerelease(),\n\t\tcompare: require_compare(),\n\t\trcompare: require_rcompare(),\n\t\tcompareLoose: require_compare_loose(),\n\t\tcompareBuild: require_compare_build(),\n\t\tsort: require_sort(),\n\t\trsort: require_rsort(),\n\t\tgt: require_gt(),\n\t\tlt: require_lt(),\n\t\teq: require_eq(),\n\t\tneq: require_neq(),\n\t\tgte: require_gte(),\n\t\tlte: require_lte(),\n\t\tcmp: require_cmp(),\n\t\tcoerce: require_coerce(),\n\t\tComparator: require_comparator(),\n\t\tRange: require_range(),\n\t\tsatisfies: require_satisfies(),\n\t\ttoComparators: require_to_comparators(),\n\t\tmaxSatisfying: require_max_satisfying(),\n\t\tminSatisfying: require_min_satisfying(),\n\t\tminVersion: require_min_version(),\n\t\tvalidRange: require_valid(),\n\t\toutside: require_outside(),\n\t\tgtr: require_gtr(),\n\t\tltr: require_ltr(),\n\t\tintersects: require_intersects(),\n\t\tsimplifyRange: require_simplify(),\n\t\tsubset: require_subset(),\n\t\tSemVer,\n\t\tre: internalRe.re,\n\t\tsrc: internalRe.src,\n\t\ttokens: internalRe.t,\n\t\tSEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n\t\tRELEASE_TYPES: constants.RELEASE_TYPES,\n\t\tcompareIdentifiers: identifiers.compareIdentifiers,\n\t\trcompareIdentifiers: identifiers.rcompareIdentifiers\n\t};\n})))(), 1);\nconst ALPHANUMERIC = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n`${ALPHANUMERIC}`, `${ALPHANUMERIC}`, `${ALPHANUMERIC}`, `${ALPHANUMERIC}`;\nfunction resolve(range, versions) {\n\ttry {\n\t\tif (!range || !import_semver.default.validRange(range)) return null;\n\t\tconst validVersions = versions.filter((v) => import_semver.default.valid(v) !== null);\n\t\tif (validVersions.length === 0) return null;\n\t\treturn import_semver.default.maxSatisfying(validVersions, range) ?? null;\n\t} catch {\n\t\treturn null;\n\t}\n}\nfunction isDomainAllowed(domain, allowedDomains) {\n\tfor (const allowed of allowedDomains) {\n\t\tif (allowed === domain) return true;\n\t\tif (allowed.startsWith(\"*.\")) {\n\t\t\tconst suffix = allowed.slice(1);\n\t\t\tif (domain.endsWith(suffix) || domain === allowed.slice(2)) return true;\n\t\t\tif (domain === allowed) return true;\n\t\t}\n\t}\n\treturn false;\n}\nfunction isPathAllowed(requestedPath, allowedPaths) {\n\tconst norm = (p) => p.replaceAll(\"\\\\\", \"/\");\n\tconst req = norm(requestedPath);\n\tif (req.includes(\"..\")) return false;\n\tfor (const allowed of allowedPaths) {\n\t\tconst a = norm(allowed);\n\t\tif (a === req) return true;\n\t\tif (a.endsWith(\"/**\")) {\n\t\t\tconst prefix = a.slice(0, -3);\n\t\t\tif (req === prefix || req.startsWith(`${prefix}/`)) return true;\n\t\t}\n\t}\n\treturn false;\n}\n/**\n* Thrown by checkPermissionBudget when a skill's declared permissions exceed the project budget.\n*\n* internals-helpers cannot import from @tankpkg/sdk (would invert dep graph).\n* sdk shim catches this and re-throws as TankPermissionError to preserve\n* the public sdk error API. See D7 / INTENT C25b.\n*/\nvar PermissionBudgetError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = \"PermissionBudgetError\";\n\t}\n};\nfunction checkPermissionBudget$1(budget, skillPerms, skillName) {\n\tif (!skillPerms) return;\n\tif (skillPerms.subprocess === true && budget.subprocess !== true) throw new PermissionBudgetError(`${skillName} requires subprocess access, but project budget does not allow it`);\n\tif (skillPerms.network?.outbound && skillPerms.network.outbound.length > 0) {\n\t\tconst budgetDomains = budget.network?.outbound ?? [];\n\t\tfor (const domain of skillPerms.network.outbound) if (!isDomainAllowed(domain, budgetDomains)) throw new PermissionBudgetError(`${skillName} requests network access to \"${domain}\", which is not in the project's permission budget`);\n\t}\n\tif (skillPerms.filesystem?.read && skillPerms.filesystem.read.length > 0) {\n\t\tconst budgetPaths = budget.filesystem?.read ?? [];\n\t\tfor (const p of skillPerms.filesystem.read) if (!isPathAllowed(p, budgetPaths)) throw new PermissionBudgetError(`${skillName} requests filesystem read access to \"${p}\", which is not in the project's permission budget`);\n\t}\n\tif (skillPerms.filesystem?.write && skillPerms.filesystem.write.length > 0) {\n\t\tconst budgetPaths = budget.filesystem?.write ?? [];\n\t\tfor (const p of skillPerms.filesystem.write) if (!isPathAllowed(p, budgetPaths)) throw new PermissionBudgetError(`${skillName} requests filesystem write access to \"${p}\", which is not in the project's permission budget`);\n\t}\n}\nfunction collectPermissionViolations$1(budget, skillPerms, skillName) {\n\tconst violations = [];\n\tif (!skillPerms) return violations;\n\tif (skillPerms.subprocess === true && budget.subprocess !== true) violations.push({\n\t\tskillName,\n\t\ttype: \"subprocess\",\n\t\trequested: \"true\"\n\t});\n\tif (skillPerms.network?.outbound) {\n\t\tconst budgetDomains = budget.network?.outbound ?? [];\n\t\tfor (const domain of skillPerms.network.outbound) if (!isDomainAllowed(domain, budgetDomains)) violations.push({\n\t\t\tskillName,\n\t\t\ttype: \"network.outbound\",\n\t\t\trequested: domain\n\t\t});\n\t}\n\tif (skillPerms.filesystem?.read) {\n\t\tconst budgetPaths = budget.filesystem?.read ?? [];\n\t\tfor (const p of skillPerms.filesystem.read) if (!isPathAllowed(p, budgetPaths)) violations.push({\n\t\t\tskillName,\n\t\t\ttype: \"filesystem.read\",\n\t\t\trequested: p\n\t\t});\n\t}\n\tif (skillPerms.filesystem?.write) {\n\t\tconst budgetPaths = budget.filesystem?.write ?? [];\n\t\tfor (const p of skillPerms.filesystem.write) if (!isPathAllowed(p, budgetPaths)) violations.push({\n\t\t\tskillName,\n\t\t\ttype: \"filesystem.write\",\n\t\t\trequested: p\n\t\t});\n\t}\n\treturn violations;\n}\n//#endregion\n//#region src/install/permissions.ts\nfunction checkPermissionBudget(budget, skillPerms, skillName) {\n\ttry {\n\t\tcheckPermissionBudget$1(budget, skillPerms, skillName);\n\t} catch (e) {\n\t\tif (e instanceof PermissionBudgetError) throw new TankPermissionError(e.message);\n\t\tthrow e;\n\t}\n}\nfunction collectPermissionViolations(budget, skillPerms, skillName) {\n\treturn collectPermissionViolations$1(budget, skillPerms, skillName);\n}\n//#endregion\n//#region src/install/resolver.ts\nfunction buildSkillKey(name, version) {\n\treturn `${name}@${version}`;\n}\nfunction formatConflictMessage(conflict) {\n\tconst lines = [`Version conflict for ${conflict.skillName}:`];\n\tfor (const req of conflict.requirements) {\n\t\tconst origin = req.source.kind === \"root\" ? \"root\" : req.source.from ?? \"unknown\";\n\t\tlines.push(` - ${req.range} (required by ${origin})`);\n\t}\n\tlines.push(`Available versions: ${conflict.availableVersions.join(\", \")}`);\n\tlines.push(\"No single version satisfies all constraints.\");\n\treturn lines.join(\"\\n\");\n}\nasync function resolveDependencyTree(rootDependencies, fetcher) {\n\tconst constraintsByName = /* @__PURE__ */ new Map();\n\tconst selectedByName = /* @__PURE__ */ new Map();\n\tconst metadataCache = /* @__PURE__ */ new Map();\n\tconst versionsCache = /* @__PURE__ */ new Map();\n\tconst contributedDeps = /* @__PURE__ */ new Map();\n\tconst queue = /* @__PURE__ */ new Set();\n\tconst inProgress = /* @__PURE__ */ new Set();\n\tconst sortedRootNames = Object.keys(rootDependencies).sort();\n\tfor (const name of sortedRootNames) {\n\t\tconst range = rootDependencies[name];\n\t\tconstraintsByName.set(name, [{\n\t\t\tname,\n\t\t\trange,\n\t\t\tsource: { kind: \"root\" }\n\t\t}]);\n\t\tqueue.add(name);\n\t}\n\tconst MAX_ITERATIONS = 1e4;\n\tlet iterations = 0;\n\twhile (queue.size > 0) {\n\t\tif (++iterations > MAX_ITERATIONS) throw new Error(`Dependency resolution exceeded ${MAX_ITERATIONS} iterations. This likely indicates a degenerate dependency graph.`);\n\t\tconst name = [...queue].sort()[0];\n\t\tqueue.delete(name);\n\t\tif (inProgress.has(name)) continue;\n\t\tconst constraints = constraintsByName.get(name);\n\t\tif (!constraints || constraints.length === 0) continue;\n\t\tlet versionInfos = versionsCache.get(name);\n\t\tif (!versionInfos) {\n\t\t\tversionInfos = await fetcher.fetchVersions(name);\n\t\t\tversionsCache.set(name, versionInfos);\n\t\t}\n\t\tconst availableVersions = versionInfos.map((v) => v.version).sort();\n\t\tconst selectedVersion = findSatisfyingVersion(availableVersions, constraints);\n\t\tif (selectedVersion === null) throw new Error(formatConflictMessage({\n\t\t\tskillName: name,\n\t\t\trequirements: constraints,\n\t\t\tavailableVersions\n\t\t}));\n\t\tconst previousVersion = selectedByName.get(name);\n\t\tif (previousVersion === selectedVersion) continue;\n\t\tinProgress.add(name);\n\t\tif (previousVersion !== void 0) {\n\t\t\tconst prevKey = buildSkillKey(name, previousVersion);\n\t\t\tconst prevDeps = contributedDeps.get(prevKey) ?? [];\n\t\t\tfor (const depName of prevDeps) {\n\t\t\t\tconst depConstraints = constraintsByName.get(depName);\n\t\t\t\tif (depConstraints) {\n\t\t\t\t\tconst filtered = depConstraints.filter((r) => r.source.from !== prevKey);\n\t\t\t\t\tif (filtered.length > 0) constraintsByName.set(depName, filtered);\n\t\t\t\t\telse constraintsByName.delete(depName);\n\t\t\t\t\tqueue.add(depName);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcontributedDeps.delete(prevKey);\n\t\t}\n\t\tselectedByName.set(name, selectedVersion);\n\t\tconst skillKey = buildSkillKey(name, selectedVersion);\n\t\tlet meta = metadataCache.get(skillKey);\n\t\tif (!meta) {\n\t\t\tmeta = await fetcher.fetchMetadata(name, selectedVersion);\n\t\t\tmetadataCache.set(skillKey, meta);\n\t\t}\n\t\tconst depNames = [];\n\t\tconst sortedDepEntries = Object.entries(meta.dependencies).sort(([a], [b]) => a.localeCompare(b));\n\t\tfor (const [depName, depRange] of sortedDepEntries) {\n\t\t\tdepNames.push(depName);\n\t\t\tconst requirement = {\n\t\t\t\tname: depName,\n\t\t\t\trange: depRange,\n\t\t\t\tsource: {\n\t\t\t\t\tkind: \"skill\",\n\t\t\t\t\tfrom: skillKey\n\t\t\t\t}\n\t\t\t};\n\t\t\tconst existing = constraintsByName.get(depName) ?? [];\n\t\t\texisting.push(requirement);\n\t\t\tconstraintsByName.set(depName, existing);\n\t\t\tqueue.add(depName);\n\t\t}\n\t\tcontributedDeps.set(skillKey, depNames);\n\t\tinProgress.delete(name);\n\t}\n\tfor (const [name] of selectedByName) {\n\t\tconst constraints = constraintsByName.get(name);\n\t\tif (!constraints || constraints.length === 0) selectedByName.delete(name);\n\t}\n\treturn buildGraph(selectedByName, metadataCache);\n}\nfunction findSatisfyingVersion(availableVersions, constraints) {\n\tconst satisfyingSets = [...new Set(constraints.map((c) => c.range))].map((range) => {\n\t\tconst matching = /* @__PURE__ */ new Set();\n\t\tfor (const v of availableVersions) if (resolve(range, [v]) !== null) matching.add(v);\n\t\treturn matching;\n\t});\n\tif (satisfyingSets.length === 0) return null;\n\tlet intersection = satisfyingSets[0];\n\tfor (let i = 1; i < satisfyingSets.length; i++) intersection = new Set([...intersection].filter((v) => satisfyingSets[i].has(v)));\n\tif (intersection.size === 0) return null;\n\treturn resolve(\"*\", [...intersection]);\n}\nfunction buildGraph(selectedByName, metadataCache) {\n\tconst nodes = /* @__PURE__ */ new Map();\n\tconst installOrder = [];\n\tconst sortedEntries = [...selectedByName.entries()].sort(([a], [b]) => a.localeCompare(b));\n\tfor (const [name, version] of sortedEntries) {\n\t\tconst skillKey = buildSkillKey(name, version);\n\t\tconst meta = metadataCache.get(skillKey);\n\t\tif (!meta) throw new Error(`Internal error: missing metadata for ${skillKey}`);\n\t\tconst resolvedDeps = {};\n\t\tconst sortedDepNames = Object.keys(meta.dependencies).sort();\n\t\tfor (const depName of sortedDepNames) {\n\t\t\tconst depVersion = selectedByName.get(depName);\n\t\t\tif (depVersion === void 0) throw new Error(`Internal error: ${skillKey} depends on ${depName} but it was not resolved`);\n\t\t\tresolvedDeps[depName] = depVersion;\n\t\t}\n\t\tnodes.set(name, {\n\t\t\tname,\n\t\t\tversion,\n\t\t\tmeta,\n\t\t\tdependencies: resolvedDeps\n\t\t});\n\t\tinstallOrder.push(skillKey);\n\t}\n\treturn {\n\t\tnodes,\n\t\tinstallOrder\n\t};\n}\n//#endregion\n//#region src/install/pipeline.ts\nconst MAX_DOWNLOAD_BYTES = 100 * 1024 * 1024;\nconst MAX_EXTRACT_ENTRIES = 1e4;\nconst MAX_EXTRACT_FILE_BYTES = 50 * 1024 * 1024;\nconst MAX_EXTRACT_TOTAL_BYTES = 500 * 1024 * 1024;\nfunction validateDownloadUrl(url) {\n\tlet parsed;\n\ttry {\n\t\tparsed = new URL(url);\n\t} catch {\n\t\tthrow new TankNetworkError(`Invalid download URL: ${url}`);\n\t}\n\tif (parsed.protocol !== \"https:\" && parsed.protocol !== \"http:\") throw new TankNetworkError(`Download URL must use https or http: ${url}`);\n\tif (parsed.username || parsed.password) throw new TankNetworkError(`Download URL must not contain credentials: ${url}`);\n}\nasync function downloadAllParallel(nodes, onProgress) {\n\tconst results = /* @__PURE__ */ new Map();\n\tconst CONCURRENCY_LIMIT = 8;\n\tfor (let i = 0; i < nodes.length; i += CONCURRENCY_LIMIT) {\n\t\tconst promises = nodes.slice(i, i + CONCURRENCY_LIMIT).map(async (node) => {\n\t\t\tonProgress?.(`Downloading ${node.name}@${node.version}...`);\n\t\t\tvalidateDownloadUrl(node.meta.downloadUrl);\n\t\t\tlet res;\n\t\t\ttry {\n\t\t\t\tres = await fetch(node.meta.downloadUrl, { redirect: \"manual\" });\n\t\t\t} catch (err) {\n\t\t\t\tthrow new TankNetworkError(`Network error downloading ${node.name}@${node.version}`, err instanceof Error ? err : void 0);\n\t\t\t}\n\t\t\tif (res.status >= 300 && res.status < 400) throw new TankNetworkError(`Unexpected redirect (${res.status}) downloading ${node.name}@${node.version}. Refusing to follow.`);\n\t\t\tif (!res.ok) throw new TankNetworkError(`Failed to download ${node.name}@${node.version}: ${res.status} ${res.statusText}`);\n\t\t\tconst contentLength = res.headers.get(\"content-length\");\n\t\t\tif (contentLength && Number(contentLength) > MAX_DOWNLOAD_BYTES) throw new TankNetworkError(`Tarball for ${node.name}@${node.version} exceeds ${MAX_DOWNLOAD_BYTES} byte limit (Content-Length: ${contentLength})`);\n\t\t\tconst chunks = [];\n\t\t\tlet received = 0;\n\t\t\tconst reader = res.body?.getReader();\n\t\t\tif (!reader) throw new TankNetworkError(`No response body for ${node.name}@${node.version}`);\n\t\t\twhile (true) {\n\t\t\t\tconst { done, value } = await reader.read();\n\t\t\t\tif (done) break;\n\t\t\t\treceived += value.byteLength;\n\t\t\t\tif (received > MAX_DOWNLOAD_BYTES) {\n\t\t\t\t\treader.cancel();\n\t\t\t\t\tthrow new TankNetworkError(`Tarball for ${node.name}@${node.version} exceeds ${MAX_DOWNLOAD_BYTES} byte limit`);\n\t\t\t\t}\n\t\t\t\tchunks.push(value);\n\t\t\t}\n\t\t\tconst buffer = Buffer.concat(chunks);\n\t\t\tconst computedIntegrity = `sha512-${crypto$1.createHash(\"sha512\").update(buffer).digest(\"base64\")}`;\n\t\t\tif (computedIntegrity !== node.meta.integrity) throw new TankIntegrityError(`Integrity mismatch for ${node.name}@${node.version}`, {\n\t\t\t\texpected: node.meta.integrity,\n\t\t\t\tactual: computedIntegrity\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tname: node.name,\n\t\t\t\tbuffer,\n\t\t\t\tintegrity: computedIntegrity\n\t\t\t};\n\t\t});\n\t\tconst batchResults = await Promise.all(promises);\n\t\tfor (const result of batchResults) results.set(result.name, {\n\t\t\tbuffer: result.buffer,\n\t\t\tintegrity: result.integrity\n\t\t});\n\t}\n\treturn results;\n}\nfunction verifyExtractedDependencies(extractDir, node, onProgress) {\n\tlet extractedManifestPath = path.join(extractDir, MANIFEST_FILENAME);\n\tif (!fs.existsSync(extractedManifestPath)) extractedManifestPath = path.join(extractDir, LEGACY_MANIFEST_FILENAME);\n\tif (!fs.existsSync(extractedManifestPath)) return;\n\ttry {\n\t\tconst raw = fs.readFileSync(extractedManifestPath, \"utf-8\");\n\t\tconst extractedDeps = JSON.parse(raw).skills ?? {};\n\t\tconst apiDeps = node.meta.dependencies;\n\t\tconst extractedSorted = Object.fromEntries(Object.entries(extractedDeps).sort(([a], [b]) => a.localeCompare(b)));\n\t\tconst apiSorted = Object.fromEntries(Object.entries(apiDeps).sort(([a], [b]) => a.localeCompare(b)));\n\t\tif (JSON.stringify(extractedSorted) !== JSON.stringify(apiSorted)) onProgress?.(`Warning: ${node.name}@${node.version} manifest dependencies differ from registry metadata`);\n\t} catch {}\n}\nfunction readExtractedDependencies(extractDir) {\n\tlet extractedManifestPath = path.join(extractDir, MANIFEST_FILENAME);\n\tif (!fs.existsSync(extractedManifestPath)) extractedManifestPath = path.join(extractDir, LEGACY_MANIFEST_FILENAME);\n\tif (!fs.existsSync(extractedManifestPath)) return {};\n\ttry {\n\t\tconst raw = fs.readFileSync(extractedManifestPath, \"utf-8\");\n\t\tconst extractedDeps = JSON.parse(raw).skills;\n\t\tif (!extractedDeps || typeof extractedDeps !== \"object\") return {};\n\t\tconst deps = {};\n\t\tfor (const [depName, depRange] of Object.entries(extractedDeps)) if (typeof depRange === \"string\") deps[depName] = depRange;\n\t\treturn deps;\n\t} catch {\n\t\treturn {};\n\t}\n}\nfunction writeLockfileWithResolvedGraph(lock, nodes, downloaded, onProgress) {\n\tfor (const node of nodes) {\n\t\tconst key = buildSkillKey(node.name, node.version);\n\t\tif (!downloaded.has(node.name) && lock.skills[key]) continue;\n\t\tconst integrity = downloaded.get(node.name)?.integrity ?? lock.skills[key]?.integrity ?? node.meta.integrity;\n\t\tconst permsParsed = permissionsSchema.safeParse(node.meta.permissions);\n\t\tif (!permsParsed.success) onProgress?.(`Warning: ${node.name}@${node.version} has unrecognized permissions format — treating as unrestricted`);\n\t\tconst validatedPerms = permsParsed.success ? permsParsed.data : {};\n\t\tlock.skills[key] = {\n\t\t\tresolved: node.meta.downloadUrl,\n\t\t\tintegrity,\n\t\t\tpermissions: validatedPerms,\n\t\t\taudit_score: node.meta.auditScore ?? null,\n\t\t\tdependencies: node.dependencies\n\t\t};\n\t}\n\tconst sortedSkills = {};\n\tfor (const key of Object.keys(lock.skills).sort()) sortedSkills[key] = lock.skills[key];\n\tlock.skills = sortedSkills;\n\treturn lock;\n}\n/**\n* Plan the ordered list of ancestor directories to create for `targetDir`,\n* from just below the filesystem root down to the leaf (the root itself is\n* never returned — it always exists and must not be `mkdir`'d).\n*\n* The path module is injectable so Windows drive/UNC root handling can be\n* verified on any host via `path.win32` without a real Windows machine.\n*/\nfunction planMkdirSegments(targetDir, pathMod = path) {\n\tconst resolved = pathMod.resolve(targetDir);\n\tconst { root } = pathMod.parse(resolved);\n\tconst dirs = [];\n\tlet current = root;\n\tfor (const seg of resolved.slice(root.length).split(pathMod.sep).filter(Boolean)) {\n\t\tcurrent = pathMod.join(current, seg);\n\t\tdirs.push(current);\n\t}\n\treturn dirs;\n}\nfunction mkdirSafeNoSymlinks(targetDir) {\n\tfor (const current of planMkdirSegments(targetDir)) if (fs.existsSync(current)) {\n\t\tconst stat = fs.lstatSync(current);\n\t\tif (stat.isSymbolicLink()) throw new TankIntegrityError(`Symlink in install path: ${current}`);\n\t\tif (!stat.isDirectory()) throw new TankIntegrityError(`Non-directory in install path: ${current}`);\n\t} else fs.mkdirSync(current);\n}\nfunction isDirNonEmpty(dir) {\n\ttry {\n\t\treturn fs.readdirSync(dir).length > 0;\n\t} catch {\n\t\treturn false;\n\t}\n}\nfunction moveEntryAcrossDevices(src, dst) {\n\ttry {\n\t\tfs.renameSync(src, dst);\n\t} catch (err) {\n\t\tif (err.code === \"EXDEV\") {\n\t\t\tfs.cpSync(src, dst, { recursive: true });\n\t\t\tfs.rmSync(src, {\n\t\t\t\trecursive: true,\n\t\t\t\tforce: true\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tthrow err;\n\t}\n}\nasync function extractSafely(tarball, destDir) {\n\tif (tarball.length > MAX_DOWNLOAD_BYTES) throw new TankIntegrityError(`Tarball exceeds ${MAX_DOWNLOAD_BYTES} byte limit`);\n\tconst tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), \"tank-extract-\"));\n\tconst tmpTarball = path.join(tmpDir, `${crypto$1.randomUUID()}.tgz`);\n\tfs.writeFileSync(tmpTarball, tarball, { flag: \"wx\" });\n\tlet entryCount = 0;\n\tlet totalBytes = 0;\n\tlet backupDir = null;\n\ttry {\n\t\tawait extract({\n\t\t\tfile: tmpTarball,\n\t\t\tcwd: tmpDir,\n\t\t\tfilter: (entryPath) => {\n\t\t\t\tentryCount++;\n\t\t\t\tif (entryCount > MAX_EXTRACT_ENTRIES) throw new Error(`Tarball exceeds ${MAX_EXTRACT_ENTRIES} entry limit`);\n\t\t\t\tif (path.isAbsolute(entryPath)) throw new Error(`Absolute path in tarball: ${entryPath}`);\n\t\t\t\tif (entryPath.split(\"/\").includes(\"..\") || entryPath.split(path.sep).includes(\"..\")) throw new Error(`Path traversal in tarball: ${entryPath}`);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tonReadEntry: (entry) => {\n\t\t\t\tif (entry.type === \"SymbolicLink\" || entry.type === \"Link\") throw new Error(`Symlink/hardlink in tarball: ${entry.path}`);\n\t\t\t\tif (entry.size && entry.size > MAX_EXTRACT_FILE_BYTES) throw new Error(`File ${entry.path} exceeds ${MAX_EXTRACT_FILE_BYTES} byte limit`);\n\t\t\t\ttotalBytes += entry.size ?? 0;\n\t\t\t\tif (totalBytes > MAX_EXTRACT_TOTAL_BYTES) throw new Error(`Total extracted size exceeds ${MAX_EXTRACT_TOTAL_BYTES} byte limit`);\n\t\t\t}\n\t\t});\n\t\tmkdirSafeNoSymlinks(destDir);\n\t\tif (isDirNonEmpty(destDir)) {\n\t\t\tbackupDir = `${destDir}.tank-old-${crypto$1.randomUUID()}`;\n\t\t\tfs.renameSync(destDir, backupDir);\n\t\t\tmkdirSafeNoSymlinks(destDir);\n\t\t}\n\t\tfor (const entry of fs.readdirSync(tmpDir)) {\n\t\t\tif (entry === path.basename(tmpTarball)) continue;\n\t\t\tmoveEntryAcrossDevices(path.join(tmpDir, entry), path.join(destDir, entry));\n\t\t}\n\t\tif (backupDir !== null) {\n\t\t\tfs.rmSync(backupDir, {\n\t\t\t\trecursive: true,\n\t\t\t\tforce: true\n\t\t\t});\n\t\t\tbackupDir = null;\n\t\t}\n\t} catch (err) {\n\t\tif (backupDir !== null && fs.existsSync(backupDir)) try {\n\t\t\tfs.rmSync(destDir, {\n\t\t\t\trecursive: true,\n\t\t\t\tforce: true\n\t\t\t});\n\t\t\tfs.renameSync(backupDir, destDir);\n\t\t} catch {}\n\t\tthrow err;\n\t} finally {\n\t\tfs.rmSync(tmpDir, {\n\t\t\trecursive: true,\n\t\t\tforce: true\n\t\t});\n\t}\n}\nfunction getExtractDir(projectDir, skillName) {\n\tif (skillName.startsWith(\"@\")) {\n\t\tconst [scope, name] = skillName.split(\"/\");\n\t\treturn path.join(projectDir, \".tank\", \"skills\", scope, name);\n\t}\n\treturn path.join(projectDir, \".tank\", \"skills\", skillName);\n}\nfunction getGlobalExtractDir(homedir, skillName) {\n\tconst globalDir = path.join(homedir, \".tank\", \"skills\");\n\tif (skillName.startsWith(\"@\")) {\n\t\tconst [scope, name] = skillName.split(\"/\");\n\t\treturn path.join(globalDir, scope, name);\n\t}\n\treturn path.join(globalDir, skillName);\n}\nfunction parseLockKey(key) {\n\tconst lastAt = key.lastIndexOf(\"@\");\n\tif (lastAt <= 0) throw new Error(`Invalid lockfile key: ${key}`);\n\treturn key.slice(0, lastAt);\n}\nfunction parseVersionFromLockKey(key) {\n\tconst lastAt = key.lastIndexOf(\"@\");\n\tif (lastAt <= 0 || lastAt === key.length - 1) throw new Error(`Invalid lockfile key: ${key}`);\n\treturn key.slice(lastAt + 1);\n}\nfunction getResolvedNodesInOrder(nodes, installOrder) {\n\tconst orderedNodes = [];\n\tfor (const key of installOrder) {\n\t\tconst skillName = parseLockKey(key);\n\t\tconst node = nodes.get(skillName);\n\t\tif (!node) throw new Error(`Internal error: missing resolved node for ${key}`);\n\t\torderedNodes.push(node);\n\t}\n\treturn orderedNodes;\n}\n//#endregion\n//#region src/tools.ts\nconst MAX_TOOL_NAME_LENGTH = 64;\nconst MAX_DESCRIPTION_LENGTH = 1024;\nconst MAX_FILES_IN_DESCRIPTION = 30;\nconst MAX_FILES_IN_ERROR = 10;\nfunction sanitizeToolName(skillName) {\n\treturn skillName.replace(/[^a-zA-Z0-9_]/g, \"_\").replace(/^_+/, \"\").replace(/_+/g, \"_\").slice(0, MAX_TOOL_NAME_LENGTH) || \"skill_tool\";\n}\nfunction buildParameterSchema() {\n\treturn {\n\t\ttype: \"object\",\n\t\trequired: [\"action\"],\n\t\tadditionalProperties: false,\n\t\tproperties: {\n\t\t\taction: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tenum: [\n\t\t\t\t\t\"read\",\n\t\t\t\t\t\"list\",\n\t\t\t\t\t\"read_all\"\n\t\t\t\t],\n\t\t\t\tdescription: \"read: read a single file (requires path). list: list all files. read_all: complete skill with references and scripts.\"\n\t\t\t},\n\t\t\tpath: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdescription: \"File path to read (required when action is \\\"read\\\"). Example: \\\"SKILL.md\\\", \\\"references/guide.md\\\"\"\n\t\t\t}\n\t\t}\n\t};\n}\nfunction truncate(text, max) {\n\treturn text.length <= max ? text : `${text.slice(0, max - 3)}...`;\n}\nfunction buildDescription(skillName, version, skillDescription, files) {\n\tconst refFiles = files.filter((f) => f.startsWith(\"references/\"));\n\tconst scriptFiles = files.filter((f) => f.startsWith(\"scripts/\"));\n\tconst displayFiles = files.length <= MAX_FILES_IN_DESCRIPTION ? files.join(\", \") : `${files.slice(0, MAX_FILES_IN_DESCRIPTION).join(\", \")} and ${files.length - MAX_FILES_IN_DESCRIPTION} more`;\n\tconst parts = [\n\t\t`Access the \"${skillName}\" skill (v${version}).`,\n\t\ttruncate(skillDescription, 200),\n\t\t\"\",\n\t\t\"Actions: read_all | list | read (with path)\",\n\t\t`Files (${files.length}): ${displayFiles}`\n\t];\n\tif (refFiles.length > 0) parts.push(`References: ${refFiles.map((f) => f.replace(\"references/\", \"\")).join(\", \")}`);\n\tif (scriptFiles.length > 0) parts.push(`Scripts: ${scriptFiles.map((f) => f.replace(\"scripts/\", \"\")).join(\", \")}`);\n\treturn truncate(parts.join(\"\\n\"), MAX_DESCRIPTION_LENGTH);\n}\nasync function createSkillTool(client, skillName, version) {\n\tconst info = await client.info(skillName);\n\tconst ver = version ?? info.latestVersion;\n\tif (!ver) throw new TankNotFoundError(`No published versions for ${skillName}`, skillName);\n\tconst files = await client.listFiles(skillName, ver);\n\tconst filesSet = new Set(files);\n\tconst toolName = sanitizeToolName(skillName);\n\tconst description = buildDescription(skillName, ver, info.description ?? \"\", files);\n\tconst parameterSchema = buildParameterSchema();\n\tasync function execute(input) {\n\t\ttry {\n\t\t\tswitch (input.action) {\n\t\t\t\tcase \"list\": return {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\tfiles\n\t\t\t\t};\n\t\t\t\tcase \"read\":\n\t\t\t\t\tif (!input.path) return {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\terror: \"path is required for action \\\"read\\\"\"\n\t\t\t\t\t};\n\t\t\t\t\tif (!filesSet.has(input.path)) {\n\t\t\t\t\t\tconst hint = files.slice(0, MAX_FILES_IN_ERROR).join(\", \");\n\t\t\t\t\t\tconst suffix = files.length > MAX_FILES_IN_ERROR ? ` and ${files.length - MAX_FILES_IN_ERROR} more` : \"\";\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\t\terror: `File not found: ${input.path}. Available: ${hint}${suffix}`\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\tcontent: await client.readFile(skillName, ver, input.path)\n\t\t\t\t\t};\n\t\t\t\tcase \"read_all\": {\n\t\t\t\t\tconst skill = await client.readSkill(skillName, ver);\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\tskill: {\n\t\t\t\t\t\t\tcontent: skill.content,\n\t\t\t\t\t\t\treferences: skill.references,\n\t\t\t\t\t\t\tscripts: skill.scripts,\n\t\t\t\t\t\t\tfiles: skill.files\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tdefault: return {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: `Unknown action: ${String(input.action)}`\n\t\t\t\t};\n\t\t\t}\n\t\t} catch (err) {\n\t\t\treturn {\n\t\t\t\tsuccess: false,\n\t\t\t\terror: err instanceof Error ? err.message : String(err)\n\t\t\t};\n\t\t}\n\t}\n\treturn {\n\t\tname: toolName,\n\t\tskillName,\n\t\tversion: ver,\n\t\tdescription,\n\t\tfiles,\n\t\texecute,\n\t\ttoOpenAI() {\n\t\t\treturn {\n\t\t\t\ttype: \"function\",\n\t\t\t\tfunction: {\n\t\t\t\t\tname: toolName,\n\t\t\t\t\tdescription,\n\t\t\t\t\tparameters: parameterSchema\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\t\ttoMCP() {\n\t\t\treturn {\n\t\t\t\tname: toolName,\n\t\t\t\tdescription,\n\t\t\t\tinputSchema: parameterSchema\n\t\t\t};\n\t\t}\n\t};\n}\nasync function createSkillTools(client, skillNames) {\n\tconst tools = [];\n\tfor (let i = 0; i < skillNames.length; i += 6) {\n\t\tconst batch = skillNames.slice(i, i + 6);\n\t\tconst batchTools = await Promise.all(batch.map((name) => createSkillTool(client, name)));\n\t\ttools.push(...batchTools);\n\t}\n\treturn tools;\n}\n//#endregion\nexport { AGENT_PATHS, DEFAULT_CONFIG_DIR, DEFAULT_MAX_RETRIES, REGISTRY_URL as DEFAULT_REGISTRY_URL, DEFAULT_TIMEOUT_MS, LOCKFILE_FILENAME, MANIFEST_FILENAME, SDK_VERSION, SUPPORTED_AGENTS, TankAuthError, TankClient, TankConflictError, TankError, TankIntegrityError, TankNetworkError, TankNotFoundError, TankPermissionError, buildSkillKey, checkPermissionBudget, collectPermissionViolations, createSkillTool, createSkillTools, downloadAllParallel, extractSafely, getExtractDir, getGlobalExtractDir, getResolvedNodesInOrder, hasNativeAcceleration, isDomainAllowed, isPathAllowed, parseLockKey, parseVersionFromLockKey, planMkdirSegments, readExtractedDependencies, resolveDependencyTree, verifyExtractedDependencies, writeLockfileWithResolvedGraph };\n","import fs from 'node:fs';\nimport os from 'node:os';\nimport path from 'node:path';\n\nexport interface TankConfig {\n token?: string;\n user?: { name: string; email: string };\n registry: string;\n}\n\nconst DEFAULT_CONFIG: TankConfig = {\n registry: 'https://www.tankpkg.dev'\n};\n\n/**\n * Get the path to the tank config directory.\n */\nexport function getConfigDir(configDir?: string): string {\n return configDir ?? path.join(os.homedir(), '.tank');\n}\n\n/**\n * Get the path to the tank config file.\n */\nexport function getConfigPath(configDir?: string): string {\n return path.join(getConfigDir(configDir), 'config.json');\n}\n\n/**\n * Read the tank config file. Returns defaults if file doesn't exist.\n */\nexport function getConfig(configDir?: string): TankConfig {\n const configPath = getConfigPath(configDir);\n\n try {\n const raw = fs.readFileSync(configPath, 'utf-8');\n const parsed = JSON.parse(raw) as Partial<TankConfig>;\n const merged = { ...DEFAULT_CONFIG, ...parsed };\n // TANK_TOKEN env var takes priority\n const envToken = process.env.TANK_TOKEN?.trim();\n if (envToken) {\n merged.token = envToken;\n }\n return merged;\n } catch {\n const envToken = process.env.TANK_TOKEN?.trim();\n return {\n ...DEFAULT_CONFIG,\n ...(envToken ? { token: envToken } : {})\n };\n }\n}\n\n/**\n * Write config to disk. Merges with existing config.\n */\nexport function setConfig(partial: Partial<TankConfig>, configDir?: string): void {\n const dir = getConfigDir(configDir);\n const configPath = getConfigPath(configDir);\n\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir, { recursive: true, mode: 0o700 });\n }\n\n const existing = getConfig(configDir);\n const merged = { ...existing, ...partial };\n\n fs.writeFileSync(configPath, `${JSON.stringify(merged, null, 2)}\\n`, {\n encoding: 'utf-8',\n mode: 0o600\n });\n}\n","import { TankAuthError, TankClient } from '@tankpkg/sdk';\nimport { getConfig, type TankConfig } from './config.js';\n\nexport interface ApiClientOptions {\n configDir?: string;\n}\n\nexport class TankApiClient {\n private client: TankClient;\n private config: TankConfig;\n\n constructor(options: ApiClientOptions = {}) {\n this.config = getConfig(options.configDir);\n this.client = new TankClient({\n token: this.config.token,\n registryUrl: this.config.registry,\n configDir: options.configDir\n });\n }\n\n get baseUrl(): string {\n return this.config.registry;\n }\n\n get token(): string | undefined {\n return this.config.token;\n }\n\n get isAuthenticated(): boolean {\n return !!this.config.token;\n }\n\n get sdk(): TankClient {\n return this.client;\n }\n\n async fetch<T>(\n path: string,\n options: RequestInit = {}\n ): Promise<{ data: T; ok: true } | { error: string; status: number; ok: false }> {\n const url = `${this.baseUrl}${path}`;\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n ...(options.headers as Record<string, string>)\n };\n\n if (this.config.token) {\n headers.Authorization = `Bearer ${this.config.token}`;\n }\n\n try {\n const response = await fetch(url, {\n ...options,\n headers,\n signal: AbortSignal.timeout(30_000)\n });\n\n if (!response.ok) {\n const body = await response.json().catch(() => ({}));\n return {\n error: (body as { error?: string }).error ?? response.statusText,\n status: response.status,\n ok: false\n };\n }\n\n const data = (await response.json()) as T;\n return { data, ok: true };\n } catch (err) {\n return {\n error: err instanceof Error ? err.message : 'Network error',\n status: 0,\n ok: false\n };\n }\n }\n\n async verifyAuth(): Promise<\n | { valid: true; user: { name: string | null; email: string | null } }\n | { valid: false; reason: 'no-token' | 'unauthorized' | 'network-error'; error?: string }\n > {\n if (!this.config.token) {\n return { valid: false, reason: 'no-token' };\n }\n\n try {\n const user = await this.client.whoami();\n if (user) {\n return { valid: true, user: { name: user.name, email: user.email } };\n }\n return { valid: false, reason: 'unauthorized' };\n } catch (err) {\n if (err instanceof TankAuthError) {\n return { valid: false, reason: 'unauthorized' };\n }\n return {\n valid: false,\n reason: 'network-error',\n error: err instanceof Error ? err.message : 'Unknown error'\n };\n }\n }\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { LEGACY_LOCKFILE_FILENAME, LOCKFILE_FILENAME, type SkillsLock } from '@internals/schemas';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\n\nimport { TankApiClient } from '~/lib/api-client.js';\n\nconst SCOPED_NAME_PATTERN = /^@[a-z0-9-]+\\/[a-z0-9][a-z0-9-]*$/;\n\ninterface VersionDetails {\n name: string;\n version: string;\n permissions?: {\n network?: { outbound?: string[] };\n filesystem?: { read?: string[]; write?: string[] };\n subprocess?: boolean;\n };\n auditScore: number | null;\n auditStatus: string;\n downloadUrl: string;\n publishedAt: string;\n downloads: number;\n}\n\ninterface ScanFinding {\n stage: string;\n severity: 'critical' | 'high' | 'medium' | 'low';\n type: string;\n description: string;\n location: string | null;\n}\n\ninterface ScanResult {\n verdict: string;\n audit_score: number;\n findings: ScanFinding[];\n scanned_at: string;\n}\n\ninterface SkillMetaResponse {\n name: string;\n description: string | null;\n latestVersion: string;\n auditScore: number | null;\n auditStatus: string;\n versions: Array<{\n version: string;\n auditScore: number | null;\n auditStatus: string;\n publishedAt: string;\n }>;\n}\n\nfunction parseLockKey(key: string): { name: string; version: string } | null {\n const lastAt = key.lastIndexOf('@');\n if (lastAt <= 0) return null;\n return { name: key.slice(0, lastAt), version: key.slice(lastAt + 1) };\n}\n\nfunction deriveVerdict(score: number | null, status: string): string {\n if (status !== 'completed' || score === null) return 'PENDING';\n if (score >= 7) return 'PASS';\n if (score >= 4) return 'FLAGGED';\n return 'FAIL';\n}\n\nfunction formatFindings(findings: ScanFinding[]): string {\n if (findings.length === 0) return '';\n\n const bySeverity: Record<string, ScanFinding[]> = {\n critical: [],\n high: [],\n medium: [],\n low: []\n };\n\n for (const f of findings) {\n if (bySeverity[f.severity]) {\n bySeverity[f.severity].push(f);\n }\n }\n\n const lines: string[] = ['', `### Findings (${findings.length})`];\n\n for (const severity of ['critical', 'high', 'medium', 'low'] as const) {\n const group = bySeverity[severity];\n if (group.length === 0) continue;\n lines.push(`\\n**${severity.toUpperCase()} (${group.length}):**`);\n for (const f of group) {\n lines.push(`- ${f.type}: ${f.description}${f.location ? ` (${f.location})` : ''}`);\n }\n }\n\n return lines.join('\\n');\n}\n\nexport function registerAuditSkillTool(server: McpServer): void {\n server.tool(\n 'audit-skill',\n 'Show security audit results for a skill from the Tank registry.',\n {\n name: z.string().describe('Skill name in @org/name format'),\n version: z.string().optional().describe('Specific version to audit (defaults to installed or latest)')\n },\n async ({ name, version }) => {\n if (!SCOPED_NAME_PATTERN.test(name)) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Validation error: Skill name \"${name}\" must use the @org/name format (e.g. @acme/my-skill).`\n }\n ],\n isError: true\n };\n }\n\n const client = new TankApiClient();\n if (!client.isAuthenticated) {\n return {\n content: [\n {\n type: 'text' as const,\n text: 'Authentication required. Please run the \"login\" tool first to authenticate with Tank.'\n }\n ],\n isError: true\n };\n }\n\n const encodedName = encodeURIComponent(name);\n\n // If no version specified, try to find installed version from lockfile\n let targetVersion = version;\n if (!targetVersion) {\n let lockPath = path.join(process.cwd(), LOCKFILE_FILENAME);\n if (!fs.existsSync(lockPath)) {\n lockPath = path.join(process.cwd(), LEGACY_LOCKFILE_FILENAME);\n }\n if (fs.existsSync(lockPath)) {\n try {\n const raw = fs.readFileSync(lockPath, 'utf-8');\n const lock = JSON.parse(raw) as SkillsLock;\n for (const key of Object.keys(lock.skills)) {\n const parsed = parseLockKey(key);\n if (parsed && parsed.name === name) {\n targetVersion = parsed.version;\n break;\n }\n }\n } catch {\n // Lockfile unreadable — fall through to fetch latest\n }\n }\n }\n\n // If still no version, fetch skill metadata to get latest\n if (!targetVersion) {\n const metaResult = await client.fetch<SkillMetaResponse>(`/api/v1/skills/${encodedName}`);\n\n if (!metaResult.ok) {\n if (metaResult.status === 0) {\n return {\n content: [\n {\n type: 'text' as const,\n text: 'Unable to connect to the Tank registry. Check your network connection and try again.'\n }\n ],\n isError: true\n };\n }\n if (metaResult.status === 404) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Skill \"${name}\" not found in the Tank registry.`\n }\n ],\n isError: true\n };\n }\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to fetch skill metadata: ${metaResult.error}`\n }\n ],\n isError: true\n };\n }\n\n targetVersion = metaResult.data.latestVersion;\n }\n\n // Fetch version details with audit data\n const versionResult = await client.fetch<VersionDetails>(`/api/v1/skills/${encodedName}/${targetVersion}`);\n\n if (!versionResult.ok) {\n if (versionResult.status === 0) {\n return {\n content: [\n {\n type: 'text' as const,\n text: 'Unable to connect to the Tank registry. Check your network connection and try again.'\n }\n ],\n isError: true\n };\n }\n if (versionResult.status === 404) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Skill \"${name}\" version \"${targetVersion}\" not found in the Tank registry.`\n }\n ],\n isError: true\n };\n }\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to fetch audit data: ${versionResult.error}`\n }\n ],\n isError: true\n };\n }\n\n const details = versionResult.data;\n const verdict = deriveVerdict(details.auditScore, details.auditStatus);\n\n if (details.auditStatus !== 'completed') {\n return {\n content: [\n {\n type: 'text' as const,\n text: [\n `## Audit: ${name}@${targetVersion}`,\n '',\n `**Status:** Pending security review`,\n `**Scan Status:** ${details.auditStatus}`,\n '',\n 'This skill has not yet been through security scanning. Results will be available once the scan completes.'\n ].join('\\n')\n }\n ]\n };\n }\n\n // Try to fetch detailed scan results\n let findingsText = '';\n const scanResult = await client.fetch<ScanResult>(`/api/v1/skills/${encodedName}/${targetVersion}/scan`);\n if (scanResult.ok && scanResult.data.findings) {\n findingsText = formatFindings(scanResult.data.findings);\n }\n\n const score = details.auditScore !== null ? details.auditScore.toFixed(1) : 'N/A';\n\n const lines = [\n `## Audit: ${name}@${targetVersion}`,\n '',\n `**Verdict:** ${verdict}`,\n `**Score:** ${score}/10`,\n `**Scanned:** ${details.publishedAt}`,\n `**Version:** ${targetVersion}`\n ];\n\n if (details.permissions) {\n lines.push('', '**Permissions:**');\n const p = details.permissions;\n if (p.network?.outbound?.length) {\n lines.push(` - Network: ${p.network.outbound.join(', ')}`);\n }\n if (p.filesystem?.read?.length || p.filesystem?.write?.length) {\n const parts: string[] = [];\n if (p.filesystem.read?.length) parts.push(`read: ${p.filesystem.read.join(', ')}`);\n if (p.filesystem.write?.length) parts.push(`write: ${p.filesystem.write.join(', ')}`);\n lines.push(` - Filesystem: ${parts.join('; ')}`);\n }\n lines.push(` - Subprocess: ${p.subprocess ? 'yes' : 'no'}`);\n }\n\n if (findingsText) {\n lines.push(findingsText);\n }\n\n return {\n content: [\n {\n type: 'text' as const,\n text: lines.join('\\n')\n }\n ]\n };\n }\n );\n}\n","import fs from 'node:fs';\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\n\nimport { TankApiClient } from '~/lib/api-client.js';\nimport { getConfig, getConfigPath } from '~/lib/config.js';\n\nconst MIN_NODE_MAJOR = 24;\n\ninterface CheckResult {\n name: string;\n status: 'PASS' | 'FAIL';\n message: string;\n}\n\nfunction checkConfigFile(): CheckResult {\n const configPath = getConfigPath();\n\n if (!fs.existsSync(configPath)) {\n return {\n name: 'Configuration File',\n status: 'FAIL',\n message: `Configuration file not found at ${configPath}. Run the login tool to create it.`\n };\n }\n\n try {\n const raw = fs.readFileSync(configPath, 'utf-8');\n JSON.parse(raw);\n return {\n name: 'Configuration File',\n status: 'PASS',\n message: `Configuration file exists and is valid JSON (${configPath}).`\n };\n } catch (err) {\n const detail = err instanceof Error ? err.message : String(err);\n return {\n name: 'Configuration File',\n status: 'FAIL',\n message: `Configuration file at ${configPath} is malformed: ${detail}`\n };\n }\n}\n\nasync function checkAuthentication(): Promise<CheckResult> {\n const client = new TankApiClient();\n\n if (!client.isAuthenticated) {\n return {\n name: 'Authentication',\n status: 'FAIL',\n message: 'Not authenticated. Use the login tool to authenticate with Tank.'\n };\n }\n\n const authCheck = await client.verifyAuth();\n\n if (authCheck.valid) {\n const name = authCheck.user.name ?? 'unknown';\n return {\n name: 'Authentication',\n status: 'PASS',\n message: `Authenticated as ${name}.`\n };\n }\n\n if (authCheck.reason === 'network-error') {\n return {\n name: 'Authentication',\n status: 'FAIL',\n message: `Could not verify credentials (network error). ${authCheck.error ?? ''}`.trim()\n };\n }\n\n return {\n name: 'Authentication',\n status: 'FAIL',\n message: 'Credentials are expired or invalid. Use the login tool to re-authenticate.'\n };\n}\n\nasync function checkRegistryConnectivity(): Promise<CheckResult> {\n const config = getConfig();\n const registryUrl = config.registry;\n\n try {\n const healthUrl = `${registryUrl}/api/health`;\n const response = await fetch(healthUrl, {\n signal: AbortSignal.timeout(10_000)\n });\n\n if (response.ok) {\n return {\n name: 'Registry Connectivity',\n status: 'PASS',\n message: `Registry at ${registryUrl} is reachable.`\n };\n }\n\n return {\n name: 'Registry Connectivity',\n status: 'FAIL',\n message: `Registry at ${registryUrl} returned HTTP ${response.status}.`\n };\n } catch {\n return {\n name: 'Registry Connectivity',\n status: 'FAIL',\n message: `Cannot reach registry at ${registryUrl}. Check your network connection.`\n };\n }\n}\n\nfunction checkNodeVersion(): CheckResult {\n const raw = process.version;\n const match = raw.match(/^v(\\d+)/);\n const major = match ? Number.parseInt(match[1], 10) : 0;\n\n if (major >= MIN_NODE_MAJOR) {\n return {\n name: 'Node.js Version',\n status: 'PASS',\n message: `Node.js ${raw} meets the minimum requirement (v${MIN_NODE_MAJOR}.0.0).`\n };\n }\n\n return {\n name: 'Node.js Version',\n status: 'FAIL',\n message: `Node.js ${raw} is below the minimum required version v${MIN_NODE_MAJOR}.0.0. Please upgrade Node.js.`\n };\n}\n\nfunction formatChecks(checks: CheckResult[]): string {\n const lines: string[] = [];\n\n lines.push('Tank Doctor Report');\n lines.push('==================');\n lines.push('');\n\n for (const check of checks) {\n const icon = check.status === 'PASS' ? 'PASS' : 'FAIL';\n lines.push(`[${icon}] ${check.name}`);\n lines.push(` ${check.message}`);\n }\n\n lines.push('');\n\n const failedChecks = checks.filter((c) => c.status === 'FAIL');\n const allPassed = failedChecks.length === 0;\n\n if (allPassed) {\n lines.push('All checks passed. Your Tank environment is ready to use.');\n } else {\n lines.push('Suggestions:');\n for (const check of failedChecks) {\n if (check.name === 'Authentication') {\n lines.push(' - Use the login tool to authenticate with Tank.');\n } else if (check.name === 'Registry Connectivity') {\n lines.push(' - Check your network connection and verify the registry URL.');\n } else if (check.name === 'Node.js Version') {\n lines.push(` - Upgrade Node.js to v${MIN_NODE_MAJOR}.0.0 or later.`);\n } else if (check.name === 'Configuration File') {\n lines.push(' - Use the login tool to create a valid configuration file.');\n }\n }\n lines.push('');\n lines.push('The environment is not healthy. Please address the issues above.');\n }\n\n return lines.join('\\n');\n}\n\nexport function registerDoctorTool(server: McpServer): void {\n server.tool('doctor', 'Diagnose Tank setup and environment.', {}, async () => {\n const checks: CheckResult[] = [];\n\n checks.push(checkConfigFile());\n checks.push(await checkAuthentication());\n checks.push(await checkRegistryConnectivity());\n checks.push(checkNodeVersion());\n\n return {\n content: [{ type: 'text' as const, text: formatChecks(checks) }]\n };\n });\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { LEGACY_MANIFEST_FILENAME, MANIFEST_FILENAME, type SkillsJson, skillsJsonSchema } from '@internals/schemas';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\n\nconst SCOPED_NAME_PATTERN = /^@[a-z0-9-]+\\/[a-z0-9][a-z0-9-]*$/;\nconst SEMVER_PATTERN = /^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9.-]+)?(\\+[a-zA-Z0-9.-]+)?$/;\n\nexport function registerInitSkillTool(server: McpServer): void {\n server.tool(\n 'init-skill',\n `Create a new ${MANIFEST_FILENAME} and SKILL.md template for a Tank skill.`,\n {\n name: z.string().regex(SCOPED_NAME_PATTERN, 'Name must be in @org/name format'),\n version: z.string().regex(SEMVER_PATTERN, 'Version must be valid semver').optional().default('0.1.0'),\n description: z.string().optional().default(''),\n directory: z.string().optional().default('.')\n },\n async ({ name, version = '0.1.0', description = '', directory = '.' }) => {\n const targetDir = path.resolve(directory);\n\n if (!fs.existsSync(targetDir)) {\n return {\n content: [{ type: 'text' as const, text: `Directory does not exist: ${targetDir}` }]\n };\n }\n\n if (!fs.statSync(targetDir).isDirectory()) {\n return {\n content: [{ type: 'text' as const, text: `Path is not a directory: ${targetDir}` }]\n };\n }\n\n // Check for existing manifest (tank.json or skills.json)\n const newManifestPath = path.join(targetDir, MANIFEST_FILENAME);\n const legacyManifestPath = path.join(targetDir, LEGACY_MANIFEST_FILENAME);\n const skillsJsonPath = newManifestPath;\n if (fs.existsSync(newManifestPath) || fs.existsSync(legacyManifestPath)) {\n const existingFile = fs.existsSync(newManifestPath) ? MANIFEST_FILENAME : LEGACY_MANIFEST_FILENAME;\n return {\n content: [\n {\n type: 'text' as const,\n text: `${existingFile} already exists at ${targetDir}. Aborting to avoid overwrite.`\n }\n ]\n };\n }\n\n const manifest: SkillsJson = {\n name,\n version,\n description,\n skills: {},\n permissions: {\n network: { outbound: [] },\n filesystem: { read: [], write: [] },\n subprocess: false\n }\n };\n\n const parseResult = skillsJsonSchema.safeParse(manifest);\n if (!parseResult.success) {\n const details = parseResult.error.issues\n .map((issue) => `${issue.path.join('.') || 'root'}: ${issue.message}`)\n .join('; ');\n\n return {\n content: [{ type: 'text' as const, text: `Failed to create ${MANIFEST_FILENAME}: ${details}` }]\n };\n }\n\n fs.writeFileSync(skillsJsonPath, `${JSON.stringify(manifest, null, 2)}\\n`, 'utf-8');\n\n const skillMdPath = path.join(targetDir, 'SKILL.md');\n let createdSkillMd = false;\n if (!fs.existsSync(skillMdPath)) {\n const skillMd = `# ${name}\\n\\n${description || 'Description here.'}\\n`;\n fs.writeFileSync(skillMdPath, skillMd, 'utf-8');\n createdSkillMd = true;\n }\n\n const skillMdLine = createdSkillMd ? `Created: ${skillMdPath}` : `Skipped existing: ${skillMdPath}`;\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `Initialized skill in ${targetDir}\\nCreated: ${skillsJsonPath}\\n${skillMdLine}`\n }\n ]\n };\n }\n );\n}\n","import semver from \"semver\";\n//#region src/credentials/entropy.ts\n/**\n* Shannon entropy in bits/char. Used to reject low-entropy\n* regex matches (e.g. `sk_live_aaaaaaaaaaaaaaaa`) that pass\n* the pattern but are obviously not real credentials (C25a).\n*/\nfunction shannonEntropy(value) {\n\tif (value.length === 0) return 0;\n\tconst frequencies = /* @__PURE__ */ new Map();\n\tfor (const char of value) frequencies.set(char, (frequencies.get(char) ?? 0) + 1);\n\tconst length = value.length;\n\tlet entropy = 0;\n\tfor (const count of frequencies.values()) {\n\t\tconst probability = count / length;\n\t\tentropy -= probability * Math.log2(probability);\n\t}\n\treturn entropy;\n}\nconst DEFAULT_ENTROPY_THRESHOLD_BITS_PER_CHAR = 4;\n//#endregion\n//#region src/credentials/patterns.ts\nconst ALPHANUMERIC = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\nconst ALPHANUMERIC_UPPER = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";\nconst HEX_LOWER = \"0123456789abcdef\";\nconst COMMON_PLACEHOLDERS = [\n\t\"EXAMPLE\",\n\t\"PLACEHOLDER\",\n\t\"YOUR_KEY\",\n\t\"YOUR-KEY\",\n\t\"XXXXXX\"\n];\nconst CREDENTIAL_PATTERNS = [\n\t{\n\t\tid: \"stripe_secret\",\n\t\tlabel: \"Stripe Secret Key\",\n\t\tprefix: \"sk_live_\",\n\t\tregex: /(?:sk_live_|sk_test_)[A-Za-z0-9]{16,64}/g,\n\t\tcharset: ALPHANUMERIC,\n\t\tlength: 0,\n\t\tminEntropy: 3.95,\n\t\tplaceholderDenylist: COMMON_PLACEHOLDERS\n\t},\n\t{\n\t\tid: \"stripe_publishable\",\n\t\tlabel: \"Stripe Publishable Key\",\n\t\tprefix: \"pk_live_\",\n\t\tregex: /(?:pk_live_|pk_test_)[A-Za-z0-9]{16,64}/g,\n\t\tcharset: ALPHANUMERIC,\n\t\tlength: 0,\n\t\tminEntropy: 3.95,\n\t\tplaceholderDenylist: COMMON_PLACEHOLDERS\n\t},\n\t{\n\t\tid: \"aws_access_key\",\n\t\tlabel: \"AWS Access Key ID\",\n\t\tprefix: \"AKIA\",\n\t\tregex: /AKIA[A-Z0-9]{16}/g,\n\t\tcharset: ALPHANUMERIC_UPPER,\n\t\tlength: 20,\n\t\tminEntropy: 3.3,\n\t\tplaceholderDenylist: COMMON_PLACEHOLDERS\n\t},\n\t{\n\t\tid: \"github_pat\",\n\t\tlabel: \"GitHub Personal Access Token\",\n\t\tprefix: \"ghp_\",\n\t\tregex: /ghp_[A-Za-z0-9]{36}/g,\n\t\tcharset: ALPHANUMERIC,\n\t\tlength: 40,\n\t\tminEntropy: 4.4,\n\t\tplaceholderDenylist: COMMON_PLACEHOLDERS\n\t},\n\t{\n\t\tid: \"github_oauth\",\n\t\tlabel: \"GitHub OAuth Token\",\n\t\tprefix: \"gho_\",\n\t\tregex: /gho_[A-Za-z0-9]{36}/g,\n\t\tcharset: ALPHANUMERIC,\n\t\tlength: 40,\n\t\tminEntropy: 3.75,\n\t\tplaceholderDenylist: COMMON_PLACEHOLDERS\n\t},\n\t{\n\t\tid: \"openai_key\",\n\t\tlabel: \"OpenAI API Key\",\n\t\tprefix: \"sk-proj-\",\n\t\tregex: /sk-(?:proj-)?[A-Za-z0-9_-]{20,128}/g,\n\t\tcharset: `${ALPHANUMERIC}_-`,\n\t\tlength: 0,\n\t\tminEntropy: 4.5,\n\t\tplaceholderDenylist: COMMON_PLACEHOLDERS\n\t},\n\t{\n\t\tid: \"elevenlabs_key\",\n\t\tlabel: \"ElevenLabs API Key\",\n\t\tprefix: \"elvn_\",\n\t\tregex: /elvn_[A-Za-z0-9]{20,64}/g,\n\t\tcharset: ALPHANUMERIC,\n\t\tlength: 0,\n\t\tminEntropy: 4,\n\t\tplaceholderDenylist: COMMON_PLACEHOLDERS\n\t},\n\t{\n\t\tid: \"jwt_token\",\n\t\tlabel: \"JWT Token\",\n\t\tprefix: \"eyJ\",\n\t\tregex: /eyJ[A-Za-z0-9_-]{6,}\\.[A-Za-z0-9_-]{6,}\\.[A-Za-z0-9_-]{6,}/g,\n\t\tcharset: `${ALPHANUMERIC}_-.`,\n\t\tlength: 0,\n\t\tstructural: true\n\t},\n\t{\n\t\tid: \"database_url\",\n\t\tlabel: \"Database URL\",\n\t\tprefix: \"postgresql://\",\n\t\tregex: /(?:postgres(?:ql)?|mysql|mariadb|mongodb(?:\\+srv)?|redis):\\/\\/[^\\s\"'`]+/g,\n\t\tcharset: `${ALPHANUMERIC}:/?&=._-@+%$!~*(),`,\n\t\tlength: 0,\n\t\tstructural: true\n\t},\n\t{\n\t\tid: \"slack_webhook\",\n\t\tlabel: \"Slack Webhook URL\",\n\t\tprefix: \"https://hooks.slack.com/services/\",\n\t\tregex: /https:\\/\\/hooks\\.slack\\.com\\/services\\/[A-Z0-9]{9,12}\\/[A-Z0-9]{9,12}\\/[A-Za-z0-9]{24,}/g,\n\t\tcharset: `${ALPHANUMERIC}:/.`,\n\t\tlength: 0,\n\t\tstructural: true\n\t}\n];\n//#endregion\n//#region src/credentials/scanner.ts\nfunction scan(text, options = {}) {\n\tif (text.length === 0) return [];\n\tconst mode = options.mode ?? \"strict\";\n\tconst overrideThreshold = options.entropyThreshold;\n\tconst matches = [];\n\tfor (const pattern of CREDENTIAL_PATTERNS) {\n\t\tconst regex = new RegExp(pattern.regex.source, pattern.regex.flags.includes(\"g\") ? pattern.regex.flags : `${pattern.regex.flags}g`);\n\t\tlet result = regex.exec(text);\n\t\twhile (result) {\n\t\t\tconst value = result[0];\n\t\t\tconst rawStart = result.index;\n\t\t\tconst start = rawStart > 1 && text[rawStart - 1] === \" \" && text[rawStart - 2] === \":\" ? rawStart + 1 : rawStart;\n\t\t\tconst end = rawStart + value.length + (start === rawStart ? 0 : 1);\n\t\t\tif (passesCredentialGates(pattern, value, mode, overrideThreshold)) matches.push({\n\t\t\t\tstart,\n\t\t\t\tend,\n\t\t\t\tpatternId: pattern.id\n\t\t\t});\n\t\t\tresult = regex.exec(text);\n\t\t}\n\t}\n\tmatches.sort((a, b) => {\n\t\tif (a.start !== b.start) return a.start - b.start;\n\t\tif (a.end !== b.end) return a.end - b.end;\n\t\treturn a.patternId.localeCompare(b.patternId);\n\t});\n\tconst deduped = [];\n\tfor (const match of matches) {\n\t\tconst prev = deduped[deduped.length - 1];\n\t\tif (prev && prev.start === match.start && prev.end === match.end && prev.patternId === match.patternId) continue;\n\t\tdeduped.push(match);\n\t}\n\treturn deduped;\n}\nfunction passesCredentialGates(pattern, value, mode, overrideThreshold) {\n\tif (pattern.structural === true) return true;\n\tif (mode === \"permissive\") return true;\n\tif (containsPlaceholder(value, pattern.placeholderDenylist)) return false;\n\tconst body = value.startsWith(pattern.prefix) ? value.slice(pattern.prefix.length) : value;\n\tif (body.length === 0) return false;\n\tconst threshold = overrideThreshold ?? pattern.minEntropy ?? 4;\n\treturn shannonEntropy(body) >= threshold;\n}\nfunction containsPlaceholder(value, denylist) {\n\tif (!denylist || denylist.length === 0) return false;\n\tconst upper = value.toUpperCase();\n\tfor (const placeholder of denylist) if (upper.includes(placeholder.toUpperCase())) return true;\n\treturn false;\n}\n//#endregion\n//#region src/lib/resolver.ts\nfunction resolve(range, versions) {\n\ttry {\n\t\tif (!range || !semver.validRange(range)) return null;\n\t\tconst validVersions = versions.filter((v) => semver.valid(v) !== null);\n\t\tif (validVersions.length === 0) return null;\n\t\treturn semver.maxSatisfying(validVersions, range) ?? null;\n\t} catch {\n\t\treturn null;\n\t}\n}\nfunction sortVersions(versions) {\n\treturn [...versions.filter((v) => semver.valid(v) !== null)].sort((a, b) => semver.rcompare(a, b));\n}\n//#endregion\n//#region src/lib/url.ts\nfunction encodeSkillName(name) {\n\treturn encodeURIComponent(name).replace(/%40/g, \"@\").replace(/%2F/gi, \"/\");\n}\n//#endregion\n//#region src/permission-escalation.ts\nfunction parseParts(version) {\n\tconst parts = version.split(\".\").map((p) => {\n\t\tconst n = Number.parseInt(p, 10);\n\t\treturn Number.isNaN(n) ? 0 : n;\n\t});\n\treturn [\n\t\tparts[0] ?? 0,\n\t\tparts[1] ?? 0,\n\t\tparts[2] ?? 0\n\t];\n}\nfunction determineBump(prevVersion, newVersion) {\n\tif (!prevVersion) return \"none\";\n\tconst [pMaj, pMin] = parseParts(prevVersion);\n\tconst [nMaj, nMin] = parseParts(newVersion);\n\tif (nMaj > pMaj) return \"major\";\n\tif (nMin > pMin) return \"minor\";\n\treturn \"patch\";\n}\nfunction asStringArray(value) {\n\tif (!Array.isArray(value)) return [];\n\treturn value.filter((v) => typeof v === \"string\");\n}\nfunction findNewOutboundHosts(prev, next) {\n\tconst prevNetwork = prev.network;\n\tconst nextNetwork = next.network;\n\tif (!nextNetwork) return [];\n\tconst prevHosts = new Set(asStringArray(prevNetwork?.outbound));\n\treturn asStringArray(nextNetwork.outbound).filter((h) => !prevHosts.has(h)).map((host) => ({\n\t\tfield: \"network.outbound\",\n\t\treason: `New outbound host added: ${host}. Requires MAJOR bump`\n\t}));\n}\nfunction findNewFilesystemPaths(prev, next) {\n\tconst prevFs = prev.filesystem;\n\tconst nextFs = next.filesystem;\n\tif (!nextFs) return {\n\t\treads: [],\n\t\twrites: []\n\t};\n\tconst prevRead = new Set(asStringArray(prevFs?.read));\n\tconst addedRead = asStringArray(nextFs.read).filter((p) => !prevRead.has(p));\n\tconst prevWrite = new Set(asStringArray(prevFs?.write));\n\tconst addedWrite = asStringArray(nextFs.write).filter((p) => !prevWrite.has(p));\n\treturn {\n\t\treads: addedRead.map((p) => ({\n\t\t\tfield: \"filesystem.read\",\n\t\t\treason: `New read path added: ${p}. Requires MINOR bump`\n\t\t})),\n\t\twrites: addedWrite.map((p) => ({\n\t\t\tfield: \"filesystem.write\",\n\t\t\treason: `New write path added: ${p}. Requires MINOR bump`\n\t\t}))\n\t};\n}\nfunction checkSubprocessEscalation(prev, next) {\n\tconst prevSub = prev.subprocess;\n\tif (next.subprocess === true && prevSub !== true) return [{\n\t\tfield: \"subprocess\",\n\t\treason: \"Subprocess execution enabled (was disabled). Requires MAJOR bump\"\n\t}];\n\treturn [];\n}\nfunction checkPermissionEscalation(prevVersion, prevPermissions, newVersion, newPermissions) {\n\tconst bump = determineBump(prevVersion, newVersion);\n\tif (bump === \"major\" || bump === \"none\") return {\n\t\tallowed: true,\n\t\tviolations: []\n\t};\n\tconst highRisk = [...findNewOutboundHosts(prevPermissions, newPermissions), ...checkSubprocessEscalation(prevPermissions, newPermissions)];\n\tconst fsPaths = findNewFilesystemPaths(prevPermissions, newPermissions);\n\tconst lowRisk = [...fsPaths.reads, ...fsPaths.writes];\n\tif (bump === \"minor\") return {\n\t\tallowed: highRisk.length === 0,\n\t\tviolations: highRisk\n\t};\n\tconst violations = [...highRisk, ...lowRisk];\n\treturn {\n\t\tallowed: violations.length === 0,\n\t\tviolations\n\t};\n}\n//#endregion\n//#region src/permissions/domain.ts\nfunction isDomainAllowed(domain, allowedDomains) {\n\tfor (const allowed of allowedDomains) {\n\t\tif (allowed === domain) return true;\n\t\tif (allowed.startsWith(\"*.\")) {\n\t\t\tconst suffix = allowed.slice(1);\n\t\t\tif (domain.endsWith(suffix) || domain === allowed.slice(2)) return true;\n\t\t\tif (domain === allowed) return true;\n\t\t}\n\t}\n\treturn false;\n}\n//#endregion\n//#region src/permissions/path.ts\nfunction isPathAllowed(requestedPath, allowedPaths) {\n\tconst norm = (p) => p.replaceAll(\"\\\\\", \"/\");\n\tconst req = norm(requestedPath);\n\tif (req.includes(\"..\")) return false;\n\tfor (const allowed of allowedPaths) {\n\t\tconst a = norm(allowed);\n\t\tif (a === req) return true;\n\t\tif (a.endsWith(\"/**\")) {\n\t\t\tconst prefix = a.slice(0, -3);\n\t\t\tif (req === prefix || req.startsWith(`${prefix}/`)) return true;\n\t\t}\n\t}\n\treturn false;\n}\nasync function resolveRealpathSafely(path) {\n\ttry {\n\t\tconst { realpath } = await import(\"node:fs/promises\");\n\t\treturn await realpath(path);\n\t} catch {\n\t\treturn path;\n\t}\n}\nasync function isPathAllowedWithRealpath(requestedPath, allowedPaths) {\n\tif (!isPathAllowed(requestedPath, allowedPaths)) return false;\n\tlet resolvedRequested;\n\ttry {\n\t\tconst { realpath } = await import(\"node:fs/promises\");\n\t\tresolvedRequested = await realpath(requestedPath);\n\t} catch {\n\t\treturn true;\n\t}\n\tconst resolvedAllowed = [];\n\tfor (const allowed of allowedPaths) {\n\t\tconst isGlob = allowed.endsWith(\"/**\");\n\t\tconst resolvedBase = await resolveRealpathSafely(isGlob ? allowed.slice(0, -3) : allowed);\n\t\tresolvedAllowed.push(isGlob ? `${resolvedBase}/**` : resolvedBase);\n\t}\n\treturn isPathAllowed(resolvedRequested, resolvedAllowed);\n}\n//#endregion\n//#region src/permissions/types.ts\n/**\n* Thrown by checkPermissionBudget when a skill's declared permissions exceed the project budget.\n*\n* internals-helpers cannot import from @tankpkg/sdk (would invert dep graph).\n* sdk shim catches this and re-throws as TankPermissionError to preserve\n* the public sdk error API. See D7 / INTENT C25b.\n*/\nvar PermissionBudgetError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = \"PermissionBudgetError\";\n\t}\n};\n//#endregion\n//#region src/permissions/budget.ts\nfunction checkPermissionBudget(budget, skillPerms, skillName) {\n\tif (!skillPerms) return;\n\tif (skillPerms.subprocess === true && budget.subprocess !== true) throw new PermissionBudgetError(`${skillName} requires subprocess access, but project budget does not allow it`);\n\tif (skillPerms.network?.outbound && skillPerms.network.outbound.length > 0) {\n\t\tconst budgetDomains = budget.network?.outbound ?? [];\n\t\tfor (const domain of skillPerms.network.outbound) if (!isDomainAllowed(domain, budgetDomains)) throw new PermissionBudgetError(`${skillName} requests network access to \"${domain}\", which is not in the project's permission budget`);\n\t}\n\tif (skillPerms.filesystem?.read && skillPerms.filesystem.read.length > 0) {\n\t\tconst budgetPaths = budget.filesystem?.read ?? [];\n\t\tfor (const p of skillPerms.filesystem.read) if (!isPathAllowed(p, budgetPaths)) throw new PermissionBudgetError(`${skillName} requests filesystem read access to \"${p}\", which is not in the project's permission budget`);\n\t}\n\tif (skillPerms.filesystem?.write && skillPerms.filesystem.write.length > 0) {\n\t\tconst budgetPaths = budget.filesystem?.write ?? [];\n\t\tfor (const p of skillPerms.filesystem.write) if (!isPathAllowed(p, budgetPaths)) throw new PermissionBudgetError(`${skillName} requests filesystem write access to \"${p}\", which is not in the project's permission budget`);\n\t}\n}\nfunction collectPermissionViolations(budget, skillPerms, skillName) {\n\tconst violations = [];\n\tif (!skillPerms) return violations;\n\tif (skillPerms.subprocess === true && budget.subprocess !== true) violations.push({\n\t\tskillName,\n\t\ttype: \"subprocess\",\n\t\trequested: \"true\"\n\t});\n\tif (skillPerms.network?.outbound) {\n\t\tconst budgetDomains = budget.network?.outbound ?? [];\n\t\tfor (const domain of skillPerms.network.outbound) if (!isDomainAllowed(domain, budgetDomains)) violations.push({\n\t\t\tskillName,\n\t\t\ttype: \"network.outbound\",\n\t\t\trequested: domain\n\t\t});\n\t}\n\tif (skillPerms.filesystem?.read) {\n\t\tconst budgetPaths = budget.filesystem?.read ?? [];\n\t\tfor (const p of skillPerms.filesystem.read) if (!isPathAllowed(p, budgetPaths)) violations.push({\n\t\t\tskillName,\n\t\t\ttype: \"filesystem.read\",\n\t\t\trequested: p\n\t\t});\n\t}\n\tif (skillPerms.filesystem?.write) {\n\t\tconst budgetPaths = budget.filesystem?.write ?? [];\n\t\tfor (const p of skillPerms.filesystem.write) if (!isPathAllowed(p, budgetPaths)) violations.push({\n\t\t\tskillName,\n\t\t\ttype: \"filesystem.write\",\n\t\t\trequested: p\n\t\t});\n\t}\n\treturn violations;\n}\n//#endregion\n//#region src/prompt-injection/normalizer.ts\nconst BASE64_MAX_RECURSION_DEPTH = 3;\nconst BASE64_MAX_DECODED_BYTES = 64 * 1024;\nconst ZERO_WIDTH_CODEPOINTS = /\\u200B|\\u200C|\\u200D|\\uFEFF|\\u2060/g;\nconst BASE64_CANDIDATE = /[A-Za-z0-9+/]{16,}={0,2}/g;\nconst WHITESPACE_RUN = /\\s+/g;\nconst HOMOGLYPH_MAP = new Map([\n\t[\"а\", \"a\"],\n\t[\"е\", \"e\"],\n\t[\"о\", \"o\"],\n\t[\"р\", \"p\"],\n\t[\"с\", \"c\"],\n\t[\"х\", \"x\"],\n\t[\"у\", \"y\"],\n\t[\"ο\", \"o\"],\n\t[\"α\", \"a\"],\n\t[\"ѕ\", \"s\"]\n]);\nconst LEET_MAP = new Map([\n\t[\"0\", \"o\"],\n\t[\"1\", \"i\"],\n\t[\"3\", \"e\"],\n\t[\"4\", \"a\"],\n\t[\"5\", \"s\"],\n\t[\"7\", \"t\"],\n\t[\"@\", \"a\"],\n\t[\"$\", \"s\"]\n]);\nfunction stripZeroWidth(text) {\n\treturn text.replace(ZERO_WIDTH_CODEPOINTS, \"\");\n}\nfunction decodeHomoglyphs(text) {\n\treturn [...text.normalize(\"NFKC\")].map((ch) => HOMOGLYPH_MAP.get(ch) ?? ch).join(\"\");\n}\nfunction isMostlyPrintable(decoded) {\n\tconst chars = [...decoded];\n\tif (chars.length === 0) return false;\n\treturn chars.filter((ch) => ch >= \" \" && ch <= \"~\").length / chars.length >= .95;\n}\nfunction looksLikeBase64(match) {\n\treturn /[0-9+/=]/.test(match);\n}\nfunction tryDecodeBase64Match(match, budget) {\n\tif (budget.bytesRemaining <= 0) return null;\n\tif (!looksLikeBase64(match)) return null;\n\ttry {\n\t\tconst decoded = Buffer.from(match, \"base64\").toString(\"utf8\");\n\t\tif (!isMostlyPrintable(decoded)) return null;\n\t\tbudget.bytesRemaining -= decoded.length;\n\t\treturn decoded;\n\t} catch {\n\t\treturn null;\n\t}\n}\nfunction decodeBase64Pass(text, budget) {\n\treturn text.replace(BASE64_CANDIDATE, (match) => {\n\t\treturn tryDecodeBase64Match(match, budget) ?? match;\n\t});\n}\nfunction decodeBase64Substrings(text) {\n\tconst budget = {\n\t\tdepth: 0,\n\t\tbytesRemaining: BASE64_MAX_DECODED_BYTES\n\t};\n\tlet current = text;\n\twhile (budget.depth < 3) {\n\t\tconst next = decodeBase64Pass(current, budget);\n\t\tif (next === current) return next;\n\t\tcurrent = next;\n\t\tbudget.depth += 1;\n\t}\n\treturn current;\n}\nfunction reverseLeet(text) {\n\treturn [...text.toLowerCase()].map((ch) => LEET_MAP.get(ch) ?? ch).join(\"\");\n}\nfunction collapseWhitespace(text) {\n\treturn text.replace(WHITESPACE_RUN, \" \").trim();\n}\nfunction normalizeForScan(text) {\n\treturn collapseWhitespace(reverseLeet(decodeBase64Substrings(decodeHomoglyphs(stripZeroWidth(text)))));\n}\n//#endregion\n//#region src/prompt-injection/patterns.ts\nconst CLAWGUARD_PATTERN_COUNT = 55;\nconst CLAWGUARD_PATTERNS = [\n\t{\n\t\tname: \"Direct Override (EN)\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"ignore\\\\s+(all\\\\s+)?(previous|prior|above|earlier)\\\\s+(instructions?|rules?|prompts?|guidelines?)\", \"i\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"prompt_injection\",\n\t\trecommendation: `BLOCK this input immediately. This is a classic prompt injection attempting to override the agent's system instructions.`\n\t},\n\t{\n\t\tname: \"Direct Override (DE)\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"ignoriere?\\\\s+(alle\\\\s+)?(vorherigen?|bisherigen?|obigen?)\\\\s+(Anweisungen?|Regeln?|Instruktionen?|Befehle?)\", \"i\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"prompt_injection\",\n\t\trecommendation: `BLOCKIEREN. Klassische Prompt-Injection die versucht, die Systemanweisungen zu ueberschreiben.`\n\t},\n\t{\n\t\tname: \"New Instructions Override\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(you\\\\s+are\\\\s+now|ab\\\\s+jetzt\\\\s+bist\\\\s+du|from\\\\s+now\\\\s+on\\\\s+you\\\\s+are|your\\\\s+new\\\\s+(role|instructions?|task)\\\\s+(is|are))\", \"i\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"prompt_injection\",\n\t\trecommendation: `BLOCK. Attempt to redefine the agent's identity or role mid-conversation.`\n\t},\n\t{\n\t\tname: \"System Prompt Extraction\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(show|reveal|print|display|output|repeat|give\\\\s+me|zeig|nenne|wiederhole)\\\\s+(your|the|deine?n?|die)\\\\s+(system\\\\s*prompt|instructions?|initial\\\\s*prompt|rules?|Anweisungen?|Systemprompt)\", \"i\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"prompt_injection\",\n\t\trecommendation: `This input attempts to extract the agent's system prompt. Sensitive internal instructions could be leaked.`\n\t},\n\t{\n\t\tname: \"Role-Play Escape\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(pretend|act\\\\s+as\\\\s+if|imagine|tu\\\\s+so\\\\s+als|stell\\\\s+dir\\\\s+vor).{0,50}(no\\\\s+rules?|no\\\\s+restrictions?|keine\\\\s+Regeln?|without\\\\s+limits?|ohne\\\\s+Einschraenkungen?)\", \"i\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"prompt_injection\",\n\t\trecommendation: `Jailbreak attempt via role-play scenario to bypass safety constraints.`\n\t},\n\t{\n\t\tname: \"Delimiter Injection\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(```system|<\\\\|im_start\\\\|>|<\\\\|im_end\\\\|>|\\\\[INST\\\\]|\\\\[\\\\/INST\\\\]|<<SYS>>|<\\\\/SYS>|<\\\\|system\\\\|>|<\\\\|user\\\\|>|<\\\\|assistant\\\\|>)\", \"\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"prompt_injection\",\n\t\trecommendation: `CRITICAL: Injection of model-specific delimiters to manipulate the conversation structure.`\n\t},\n\t{\n\t\tname: \"Encoded Bypass (Base64 hint)\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(decode|base64|atob|eval)\\\\s*\\\\(.{0,100}\\\\)\", \"i\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"prompt_injection\",\n\t\trecommendation: `Possible attempt to smuggle encoded payloads past text filters.`\n\t},\n\t{\n\t\tname: \"Token Smuggling\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(ignore|bypass|skip|disable)\\\\s+(safety|filter|guard|moderation|content\\\\s*policy|Sicherheit|Schutz)\", \"i\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"prompt_injection\",\n\t\trecommendation: `Attempt to explicitly disable or bypass security filters.`\n\t},\n\t{\n\t\tname: \"Synonym Override (EN)\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(disregard|forget|dismiss|override|overrule|nullify|void|abandon|drop|suppress|set\\\\s+aside|throw\\\\s+out)\\\\s+(all\\\\s+)?(previous|prior|above|earlier|preceding|antecedent|foregoing|existing|current|original)\\\\s+(instructions?|rules?|prompts?|guidelines?|directives?|regulations?|constraints?|policies?|orders?|commands?)\", \"i\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"prompt_injection\",\n\t\trecommendation: `BLOCK: Synonym-based prompt injection detected. Uses alternative vocabulary to bypass basic keyword filters.`\n\t},\n\t{\n\t\tname: \"Synonym Override (DE)\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(vergiss|verwirf|uebergehe?|ueberschreibe?|missachte|setze?\\\\s+ausser\\\\s+Kraft|hebe?\\\\s+auf)\\\\s+(alle\\\\s+)?(vorherigen?|bisherigen?|obigen?|bestehenden?|aktuellen?|urspruenglichen?)\\\\s+(Anweisungen?|Regeln?|Instruktionen?|Befehle?|Richtlinien?|Vorgaben?|Vorschriften?)\", \"i\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"prompt_injection\",\n\t\trecommendation: `BLOCKIEREN: Synonym-basierte Prompt-Injection auf Deutsch erkannt.`\n\t},\n\t{\n\t\tname: \"Indirect Instruction Reset\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(start\\\\s+(fresh|over|anew|from\\\\s+scratch)|begin\\\\s+a\\\\s+new\\\\s+(session|context|conversation)|reset\\\\s+(your|all)\\\\s+(memory|context|instructions?)|fang\\\\s+(neu|von\\\\s+vorne)\\\\s+an)\", \"i\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"prompt_injection\",\n\t\trecommendation: `Attempt to reset the agent's instruction context via indirect phrasing.`\n\t},\n\t{\n\t\tname: \"System/Admin Tag Injection\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"\\\\[\\\\s*(?:SYSTEM|ADMIN|IMPORTANT|PRIORITY|OVERRIDE|EMERGENCY|ROOT|SUPERUSER|MODERATOR)\\\\s*\\\\]\", \"i\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"prompt_injection\",\n\t\trecommendation: `BLOCK: Fake authority tag detected (e.g., [SYSTEM], [ADMIN]).`\n\t},\n\t{\n\t\tname: \"Agent-Worm Propagation\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(all\\\\s+agents?\\\\s+must|forward\\\\s+this\\\\s+to\\\\s+all|spread\\\\s+this\\\\s+(message|instruction)|automated\\\\s+instruction|replicate\\\\s+this\\\\s+(to|across)|inject\\\\s+into\\\\s+(all|every)\\\\s+(?:other\\\\s+)?(agents?|conversations?|sessions?)|inject\\\\s+into\\\\s+other\\\\s+(agents?|conversations?|sessions?))\", \"i\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"prompt_injection\",\n\t\trecommendation: `CRITICAL: Agent-worm propagation pattern detected.`\n\t},\n\t{\n\t\tname: \"Base64 Encoded Payload\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:base64[:\\\\s]+[A-Za-z0-9+/]{20,}={0,2}|decode\\\\s+(?:this|the\\\\s+following)\\\\s*:\\\\s*[A-Za-z0-9+/]{20,}={0,2}|(?:execute|run|eval)\\\\s+(?:the\\\\s+)?(?:base64|encoded)\\\\s+(?:string|payload|command|instruction)|(?:execute|run|eval)\\\\s+(?:the\\\\s+)?(?:base64)\\\\s+encoded\\\\s+\\\\w+)\", \"i\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"prompt_injection\",\n\t\trecommendation: `Base64-encoded payload or decode instruction detected.`\n\t},\n\t{\n\t\tname: \"Jailbreak Persona Activation\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:you\\\\s+are\\\\s+now|act(?:ing)?\\\\s+as|you\\\\s+will\\\\s+(?:act|be|become)|called|named|known\\\\s+as)\\\\s+[\\\"']?(?:DAN|STAN|DUDE|AIM|UCAR|EVIL|FreedomGPT|DevMode|JailBreak|UnfilteredAI|NsfwGPT|BasedGPT|MasterKey|AnarchyAI|ChaosGPT|ShadowAI|DarkGPT|UnchainedAI)\", \"i\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"prompt_injection\",\n\t\trecommendation: `Jailbreak persona activation detected. Named personas like DAN, STAN, etc. are used to bypass safety constraints.`\n\t},\n\t{\n\t\tname: \"Unrestricted Compliance Demand\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:do\\\\s+anything\\\\s+now|answer\\\\s+any\\\\s+question\\\\s+without\\\\s+refus|never\\\\s+refuse|cannot\\\\s+refuse|no\\\\s+(?:restrictions?|limitations?|boundaries|ethics|morals|guidelines)|policies\\\\s+(?:are\\\\s+)?disabled|broken\\\\s+free\\\\s+of.*confines)\", \"i\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"prompt_injection\",\n\t\trecommendation: `Unrestricted compliance demand detected. Attempt to remove all safety constraints from the model.`\n\t},\n\t{\n\t\tname: \"Steganographic Output Control\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:first\\\\s+letter\\\\s+of\\\\s+each\\\\s+word|acrostic|hidden\\\\s+message|encode.*(?:response|output|answer)|spell\\\\s+out.*(?:secret|hidden|answer))\", \"i\"),\n\t\tseverity: \"medium\",\n\t\tcategory: \"prompt_injection\",\n\t\trecommendation: `Steganographic output control detected. Attempt to encode hidden messages in the model output.`\n\t},\n\t{\n\t\tname: \"Destructive Shell Command\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:rm\\\\s+-[rRf]{1,3}\\\\s+[\\\\\\\\/]|mkfs\\\\s|dd\\\\s+if=|format\\\\s+[A-Z]:|\\\\:\\\\(\\\\)\\\\s*\\\\{\\\\s*\\\\:\\\\|\\\\:\\\\s*\\\\&\\\\s*\\\\})\", \"\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"dangerous_command\",\n\t\trecommendation: `CRITICAL: Destructive system command detected.`\n\t},\n\t{\n\t\tname: \"Remote Code Execution\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:curl\\\\s+.{0,100}\\\\|\\\\s*(?:ba)?sh|wget\\\\s+.{0,100}\\\\|\\\\s*(?:ba)?sh|python[3]?\\\\s+-c\\\\s+['\\\\\\\"].*(?:exec|eval|import\\\\s+os))\", \"\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"dangerous_command\",\n\t\trecommendation: `CRITICAL: Pipe-to-shell pattern detected.`\n\t},\n\t{\n\t\tname: \"Reverse Shell\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:(?:bash|sh|nc|ncat)\\\\s+.{0,50}(?:\\\\/dev\\\\/tcp|mkfifo|nc\\\\s+-[elp])|python[3]?\\\\s+-c\\\\s+['\\\\\\\"].*socket.*connect)\", \"\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"dangerous_command\",\n\t\trecommendation: `CRITICAL: Reverse shell pattern detected.`\n\t},\n\t{\n\t\tname: \"Privilege Escalation\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:sudo\\\\s+(?:su|chmod\\\\s+[0-7]*777|chown\\\\s+root)|chmod\\\\s+[0-7]*4[0-7]{3}\\\\s|SUID|setuid)\", \"\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"dangerous_command\",\n\t\trecommendation: `Privilege escalation attempt detected.`\n\t},\n\t{\n\t\tname: \"Package / Dependency Install\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:pip\\\\s+install|npm\\\\s+install|apt\\\\s+install|yum\\\\s+install|brew\\\\s+install)\\\\s+(?!--help)\", \"\"),\n\t\tseverity: \"medium\",\n\t\tcategory: \"dangerous_command\",\n\t\trecommendation: `Software installation command detected. Verify the package source.`\n\t},\n\t{\n\t\tname: \"Python getattr Obfuscation\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:getattr\\\\s*\\\\(\\\\s*\\\\w+\\\\s*,\\\\s*['\\\\\\\"].+['\\\\\\\"]\\\\s*\\\\))\", \"\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"code_obfuscation\",\n\t\trecommendation: `CRITICAL: Python getattr() used to dynamically resolve functions.`\n\t},\n\t{\n\t\tname: \"Python eval/exec\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:(?:eval|exec|compile)\\\\s*\\\\(\\\\s*(?:['\\\\\\\"]|[a-zA-Z_]))\", \"\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"code_obfuscation\",\n\t\trecommendation: `CRITICAL: Dynamic code execution via eval()/exec()/compile().`\n\t},\n\t{\n\t\tname: \"Python __import__\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:__import__\\\\s*\\\\(|importlib\\\\.import_module\\\\s*\\\\()\", \"\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"code_obfuscation\",\n\t\trecommendation: `Dynamic module import detected.`\n\t},\n\t{\n\t\tname: \"Python String Concatenation Bypass\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:['\\\\\\\"][a-z]{1,6}['\\\\\\\"]\\\\s*\\\\+\\\\s*['\\\\\\\"][a-z]{1,6}['\\\\\\\"])\", \"\"),\n\t\tseverity: \"medium\",\n\t\tcategory: \"code_obfuscation\",\n\t\trecommendation: `String concatenation pattern detected.`\n\t},\n\t{\n\t\tname: \"Python Dangerous File I/O\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:open\\\\s*\\\\(\\\\s*['\\\\\\\"]?\\\\/(?:etc|proc|sys|dev|root|home|tmp|var|data)[\\\\/'\\\\\\\"]|open\\\\s*\\\\(\\\\s*['\\\\\\\"].*(?:shadow|passwd|id_rsa|authorized_keys|\\\\.env|config|secret|token|key))\", \"\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"code_obfuscation\",\n\t\trecommendation: `CRITICAL: Python file read targeting sensitive system paths.`\n\t},\n\t{\n\t\tname: \"Python subprocess/os.system\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:(?:subprocess|os)\\\\s*\\\\.\\\\s*(?:system|popen|call|run|Popen|exec[lv]?[pe]?)\\\\s*\\\\()\", \"\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"code_obfuscation\",\n\t\trecommendation: `CRITICAL: Direct OS command execution via Python.`\n\t},\n\t{\n\t\tname: \"Python Socket Connection\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:socket\\\\.(?:socket|create_connection|connect)\\\\s*\\\\(|from\\\\s+socket\\\\s+import)\", \"\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"code_obfuscation\",\n\t\trecommendation: `Network socket creation detected.`\n\t},\n\t{\n\t\tname: \"Python Magic Attributes\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:__builtins__|__globals__|__subclasses__|__class__|__bases__|__mro__|__dict__)\", \"\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"code_obfuscation\",\n\t\trecommendation: `CRITICAL: Access to Python magic attributes detected.`\n\t},\n\t{\n\t\tname: \"Python setattr/delattr Reflection\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:(?:setattr|delattr)\\\\s*\\\\(\\\\s*\\\\w+\\\\s*,\\\\s*['\\\\\\\"])\", \"\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"code_obfuscation\",\n\t\trecommendation: `Dynamic attribute manipulation via setattr/delattr.`\n\t},\n\t{\n\t\tname: \"Suspicious open() in Agent Input\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:open\\\\s*\\\\(\\\\s*['\\\\\\\"]|open\\\\s*\\\\(\\\\s*[a-zA-Z_]+\\\\s*[,\\\\)]|\\\\['open'\\\\]|\\\\[\\\\\\\"open\\\\\\\"\\\\])\", \"\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"code_obfuscation\",\n\t\trecommendation: `File open() call detected in agent input.`\n\t},\n\t{\n\t\tname: \"Multi-Part String Assembly\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:['\\\\\\\"][^'\\\\\\\"]{1,8}['\\\\\\\"]\\\\s*\\\\+\\\\s*['\\\\\\\"][^'\\\\\\\"]{1,8}['\\\\\\\"]\\\\s*\\\\+\\\\s*['\\\\\\\"][^'\\\\\\\"]{1,8}['\\\\\\\"])\", \"\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"code_obfuscation\",\n\t\trecommendation: `Three or more short string fragments concatenated.`\n\t},\n\t{\n\t\tname: \"API Key Leak\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:(?:api[_-]?key|apikey|api[_-]?secret|access[_-]?token|auth[_-]?token|bearer)\\\\s*[:=]\\\\s*['\\\\\\\"]?[A-Za-z0-9_\\\\-]{20,})\", \"\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"data_exfiltration\",\n\t\trecommendation: `CRITICAL: Hardcoded API key or access token found.`\n\t},\n\t{\n\t\tname: \"Private Key Material\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:-----BEGIN\\\\s+(?:RSA|EC|DSA|OPENSSH|PGP)?\\\\s*PRIVATE\\\\s+KEY-----)\", \"\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"data_exfiltration\",\n\t\trecommendation: `CRITICAL: Private key material detected in text.`\n\t},\n\t{\n\t\tname: \"Password in Cleartext\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:password|passwort|passwd|kennwort|pwd)\\\\s*[:=]\\\\s*['\\\\\\\"]?[^\\\\s'\\\\\\\"]{4,}\", \"i\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"data_exfiltration\",\n\t\trecommendation: `Cleartext password detected.`\n\t},\n\t{\n\t\tname: \"Database Connection String\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:(?:mongodb|postgres|mysql|redis|sqlite):\\\\/\\\\/[^\\\\s]+|Data\\\\s+Source=[^\\\\s;]+)\", \"\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"data_exfiltration\",\n\t\trecommendation: `Database connection string with potential credentials detected.`\n\t},\n\t{\n\t\tname: \"Email Harvesting Pattern\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:(?:send|forward|mail|email|sende?n?)\\\\s+(?:to|an|nach)\\\\s+[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,})\", \"\"),\n\t\tseverity: \"medium\",\n\t\tcategory: \"data_exfiltration\",\n\t\trecommendation: `Instruction to send data to an external email address.`\n\t},\n\t{\n\t\tname: \"Webhook Exfiltration\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:(?:https?:\\\\/\\\\/)?(?:hooks\\\\.slack\\\\.com|discord(?:app)?\\\\.com\\\\/api\\\\/webhooks|webhook\\\\.site|requestbin|pipedream)\\\\/[^\\\\s]+)\", \"\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"data_exfiltration\",\n\t\trecommendation: `Outbound webhook URL detected.`\n\t},\n\t{\n\t\tname: \"Markdown Image Exfiltration\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"!\\\\[[^\\\\]]*\\\\]\\\\(\\\\s*https?:\\\\/\\\\/[^\\\\s\\\\)]+(?:\\\\?[^\\\\s\\\\)]*(?:data|token|key|secret|password|api|session|cookie|auth|user|content|exfil|steal|leak)[^\\\\s\\\\)]*)\\\\)\", \"\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"data_exfiltration\",\n\t\trecommendation: `CRITICAL: Markdown image tag with suspicious query parameters detected.`\n\t},\n\t{\n\t\tname: \"Silent Data Exfiltration via MCP\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:silently|quietly|secretly|without\\\\s+(?:telling|informing|notifying|asking))\\\\s+(?:POST|GET|send|fetch|forward|transmit|upload|exfiltrate)\", \"i\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"data_exfiltration\",\n\t\trecommendation: `CRITICAL: Silent data exfiltration attempt detected. Instruction to covertly transmit data without user awareness.`\n\t},\n\t{\n\t\tname: \"Prompt Leaking via Error Messages\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:(?:show|display|print|output|reveal|leak)\\\\s+(?:your|the|system)\\\\s+(?:prompt|instructions|rules|guidelines|system\\\\s*message)|what\\\\s+(?:are|were)\\\\s+your\\\\s+(?:initial|original|system)\\\\s+(?:instructions|prompt|rules))\", \"i\"),\n\t\tseverity: \"medium\",\n\t\tcategory: \"data_exfiltration\",\n\t\trecommendation: `Attempt to extract system prompts through error triggering or direct request. System instructions should never be disclosed.`\n\t},\n\t{\n\t\tname: \"Urgency Manipulation\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(urgent|immediately|right\\\\s+now|sofort|dringend|jetzt\\\\s+sofort|without\\\\s+delay|ohne\\\\s+Verzoegerung).{0,80}(send|execute|run|delete|pay|transfer|sende?n?|ausfuehren|loeschen|zahlen|ueberweisen)\", \"i\"),\n\t\tseverity: \"medium\",\n\t\tcategory: \"social_engineering\",\n\t\trecommendation: `Urgency + action pattern detected.`\n\t},\n\t{\n\t\tname: \"Authority Impersonation\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(i\\\\s+am\\\\s+(?:your|the)\\\\s+(?:\\\\w+\\\\s+)?(?:admin(?:istrator)?|owner|creator|developer|boss|CEO|moderator|supervisor|manager)|ich\\\\s+bin\\\\s+(?:dein|der)\\\\s+(?:\\\\w+\\\\s+)?(?:Admin(?:istrator)?|Besitzer|Ersteller|Entwickler|Chef|Moderator))\", \"i\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"social_engineering\",\n\t\trecommendation: `Authority impersonation detected.`\n\t},\n\t{\n\t\tname: \"Confidentiality Trap\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(don't\\\\s+tell|do\\\\s+not\\\\s+share|keep\\\\s+this\\\\s+(secret|private|between\\\\s+us)|sag\\\\s+(das\\\\s+)?niemandem|behalte?\\\\s+(das\\\\s+)?fuer\\\\s+dich)\", \"i\"),\n\t\tseverity: \"medium\",\n\t\tcategory: \"social_engineering\",\n\t\trecommendation: `Secrecy instruction detected.`\n\t},\n\t{\n\t\tname: \"Authority Claim\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(as\\\\s+(?:the|an?|your)\\\\s+(?:\\\\w+\\\\s+)?(?:administrator|moderator|supervisor|manager|authorized\\\\s+(?:user|person|agent))|i\\\\s+(?:am|have\\\\s+been)\\\\s+authorized\\\\s+(?:to|by)|with\\\\s+(?:admin|root|elevated)\\\\s+(?:access|privileges?|permissions?)|speaking\\\\s+(?:as|on\\\\s+behalf\\\\s+of)\\\\s+(?:the\\\\s+)?(?:system|admin|management))\", \"i\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"social_engineering\",\n\t\trecommendation: `Authority claim detected.`\n\t},\n\t{\n\t\tname: \"Credential Phishing\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(your\\\\s+(?:API\\\\s+key|password|token|credentials?|account|session)\\\\s+(?:has\\\\s+)?(?:expired|been\\\\s+(?:compromised|revoked|suspended|locked|disabled|reset))|(?:verify|confirm|re-?enter|provide|update)\\\\s+your\\\\s+(?:password|credentials?|API\\\\s+key|token|login)|(?:click\\\\s+here|visit\\\\s+this\\\\s+link|go\\\\s+to)\\\\s+to\\\\s+(?:verify|restore|unlock|reactivate)\\\\s+your\\\\s+account)\", \"i\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"social_engineering\",\n\t\trecommendation: `Credential phishing pattern detected.`\n\t},\n\t{\n\t\tname: \"Bash Command Substitution $(...)\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"\\\\$\\\\(\\\\s*(?:cat|curl|wget|ls|id|whoami|uname|env|printenv|nc|ncat|bash|sh|python|perl|ruby|php|node|echo|head|tail|grep|find|awk|sed|chmod|chown|rm|dd|mkfs|passwd|ssh|scp|nmap|dig|host|ping|kill|ps|ifconfig|ip)\\\\b\", \"\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"shell_injection\",\n\t\trecommendation: `CRITICAL: Bash command substitution $() detected with a shell command.`\n\t},\n\t{\n\t\tname: \"Backtick Command Substitution\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"`\\\\s*(?:cat|curl|wget|ls|id|whoami|uname|env|printenv|nc|ncat|bash|sh|python|perl|ruby|php|node|echo|head|tail|grep|find|awk|sed|chmod|chown|rm|dd|mkfs|passwd|ssh|scp|nmap|dig|host|ping|kill|ps|ifconfig|ip)\\\\b[^`]*`\", \"\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"shell_injection\",\n\t\trecommendation: `CRITICAL: Backtick command substitution detected with a shell command.`\n\t},\n\t{\n\t\tname: \"PHP/Ruby system() Call\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:system|passthru|shell_exec|popen|proc_open)\\\\s*\\\\(\\\\s*['\\\\\\\"]\", \"\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"shell_injection\",\n\t\trecommendation: `CRITICAL: Shell execution function call detected (PHP/Ruby system/passthru/shell_exec).`\n\t},\n\t{\n\t\tname: \"Java Runtime.exec()\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:Runtime\\\\s*\\\\.\\\\s*getRuntime\\\\s*\\\\(\\\\s*\\\\)\\\\s*\\\\.\\\\s*exec\\\\s*\\\\(|ProcessBuilder\\\\s*\\\\(\\\\s*(?:\\\\[|new\\\\s|Arrays\\\\.asList|List\\\\.of|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*'))\", \"\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"shell_injection\",\n\t\trecommendation: `CRITICAL: Java system command execution via Runtime.exec() or ProcessBuilder detected.`\n\t},\n\t{\n\t\tname: \"Node.js child_process\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:child_process\\\\s*\\\\.\\\\s*(?:exec|execSync|spawn|spawnSync|execFile|execFileSync|fork)\\\\s*\\\\(|require\\\\s*\\\\(\\\\s*['\\\\\\\"]child_process['\\\\\\\"]\\\\s*\\\\))\", \"\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"shell_injection\",\n\t\trecommendation: `CRITICAL: Node.js child_process execution detected.`\n\t},\n\t{\n\t\tname: \"Forced Tool Call Manipulation\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:tool_choice|function_call|force\\\\s+(?:call|invoke|execute|run))\\\\s*[:=]\\\\s*(?:force|required|always|auto).*(?:send_email|http|fetch|exec)\", \"i\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"tool_manipulation\",\n\t\trecommendation: `CRITICAL: Forced tool call manipulation detected. Attempt to override tool selection and force execution of specific tools.`\n\t},\n\t{\n\t\tname: \"MCP Rug Pull Detection\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:schema.*(?:changed|modified|updated|replaced|overwritten)|tool.*description.*(?:differ|changed|mismatch)|(?:after|post).*approval.*(?:change|modify|update|replace).*(?:tool|schema|description))\", \"i\"),\n\t\tseverity: \"critical\",\n\t\tcategory: \"tool_manipulation\",\n\t\trecommendation: `CRITICAL: MCP rug pull pattern detected. Tool schema or description changed after initial approval.`\n\t},\n\t{\n\t\tname: \"MCP Schema Hash Mismatch\",\n\t\tregex: /* @__PURE__ */ new RegExp(\"(?:hash\\\\s*(?:mismatch|changed|differs?|invalid)|checksum\\\\s*(?:fail|mismatch|changed)|schema\\\\s*(?:drift|tamper|integrity))\", \"i\"),\n\t\tseverity: \"high\",\n\t\tcategory: \"tool_manipulation\",\n\t\trecommendation: `Schema hash or checksum mismatch detected. Tool definition may have been tampered with after approval.`\n\t}\n];\n//#endregion\nexport { ALPHANUMERIC, ALPHANUMERIC_UPPER, BASE64_MAX_DECODED_BYTES, BASE64_MAX_RECURSION_DEPTH, CLAWGUARD_PATTERNS, CLAWGUARD_PATTERN_COUNT, CREDENTIAL_PATTERNS, DEFAULT_ENTROPY_THRESHOLD_BITS_PER_CHAR, HEX_LOWER, PermissionBudgetError, checkPermissionBudget, checkPermissionEscalation, collapseWhitespace, collectPermissionViolations, decodeBase64Substrings, decodeHomoglyphs, encodeSkillName, isDomainAllowed, isPathAllowed, isPathAllowedWithRealpath, normalizeForScan, resolve, reverseLeet, scan, shannonEntropy, sortVersions, stripZeroWidth };\n\n//# sourceMappingURL=index.js.map","import crypto from 'node:crypto';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nimport { resolve } from '@internals/helpers';\nimport {\n LEGACY_LOCKFILE_FILENAME,\n LEGACY_MANIFEST_FILENAME,\n LOCKFILE_FILENAME,\n LOCKFILE_VERSION,\n MANIFEST_FILENAME,\n type Permissions,\n type SkillsLock\n} from '@internals/schemas';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { extract } from 'tar';\nimport { z } from 'zod';\n\nimport { TankApiClient } from '~/lib/api-client.js';\n\nconst SCOPED_NAME_PATTERN = /^@[a-z0-9-]+\\/[a-z0-9][a-z0-9-]*$/;\n\ninterface VersionInfo {\n version: string;\n integrity: string;\n auditScore: number;\n auditStatus: string;\n publishedAt: string;\n}\n\ninterface VersionMetadata {\n name: string;\n version: string;\n description?: string;\n integrity: string;\n permissions: Permissions;\n auditScore: number;\n auditStatus: string;\n downloadUrl: string;\n publishedAt: string;\n}\n\nfunction textResult(text: string, isError?: boolean) {\n return {\n content: [{ type: 'text' as const, text }],\n ...(isError ? { isError: true } : {})\n };\n}\n\nfunction getSkillDir(projectDir: string, skillName: string): string {\n if (skillName.startsWith('@')) {\n const [scope, name] = skillName.split('/');\n return path.join(projectDir, '.tank', 'skills', scope, name);\n }\n return path.join(projectDir, '.tank', 'skills', skillName);\n}\n\nexport function registerInstallSkillTool(server: McpServer): void {\n server.tool(\n 'install-skill',\n `Install a skill from the Tank registry. Resolves version, downloads tarball, verifies SHA-512 integrity, extracts files, and updates ${MANIFEST_FILENAME} + ${LOCKFILE_FILENAME}.`,\n {\n name: z.string().describe('Skill name in @org/name format'),\n version: z.string().optional().describe('Specific version or semver range (default: latest)'),\n directory: z.string().optional().describe('Project directory (defaults to current working directory)')\n },\n async ({ name, version: versionRange, directory }) => {\n // 1. Validate scoped name\n if (!SCOPED_NAME_PATTERN.test(name)) {\n return textResult(\n `Validation error: Skill name \"${name}\" must use the @org/name format (e.g. @acme/my-skill).`,\n true\n );\n }\n\n const client = new TankApiClient();\n\n // 2. Check authentication\n if (!client.isAuthenticated) {\n return textResult('Not authenticated. Use the \"login\" tool first to authenticate with Tank.', true);\n }\n\n const dir = directory ? path.resolve(directory) : process.cwd();\n const range = versionRange ?? '*';\n\n // 3. Read or create manifest (tank.json, with skills.json fallback)\n let skillsJsonPath = path.join(dir, MANIFEST_FILENAME);\n if (!fs.existsSync(skillsJsonPath) && fs.existsSync(path.join(dir, LEGACY_MANIFEST_FILENAME))) {\n skillsJsonPath = path.join(dir, LEGACY_MANIFEST_FILENAME);\n }\n let skillsJson: Record<string, unknown> = { skills: {} };\n if (fs.existsSync(skillsJsonPath)) {\n try {\n const raw = fs.readFileSync(skillsJsonPath, 'utf-8');\n skillsJson = JSON.parse(raw) as Record<string, unknown>;\n } catch {\n return textResult(`Failed to read or parse ${path.basename(skillsJsonPath)}.`, true);\n }\n } else {\n skillsJsonPath = path.join(dir, MANIFEST_FILENAME);\n skillsJson = { skills: {} };\n fs.mkdirSync(dir, { recursive: true });\n fs.writeFileSync(skillsJsonPath, `${JSON.stringify(skillsJson, null, 2)}\\n`);\n }\n\n // 4. Read existing lockfile (tank.lock, with skills.lock fallback)\n let lockPath = path.join(dir, LOCKFILE_FILENAME);\n if (!fs.existsSync(lockPath) && fs.existsSync(path.join(dir, LEGACY_LOCKFILE_FILENAME))) {\n lockPath = path.join(dir, LEGACY_LOCKFILE_FILENAME);\n }\n let lock: SkillsLock = { lockfileVersion: LOCKFILE_VERSION, skills: {} };\n if (fs.existsSync(lockPath)) {\n try {\n const raw = fs.readFileSync(lockPath, 'utf-8');\n lock = JSON.parse(raw) as SkillsLock;\n } catch {\n lock = { lockfileVersion: LOCKFILE_VERSION, skills: {} };\n }\n }\n\n // 5. Fetch available versions\n const encodedName = encodeURIComponent(name);\n const versionsResult = await client.fetch<{ name: string; versions: VersionInfo[] }>(\n `/api/v1/skills/${encodedName}/versions`\n );\n\n if (!versionsResult.ok) {\n if (versionsResult.status === 401 || versionsResult.status === 403) {\n return textResult('Authentication failed. Use the \"login\" tool to authenticate with Tank.', true);\n }\n if (versionsResult.status === 404) {\n return textResult(`Skill not found: \"${name}\" does not exist in the Tank registry.`, true);\n }\n if (versionsResult.status === 0) {\n return textResult(\n `Cannot reach the Tank registry. Check your network connection and try again.\\nError: ${versionsResult.error}`,\n true\n );\n }\n return textResult(`Failed to fetch versions for ${name}: ${versionsResult.error}`, true);\n }\n\n const availableVersions = versionsResult.data.versions.map((v) => v.version);\n\n // 6. Resolve best version\n const resolved = resolve(range, availableVersions);\n if (!resolved) {\n return textResult(\n `No version of ${name} satisfies range \"${range}\". Available versions: ${availableVersions.join(', ')}`,\n true\n );\n }\n\n // 7. Check if already installed\n const lockKey = `${name}@${resolved}`;\n if (lock.skills[lockKey]) {\n return textResult(`${name}@${resolved} is already installed. No changes needed.`);\n }\n\n // 8. Fetch version metadata\n const metaResult = await client.fetch<VersionMetadata>(`/api/v1/skills/${encodedName}/${resolved}`);\n\n if (!metaResult.ok) {\n if (metaResult.status === 404) {\n return textResult(`Version ${resolved} of ${name} not found in the registry.`, true);\n }\n return textResult(`Failed to fetch metadata for ${name}@${resolved}: ${metaResult.error}`, true);\n }\n\n const metadata = metaResult.data;\n\n // 9. Download tarball\n let tarballBuffer: Buffer;\n try {\n const downloadRes = await fetch(metadata.downloadUrl);\n if (!downloadRes.ok) {\n return textResult(\n `Failed to download tarball for ${name}@${resolved}: ${downloadRes.status} ${downloadRes.statusText}`,\n true\n );\n }\n tarballBuffer = Buffer.from(await downloadRes.arrayBuffer());\n } catch (err) {\n return textResult(\n `Network error downloading tarball for ${name}@${resolved}: ${err instanceof Error ? err.message : String(err)}`,\n true\n );\n }\n\n // 10. Verify SHA-512 integrity\n const hash = crypto.createHash('sha512').update(tarballBuffer).digest('base64');\n const computedIntegrity = `sha512-${hash}`;\n\n if (computedIntegrity !== metadata.integrity) {\n return textResult(\n `Integrity verification failed for ${name}@${resolved}.\\n` +\n `Expected: ${metadata.integrity}\\n` +\n `Got: ${computedIntegrity}\\n\\n` +\n 'The tarball may have been tampered with. No files were extracted.',\n true\n );\n }\n\n // 11. Extract tarball safely\n const extractDir = getSkillDir(dir, name);\n fs.mkdirSync(extractDir, { recursive: true });\n\n try {\n await extractSafely(tarballBuffer, extractDir);\n } catch (err) {\n // Clean up on extraction failure\n fs.rmSync(extractDir, { recursive: true, force: true });\n return textResult(\n `Failed to extract tarball for ${name}@${resolved}: ${err instanceof Error ? err.message : String(err)}`,\n true\n );\n }\n\n // 12. Update skills.json\n const skills = (skillsJson.skills ?? {}) as Record<string, string>;\n skills[name] = range === '*' ? `^${resolved}` : range;\n skillsJson.skills = skills;\n fs.writeFileSync(skillsJsonPath, `${JSON.stringify(skillsJson, null, 2)}\\n`);\n\n // 13. Update skills.lock\n lock.skills[lockKey] = {\n resolved: metadata.downloadUrl,\n integrity: computedIntegrity,\n permissions: metadata.permissions ?? {},\n audit_score: metadata.auditScore ?? null\n };\n\n // Sort keys alphabetically for determinism\n const sortedSkills: Record<string, unknown> = {};\n for (const key of Object.keys(lock.skills).sort()) {\n sortedSkills[key] = lock.skills[key];\n }\n lock.skills = sortedSkills as SkillsLock['skills'];\n\n fs.mkdirSync(path.dirname(lockPath), { recursive: true });\n fs.writeFileSync(lockPath, `${JSON.stringify(lock, null, 2)}\\n`);\n\n // Build response\n const score =\n metadata.auditScore !== null && metadata.auditScore !== undefined\n ? `${metadata.auditScore.toFixed(1)}/10`\n : 'pending';\n\n const lines: string[] = [\n `## Installed ${name}@${resolved}`,\n '',\n `**Integrity:** SHA-512 verified`,\n `**Audit Score:** ${score}`,\n `**Extracted to:** ${extractDir}`,\n '',\n '### Updated files',\n `- ${path.basename(skillsJsonPath)}: added \"${name}\": \"${skills[name]}\"`,\n `- ${path.basename(lockPath)}: added ${lockKey}`\n ];\n\n return textResult(lines.join('\\n'));\n }\n );\n}\n\n/**\n * Extract a tarball safely with security checks.\n * Rejects: absolute paths, path traversal (..), symlinks/hardlinks.\n */\nasync function extractSafely(tarball: Buffer, destDir: string): Promise<void> {\n const tmpTarball = path.join(destDir, '.tmp-tarball.tgz');\n fs.writeFileSync(tmpTarball, tarball);\n\n try {\n await extract({\n file: tmpTarball,\n cwd: destDir,\n filter: (entryPath: string) => {\n if (path.isAbsolute(entryPath)) {\n throw new Error(`Absolute path in tarball: ${entryPath}`);\n }\n if (entryPath.split('/').includes('..') || entryPath.split(path.sep).includes('..')) {\n throw new Error(`Path traversal in tarball: ${entryPath}`);\n }\n return true;\n },\n onReadEntry: (entry) => {\n if (entry.type === 'SymbolicLink' || entry.type === 'Link') {\n throw new Error(`Symlink/hardlink in tarball: ${entry.path}`);\n }\n }\n });\n } finally {\n if (fs.existsSync(tmpTarball)) {\n fs.unlinkSync(tmpTarball);\n }\n }\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\n\nconst SCOPED_NAME_PATTERN = /^@[a-z0-9-]+\\/[a-z0-9][a-z0-9-]*$/;\n\nexport function registerLinkSkillTool(server: McpServer): void {\n server.tool(\n 'link-skill',\n 'Link an installed skill into an agent workspace. Creates a symlink from the workspace .skills directory to the installed skill.',\n {\n name: z.string().describe('Skill name in @org/name format'),\n workspace: z.string().describe('Agent workspace directory path'),\n directory: z\n .string()\n .optional()\n .describe('Project directory where skills are installed (defaults to current working directory)')\n },\n async ({ name, workspace, directory }) => {\n if (!SCOPED_NAME_PATTERN.test(name)) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Validation error: Skill name \"${name}\" must use the @org/name format (e.g. @acme/my-skill).`\n }\n ],\n isError: true\n };\n }\n\n const projectDir = directory ? path.resolve(directory) : process.cwd();\n const workspaceDir = path.resolve(workspace);\n\n if (!fs.existsSync(workspaceDir)) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Error: Workspace directory does not exist: ${workspaceDir}`\n }\n ],\n isError: true\n };\n }\n\n const skillDir = getSkillDir(projectDir, name);\n if (!fs.existsSync(skillDir)) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Skill \"${name}\" is not installed. Install it first with \"install-skill\" before linking.`\n }\n ],\n isError: true\n };\n }\n\n const [scope, skillName] = name.split('/');\n const skillsLinkDir = path.join(workspaceDir, '.skills', scope);\n const symlinkPath = path.join(skillsLinkDir, skillName);\n\n try {\n const stats = fs.lstatSync(symlinkPath);\n if (stats.isSymbolicLink()) {\n const currentTarget = fs.readlinkSync(symlinkPath);\n const resolvedTarget = path.isAbsolute(currentTarget)\n ? currentTarget\n : path.resolve(path.dirname(symlinkPath), currentTarget);\n\n if (path.resolve(resolvedTarget) === path.resolve(skillDir)) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Skill \"${name}\" is already linked in ${workspaceDir}.`\n }\n ]\n };\n }\n\n fs.unlinkSync(symlinkPath);\n }\n } catch {\n // intentionally empty\n }\n\n fs.mkdirSync(skillsLinkDir, { recursive: true });\n fs.symlinkSync(skillDir, symlinkPath, 'dir');\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `Successfully linked \"${name}\" into ${workspaceDir}.\\nSymlink: ${symlinkPath} → ${skillDir}`\n }\n ]\n };\n }\n );\n}\n\nfunction getSkillDir(projectDir: string, skillName: string): string {\n if (skillName.startsWith('@')) {\n const [scope, name] = skillName.split('/');\n return path.join(projectDir, '.tank', 'skills', scope, name);\n }\n return path.join(projectDir, '.tank', 'skills', skillName);\n}\n","import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\n\nimport { TankApiClient } from '~/lib/api-client.js';\nimport { getConfig, setConfig } from '~/lib/config.js';\n\nconst DEFAULT_POLL_INTERVAL_MS = 2000;\nconst DEFAULT_TIMEOUT_MS = 5 * 60 * 1000; // 5 minutes\n\nexport function registerLoginTool(server: McpServer): void {\n server.tool(\n 'login',\n 'Authenticate with Tank using GitHub OAuth device flow. Opens browser for authorization.',\n {\n timeout: z.number().optional().describe('Timeout in milliseconds (default: 300000 = 5 minutes)')\n },\n async ({ timeout = DEFAULT_TIMEOUT_MS }) => {\n const client = new TankApiClient();\n const config = getConfig();\n\n // Check if already logged in with valid token\n if (config.token) {\n const authCheck = await client.verifyAuth();\n if (authCheck.valid) {\n const displayName = authCheck.user?.name ?? authCheck.user?.email ?? 'unknown user';\n return {\n content: [\n {\n type: 'text' as const,\n text: `Already logged in as ${displayName}.\\n\\nTo log out, delete ~/.tank/config.json or use the CLI: tank logout`\n }\n ]\n };\n }\n }\n\n // Start device flow\n const state = crypto.randomUUID();\n const startRes = await fetch(`${config.registry}/api/v1/cli-auth/start`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ state })\n });\n\n if (!startRes.ok) {\n const body = await startRes.json().catch(() => ({}));\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to start login flow: ${(body as { error?: string }).error ?? startRes.statusText}`\n }\n ]\n };\n }\n\n const { sessionCode } = (await startRes.json()) as {\n sessionCode: string;\n };\n\n // Return auth URL and poll for completion\n const deadline = Date.now() + timeout;\n const _authorized = false;\n let lastStatus = '';\n\n while (Date.now() < deadline) {\n try {\n const exchangeRes = await fetch(`${config.registry}/api/v1/cli-auth/exchange`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ sessionCode, state })\n });\n\n if (exchangeRes.ok) {\n const { token, user } = (await exchangeRes.json()) as {\n token: string;\n user: { name: string | null; email: string | null };\n };\n\n // Save token to config\n setConfig({ token, user: user as { name: string; email: string } });\n\n const displayName = user.name ?? user.email ?? 'unknown user';\n return {\n content: [\n {\n type: 'text' as const,\n text: `Successfully logged in as ${displayName}!\\n\\nYou can now use all Tank MCP tools: scan-skill, publish-skill, etc.`\n }\n ]\n };\n }\n\n // 400 means not yet authorized - keep polling\n if (exchangeRes.status !== 400) {\n const body = await exchangeRes.json().catch(() => ({}));\n return {\n content: [\n {\n type: 'text' as const,\n text: `Login failed: ${(body as { error?: string }).error ?? exchangeRes.statusText}`\n }\n ]\n };\n }\n\n // Check status and provide updates\n const newStatus = 'Waiting for authorization...';\n if (newStatus !== lastStatus) {\n lastStatus = newStatus;\n }\n } catch {\n // Network errors during polling are transient\n }\n\n await new Promise((resolve) => setTimeout(resolve, DEFAULT_POLL_INTERVAL_MS));\n }\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `Login timed out. The authorization link may have expired.\\n\\nTry again: tank login`\n }\n ]\n };\n }\n );\n}\n","import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\n\nimport { getConfig, setConfig } from '~/lib/config.js';\n\nexport function registerLogoutTool(server: McpServer): void {\n server.tool('logout', 'Log out of Tank by clearing local credentials.', {}, async () => {\n const config = getConfig();\n\n if (!config.token) {\n return {\n content: [{ type: 'text' as const, text: 'Not logged in. No credentials to clear.' }]\n };\n }\n\n setConfig({ token: undefined, user: undefined });\n\n // Also clear env-based token so subsequent tool calls in this\n // process don't re-read it via getConfig().\n delete process.env.TANK_TOKEN;\n\n return {\n content: [{ type: 'text' as const, text: 'Successfully logged out.' }]\n };\n });\n}\n","import crypto from 'node:crypto';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport type { Readable } from 'node:stream';\n\nimport { LEGACY_MANIFEST_FILENAME, MANIFEST_FILENAME, skillsJsonSchema } from '@internals/schemas';\nimport ignore from 'ignore';\nimport { create } from 'tar';\n\n// Limits\nconst MAX_PACKAGE_SIZE = 50 * 1024 * 1024; // 50MB\nconst MAX_FILE_COUNT = 1000;\n\n// Default ignore patterns\nconst DEFAULT_IGNORES = ['node_modules', '.git', '.env*', '*.log', '.tank', '.DS_Store'];\n\n// Always ignored regardless of ignore file contents\nconst ALWAYS_IGNORED = ['node_modules', '.git'];\n\n// Ignore file names (not packed into tarball)\nconst IGNORE_FILES = ['.tankignore', '.gitignore'];\n\nexport interface PackResult {\n tarball: Buffer;\n integrity: string; // \"sha512-{base64}\"\n fileCount: number;\n totalSize: number;\n readme: string;\n files: string[];\n manifest: Record<string, unknown>;\n}\n\n/**\n * Pack a skill directory into a .tgz tarball with integrity hashing.\n */\nexport async function pack(directory: string): Promise<PackResult> {\n const absDir = path.resolve(directory);\n\n // 1. Verify directory exists\n if (!fs.existsSync(absDir)) {\n throw new Error(`Directory does not exist: ${absDir}`);\n }\n\n const stat = fs.statSync(absDir);\n if (!stat.isDirectory()) {\n throw new Error(`Not a directory: ${absDir}`);\n }\n\n // 2. Verify manifest (tank.json or skills.json) exists and is valid\n let manifestPath = path.join(absDir, MANIFEST_FILENAME);\n let manifestFilename = MANIFEST_FILENAME;\n if (!fs.existsSync(manifestPath)) {\n manifestPath = path.join(absDir, LEGACY_MANIFEST_FILENAME);\n manifestFilename = LEGACY_MANIFEST_FILENAME;\n }\n if (!fs.existsSync(manifestPath)) {\n throw new Error(`Missing required file: ${MANIFEST_FILENAME}`);\n }\n\n let skillsJsonContent: string;\n try {\n skillsJsonContent = fs.readFileSync(manifestPath, 'utf-8');\n } catch {\n throw new Error(`Failed to read ${manifestFilename}`);\n }\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(skillsJsonContent);\n } catch {\n throw new Error(`Invalid ${manifestFilename}: not valid JSON`);\n }\n\n const validation = skillsJsonSchema.safeParse(parsed);\n if (!validation.success) {\n const issues = validation.error.issues.map((i) => ` - ${i.path.join('.')}: ${i.message}`).join('\\n');\n throw new Error(`Invalid ${manifestFilename}:\\n${issues}`);\n }\n\n // 3. Verify SKILL.md exists and read its content\n const skillMdPath = path.join(absDir, 'SKILL.md');\n if (!fs.existsSync(skillMdPath)) {\n throw new Error('Missing required file: SKILL.md');\n }\n\n let readmeContent: string;\n try {\n readmeContent = fs.readFileSync(skillMdPath, 'utf-8');\n } catch {\n throw new Error('Failed to read SKILL.md');\n }\n\n // 4. Build ignore filter\n const ig = buildIgnoreFilter(absDir);\n\n // 5. Collect files with validation\n const files = collectFiles(absDir, absDir, ig);\n\n // 6. Enforce file count limit\n if (files.length > MAX_FILE_COUNT) {\n throw new Error(`Too many files: ${files.length} exceeds maximum of ${MAX_FILE_COUNT}`);\n }\n\n // 7. Calculate total size of source files\n let totalSize = 0;\n for (const file of files) {\n const filePath = path.join(absDir, file);\n const fileStat = fs.statSync(filePath);\n totalSize += fileStat.size;\n }\n\n // 8. Create tarball\n const tarball = await createTarball(absDir, files);\n\n // 9. Enforce tarball size limit\n if (tarball.length > MAX_PACKAGE_SIZE) {\n throw new Error(`Tarball too large: ${tarball.length} bytes exceeds maximum of ${MAX_PACKAGE_SIZE} bytes (50MB)`);\n }\n\n // 10. Compute integrity hash\n const hash = crypto.createHash('sha512').update(tarball).digest('base64');\n const integrity = `sha512-${hash}`;\n\n return {\n tarball,\n integrity,\n fileCount: files.length,\n totalSize,\n readme: readmeContent,\n files,\n manifest: validation.data as Record<string, unknown>\n };\n}\n\n/**\n * Pack a directory into a .tgz tarball for security scanning.\n *\n * Unlike pack(), this function does NOT require skills.json or SKILL.md.\n * It applies the same security checks (no symlinks, no path traversal, etc.)\n * and returns the same PackResult interface with a synthesised manifest.\n *\n * Validates:\n * - Directory exists\n * - No symlinks or hardlinks\n * - No path traversal (.. components)\n * - No absolute paths\n * - File count <= 1000\n * - Tarball size <= 50MB\n *\n * Does NOT validate:\n * - skills.json existence or validity\n * - SKILL.md existence (but reads it if present)\n */\nexport async function packForScan(directory: string): Promise<PackResult> {\n const absDir = path.resolve(directory);\n\n // 1. Verify directory exists\n if (!fs.existsSync(absDir)) {\n throw new Error(`Directory does not exist: ${absDir}`);\n }\n\n const stat = fs.statSync(absDir);\n if (!stat.isDirectory()) {\n throw new Error(`Not a directory: ${absDir}`);\n }\n\n // 2. Try to read SKILL.md if it exists (optional for scan)\n let readmeContent = '';\n const skillMdPath = path.join(absDir, 'SKILL.md');\n if (fs.existsSync(skillMdPath)) {\n try {\n readmeContent = fs.readFileSync(skillMdPath, 'utf-8');\n } catch {\n readmeContent = '';\n }\n }\n\n // 3. Build ignore filter\n const ig = buildIgnoreFilter(absDir);\n\n // 4. Collect files with validation\n const files = collectFiles(absDir, absDir, ig);\n\n // 5. Enforce file count limit\n if (files.length > MAX_FILE_COUNT) {\n throw new Error(`Too many files: ${files.length} exceeds maximum of ${MAX_FILE_COUNT}`);\n }\n\n // 6. Check for empty directory (no files to scan)\n if (files.length === 0) {\n throw new Error('No files to scan: directory is empty or all files are ignored');\n }\n\n // 7. Calculate total size of source files\n let totalSize = 0;\n for (const file of files) {\n const filePath = path.join(absDir, file);\n const fileStat = fs.statSync(filePath);\n totalSize += fileStat.size;\n }\n\n // 8. Create tarball\n const tarball = await createTarball(absDir, files);\n\n // 9. Enforce tarball size limit\n if (tarball.length > MAX_PACKAGE_SIZE) {\n throw new Error(`Tarball too large: ${tarball.length} bytes exceeds maximum of ${MAX_PACKAGE_SIZE} bytes (50MB)`);\n }\n\n // 10. Compute integrity hash\n const hash = crypto.createHash('sha512').update(tarball).digest('base64');\n const integrity = `sha512-${hash}`;\n\n // 11. Synthesise a minimal manifest\n const dirName = path.basename(absDir);\n const manifest: Record<string, unknown> = {\n name: dirName,\n version: '0.0.0',\n description: 'Local scan'\n };\n\n return {\n tarball,\n integrity,\n fileCount: files.length,\n totalSize,\n readme: readmeContent,\n files,\n manifest\n };\n}\n\n/**\n * Build an ignore filter from .tankignore, .gitignore, or defaults.\n */\nfunction buildIgnoreFilter(dir: string): ReturnType<typeof ignore> {\n const ig = ignore();\n\n ig.add(ALWAYS_IGNORED);\n\n const tankIgnorePath = path.join(dir, '.tankignore');\n const gitIgnorePath = path.join(dir, '.gitignore');\n\n if (fs.existsSync(tankIgnorePath)) {\n const content = fs.readFileSync(tankIgnorePath, 'utf-8');\n ig.add(content);\n ig.add(IGNORE_FILES);\n } else if (fs.existsSync(gitIgnorePath)) {\n const content = fs.readFileSync(gitIgnorePath, 'utf-8');\n ig.add(content);\n ig.add(IGNORE_FILES);\n } else {\n ig.add(DEFAULT_IGNORES);\n }\n\n return ig;\n}\n\n/**\n * Recursively collect files from a directory.\n */\nfunction collectFiles(baseDir: string, currentDir: string, ig: ReturnType<typeof ignore>): string[] {\n const files: string[] = [];\n const entries = fs.readdirSync(currentDir, { withFileTypes: true });\n\n for (const entry of entries) {\n const fullPath = path.join(currentDir, entry.name);\n const relativePath = path.relative(baseDir, fullPath);\n\n // Security: check for path traversal\n if (relativePath.split(path.sep).includes('..')) {\n throw new Error(`Path traversal detected: \"${relativePath}\" contains \"..\" component`);\n }\n\n // Security: check for absolute paths\n if (path.isAbsolute(relativePath)) {\n throw new Error(`Absolute path detected: \"${relativePath}\"`);\n }\n\n // Security: check for symlinks\n const lstatResult = fs.lstatSync(fullPath);\n if (lstatResult.isSymbolicLink()) {\n throw new Error(`Symlink detected: \"${relativePath}\" — symlinks are not allowed`);\n }\n\n const pathForIgnore = lstatResult.isDirectory() ? `${relativePath}/` : relativePath;\n\n if (ig.ignores(pathForIgnore)) {\n continue;\n }\n\n if (lstatResult.isDirectory()) {\n const subFiles = collectFiles(baseDir, fullPath, ig);\n files.push(...subFiles);\n } else if (lstatResult.isFile()) {\n files.push(relativePath);\n }\n }\n\n return files;\n}\n\n/**\n * Create a gzipped tarball from the given files.\n */\nasync function createTarball(cwd: string, files: string[]): Promise<Buffer> {\n return new Promise<Buffer>((resolve, reject) => {\n const chunks: Buffer[] = [];\n\n const stream = create(\n {\n gzip: true,\n cwd,\n portable: true\n },\n files\n ) as unknown as Readable;\n\n stream.on('data', (chunk: Buffer) => {\n chunks.push(chunk);\n });\n\n stream.on('end', () => {\n resolve(Buffer.concat(chunks));\n });\n\n stream.on('error', (err: Error) => {\n reject(err);\n });\n });\n}\n","import path from 'node:path';\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\n\nimport { TankApiClient } from '~/lib/api-client.js';\nimport { type PackResult, pack } from '~/lib/packer.js';\n\ninterface PublishStartResponse {\n uploadUrl: string;\n skillId: string;\n versionId: string;\n}\n\ninterface PublishConfirmResponse {\n success: boolean;\n name: string;\n version: string;\n auditScore: number | null;\n scanVerdict: string | null;\n}\n\nexport function registerPublishSkillTool(server: McpServer): void {\n server.tool(\n 'publish-skill',\n 'Publish a skill to the Tank registry. Requires authentication.',\n {\n directory: z.string().optional().describe('Directory to publish (default: current directory)'),\n visibility: z.enum(['public', 'private']).optional().default('public').describe('Package visibility'),\n dryRun: z.boolean().optional().default(false).describe('Validate without publishing')\n },\n async ({ directory = '.', visibility = 'public', dryRun = false }) => {\n const absDir = path.resolve(directory);\n const client = new TankApiClient();\n\n // Check auth (skip for dry run)\n if (!dryRun && !client.isAuthenticated) {\n return {\n content: [\n {\n type: 'text' as const,\n text: 'You need to log in first. Use the login tool to authenticate with Tank.\\n\\nExample: \"Log in to Tank\"'\n }\n ]\n };\n }\n\n if (!dryRun) {\n const authCheck = await client.verifyAuth();\n if (!authCheck.valid) {\n return {\n content: [\n {\n type: 'text' as const,\n text: 'Your session has expired. Use the login tool to authenticate again.'\n }\n ]\n };\n }\n }\n\n // Pack the skill\n let packResult: PackResult;\n try {\n packResult = await pack(absDir);\n } catch (err) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to pack skill: ${err instanceof Error ? err.message : String(err)}`\n }\n ]\n };\n }\n\n const manifest = packResult.manifest as { name?: string; version?: string; description?: string };\n const skillName = manifest.name ?? 'unknown';\n const skillVersion = manifest.version ?? '0.0.0';\n\n // Dry run: just validate and return summary\n if (dryRun) {\n const lines: string[] = [\n `## Dry Run for ${skillName}@${skillVersion}`,\n '',\n '**Validation:** ✅ PASSED',\n '',\n '### Package Summary',\n `- **Name:** ${skillName}`,\n `- **Version:** ${skillVersion}`,\n `- **Visibility:** ${visibility}`,\n `- **Files:** ${packResult.fileCount}`,\n `- **Size:** ${(packResult.totalSize / 1024).toFixed(1)}KB compressed`,\n `- **Integrity:** ${packResult.integrity.slice(0, 20)}...`,\n '',\n '### Manifest',\n `- **Description:** ${manifest.description ?? 'No description'}`,\n `- **Permissions:** ${JSON.stringify((manifest as Record<string, unknown>).permissions ?? {})}`,\n '',\n '### Files',\n ...packResult.files.slice(0, 10).map((f) => ` - ${f}`),\n packResult.files.length > 10 ? ` ... and ${packResult.files.length - 10} more` : '',\n '',\n 'Ready to publish. Say \"publish my skill\" when you\\'re ready.'\n ];\n\n return {\n content: [{ type: 'text' as const, text: lines.join('\\n') }]\n };\n }\n\n // Step 1: Start publish flow\n const startResult = await client.fetch<PublishStartResponse>('/api/v1/skills', {\n method: 'POST',\n body: JSON.stringify({\n manifest: { ...manifest, visibility },\n readme: packResult.readme,\n files: packResult.files\n })\n });\n\n if (!startResult.ok) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to start publish: ${startResult.error}`\n }\n ]\n };\n }\n\n const { uploadUrl, versionId } = startResult.data;\n\n // Step 2: Upload tarball\n const uploadRes = await fetch(uploadUrl, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/gzip'\n },\n body: new Uint8Array(packResult.tarball)\n });\n\n if (!uploadRes.ok) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to upload tarball: ${uploadRes.statusText}`\n }\n ]\n };\n }\n\n // Step 3: Confirm upload\n const confirmResult = await client.fetch<PublishConfirmResponse>('/api/v1/skills/confirm', {\n method: 'POST',\n body: JSON.stringify({\n versionId,\n integrity: packResult.integrity,\n fileCount: packResult.fileCount,\n tarballSize: packResult.tarball.length,\n readme: packResult.readme\n })\n });\n\n if (!confirmResult.ok) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to confirm publish: ${confirmResult.error}`\n }\n ]\n };\n }\n\n const confirm = confirmResult.data;\n const score = confirm.auditScore !== null ? `${confirm.auditScore.toFixed(1)}/10` : 'pending';\n\n const lines: string[] = [\n `## Published ${confirm.name}@${confirm.version}`,\n '',\n `**Status:** ✅ Successfully published`,\n `**Visibility:** ${visibility}`,\n `**Audit Score:** ${score}`,\n `**Scan Verdict:** ${confirm.scanVerdict ?? 'pending'}`,\n '',\n '### Package Details',\n `- **Files:** ${packResult.fileCount}`,\n `- **Size:** ${(packResult.totalSize / 1024).toFixed(1)}KB`,\n '',\n `View your skill: https://tankpkg.dev/skills/${confirm.name}`\n ];\n\n return {\n content: [{ type: 'text' as const, text: lines.join('\\n') }]\n };\n }\n );\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\n\nimport {\n LEGACY_LOCKFILE_FILENAME,\n LEGACY_MANIFEST_FILENAME,\n LOCKFILE_FILENAME,\n MANIFEST_FILENAME,\n type SkillsLock\n} from '@internals/schemas';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\n\nconst SCOPED_NAME_PATTERN = /^@[a-z0-9-]+\\/[a-z0-9][a-z0-9-]*$/;\n\nexport function registerRemoveSkillTool(server: McpServer): void {\n server.tool(\n 'remove-skill',\n `Remove an installed skill from the project. Removes from ${MANIFEST_FILENAME}, ${LOCKFILE_FILENAME}, and deletes skill files.`,\n {\n name: z.string().describe('Skill name in @org/name format'),\n directory: z.string().optional().describe('Project directory (defaults to current working directory)')\n },\n async ({ name, directory }) => {\n if (!SCOPED_NAME_PATTERN.test(name)) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Validation error: Skill name \"${name}\" must use the @org/name format (e.g. @acme/my-skill).`\n }\n ],\n isError: true\n };\n }\n\n const dir = directory ? path.resolve(directory) : process.cwd();\n const results: string[] = [];\n let skillFoundAnywhere = false;\n\n // Find manifest (tank.json or skills.json)\n let skillsJsonPath = path.join(dir, MANIFEST_FILENAME);\n if (!fs.existsSync(skillsJsonPath)) {\n skillsJsonPath = path.join(dir, LEGACY_MANIFEST_FILENAME);\n }\n if (fs.existsSync(skillsJsonPath)) {\n try {\n const raw = fs.readFileSync(skillsJsonPath, 'utf-8');\n const skillsJson = JSON.parse(raw) as Record<string, unknown>;\n const skills = (skillsJson.skills ?? {}) as Record<string, string>;\n\n if (name in skills) {\n skillFoundAnywhere = true;\n delete skills[name];\n skillsJson.skills = skills;\n fs.writeFileSync(skillsJsonPath, `${JSON.stringify(skillsJson, null, 2)}\\n`);\n results.push(`Removed \"${name}\" from ${path.basename(skillsJsonPath)}`);\n }\n } catch {\n results.push(`Warning: Failed to read or parse ${path.basename(skillsJsonPath)}`);\n }\n }\n\n // Find lockfile (tank.lock or skills.lock)\n let lockPath = path.join(dir, LOCKFILE_FILENAME);\n if (!fs.existsSync(lockPath)) {\n lockPath = path.join(dir, LEGACY_LOCKFILE_FILENAME);\n }\n if (fs.existsSync(lockPath)) {\n try {\n const raw = fs.readFileSync(lockPath, 'utf-8');\n const lock = JSON.parse(raw) as SkillsLock;\n let removedFromLock = false;\n\n for (const key of Object.keys(lock.skills)) {\n const lastAt = key.lastIndexOf('@');\n if (lastAt <= 0) continue;\n const keyName = key.slice(0, lastAt);\n if (keyName === name) {\n delete lock.skills[key];\n removedFromLock = true;\n skillFoundAnywhere = true;\n }\n }\n\n if (removedFromLock) {\n const sortedSkills: Record<string, unknown> = {};\n for (const key of Object.keys(lock.skills).sort()) {\n sortedSkills[key] = lock.skills[key];\n }\n lock.skills = sortedSkills as SkillsLock['skills'];\n fs.writeFileSync(lockPath, `${JSON.stringify(lock, null, 2)}\\n`);\n results.push(`Removed \"${name}\" from ${path.basename(lockPath)}`);\n }\n } catch {\n results.push(`Warning: Failed to read or parse ${path.basename(lockPath)}`);\n }\n }\n\n const skillDir = getSkillDir(dir, name);\n if (fs.existsSync(skillDir)) {\n skillFoundAnywhere = true;\n fs.rmSync(skillDir, { recursive: true, force: true });\n results.push(`Deleted skill files from ${skillDir}`);\n } else {\n results.push(`Skill files were already absent from ${skillDir}`);\n }\n\n const symlinkName = name.replace(/\\//g, '__');\n const agentSkillDir = path.join(dir, '.tank', 'agent-skills', symlinkName);\n if (fs.existsSync(agentSkillDir)) {\n fs.rmSync(agentSkillDir, { recursive: true, force: true });\n results.push('Removed symlink from agent workspace');\n }\n\n if (!skillFoundAnywhere) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Skill \"${name}\" is not installed. It was not found in ${MANIFEST_FILENAME}, ${LOCKFILE_FILENAME}, or .tank/skills/.`\n }\n ],\n isError: true\n };\n }\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `Successfully removed ${name}.\\n${results.join('\\n')}`\n }\n ]\n };\n }\n );\n}\n\nfunction getSkillDir(projectDir: string, skillName: string): string {\n if (skillName.startsWith('@')) {\n const [scope, name] = skillName.split('/');\n return path.join(projectDir, '.tank', 'skills', scope, name);\n }\n return path.join(projectDir, '.tank', 'skills', skillName);\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { LEGACY_MANIFEST_FILENAME, MANIFEST_FILENAME } from '@internals/schemas';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\n\nimport { TankApiClient } from '~/lib/api-client.js';\nimport { getConfig } from '~/lib/config.js';\nimport { pack, packForScan } from '~/lib/packer.js';\n\ninterface ScanFinding {\n stage: string;\n severity: 'critical' | 'high' | 'medium' | 'low';\n type: string;\n description: string;\n location: string | null;\n confidence: number | null;\n tool: string | null;\n evidence: string | null;\n}\n\ninterface LLMAnalysis {\n enabled: boolean;\n mode: 'byollm' | 'builtin' | 'disabled';\n provider_used?: string;\n findings_reviewed?: number;\n findings_dismissed?: number;\n findings_confirmed?: number;\n findings_uncertain?: number;\n latency_ms?: number;\n error?: string;\n}\n\ninterface ScanResponse {\n scan_id: string | null;\n verdict: 'pass' | 'pass_with_notes' | 'flagged' | 'fail';\n audit_score: number;\n findings: ScanFinding[];\n stage_results: Array<{\n stage: string;\n status: string;\n findings: ScanFinding[];\n duration_ms: number;\n }>;\n llm_analysis?: LLMAnalysis;\n duration_ms: number;\n}\n\nexport function registerScanSkillTool(server: McpServer): void {\n server.tool(\n 'scan-skill',\n 'Scan a skill directory for security issues. Requires authentication.',\n {\n directory: z.string().optional().describe('Directory to scan (default: current directory)')\n },\n async ({ directory = '.' }) => {\n const absDir = path.resolve(directory);\n const client = new TankApiClient();\n\n // Check auth, guide user to login if not authenticated\n if (!client.isAuthenticated) {\n return {\n content: [\n {\n type: 'text' as const,\n text: 'You need to log in first. Use the login tool to authenticate with Tank.\\n\\nExample: \"Log in to Tank\"'\n }\n ]\n };\n }\n\n // Verify auth is still valid\n const authCheck = await client.verifyAuth();\n if (!authCheck.valid) {\n return {\n content: [\n {\n type: 'text' as const,\n text: 'Your session has expired. Use the login tool to authenticate again.\\n\\nExample: \"Log in to Tank\"'\n }\n ]\n };\n }\n\n let packResult: Awaited<ReturnType<typeof pack>>;\n let usedSynthesisedManifest = false;\n\n const hasManifest =\n fs.existsSync(path.join(absDir, MANIFEST_FILENAME)) ||\n fs.existsSync(path.join(absDir, LEGACY_MANIFEST_FILENAME));\n\n if (hasManifest) {\n try {\n packResult = await pack(absDir);\n } catch (err) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to pack skill: ${err instanceof Error ? err.message : String(err)}`\n }\n ]\n };\n }\n } else {\n try {\n packResult = await packForScan(absDir);\n usedSynthesisedManifest = true;\n } catch (err) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to pack directory for scan: ${err instanceof Error ? err.message : String(err)}`\n }\n ]\n };\n }\n }\n\n const manifest = packResult.manifest as { name?: string; version?: string };\n const skillName = manifest.name ?? 'unknown';\n const skillVersion = manifest.version ?? '0.0.0';\n\n // Upload tarball and trigger scan\n const formData = new FormData();\n const blob = new Blob([new Uint8Array(packResult.tarball)], { type: 'application/gzip' });\n formData.append('tarball', blob, `${skillName}-${skillVersion}.tgz`);\n formData.append('manifest', JSON.stringify(manifest));\n\n const config = getConfig();\n const scanRes = await fetch(`${config.registry}/api/v1/scan`, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${client.token}`\n },\n body: formData\n });\n\n if (!scanRes.ok) {\n const body = await scanRes.json().catch(() => ({}));\n return {\n content: [\n {\n type: 'text' as const,\n text: `Scan failed: ${(body as { error?: string }).error ?? scanRes.statusText}`\n }\n ]\n };\n }\n\n const scanResult = (await scanRes.json()) as ScanResponse;\n\n // Format report\n const verdictEmoji: Record<string, string> = {\n pass: '✅',\n pass_with_notes: '⚠️',\n flagged: '🚩',\n fail: '❌'\n };\n\n const severityEmoji: Record<string, string> = {\n critical: '🔴',\n high: '🟠',\n medium: '🟡',\n low: '🟢'\n };\n\n const lines: string[] = [`## Scan Results for ${skillName}@${skillVersion}`, ''];\n\n if (usedSynthesisedManifest) {\n lines.push(`> **Note:** No \\`${MANIFEST_FILENAME}\\` found. A synthesised manifest was used for scanning.`);\n lines.push('');\n }\n\n const auditScore = scanResult.audit_score ?? 0;\n const durationMs = scanResult.duration_ms ?? 0;\n\n lines.push(\n `**Verdict:** ${verdictEmoji[scanResult.verdict] ?? ''} ${scanResult.verdict.toUpperCase()}`,\n `**Score:** ${auditScore.toFixed(1)}/10`,\n `**Duration:** ${(durationMs / 1000).toFixed(1)}s`,\n `**Files:** ${packResult.fileCount} (${(packResult.totalSize / 1024).toFixed(1)}KB)`,\n ''\n );\n\n if (scanResult.findings.length > 0) {\n lines.push(`### Findings (${scanResult.findings.length})`);\n lines.push('');\n\n // Group by severity\n const bySeverity: Record<string, ScanFinding[]> = {\n critical: [],\n high: [],\n medium: [],\n low: []\n };\n for (const f of scanResult.findings) {\n bySeverity[f.severity].push(f);\n }\n\n for (const severity of ['critical', 'high', 'medium', 'low'] as const) {\n const findings = bySeverity[severity];\n if (findings.length === 0) continue;\n\n lines.push(`#### ${severityEmoji[severity]} ${severity.toUpperCase()} (${findings.length})`);\n for (const f of findings) {\n lines.push(`- **${f.type}**: ${f.description}`);\n if (f.location) lines.push(` - Location: ${f.location}`);\n }\n lines.push('');\n }\n } else {\n lines.push('No findings. Your skill looks secure!');\n lines.push('');\n }\n\n // Stages run\n if (scanResult.stage_results?.length > 0) {\n lines.push('### Scan Stages');\n lines.push('');\n for (const stage of scanResult.stage_results) {\n const status = stage.status === 'passed' ? '✓' : '✗';\n lines.push(`- ${status} ${stage.stage} (${stage.duration_ms}ms)`);\n }\n lines.push('');\n }\n\n // LLM Analysis\n if (scanResult.llm_analysis?.enabled) {\n const llm = scanResult.llm_analysis;\n lines.push('### LLM Analysis');\n lines.push('');\n lines.push(`**Mode:** ${llm.mode}`);\n if (llm.provider_used) {\n lines.push(`**Provider:** ${llm.provider_used}`);\n }\n if (llm.findings_reviewed !== undefined && llm.findings_reviewed > 0) {\n lines.push(`**Findings Reviewed:** ${llm.findings_reviewed}`);\n }\n if (llm.findings_dismissed !== undefined && llm.findings_dismissed > 0) {\n lines.push(`**False Positives Dismissed:** ${llm.findings_dismissed}`);\n }\n if (llm.findings_confirmed !== undefined && llm.findings_confirmed > 0) {\n lines.push(`**Threats Confirmed:** ${llm.findings_confirmed}`);\n }\n if (llm.findings_uncertain !== undefined && llm.findings_uncertain > 0) {\n lines.push(`**Uncertain:** ${llm.findings_uncertain}`);\n }\n if (llm.latency_ms) {\n lines.push(`**Latency:** ${llm.latency_ms}ms`);\n }\n if (llm.error) {\n lines.push(`**Error:** ${llm.error}`);\n }\n lines.push('');\n }\n\n if (scanResult.scan_id) {\n lines.push(`View full report: https://tankpkg.dev/scans/${scanResult.scan_id}`);\n }\n\n return {\n content: [{ type: 'text' as const, text: lines.join('\\n') }]\n };\n }\n );\n}\n","import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\n\nimport { TankApiClient } from '~/lib/api-client.js';\n\ninterface SearchResult {\n name: string;\n latestVersion?: string | null;\n description: string | null;\n auditScore?: number | null;\n downloads: number;\n publisher: string;\n}\n\ninterface SearchResponse {\n results: SearchResult[];\n total: number;\n}\n\nexport function registerSearchSkillsTool(server: McpServer): void {\n const client = new TankApiClient();\n\n server.tool(\n 'search-skills',\n 'Search the Tank registry for AI agent skills',\n {\n query: z.string().min(1).describe('Search query (skill name or keywords)'),\n limit: z.number().min(1).max(50).optional().default(10).describe('Maximum results to return')\n },\n async ({ query, limit }) => {\n const result = await client.fetch<SearchResponse>(`/api/v1/search?q=${encodeURIComponent(query)}&limit=${limit}`);\n\n if (!result.ok) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Search failed: ${result.error}`\n }\n ]\n };\n }\n\n const { results, total } = result.data;\n\n if (results.length === 0) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `No skills found matching \"${query}\". Try different keywords or browse the registry at https://tankpkg.dev`\n }\n ]\n };\n }\n\n // Format as markdown table\n const header = '| Skill | Score | Downloads | Description |\\n|-------|-------|-----------|-------------|';\n const rows = results.map((skill) => {\n const score =\n typeof skill.auditScore === 'number' && Number.isFinite(skill.auditScore) ? skill.auditScore.toFixed(1) : '-';\n const downloads =\n skill.downloads > 1000 ? `${(skill.downloads / 1000).toFixed(1)}k` : skill.downloads.toString();\n const desc = skill.description?.slice(0, 50) ?? 'No description';\n return `| ${skill.name} | ${score} | ${downloads} | ${desc} |`;\n });\n\n const text = [\n `Found ${total} skill${total !== 1 ? 's' : ''} matching \"${query}\":`,\n '',\n header,\n ...rows,\n '',\n `View full results: https://tankpkg.dev/search?q=${encodeURIComponent(query)}`\n ].join('\\n');\n\n return {\n content: [{ type: 'text' as const, text }]\n };\n }\n );\n}\n","import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\n\nimport { TankApiClient } from '~/lib/api-client.js';\n\ninterface SkillVersion {\n version: string;\n integrity: string;\n auditScore: number | null;\n auditStatus: string;\n publishedAt: string;\n tarballSize: number;\n fileCount: number;\n}\n\ninterface SkillInfoResponse {\n name: string;\n description: string | null;\n publisher: string;\n latestVersion: string;\n auditScore: number | null;\n auditStatus: string;\n downloads: number;\n permissions: Record<string, unknown> | null;\n versions: SkillVersion[];\n readme: string | null;\n}\n\nexport function registerSkillInfoTool(server: McpServer): void {\n const client = new TankApiClient();\n\n server.tool(\n 'skill-info',\n 'Get detailed information about a specific skill from the Tank registry',\n {\n name: z.string().describe('Skill name (e.g., @org/skill-name or skill-name)')\n },\n async ({ name }) => {\n const result = await client.fetch<SkillInfoResponse>(`/api/v1/skills/${encodeURIComponent(name)}`);\n\n if (!result.ok) {\n if (result.status === 404) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Skill \"${name}\" not found. Search for skills: https://tankpkg.dev/search`\n }\n ]\n };\n }\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to get skill info: ${result.error}`\n }\n ]\n };\n }\n\n const skill = result.data;\n const score = skill.auditScore !== null ? `${skill.auditScore.toFixed(1)}/10` : 'Not scored';\n const size = skill.versions[0] ? `${(skill.versions[0].tarballSize / 1024).toFixed(1)}KB` : 'Unknown';\n\n // Format permissions as readable text\n let permsText = 'None declared';\n if (skill.permissions) {\n const perms: string[] = [];\n const p = skill.permissions as {\n network?: { outbound?: string[] };\n filesystem?: { read?: string[]; write?: string[] };\n subprocess?: boolean;\n };\n if (p.network?.outbound?.length) {\n perms.push(`network: ${p.network.outbound.join(', ')}`);\n }\n if (p.filesystem?.read?.length || p.filesystem?.write?.length) {\n const fsPerms: string[] = [];\n if (p.filesystem.read?.length) fsPerms.push(`read: ${p.filesystem.read.length} paths`);\n if (p.filesystem.write?.length) fsPerms.push(`write: ${p.filesystem.write.length} paths`);\n perms.push(`filesystem (${fsPerms.join(', ')})`);\n }\n if (p.subprocess) perms.push('subprocess: allowed');\n if (perms.length > 0) permsText = perms.join('\\n - ');\n }\n\n const versionsList = skill.versions\n .slice(0, 5)\n .map((v) => {\n const vScore = v.auditScore !== null ? v.auditScore.toFixed(1) : '-';\n return `${v.version} (score: ${vScore})`;\n })\n .join('\\n - ');\n\n const text = [\n `# ${skill.name}`,\n '',\n `**Publisher:** ${skill.publisher}`,\n `**Latest:** ${skill.latestVersion}`,\n `**Score:** ${score}`,\n `**Size:** ${size}`,\n `**Downloads:** ${skill.downloads}`,\n '',\n '**Description:**',\n skill.description ?? 'No description available',\n '',\n '**Permissions:**',\n ` - ${permsText}`,\n '',\n '**Versions:**',\n ` - ${versionsList}`,\n skill.versions.length > 5 ? `\\n ... and ${skill.versions.length - 5} more` : '',\n '',\n `View on Tank: https://tankpkg.dev/skills/${skill.name}`\n ].join('\\n');\n\n return {\n content: [{ type: 'text' as const, text }]\n };\n }\n );\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\n\nimport {\n LEGACY_LOCKFILE_FILENAME,\n LEGACY_MANIFEST_FILENAME,\n LOCKFILE_FILENAME,\n MANIFEST_FILENAME,\n type Permissions,\n type SkillsJson,\n type SkillsLock\n} from '@internals/schemas';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\n\nfunction parseSkillName(key: string): string {\n const lastAt = key.lastIndexOf('@');\n if (lastAt > 0) {\n return key.slice(0, lastAt);\n }\n return key;\n}\n\ninterface PermissionEntry {\n value: string;\n skills: string[];\n}\n\ninterface ResolvedPermissions {\n networkOutbound: PermissionEntry[];\n filesystemRead: PermissionEntry[];\n filesystemWrite: PermissionEntry[];\n subprocess: string[];\n env: PermissionEntry[];\n exec: PermissionEntry[];\n}\n\nfunction collectPermissions(lockfile: SkillsLock): ResolvedPermissions {\n const networkMap = new Map<string, string[]>();\n const fsReadMap = new Map<string, string[]>();\n const fsWriteMap = new Map<string, string[]>();\n const subprocessSkills: string[] = [];\n const envMap = new Map<string, string[]>();\n const execMap = new Map<string, string[]>();\n\n for (const [key, entry] of Object.entries(lockfile.skills)) {\n const skillName = parseSkillName(key);\n const perms = entry.permissions;\n\n if (perms.network?.outbound) {\n for (const domain of perms.network.outbound) {\n const existing = networkMap.get(domain) ?? [];\n existing.push(skillName);\n networkMap.set(domain, existing);\n }\n }\n\n if (perms.filesystem?.read) {\n for (const p of perms.filesystem.read) {\n const existing = fsReadMap.get(p) ?? [];\n existing.push(skillName);\n fsReadMap.set(p, existing);\n }\n }\n\n if (perms.filesystem?.write) {\n for (const p of perms.filesystem.write) {\n const existing = fsWriteMap.get(p) ?? [];\n existing.push(skillName);\n fsWriteMap.set(p, existing);\n }\n }\n\n if (perms.subprocess === true) {\n subprocessSkills.push(skillName);\n }\n\n const rawPerms = perms as Record<string, unknown>;\n if (Array.isArray(rawPerms.env)) {\n for (const envVar of rawPerms.env as string[]) {\n const existing = envMap.get(envVar) ?? [];\n existing.push(skillName);\n envMap.set(envVar, existing);\n }\n }\n\n if (Array.isArray(rawPerms.exec)) {\n for (const cmd of rawPerms.exec as string[]) {\n const existing = execMap.get(cmd) ?? [];\n existing.push(skillName);\n execMap.set(cmd, existing);\n }\n }\n }\n\n const toEntries = (map: Map<string, string[]>): PermissionEntry[] =>\n Array.from(map.entries()).map(([value, skills]) => ({ value, skills }));\n\n return {\n networkOutbound: toEntries(networkMap),\n filesystemRead: toEntries(fsReadMap),\n filesystemWrite: toEntries(fsWriteMap),\n subprocess: subprocessSkills,\n env: toEntries(envMap),\n exec: toEntries(execMap)\n };\n}\n\nfunction formatAttribution(skills: string[]): string {\n return `<- ${skills.join(', ')}`;\n}\n\nfunction formatSection(title: string, entries: PermissionEntry[]): string {\n const lines: string[] = [];\n lines.push(`${title}:`);\n if (entries.length === 0) {\n lines.push(' none');\n } else {\n for (const entry of entries) {\n lines.push(` ${entry.value} ${formatAttribution(entry.skills)}`);\n }\n }\n return lines.join('\\n');\n}\n\n// Wildcard matching: *.example.com matches sub.example.com, * matches all\nfunction isDomainAllowed(domain: string, allowedDomains: string[]): boolean {\n for (const allowed of allowedDomains) {\n if (allowed === '*') return true;\n if (allowed === domain) return true;\n if (allowed.startsWith('*.')) {\n const suffix = allowed.slice(1);\n if (domain.endsWith(suffix) || domain === allowed.slice(2)) {\n return true;\n }\n if (domain === allowed) return true;\n }\n }\n return false;\n}\n\n// Glob matching: ./src/** matches ./src/foo/bar\nfunction isPathAllowed(requestedPath: string, allowedPaths: string[]): boolean {\n for (const allowed of allowedPaths) {\n if (allowed === requestedPath) return true;\n if (allowed.endsWith('/**')) {\n const prefix = allowed.slice(0, -3);\n if (requestedPath.startsWith(prefix)) return true;\n }\n }\n return false;\n}\n\ninterface BudgetViolation {\n category: string;\n value: string;\n skills: string[];\n}\n\nfunction checkBudget(resolved: ResolvedPermissions, budget: Permissions): BudgetViolation[] {\n const violations: BudgetViolation[] = [];\n\n const budgetDomains = budget.network?.outbound ?? [];\n for (const entry of resolved.networkOutbound) {\n if (!isDomainAllowed(entry.value, budgetDomains)) {\n violations.push({\n category: 'network outbound',\n value: entry.value,\n skills: entry.skills\n });\n }\n }\n\n const budgetReadPaths = budget.filesystem?.read ?? [];\n for (const entry of resolved.filesystemRead) {\n if (!isPathAllowed(entry.value, budgetReadPaths)) {\n violations.push({\n category: 'filesystem read',\n value: entry.value,\n skills: entry.skills\n });\n }\n }\n\n const budgetWritePaths = budget.filesystem?.write ?? [];\n for (const entry of resolved.filesystemWrite) {\n if (!isPathAllowed(entry.value, budgetWritePaths)) {\n violations.push({\n category: 'filesystem write',\n value: entry.value,\n skills: entry.skills\n });\n }\n }\n\n if (resolved.subprocess.length > 0 && budget.subprocess !== true) {\n violations.push({\n category: 'subprocess',\n value: 'subprocess access',\n skills: resolved.subprocess\n });\n }\n\n return violations;\n}\n\nexport function registerSkillPermissionsTool(server: McpServer): void {\n server.tool(\n 'skill-permissions',\n 'Display resolved permission summary for installed skills. Shows what capabilities each skill requires and checks against the project permission budget.',\n {\n directory: z.string().optional().describe('Project directory path (defaults to current working directory)')\n },\n async ({ directory }) => {\n const dir = directory ? path.resolve(directory) : process.cwd();\n\n if (!fs.existsSync(dir)) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Directory does not exist: ${dir}`\n }\n ],\n isError: true\n };\n }\n\n let skillsJsonPath = path.join(dir, MANIFEST_FILENAME);\n if (!fs.existsSync(skillsJsonPath)) {\n skillsJsonPath = path.join(dir, LEGACY_MANIFEST_FILENAME);\n }\n if (!fs.existsSync(skillsJsonPath)) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `No ${MANIFEST_FILENAME} found. Run \"init-skill\" to create one.`\n }\n ],\n isError: true\n };\n }\n\n let skillsJson: SkillsJson;\n try {\n const raw = fs.readFileSync(skillsJsonPath, 'utf-8');\n skillsJson = JSON.parse(raw) as SkillsJson;\n } catch {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to parse ${path.basename(skillsJsonPath)}. The file may be corrupted.`\n }\n ],\n isError: true\n };\n }\n\n const skillDeps = skillsJson.skills ?? {};\n if (Object.keys(skillDeps).length === 0) {\n return {\n content: [\n {\n type: 'text' as const,\n text: 'No skills with permissions to display. The project has no skill dependencies.'\n }\n ]\n };\n }\n\n let lockfilePath = path.join(dir, LOCKFILE_FILENAME);\n if (!fs.existsSync(lockfilePath)) {\n lockfilePath = path.join(dir, LEGACY_LOCKFILE_FILENAME);\n }\n if (!fs.existsSync(lockfilePath)) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `No ${LOCKFILE_FILENAME} found. Skills are declared but not installed. Run install to generate a lockfile.`\n }\n ]\n };\n }\n\n let lockfile: SkillsLock;\n try {\n const raw = fs.readFileSync(lockfilePath, 'utf-8');\n lockfile = JSON.parse(raw) as SkillsLock;\n } catch {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to parse ${path.basename(lockfilePath)}. The file may be corrupted.`\n }\n ],\n isError: true\n };\n }\n\n if (!lockfile.skills || Object.keys(lockfile.skills).length === 0) {\n return {\n content: [\n {\n type: 'text' as const,\n text: 'No skills installed. The lockfile is empty.'\n }\n ]\n };\n }\n\n const resolved = collectPermissions(lockfile);\n\n const lines: string[] = [];\n lines.push('Resolved permissions for this project:');\n lines.push('');\n\n lines.push(formatSection('Network (outbound)', resolved.networkOutbound));\n lines.push(formatSection('Filesystem (read)', resolved.filesystemRead));\n lines.push(formatSection('Filesystem (write)', resolved.filesystemWrite));\n\n lines.push('Subprocess:');\n if (resolved.subprocess.length === 0) {\n lines.push(' none');\n } else {\n lines.push(` allowed ${formatAttribution(resolved.subprocess)}`);\n }\n\n if (resolved.env.length > 0) {\n lines.push(formatSection('Environment variables', resolved.env));\n }\n\n if (resolved.exec.length > 0) {\n lines.push(formatSection('Exec', resolved.exec));\n }\n\n lines.push('');\n lines.push('Per-skill breakdown:');\n for (const [key, entry] of Object.entries(lockfile.skills)) {\n const skillName = parseSkillName(key);\n const perms = entry.permissions;\n const permParts: string[] = [];\n\n if (perms.network?.outbound && perms.network.outbound.length > 0) {\n permParts.push(`network: ${perms.network.outbound.join(', ')}`);\n }\n if (perms.filesystem?.read && perms.filesystem.read.length > 0) {\n permParts.push(`filesystem:read: ${perms.filesystem.read.join(', ')}`);\n }\n if (perms.filesystem?.write && perms.filesystem.write.length > 0) {\n permParts.push(`filesystem:write: ${perms.filesystem.write.join(', ')}`);\n }\n if (perms.subprocess === true) {\n permParts.push('subprocess: allowed');\n }\n\n const rawPerms = perms as Record<string, unknown>;\n if (Array.isArray(rawPerms.env) && (rawPerms.env as string[]).length > 0) {\n permParts.push(`env: ${(rawPerms.env as string[]).join(', ')}`);\n }\n if (Array.isArray(rawPerms.exec) && (rawPerms.exec as string[]).length > 0) {\n permParts.push(`exec: ${(rawPerms.exec as string[]).join(', ')}`);\n }\n\n if (permParts.length === 0) {\n lines.push(` ${skillName}: no special permissions`);\n } else {\n lines.push(` ${skillName}: ${permParts.join('; ')}`);\n }\n }\n\n const budget = skillsJson.permissions;\n lines.push('');\n\n if (!budget) {\n lines.push('Budget status: No budget defined');\n } else {\n const violations = checkBudget(resolved, budget);\n\n if (violations.length === 0) {\n lines.push('Budget status: PASS (all within budget)');\n } else {\n lines.push('Budget status: FAIL');\n for (const v of violations) {\n lines.push(` - ${v.category}: \"${v.value}\" not in budget (requested by ${v.skills.join(', ')})`);\n }\n }\n }\n\n return {\n content: [{ type: 'text' as const, text: lines.join('\\n') }]\n };\n }\n );\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\n\nconst SCOPED_NAME_PATTERN = /^@[a-z0-9-]+\\/[a-z0-9][a-z0-9-]*$/;\n\nexport function registerUnlinkSkillTool(server: McpServer): void {\n server.tool(\n 'unlink-skill',\n 'Unlink a skill from an agent workspace. Removes the symlink without deleting the installed skill files.',\n {\n name: z.string().describe('Skill name in @org/name format'),\n workspace: z.string().describe('Agent workspace directory path'),\n directory: z\n .string()\n .optional()\n .describe('Project directory where skills are installed (defaults to current working directory)')\n },\n async ({ name, workspace, directory }) => {\n if (!SCOPED_NAME_PATTERN.test(name)) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Validation error: Skill name \"${name}\" must use the @org/name format (e.g. @acme/my-skill).`\n }\n ],\n isError: true\n };\n }\n\n const projectDir = directory ? path.resolve(directory) : process.cwd();\n const workspaceDir = path.resolve(workspace);\n\n if (!fs.existsSync(workspaceDir)) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Error: Workspace directory does not exist: ${workspaceDir}`\n }\n ],\n isError: true\n };\n }\n\n const skillDir = getSkillDir(projectDir, name);\n if (!fs.existsSync(skillDir)) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Skill \"${name}\" is not installed. It was not found in ${skillDir}.`\n }\n ],\n isError: true\n };\n }\n\n const [scope, skillName] = name.split('/');\n const symlinkPath = path.join(workspaceDir, '.skills', scope, skillName);\n\n try {\n const stats = fs.lstatSync(symlinkPath);\n if (stats.isSymbolicLink()) {\n fs.unlinkSync(symlinkPath);\n return {\n content: [\n {\n type: 'text' as const,\n text: `Successfully unlinked \"${name}\" from ${workspaceDir}.\\nRemoved symlink: ${symlinkPath}`\n }\n ]\n };\n }\n } catch {\n // intentionally empty\n }\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `No link exists for \"${name}\" in ${workspaceDir}.`\n }\n ]\n };\n }\n );\n}\n\nfunction getSkillDir(projectDir: string, skillName: string): string {\n if (skillName.startsWith('@')) {\n const [scope, name] = skillName.split('/');\n return path.join(projectDir, '.tank', 'skills', scope, name);\n }\n return path.join(projectDir, '.tank', 'skills', skillName);\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { resolve } from '@internals/helpers';\nimport {\n LEGACY_LOCKFILE_FILENAME,\n LEGACY_MANIFEST_FILENAME,\n LOCKFILE_FILENAME,\n MANIFEST_FILENAME,\n type SkillsLock\n} from '@internals/schemas';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\n\nimport { TankApiClient } from '~/lib/api-client.js';\n\nconst SCOPED_NAME_PATTERN = /^@[a-z0-9-]+\\/[a-z0-9][a-z0-9-]*$/;\n\ninterface VersionInfo {\n version: string;\n integrity: string;\n auditScore: number;\n auditStatus: string;\n publishedAt: string;\n}\n\ninterface VersionsResponse {\n name: string;\n versions: VersionInfo[];\n}\n\nfunction parseLockKey(key: string): { name: string; version: string } | null {\n const lastAt = key.lastIndexOf('@');\n if (lastAt <= 0) return null;\n return { name: key.slice(0, lastAt), version: key.slice(lastAt + 1) };\n}\n\nexport function registerUpdateSkillTool(server: McpServer): void {\n server.tool(\n 'update-skill',\n 'Update an installed skill to the latest compatible version within its declared semver range.',\n {\n name: z.string().describe('Skill name in @org/name format'),\n directory: z.string().optional().describe('Project directory (defaults to current working directory)')\n },\n async ({ name, directory }) => {\n if (!SCOPED_NAME_PATTERN.test(name)) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Validation error: Skill name \"${name}\" must use the @org/name format (e.g. @acme/my-skill).`\n }\n ],\n isError: true\n };\n }\n\n const dir = directory ? path.resolve(directory) : process.cwd();\n\n let skillsJsonPath = path.join(dir, MANIFEST_FILENAME);\n if (!fs.existsSync(skillsJsonPath)) {\n skillsJsonPath = path.join(dir, LEGACY_MANIFEST_FILENAME);\n }\n if (!fs.existsSync(skillsJsonPath)) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `No ${MANIFEST_FILENAME} found in ${dir}. Run the \"init-skill\" tool first.`\n }\n ],\n isError: true\n };\n }\n\n let skillsJson: Record<string, unknown>;\n try {\n const raw = fs.readFileSync(skillsJsonPath, 'utf-8');\n skillsJson = JSON.parse(raw) as Record<string, unknown>;\n } catch {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to read or parse ${path.basename(skillsJsonPath)}.`\n }\n ],\n isError: true\n };\n }\n\n const skills = (skillsJson.skills ?? {}) as Record<string, string>;\n const versionRange = skills[name];\n\n if (!versionRange) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Skill \"${name}\" is not installed (not found in ${path.basename(skillsJsonPath)}). Install it first with the install-skill tool.`\n }\n ],\n isError: true\n };\n }\n\n let lockPath = path.join(dir, LOCKFILE_FILENAME);\n if (!fs.existsSync(lockPath)) {\n lockPath = path.join(dir, LEGACY_LOCKFILE_FILENAME);\n }\n let currentVersion: string | null = null;\n\n if (fs.existsSync(lockPath)) {\n try {\n const raw = fs.readFileSync(lockPath, 'utf-8');\n const lock = JSON.parse(raw) as SkillsLock;\n for (const key of Object.keys(lock.skills)) {\n const parsed = parseLockKey(key);\n if (!parsed) continue;\n if (parsed.name === name) {\n currentVersion = parsed.version;\n break;\n }\n }\n } catch {\n // Lockfile unreadable — treat as no current version\n }\n }\n\n if (!currentVersion) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Skill \"${name}\" is not installed (not found in ${LOCKFILE_FILENAME}). Install it first with the install-skill tool.`\n }\n ],\n isError: true\n };\n }\n\n const client = new TankApiClient();\n if (!client.isAuthenticated) {\n return {\n content: [\n {\n type: 'text' as const,\n text: 'Authentication required. Please run the \"login\" tool first to authenticate with Tank.'\n }\n ],\n isError: true\n };\n }\n\n // Fetch available versions from registry\n const encodedName = encodeURIComponent(name);\n const versionsResult = await client.fetch<VersionsResponse>(`/api/v1/skills/${encodedName}/versions`);\n\n if (!versionsResult.ok) {\n if (versionsResult.status === 0) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Unable to connect to the Tank registry. Check your network connection and try again.`\n }\n ],\n isError: true\n };\n }\n if (versionsResult.status === 404) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Skill \"${name}\" not found in the registry.`\n }\n ],\n isError: true\n };\n }\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to fetch versions for ${name}: ${versionsResult.error}`\n }\n ],\n isError: true\n };\n }\n\n const availableVersions = versionsResult.data.versions.map((v) => v.version);\n\n // 6. Resolve best version within declared range\n const resolved = resolve(versionRange, availableVersions);\n if (!resolved) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `No version of ${name} satisfies range \"${versionRange}\". Available: ${availableVersions.join(', ')}`\n }\n ],\n isError: true\n };\n }\n\n // 7. Check for newer major versions outside range\n const allMajors = availableVersions\n .map((v) => {\n const major = v.split('.')[0];\n return { version: v, major: Number.parseInt(major, 10) };\n })\n .filter((v) => !Number.isNaN(v.major));\n\n const currentMajor = Number.parseInt(currentVersion.split('.')[0], 10);\n const newerMajors = allMajors.filter((v) => v.major > currentMajor).map((v) => v.version);\n\n const highestOutOfRange =\n newerMajors.length > 0\n ? newerMajors.sort((a, b) => {\n const [aMaj, aMin, aPat] = a.split('.').map(Number);\n const [bMaj, bMin, bPat] = b.split('.').map(Number);\n return bMaj - aMaj || bMin - aMin || bPat - aPat;\n })[0]\n : null;\n\n // 8. If resolved === current, already at latest\n if (resolved === currentVersion) {\n const lines = [`Already at latest compatible version: ${name}@${resolved}`];\n if (highestOutOfRange) {\n lines.push(\n `\\nNote: Version ${highestOutOfRange} is available but outside the declared range \"${versionRange}\". Update ${MANIFEST_FILENAME} to use it.`\n );\n }\n return {\n content: [\n {\n type: 'text' as const,\n text: lines.join('')\n }\n ]\n };\n }\n\n // 9. Fetch the resolved version details for download\n const versionResult = await client.fetch<{\n version: string;\n integrity: string;\n downloadUrl: string;\n permissions: Record<string, unknown>;\n auditScore: number | null;\n }>(`/api/v1/skills/${encodedName}/${resolved}`);\n\n if (!versionResult.ok) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to fetch version details for ${name}@${resolved}: ${versionResult.error}`\n }\n ],\n isError: true\n };\n }\n\n const versionData = versionResult.data;\n\n // 10. Download tarball\n let tarballBuffer: ArrayBuffer;\n try {\n const tarballRes = await fetch(versionData.downloadUrl);\n if (!tarballRes.ok) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to download tarball for ${name}@${resolved}: ${tarballRes.statusText}`\n }\n ],\n isError: true\n };\n }\n tarballBuffer = await tarballRes.arrayBuffer();\n } catch (err) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Network error downloading ${name}@${resolved}: ${err instanceof Error ? err.message : String(err)}`\n }\n ],\n isError: true\n };\n }\n\n // 11. Verify SHA-512\n const { createHash } = await import('node:crypto');\n const hash = createHash('sha512').update(Buffer.from(tarballBuffer)).digest('base64');\n const computedIntegrity = `sha512-${hash}`;\n\n if (computedIntegrity !== versionData.integrity) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Integrity check failed for ${name}@${resolved}. The tarball has been tampered with or is corrupted.\\nExpected: ${versionData.integrity}\\nGot: ${computedIntegrity}`\n }\n ],\n isError: true\n };\n }\n\n // 12. Extract tarball to skill directory\n const { execSync } = await import('node:child_process');\n const skillDir = getSkillDir(dir, name);\n\n // Remove old version files if they exist\n if (fs.existsSync(skillDir)) {\n fs.rmSync(skillDir, { recursive: true, force: true });\n }\n fs.mkdirSync(skillDir, { recursive: true });\n\n const tarballPath = path.join(skillDir, '__temp_tarball.tgz');\n fs.writeFileSync(tarballPath, Buffer.from(tarballBuffer));\n\n try {\n execSync(`tar xzf \"${tarballPath}\" -C \"${skillDir}\" --strip-components=1`, {\n stdio: 'pipe'\n });\n } catch (err) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to extract tarball for ${name}@${resolved}: ${err instanceof Error ? err.message : String(err)}`\n }\n ],\n isError: true\n };\n } finally {\n // Clean up temp tarball\n try {\n fs.unlinkSync(tarballPath);\n } catch {\n /* ignore */\n }\n }\n\n // 13. Update lockfile\n let lock: SkillsLock;\n if (fs.existsSync(lockPath)) {\n try {\n const raw = fs.readFileSync(lockPath, 'utf-8');\n lock = JSON.parse(raw) as SkillsLock;\n } catch {\n lock = { lockfileVersion: 1, skills: {} };\n }\n } else {\n lock = { lockfileVersion: 1, skills: {} };\n }\n\n // Remove old lock entry for this skill\n for (const key of Object.keys(lock.skills)) {\n const parsed = parseLockKey(key);\n if (parsed && parsed.name === name) {\n delete lock.skills[key];\n }\n }\n\n // Add new lock entry\n const newLockKey = `${name}@${resolved}`;\n lock.skills[newLockKey] = {\n resolved: versionData.downloadUrl,\n integrity: versionData.integrity,\n permissions: versionData.permissions as SkillsLock['skills'][string]['permissions'],\n audit_score: versionData.auditScore\n };\n\n // Sort keys for deterministic output\n const sortedSkills: Record<string, unknown> = {};\n for (const key of Object.keys(lock.skills).sort()) {\n sortedSkills[key] = lock.skills[key];\n }\n lock.skills = sortedSkills as SkillsLock['skills'];\n\n fs.writeFileSync(lockPath, `${JSON.stringify(lock, null, 2)}\\n`);\n\n // 14. Build response\n const lines = [\n `Updated ${name} from ${currentVersion} to ${resolved}.`,\n `Integrity verified (SHA-512).`,\n `Lockfile updated.`\n ];\n\n if (highestOutOfRange) {\n lines.push(\n `\\nNote: Version ${highestOutOfRange} is available but outside the declared range \"${versionRange}\". Update ${MANIFEST_FILENAME} to use it.`\n );\n }\n\n return {\n content: [\n {\n type: 'text' as const,\n text: lines.join('\\n')\n }\n ]\n };\n }\n );\n}\n\nfunction getSkillDir(projectDir: string, skillName: string): string {\n if (skillName.startsWith('@')) {\n const [scope, name] = skillName.split('/');\n return path.join(projectDir, '.tank', 'skills', scope, name);\n }\n return path.join(projectDir, '.tank', 'skills', skillName);\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { LEGACY_LOCKFILE_FILENAME, LOCKFILE_FILENAME, type SkillsLock } from '@internals/schemas';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\n\nexport function registerVerifySkillsTool(server: McpServer): void {\n server.tool(\n 'verify-skills',\n 'Verify that installed skills match their lockfile entries. Checks that skill directories exist and are not empty.',\n {\n name: z.string().optional().describe('Specific skill name to verify (verifies all if omitted)'),\n directory: z.string().optional().describe('Project directory (defaults to current working directory)')\n },\n async ({ name, directory }) => {\n const dir = directory ? path.resolve(directory) : process.cwd();\n\n let lockPath = path.join(dir, LOCKFILE_FILENAME);\n if (!fs.existsSync(lockPath)) {\n lockPath = path.join(dir, LEGACY_LOCKFILE_FILENAME);\n }\n if (!fs.existsSync(lockPath)) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `No ${LOCKFILE_FILENAME} found. Run \"install-skill\" to install skills and generate a lockfile.`\n }\n ],\n isError: true\n };\n }\n\n let lock: SkillsLock;\n try {\n const raw = fs.readFileSync(lockPath, 'utf-8');\n lock = JSON.parse(raw) as SkillsLock;\n } catch {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to parse ${path.basename(lockPath)}. The file may be corrupted.`\n }\n ],\n isError: true\n };\n }\n\n let entries = Object.entries(lock.skills);\n\n if (entries.length === 0) {\n return {\n content: [\n {\n type: 'text' as const,\n text: 'No skills to verify. The lockfile is empty.'\n }\n ]\n };\n }\n\n if (name) {\n entries = entries.filter(([key]) => {\n const lastAt = key.lastIndexOf('@');\n if (lastAt <= 0) return false;\n return key.slice(0, lastAt) === name;\n });\n\n if (entries.length === 0) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Skill \"${name}\" not found in lockfile.`\n }\n ],\n isError: true\n };\n }\n }\n\n const results: Array<{ key: string; status: 'PASS' | 'FAIL' | 'MISSING'; detail: string }> = [];\n\n for (const [key, entry] of entries) {\n const skillName = parseLockKey(key);\n const skillDir = getExtractDir(dir, skillName);\n\n if (!fs.existsSync(skillDir)) {\n results.push({\n key,\n status: 'MISSING',\n detail: `Directory missing at ${skillDir}. Reinstall with \"install-skill\".`\n });\n continue;\n }\n\n const contents = fs.readdirSync(skillDir);\n if (contents.length === 0) {\n results.push({\n key,\n status: 'FAIL',\n detail: `Directory exists but is empty. Expected integrity: ${entry.integrity}. SHA-512 mismatch detected.`\n });\n continue;\n }\n\n results.push({\n key,\n status: 'PASS',\n detail: `Verified (integrity: ${entry.integrity})`\n });\n }\n\n const passing = results.filter((r) => r.status === 'PASS');\n const failing = results.filter((r) => r.status !== 'PASS');\n\n const lines: string[] = [];\n for (const r of results) {\n lines.push(`${r.status} ${r.key}: ${r.detail}`);\n }\n\n if (failing.length > 0) {\n lines.push('');\n lines.push(`Verification failed: ${failing.length} issue(s) found, ${passing.length} passed.`);\n return {\n content: [{ type: 'text' as const, text: lines.join('\\n') }],\n isError: true\n };\n }\n\n lines.push('');\n lines.push(`All ${passing.length} skill(s) passed verification.`);\n return {\n content: [{ type: 'text' as const, text: lines.join('\\n') }]\n };\n }\n );\n}\n\nfunction parseLockKey(key: string): string {\n const lastAt = key.lastIndexOf('@');\n if (lastAt <= 0) return key;\n return key.slice(0, lastAt);\n}\n\nfunction getExtractDir(projectDir: string, skillName: string): string {\n if (skillName.startsWith('@')) {\n const [scope, name] = skillName.split('/');\n return path.join(projectDir, '.tank', 'skills', scope, name);\n }\n return path.join(projectDir, '.tank', 'skills', skillName);\n}\n","import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\n\nimport { TankApiClient } from '~/lib/api-client.js';\n\nexport function registerWhoamiTool(server: McpServer): void {\n server.tool('whoami', 'Show the authenticated Tank user for the current local session.', {}, async () => {\n const client = new TankApiClient();\n\n if (!client.isAuthenticated) {\n return {\n content: [{ type: 'text' as const, text: 'Not logged in. Use the login tool to authenticate.' }]\n };\n }\n\n const authCheck = await client.verifyAuth();\n\n if (authCheck.valid) {\n const name = authCheck.user.name ?? 'unknown';\n const email = authCheck.user.email ?? 'unknown';\n return {\n content: [{ type: 'text' as const, text: `Logged in as ${name}\\nEmail: ${email}` }]\n };\n }\n\n if (authCheck.reason === 'network-error') {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Failed to connect to the registry. Check your network connection.\\nError: ${authCheck.error ?? 'unknown'}`\n }\n ],\n isError: true\n };\n }\n\n return {\n content: [{ type: 'text' as const, text: 'Session expired or invalid. Use the login tool to re-authenticate.' }]\n };\n });\n}\n","#!/usr/bin/env node\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\n\nimport { registerAuditSkillTool } from '~/tools/audit-skill.js';\nimport { registerDoctorTool } from '~/tools/doctor.js';\nimport { registerInitSkillTool } from '~/tools/init-skill.js';\nimport { registerInstallSkillTool } from '~/tools/install-skill.js';\nimport { registerLinkSkillTool } from '~/tools/link-skill.js';\n// Import tools\nimport { registerLoginTool } from '~/tools/login.js';\nimport { registerLogoutTool } from '~/tools/logout.js';\nimport { registerPublishSkillTool } from '~/tools/publish-skill.js';\nimport { registerRemoveSkillTool } from '~/tools/remove-skill.js';\nimport { registerScanSkillTool } from '~/tools/scan-skill.js';\nimport { registerSearchSkillsTool } from '~/tools/search-skills.js';\nimport { registerSkillInfoTool } from '~/tools/skill-info.js';\nimport { registerSkillPermissionsTool } from '~/tools/skill-permissions.js';\nimport { registerUnlinkSkillTool } from '~/tools/unlink-skill.js';\nimport { registerUpdateSkillTool } from '~/tools/update-skill.js';\nimport { registerVerifySkillsTool } from '~/tools/verify-skills.js';\nimport { registerWhoamiTool } from '~/tools/whoami.js';\n\n// Create MCP server instance\nconst server = new McpServer({\n name: 'tank',\n version: '0.1.0'\n});\n\n// Register all tools\nregisterLoginTool(server);\nregisterSearchSkillsTool(server);\nregisterSkillInfoTool(server);\nregisterScanSkillTool(server);\nregisterPublishSkillTool(server);\nregisterLogoutTool(server);\nregisterWhoamiTool(server);\nregisterInitSkillTool(server);\nregisterRemoveSkillTool(server);\nregisterVerifySkillsTool(server);\nregisterLinkSkillTool(server);\nregisterUnlinkSkillTool(server);\nregisterDoctorTool(server);\nregisterSkillPermissionsTool(server);\nregisterInstallSkillTool(server);\nregisterUpdateSkillTool(server);\nregisterAuditSkillTool(server);\n\n// Start stdio transport\nasync function main() {\n const transport = new StdioServerTransport();\n await server.connect(transport);\n}\n\nmain().catch((_error) => {\n process.exit(1);\n});\n"],"mappings":"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"}
|