{"version":3,"file":"extension-worker-runtime.mjs","names":["valueMap","z"],"sources":["../src/extension-worker-config.ts","../node_modules/@deepseek-ai/cosmokit/lib/index.js","../node_modules/@deepseek-ai/schemastery/lib/index.mjs","../src/extension-worker-protocol.ts","../src/extension-worker-runtime.ts"],"sourcesContent":["/** Operator-owned limits for opt-in local extension worker execution. */\nexport interface HostExecutionConfig {\n  readonly mode?: 'in-process' | 'worker'\n  /** Apply worker mode only to these exact local ids; omitted selects every local host. */\n  readonly extensions?: readonly string[] | undefined\n  readonly maxWorkers?: number\n  readonly maxRegistrations?: number\n  readonly maxOldGenerationSizeMb?: number\n  readonly maxYoungGenerationSizeMb?: number\n  readonly stackSizeMb?: number\n  readonly activationTimeoutMs?: number\n  readonly operationTimeoutMs?: number\n  readonly cancelGraceMs?: number\n  readonly streamCancelGraceMs?: number\n  readonly disposeGraceMs?: number\n  readonly resultMaxBytes?: number\n  readonly streamWindowBytes?: number\n  readonly streamChunkBytes?: number\n  readonly streamAggregateBytes?: number\n  readonly logWindowMs?: number\n  readonly logMessagesPerWindow?: number\n  readonly logMessageBytes?: number\n}\n\n/** Complete settings passed to each owned worker; Node limits do not isolate filesystem access. */\nexport interface ResolvedHostExecutionConfig extends Required<Omit<HostExecutionConfig, 'extensions'>> {\n  readonly extensions: readonly string[] | undefined\n}\n\nfunction integer(value: unknown, name: string, fallback: number, minimum: number, maximum: number): number {\n  const resolved = value ?? fallback\n  if (typeof resolved !== 'number' || !Number.isSafeInteger(resolved) || resolved < minimum || resolved > maximum) {\n    throw new Error(`hostExecution.${name} must be an integer from ${minimum} through ${maximum}`)\n  }\n  return resolved\n}\n\n/** Resolve configuration once; reject malformed modes, ids and incoherent stream windows. */\nexport function resolveHostExecution(raw: unknown): ResolvedHostExecutionConfig {\n  if (raw !== undefined && (raw === null || typeof raw !== 'object' || Array.isArray(raw))) throw new Error('hostExecution must be an object')\n  const value = (raw ?? {}) as HostExecutionConfig\n  const mode = value.mode ?? 'in-process'\n  if (mode !== 'worker' && mode !== 'in-process') throw new Error('hostExecution.mode is invalid')\n  if (value.extensions !== undefined && (!Array.isArray(value.extensions) || value.extensions.some(id => typeof id !== 'string' || !/^[a-z][a-z0-9-]{0,63}$/u.test(id)) || new Set(value.extensions).size !== value.extensions.length)) throw new Error('hostExecution.extensions must contain unique local extension ids')\n  const streamWindowBytes = integer(value.streamWindowBytes, 'streamWindowBytes', 256 * 1024, 1024, 4 * 1024 * 1024)\n  const streamChunkBytes = integer(value.streamChunkBytes, 'streamChunkBytes', 64 * 1024, 1024, streamWindowBytes)\n  const streamAggregateBytes = integer(value.streamAggregateBytes, 'streamAggregateBytes', 1024 * 1024, streamWindowBytes, 32 * 1024 * 1024)\n  return Object.freeze({\n    mode, extensions: value.extensions === undefined ? undefined : Object.freeze([...value.extensions]),\n    maxWorkers: integer(value.maxWorkers, 'maxWorkers', 8, 1, 128),\n    maxRegistrations: integer(value.maxRegistrations, 'maxRegistrations', 256, 1, 4096),\n    maxOldGenerationSizeMb: integer(value.maxOldGenerationSizeMb, 'maxOldGenerationSizeMb', 128, 16, 4096),\n    maxYoungGenerationSizeMb: integer(value.maxYoungGenerationSizeMb, 'maxYoungGenerationSizeMb', 16, 1, 512),\n    stackSizeMb: integer(value.stackSizeMb, 'stackSizeMb', 4, 1, 64),\n    activationTimeoutMs: integer(value.activationTimeoutMs, 'activationTimeoutMs', 5000, 1, 300_000),\n    operationTimeoutMs: integer(value.operationTimeoutMs, 'operationTimeoutMs', 30_000, 1, 300_000),\n    cancelGraceMs: integer(value.cancelGraceMs, 'cancelGraceMs', 250, 1, 30_000),\n    streamCancelGraceMs: integer(value.streamCancelGraceMs, 'streamCancelGraceMs', 1000, 1, 30_000),\n    disposeGraceMs: integer(value.disposeGraceMs, 'disposeGraceMs', 2000, 1, 30_000),\n    resultMaxBytes: integer(value.resultMaxBytes, 'resultMaxBytes', 4 * 1024 * 1024, 1024, 4 * 1024 * 1024),\n    streamWindowBytes, streamChunkBytes, streamAggregateBytes,\n    logWindowMs: integer(value.logWindowMs, 'logWindowMs', 1000, 1, 60_000),\n    logMessagesPerWindow: integer(value.logMessagesPerWindow, 'logMessagesPerWindow', 64, 1, 1024),\n    logMessageBytes: integer(value.logMessageBytes, 'logMessageBytes', 4096, 128, 64 * 1024),\n  })\n}\n","//#region lib/types/misc.js\n/** No-op callback returning `undefined` at runtime and `any` at type level. */\nfunction noop() {}\n/** Return true when a value is `null` or `undefined`. */\nfunction isNullable(value) {\n\treturn value === null || value === void 0;\n}\n/** Return true when a value is neither `null` nor `undefined`. */\nfunction isNonNullable(value) {\n\treturn !isNullable(value);\n}\n/** Return true for non-array object values. */\nfunction isPlainObject(data) {\n\treturn data && typeof data === \"object\" && !Array.isArray(data);\n}\n/** Filter object entries and return a new object. */\nfunction filterKeys(object, filter) {\n\treturn Object.fromEntries(Object.entries(object).filter(([key, value]) => filter(key, value)));\n}\n/** Map object values while preserving the original key set. */\nfunction mapValues(object, transform) {\n\treturn Object.fromEntries(Object.entries(object).map(([key, value]) => [key, transform(value, key)]));\n}\n/** Pick selected keys from an object, optionally including `undefined` values. */\nfunction pick(source, keys, forced) {\n\tif (!keys) return { ...source };\n\tconst result = {};\n\tfor (const key of keys) if (forced || source[key] !== void 0) result[key] = source[key];\n\treturn result;\n}\n/** Omit selected keys from a shallow object copy. */\nfunction omit(source, keys) {\n\tif (!keys) return { ...source };\n\tconst result = { ...source };\n\tfor (const key of keys) Reflect.deleteProperty(result, key);\n\treturn result;\n}\n/** Define a non-enumerable writable property and return the object. */\nfunction defineProperty(object, key, value) {\n\treturn Object.defineProperty(object, key, {\n\t\twritable: true,\n\t\tvalue,\n\t\tenumerable: false\n\t});\n}\n//#endregion\n//#region lib/types/array.js\n/** Return true when every item in `array2` is present in `array1`. */\nfunction contain(array1, array2) {\n\treturn array2.every((item) => array1.includes(item));\n}\n/** Return items that appear in both arrays. */\nfunction intersection(array1, array2) {\n\treturn array1.filter((item) => array2.includes(item));\n}\n/** Return items from `array1` that do not appear in `array2`. */\nfunction difference(array1, array2) {\n\treturn array1.filter((item) => !array2.includes(item));\n}\n/** Return the set-union of two arrays while preserving first occurrence order. */\nfunction union(array1, array2) {\n\treturn Array.from(new Set([...array1, ...array2]));\n}\n/** Remove duplicate values while preserving first occurrence order. */\nfunction deduplicate(array) {\n\treturn [...new Set(array)];\n}\n/** Remove one item from an array and report whether it was found. */\nfunction remove(list, item) {\n\tconst index = list?.indexOf(item);\n\tif (index >= 0) {\n\t\tlist.splice(index, 1);\n\t\treturn true;\n\t} else return false;\n}\n/** Normalize nullish, scalar, or array input to an array. */\nfunction makeArray(source) {\n\treturn Array.isArray(source) ? source : isNullable(source) ? [] : [source];\n}\n//#endregion\n//#region lib/types/volatile.js\n/** Shared config references used by schema validators and plugin runtimes. */\nconst write = Symbol.for(\"cosmokit.volatile.write\");\nfunction snapshot(value, ancestors = /* @__PURE__ */ new Set()) {\n\tif (typeof value === \"function\") throw new TypeError(\"volatile config cannot contain functions\");\n\tif (value === null || typeof value !== \"object\") return value;\n\tif (ancestors.has(value)) throw new TypeError(\"volatile config cannot contain cycles\");\n\tancestors.add(value);\n\ttry {\n\t\tif (Array.isArray(value)) return Object.freeze(value.map((item) => snapshot(item, ancestors)));\n\t\tif (Object.getPrototypeOf(value) !== Object.prototype && Object.getPrototypeOf(value) !== null) throw new TypeError(\"volatile config objects must be plain objects or arrays\");\n\t\treturn Object.freeze(Object.fromEntries(Object.entries(value).map(([key, item]) => [key, snapshot(item, ancestors)])));\n\t} finally {\n\t\tancestors.delete(value);\n\t}\n}\n/**\n* Create a detached reference containing an immutable copy of the supplied data.\n* @param value - validated config data; class instances and functions are unsupported.\n* @returns a reference whose value is updated only by its owning runtime.\n*/\nfunction createVolatile(value) {\n\tlet current = snapshot(value);\n\treturn Object.freeze({\n\t\tget: () => current,\n\t\t[write]: (value) => {\n\t\t\tcurrent = value;\n\t\t}\n\t});\n}\n/**\n* Identify references across ESM/CJS copies of the shared library.\n* @param value - a parsed config value.\n* @returns whether the value implements the shared reference protocol.\n*/\nfunction isVolatile(value) {\n\treturn typeof value === \"object\" && value !== null && write in value;\n}\n/**\n* Collect config references without descending into their snapshots or opaque objects.\n* @internal\n* @param value - parsed config; cyclic ordinary fields are visited once per path.\n* @returns references and their object-key paths, including an empty path for a root reference.\n*/\nfunction volatileEntries(value) {\n\tconst ancestors = /* @__PURE__ */ new Set();\n\tfunction visit(value, path) {\n\t\tif (isVolatile(value)) return [{\n\t\t\tpath,\n\t\t\tref: value\n\t\t}];\n\t\tif (!value || typeof value !== \"object\" || ancestors.has(value)) return [];\n\t\tif (!Array.isArray(value) && Object.getPrototypeOf(value) !== Object.prototype && Object.getPrototypeOf(value) !== null) return [];\n\t\tancestors.add(value);\n\t\ttry {\n\t\t\treturn Object.entries(value).flatMap(([key, child]) => visit(child, [...path, key]));\n\t\t} finally {\n\t\t\tancestors.delete(value);\n\t\t}\n\t}\n\treturn visit(value, []);\n}\n/**\n* Commit an already validated immutable snapshot from another reference.\n* @internal\n* @param target - the owning plugin's stable reference.\n* @param source - a newly parsed candidate reference.\n*/\nfunction updateVolatile(target, source) {\n\ttarget[write](source.get());\n}\n//#endregion\n//#region lib/types/types.js\n/** Test values using `instanceof` with a `toStringTag` fallback. */\nfunction is(type, value) {\n\tif (arguments.length === 1) return (value) => is(type, value);\n\treturn type in globalThis && value instanceof globalThis[type] || Object.prototype.toString.call(value).slice(8, -1) === type;\n}\nfunction isArrayBufferLike(value) {\n\treturn is(\"ArrayBuffer\", value) || is(\"SharedArrayBuffer\", value);\n}\nfunction isArrayBufferSource(value) {\n\treturn isArrayBufferLike(value) || ArrayBuffer.isView(value);\n}\n/** Binary source detection and base64/hex conversion helpers. */\nvar Binary;\n(function(Binary) {\n\tBinary.is = isArrayBufferLike;\n\tBinary.isSource = isArrayBufferSource;\n\tfunction fromSource(source) {\n\t\tif (ArrayBuffer.isView(source)) return source.buffer.slice(source.byteOffset, source.byteOffset + source.byteLength);\n\t\telse return source;\n\t}\n\tBinary.fromSource = fromSource;\n\tfunction toBase64(source) {\n\t\tsource = fromSource(source);\n\t\tif (typeof Buffer !== \"undefined\") return Buffer.from(source).toString(\"base64\");\n\t\tlet binary = \"\";\n\t\tconst bytes = new Uint8Array(source);\n\t\tfor (let i = 0; i < bytes.byteLength; i++) binary += String.fromCharCode(bytes[i]);\n\t\treturn btoa(binary);\n\t}\n\tBinary.toBase64 = toBase64;\n\tfunction fromBase64(source) {\n\t\tif (typeof Buffer !== \"undefined\") return fromSource(Buffer.from(source, \"base64\"));\n\t\treturn Uint8Array.from(atob(source), (c) => c.charCodeAt(0));\n\t}\n\tBinary.fromBase64 = fromBase64;\n\tfunction toHex(source) {\n\t\tsource = fromSource(source);\n\t\tif (typeof Buffer !== \"undefined\") return Buffer.from(source).toString(\"hex\");\n\t\treturn Array.from(new Uint8Array(source), (byte) => byte.toString(16).padStart(2, \"0\")).join(\"\");\n\t}\n\tBinary.toHex = toHex;\n\tfunction fromHex(source) {\n\t\tif (typeof Buffer !== \"undefined\") return fromSource(Buffer.from(source, \"hex\"));\n\t\tconst hex = source.length % 2 === 0 ? source : source.slice(0, source.length - 1);\n\t\tconst buffer = [];\n\t\tfor (let i = 0; i < hex.length; i += 2) buffer.push(parseInt(`${hex[i]}${hex[i + 1]}`, 16));\n\t\treturn Uint8Array.from(buffer).buffer;\n\t}\n\tBinary.fromHex = fromHex;\n})(Binary || (Binary = {}));\n/** Decode a base64 string into binary data. */\nconst base64ToArrayBuffer = Binary.fromBase64;\n/** Encode binary data as base64. */\nconst arrayBufferToBase64 = Binary.toBase64;\n/** Decode a hex string into binary data. */\nconst hexToArrayBuffer = Binary.fromHex;\n/** Encode binary data as hex. */\nconst arrayBufferToHex = Binary.toHex;\n/** Deep-clone common JavaScript values while preserving prototypes and cycles. */\nfunction clone(source, refs = /* @__PURE__ */ new Map()) {\n\tif (!source || typeof source !== \"object\") return source;\n\tif (is(\"Date\", source)) return new Date(source.valueOf());\n\tif (is(\"RegExp\", source)) return new RegExp(source.source, source.flags);\n\tif (isArrayBufferLike(source)) return source.slice(0);\n\tif (ArrayBuffer.isView(source)) return source.buffer.slice(source.byteOffset, source.byteOffset + source.byteLength);\n\tconst cached = refs.get(source);\n\tif (cached) return cached;\n\tif (Array.isArray(source)) {\n\t\tconst result = [];\n\t\trefs.set(source, result);\n\t\tsource.forEach((value, index) => {\n\t\t\tresult[index] = Reflect.apply(clone, null, [value, refs]);\n\t\t});\n\t\treturn result;\n\t}\n\tconst result = Object.create(Object.getPrototypeOf(source));\n\trefs.set(source, result);\n\tfor (const key of Reflect.ownKeys(source)) {\n\t\tconst descriptor = { ...Reflect.getOwnPropertyDescriptor(source, key) };\n\t\tif (\"value\" in descriptor) descriptor.value = Reflect.apply(clone, null, [descriptor.value, refs]);\n\t\tReflect.defineProperty(result, key, descriptor);\n\t}\n\treturn result;\n}\n/**\n* Compare values recursively, treating two volatile references as equal regardless of value.\n* Strict comparison distinguishes null/undefined, treats opaque objects by identity,\n* compares URLs by normalized href, treats array holes as undefined, and considers distinct cyclic structures unequal.\n* @param a - first value.\n* @param b - second value.\n* @param strict - whether to require strict data equality outside volatile references.\n* @returns whether the values compare equal.\n*/\nfunction deepEqual(a, b, strict) {\n\tconst ancestors = /* @__PURE__ */ new Set();\n\tfunction compare(a, b) {\n\t\tif (a === b) return true;\n\t\tif (isVolatile(a) || isVolatile(b)) return isVolatile(a) && isVolatile(b);\n\t\tif (!strict && isNullable(a) && isNullable(b)) return true;\n\t\tif (typeof a !== typeof b || typeof a !== \"object\" || !a || !b) return false;\n\t\tif (ancestors.has(a)) return false;\n\t\tfunction check(test, then) {\n\t\t\treturn test(a) ? test(b) ? then(a, b) : false : test(b) ? false : void 0;\n\t\t}\n\t\tancestors.add(a);\n\t\ttry {\n\t\t\treturn check(Array.isArray, (a, b) => {\n\t\t\t\tif (a.length !== b.length) return false;\n\t\t\t\tfor (let index = 0; index < a.length; index++) if (!compare(a[index], b[index])) return false;\n\t\t\t\treturn true;\n\t\t\t}) ?? check(is(\"Date\"), (a, b) => a.valueOf() === b.valueOf()) ?? check(is(\"URL\"), (a, b) => a.href === b.href) ?? check(is(\"RegExp\"), (a, b) => a.source === b.source && a.flags === b.flags) ?? check(isArrayBufferLike, (a, b) => {\n\t\t\t\tif (a.byteLength !== b.byteLength) return false;\n\t\t\t\tconst viewA = new Uint8Array(a);\n\t\t\t\tconst viewB = new Uint8Array(b);\n\t\t\t\tfor (let i = 0; i < viewA.length; i++) if (viewA[i] !== viewB[i]) return false;\n\t\t\t\treturn true;\n\t\t\t}) ?? ((!strict || [a, b].every((value) => Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null)) && Object.keys({\n\t\t\t\t...a,\n\t\t\t\t...b\n\t\t\t}).every((key) => compare(a[key], b[key])));\n\t\t} finally {\n\t\t\tancestors.delete(a);\n\t\t}\n\t}\n\treturn compare(a, b);\n}\n//#endregion\n//#region lib/types/string.js\n/** Uppercase the first character of a string. */\nfunction capitalize(source) {\n\treturn source.charAt(0).toUpperCase() + source.slice(1);\n}\n/** Lowercase the first character of a string. */\nfunction uncapitalize(source) {\n\treturn source.charAt(0).toLowerCase() + source.slice(1);\n}\n/** Convert dash or underscore delimited text to camelCase. */\nfunction camelCase(source) {\n\treturn source.replace(/[_-][a-z]/g, (str) => str.slice(1).toUpperCase());\n}\nfunction tokenize(source, delimiters, delimiter) {\n\tconst output = [];\n\tlet state = 0;\n\tfor (let i = 0; i < source.length; i++) {\n\t\tconst code = source.charCodeAt(i);\n\t\tif (code >= 65 && code <= 90) {\n\t\t\tif (state === 1) {\n\t\t\t\tconst next = source.charCodeAt(i + 1);\n\t\t\t\tif (next >= 97 && next <= 122) output.push(delimiter);\n\t\t\t\toutput.push(code + 32);\n\t\t\t} else {\n\t\t\t\tif (state !== 0) output.push(delimiter);\n\t\t\t\toutput.push(code + 32);\n\t\t\t}\n\t\t\tstate = 1;\n\t\t} else if (code >= 97 && code <= 122) {\n\t\t\toutput.push(code);\n\t\t\tstate = 2;\n\t\t} else if (delimiters.includes(code)) {\n\t\t\tif (state !== 0) output.push(delimiter);\n\t\t\tstate = 0;\n\t\t} else output.push(code);\n\t}\n\treturn String.fromCharCode(...output);\n}\n/** Convert text to dash-delimited parameter case. */\nfunction paramCase(source) {\n\treturn tokenize(source, [45, 95], 45);\n}\n/** Convert text to underscore-delimited snake case. */\nfunction snakeCase(source) {\n\treturn tokenize(source, [45, 95], 95);\n}\n/** Runtime alias for `camelCase`. */\nconst camelize = camelCase;\n/** Runtime alias for `paramCase`. */\nconst hyphenate = paramCase;\n/** Format a property key as a JavaScript member access suffix. */\nfunction formatProperty(key) {\n\tif (typeof key !== \"string\") return `[${key.toString()}]`;\n\treturn /^[a-z_$][\\w$]*$/i.test(key) ? `.${key}` : `[${JSON.stringify(key)}]`;\n}\n/** Remove one trailing slash from a path string. */\nfunction trimSlash(source) {\n\treturn source.replace(/\\/$/, \"\");\n}\n/** Ensure a path starts with `/` and has no trailing slash. */\nfunction sanitize(source) {\n\tif (!source.startsWith(\"/\")) source = \"/\" + source;\n\treturn trimSlash(source);\n}\n//#endregion\n//#region lib/types/time.js\n/** Time constants plus parsing and formatting helpers. */\nvar Time;\n(function(Time) {\n\tTime.millisecond = 1;\n\tTime.second = 1e3;\n\tTime.minute = Time.second * 60;\n\tTime.hour = Time.minute * 60;\n\tTime.day = Time.hour * 24;\n\tTime.week = Time.day * 7;\n\tlet timezoneOffset = (/* @__PURE__ */ new Date()).getTimezoneOffset();\n\tfunction setTimezoneOffset(offset) {\n\t\ttimezoneOffset = offset;\n\t}\n\tTime.setTimezoneOffset = setTimezoneOffset;\n\tfunction getTimezoneOffset() {\n\t\treturn timezoneOffset;\n\t}\n\tTime.getTimezoneOffset = getTimezoneOffset;\n\tfunction getDateNumber(date = /* @__PURE__ */ new Date(), offset) {\n\t\tif (typeof date === \"number\") date = new Date(date);\n\t\tif (offset === void 0) offset = timezoneOffset;\n\t\treturn Math.floor((date.valueOf() / Time.minute - offset) / 1440);\n\t}\n\tTime.getDateNumber = getDateNumber;\n\tfunction fromDateNumber(value, offset) {\n\t\tconst date = new Date(value * Time.day);\n\t\tif (offset === void 0) offset = timezoneOffset;\n\t\treturn new Date(+date + offset * Time.minute);\n\t}\n\tTime.fromDateNumber = fromDateNumber;\n\tconst numeric = /\\d+(?:\\.\\d+)?/.source;\n\tconst timeRegExp = new RegExp(`^${[\n\t\t\"w(?:eek(?:s)?)?\",\n\t\t\"d(?:ay(?:s)?)?\",\n\t\t\"h(?:our(?:s)?)?\",\n\t\t\"m(?:in(?:ute)?(?:s)?)?\",\n\t\t\"s(?:ec(?:ond)?(?:s)?)?\"\n\t].map((unit) => `(${numeric}${unit})?`).join(\"\")}$`);\n\tfunction parseTime(source) {\n\t\tconst capture = timeRegExp.exec(source);\n\t\tif (!capture) return 0;\n\t\treturn (parseFloat(capture[1]) * Time.week || 0) + (parseFloat(capture[2]) * Time.day || 0) + (parseFloat(capture[3]) * Time.hour || 0) + (parseFloat(capture[4]) * Time.minute || 0) + (parseFloat(capture[5]) * Time.second || 0);\n\t}\n\tTime.parseTime = parseTime;\n\tfunction parseDate(date) {\n\t\tconst parsed = parseTime(date);\n\t\tif (parsed) date = Date.now() + parsed;\n\t\telse if (/^\\d{1,2}(:\\d{1,2}){1,2}$/.test(date)) date = `${(/* @__PURE__ */ new Date()).toLocaleDateString()}-${date}`;\n\t\telse if (/^\\d{1,2}-\\d{1,2}-\\d{1,2}(:\\d{1,2}){1,2}$/.test(date)) date = `${(/* @__PURE__ */ new Date()).getFullYear()}-${date}`;\n\t\treturn date ? new Date(date) : /* @__PURE__ */ new Date();\n\t}\n\tTime.parseDate = parseDate;\n\tfunction format(ms) {\n\t\tconst abs = Math.abs(ms);\n\t\tif (abs >= Time.day - Time.hour / 2) return Math.round(ms / Time.day) + \"d\";\n\t\telse if (abs >= Time.hour - Time.minute / 2) return Math.round(ms / Time.hour) + \"h\";\n\t\telse if (abs >= Time.minute - Time.second / 2) return Math.round(ms / Time.minute) + \"m\";\n\t\telse if (abs >= Time.second) return Math.round(ms / Time.second) + \"s\";\n\t\treturn ms + \"ms\";\n\t}\n\tTime.format = format;\n\tfunction toDigits(source, length = 2) {\n\t\treturn source.toString().padStart(length, \"0\");\n\t}\n\tTime.toDigits = toDigits;\n\tfunction template(template, time = /* @__PURE__ */ new Date()) {\n\t\treturn template.replace(\"yyyy\", time.getFullYear().toString()).replace(\"yy\", time.getFullYear().toString().slice(2)).replace(\"MM\", toDigits(time.getMonth() + 1)).replace(\"dd\", toDigits(time.getDate())).replace(\"hh\", toDigits(time.getHours())).replace(\"mm\", toDigits(time.getMinutes())).replace(\"ss\", toDigits(time.getSeconds())).replace(\"SSS\", toDigits(time.getMilliseconds(), 3));\n\t}\n\tTime.template = template;\n})(Time || (Time = {}));\n//#endregion\nexport { Binary, Time, arrayBufferToBase64, arrayBufferToHex, base64ToArrayBuffer, camelCase, camelize, capitalize, clone, contain, createVolatile, deduplicate, deepEqual, defineProperty, difference, filterKeys, formatProperty, hexToArrayBuffer, hyphenate, intersection, is, isNonNullable, isNullable, isPlainObject, isVolatile, makeArray, mapValues, mapValues as valueMap, noop, omit, paramCase, pick, remove, sanitize, snakeCase, trimSlash, uncapitalize, union, updateVolatile, volatileEntries };\n","import { Binary, clone, createVolatile, deepEqual, filterKeys, isNullable, isPlainObject, isVolatile, pick, valueMap } from \"@deepseek-ai/cosmokit\";\n//#region lib/types/index.js\nconst kSchema = Symbol.for(\"schemastery\");\nconst kValidationError = Symbol.for(\"ValidationError\");\nglobalThis.__schemastery_index__ ??= 0;\nglobalThis.__schemastery_refs__ = void 0;\nvar ValidationError = class extends TypeError {\n\toptions;\n\tname = \"ValidationError\";\n\tconstructor(message, options) {\n\t\tlet prefix = \"$\";\n\t\tfor (const segment of options.path || []) if (typeof segment === \"string\") prefix += \".\" + segment;\n\t\telse if (typeof segment === \"number\") prefix += \"[\" + segment + \"]\";\n\t\telse if (typeof segment === \"symbol\") prefix += `[Symbol(${segment.toString()})]`;\n\t\tif (prefix.startsWith(\".\")) prefix = prefix.slice(1);\n\t\tsuper((prefix === \"$\" ? \"\" : `${prefix} `) + message);\n\t\tthis.options = options;\n\t}\n\tstatic is(error) {\n\t\treturn !!error?.[kValidationError];\n\t}\n};\nObject.defineProperty(ValidationError.prototype, kValidationError, { value: true });\nconst Schema = function(options) {\n\tconst schema = function(data, options = {}) {\n\t\treturn Schema.resolve(data, schema, options)[0];\n\t};\n\tif (options.refs) {\n\t\tconst refs = valueMap(options.refs, (options) => new Schema(options));\n\t\tconst getRef = (uid) => refs[uid];\n\t\tfor (const key in refs) {\n\t\t\tconst options = refs[key];\n\t\t\toptions.sKey = getRef(options.sKey);\n\t\t\toptions.inner = getRef(options.inner);\n\t\t\toptions.list = options.list && options.list.map(getRef);\n\t\t\toptions.dict = options.dict && valueMap(options.dict, getRef);\n\t\t}\n\t\treturn refs[options.uid];\n\t}\n\tObject.assign(schema, options);\n\tif (typeof schema.callback === \"string\") try {\n\t\tschema.callback = new Function(\"return \" + schema.callback)();\n\t} catch {}\n\tObject.defineProperty(schema, \"uid\", { value: globalThis.__schemastery_index__++ });\n\tObject.setPrototypeOf(schema, Schema.prototype);\n\tschema.meta ||= {};\n\tschema.toString = schema.toString.bind(schema);\n\treturn schema;\n};\nSchema.prototype = Object.create(Function.prototype);\nSchema.prototype[kSchema] = true;\nObject.defineProperty(Schema.prototype, \"~standard\", { get() {\n\treturn {\n\t\tversion: 1,\n\t\tvendor: \"schemastery\",\n\t\tvalidate: (value) => {\n\t\t\ttry {\n\t\t\t\treturn { value: Schema.resolve(value, this, {})[0] };\n\t\t\t} catch (error) {\n\t\t\t\tif (ValidationError.is(error)) return { issues: [{\n\t\t\t\t\tmessage: error.message,\n\t\t\t\t\tpath: error.options.path\n\t\t\t\t}] };\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t};\n} });\nSchema.ValidationError = ValidationError;\nSchema.prototype.toJSON = function toJSON() {\n\tif (globalThis.__schemastery_refs__) {\n\t\tglobalThis.__schemastery_refs__[this.uid] ??= JSON.parse(JSON.stringify({ ...this }));\n\t\treturn this.uid;\n\t}\n\tglobalThis.__schemastery_refs__ = { [this.uid]: { ...this } };\n\tglobalThis.__schemastery_refs__[this.uid] = JSON.parse(JSON.stringify({ ...this }));\n\tconst result = {\n\t\tuid: this.uid,\n\t\trefs: globalThis.__schemastery_refs__\n\t};\n\tglobalThis.__schemastery_refs__ = void 0;\n\treturn result;\n};\nSchema.prototype.set = function set(key, value) {\n\tthis.dict[key] = value;\n\treturn this;\n};\nSchema.prototype.push = function push(value) {\n\tthis.list.push(value);\n\treturn this;\n};\nfunction mergeDesc(original, messages) {\n\tconst result = typeof original === \"string\" ? { \"\": original } : { ...original };\n\tfor (const locale in messages) {\n\t\tconst value = messages[locale];\n\t\tif (value?.$description || value?.$desc) result[locale] = value.$description || value.$desc;\n\t\telse if (typeof value === \"string\") result[locale] = value;\n\t}\n\treturn result;\n}\nfunction getInner(value) {\n\treturn value?.$value ?? value?.$inner;\n}\nfunction extractKeys(data) {\n\treturn filterKeys(data ?? {}, (key) => !key.startsWith(\"$\"));\n}\nSchema.prototype.i18n = function i18n(messages) {\n\tconst schema = Schema(this);\n\tconst desc = mergeDesc(schema.meta.description, messages);\n\tif (Object.keys(desc).length) schema.meta.description = desc;\n\tif (schema.dict) schema.dict = valueMap(schema.dict, (inner, key) => {\n\t\treturn inner.i18n(valueMap(messages, (data) => getInner(data)?.[key] ?? data?.[key]));\n\t});\n\tif (schema.list) schema.list = schema.list.map((inner, index) => {\n\t\treturn inner.i18n(valueMap(messages, (data = {}) => {\n\t\t\tif (Array.isArray(getInner(data))) return getInner(data)[index];\n\t\t\tif (Array.isArray(data)) return data[index];\n\t\t\treturn extractKeys(data);\n\t\t}));\n\t});\n\tif (schema.inner) schema.inner = schema.inner.i18n(valueMap(messages, (data) => {\n\t\tif (getInner(data)) return getInner(data);\n\t\treturn extractKeys(data);\n\t}));\n\tif (schema.sKey) schema.sKey = schema.sKey.i18n(valueMap(messages, (data) => data?.$key));\n\treturn schema;\n};\nSchema.prototype.extra = function extra(key, value) {\n\tconst schema = Schema(this);\n\tschema.meta = {\n\t\t...schema.meta,\n\t\t[key]: value\n\t};\n\treturn schema;\n};\nfor (const key of [\n\t\"required\",\n\t\"disabled\",\n\t\"collapse\",\n\t\"hidden\",\n\t\"loose\"\n]) Object.assign(Schema.prototype, { [key](value = true) {\n\tconst schema = Schema(this);\n\tschema.meta = {\n\t\t...schema.meta,\n\t\t[key]: value\n\t};\n\treturn schema;\n} });\nSchema.prototype.deprecated = function deprecated() {\n\tconst schema = Schema(this);\n\tschema.meta.badges ||= [];\n\tschema.meta.badges.push({\n\t\ttext: \"deprecated\",\n\t\ttype: \"danger\"\n\t});\n\treturn schema;\n};\nSchema.prototype.experimental = function experimental() {\n\tconst schema = Schema(this);\n\tschema.meta.badges ||= [];\n\tschema.meta.badges.push({\n\t\ttext: \"experimental\",\n\t\ttype: \"warning\"\n\t});\n\treturn schema;\n};\nSchema.prototype.pattern = function pattern(regexp) {\n\tconst schema = Schema(this);\n\tconst pattern = pick(regexp, [\"source\", \"flags\"]);\n\tschema.meta = {\n\t\t...schema.meta,\n\t\tpattern\n\t};\n\treturn schema;\n};\nSchema.prototype.simplify = function simplify(value) {\n\tif (isVolatile(value)) value = value.get();\n\tif (deepEqual(value, this.meta.default, this.type === \"dict\")) return null;\n\tif (isNullable(value)) return value;\n\tif (this.type === \"object\" || this.type === \"dict\") {\n\t\tconst result = {};\n\t\tfor (const key in value) {\n\t\t\tconst item = (this.type === \"object\" ? this.dict[key] : this.inner)?.simplify(value[key]);\n\t\t\tif (this.type === \"dict\" || !isNullable(item)) result[key] = item;\n\t\t}\n\t\tif (deepEqual(result, this.meta.default, this.type === \"dict\")) return null;\n\t\treturn result;\n\t} else if (this.type === \"array\" || this.type === \"tuple\") {\n\t\tconst result = [];\n\t\tvalue.forEach((value, index) => {\n\t\t\tconst schema = this.type === \"array\" ? this.inner : this.list[index];\n\t\t\tconst item = schema ? schema.simplify(value) : value;\n\t\t\tresult.push(item);\n\t\t});\n\t\treturn result;\n\t} else if (this.type === \"intersect\") {\n\t\tconst result = {};\n\t\tfor (const item of this.list) Object.assign(result, item.simplify(value));\n\t\treturn result;\n\t} else if (this.type === \"union\") for (const schema of this.list) try {\n\t\tSchema.resolve(value, schema, {});\n\t\treturn schema.simplify(value);\n\t} catch {}\n\treturn value;\n};\nSchema.prototype.toString = function toString(inline) {\n\treturn formatters[this.type]?.(this, inline) ?? `Schema<${this.type}>`;\n};\nSchema.prototype.role = function role(role, extra) {\n\tconst schema = Schema(this);\n\tschema.meta = {\n\t\t...schema.meta,\n\t\trole,\n\t\textra\n\t};\n\treturn schema;\n};\nfor (const key of [\n\t\"default\",\n\t\"link\",\n\t\"comment\",\n\t\"description\",\n\t\"max\",\n\t\"min\",\n\t\"step\"\n]) Object.assign(Schema.prototype, { [key](value) {\n\tconst schema = Schema(this);\n\tschema.meta = {\n\t\t...schema.meta,\n\t\t[key]: value\n\t};\n\treturn schema;\n} });\nSchema.prototype.volatile = function volatile() {\n\tif (this.meta.volatile) throw new TypeError(\"volatile schema is already wrapped\");\n\treturn this.extra(\"volatile\", true);\n};\nconst resolvers = {};\nconst checkedVolatile = Symbol(\"checked-volatile-schema\");\nfunction validateVolatileSchema(schema, path = [], blocked = false, seen = /* @__PURE__ */ new Map()) {\n\tconst states = seen.get(schema) ?? /* @__PURE__ */ new Set();\n\tif (states.has(blocked)) return;\n\tstates.add(blocked);\n\tseen.set(schema, states);\n\tif (schema.meta?.volatile && blocked) throw new ValidationError(\"volatile fields require a fixed object path without an enclosing volatile field\", { path });\n\tconst nested = blocked || !!schema.meta?.volatile;\n\tif (schema.dict) for (const [key, child] of Object.entries(schema.dict)) validateVolatileSchema(child, [...path, key], nested, seen);\n\tif (schema.sKey) validateVolatileSchema(schema.sKey, [...path, \"<key>\"], true, seen);\n\tif (schema.inner && (schema.type !== \"lazy\" || schema.inner[kSchema])) validateVolatileSchema(schema.inner, [...path, \"*\"], true, seen);\n\tif (schema.list) for (let index = 0; index < schema.list.length; index++) validateVolatileSchema(schema.list[index], [...path, String(index)], true, seen);\n}\nSchema.extend = function extend(type, resolve) {\n\tresolvers[type] = resolve;\n};\nSchema.resolve = function resolve(data, schema, options = {}, strict = false) {\n\tif (!schema) return [data];\n\tif (!options[checkedVolatile]) {\n\t\tvalidateVolatileSchema(schema, options.path);\n\t\toptions = {\n\t\t\t...options,\n\t\t\t[checkedVolatile]: true\n\t\t};\n\t}\n\tif (schema.meta?.volatile) {\n\t\tconst inner = Schema(schema);\n\t\tinner.meta = {\n\t\t\t...schema.meta,\n\t\t\tvolatile: false\n\t\t};\n\t\tconst [value, adapted] = Schema.resolve(data, inner, options, strict);\n\t\ttry {\n\t\t\treturn [createVolatile(value), adapted];\n\t\t} catch (error) {\n\t\t\tthrow new ValidationError(error instanceof Error ? error.message : String(error), options);\n\t\t}\n\t}\n\tif (options.ignore?.(data, schema)) return [data];\n\tif (isNullable(data) && schema.type !== \"lazy\") {\n\t\tif (schema.meta.required) throw new ValidationError(`missing required value`, options);\n\t\tlet current = schema;\n\t\tlet fallback = schema.meta.default;\n\t\twhile (current?.type === \"intersect\" && isNullable(fallback)) {\n\t\t\tcurrent = current.list[0];\n\t\t\tfallback = current?.meta.default;\n\t\t}\n\t\tif (isNullable(fallback)) return [data];\n\t\tdata = clone(fallback);\n\t}\n\tconst callback = resolvers[schema.type];\n\tif (!callback) throw new ValidationError(`unsupported type \"${schema.type}\"`, options);\n\ttry {\n\t\treturn callback(data, schema, options, strict);\n\t} catch (error) {\n\t\tif (!schema.meta.loose) throw error;\n\t\treturn [schema.meta.default];\n\t}\n};\nSchema.from = function from(source) {\n\tif (isNullable(source)) return Schema.any();\n\telse if ([\n\t\t\"string\",\n\t\t\"number\",\n\t\t\"boolean\"\n\t].includes(typeof source)) return Schema.const(source).required();\n\telse if (source[kSchema]) return source;\n\telse if (typeof source === \"function\") switch (source) {\n\t\tcase String: return Schema.string().required();\n\t\tcase Number: return Schema.number().required();\n\t\tcase Boolean: return Schema.boolean().required();\n\t\tcase Function: return Schema.function().required();\n\t\tdefault: return Schema.is(source).required();\n\t}\n\telse throw new TypeError(`cannot infer schema from ${source}`);\n};\nSchema.lazy = function lazy(builder) {\n\tconst toJSON = () => {\n\t\tif (!schema.inner[kSchema]) {\n\t\t\tschema.inner = schema.builder();\n\t\t\tschema.inner.meta = {\n\t\t\t\t...schema.meta,\n\t\t\t\t...schema.inner.meta\n\t\t\t};\n\t\t}\n\t\treturn schema.inner.toJSON();\n\t};\n\tconst schema = new Schema({\n\t\ttype: \"lazy\",\n\t\tbuilder,\n\t\tinner: { toJSON }\n\t});\n\treturn schema;\n};\nSchema.natural = function natural() {\n\treturn Schema.number().step(1).min(0);\n};\nSchema.percent = function percent() {\n\treturn Schema.number().step(.01).min(0).max(1).role(\"slider\");\n};\nSchema.date = function date() {\n\treturn Schema.union([Schema.is(Date), Schema.transform(Schema.string().role(\"datetime\"), (value, options) => {\n\t\tconst date = new Date(value);\n\t\tif (isNaN(+date)) throw new ValidationError(`invalid date \"${value}\"`, options);\n\t\treturn date;\n\t}, true)]);\n};\nSchema.regExp = function regExp(flag = \"\") {\n\treturn Schema.union([Schema.is(RegExp), Schema.transform(Schema.string().role(\"regexp\", { flag }), (value, options) => {\n\t\ttry {\n\t\t\treturn new RegExp(value, flag);\n\t\t} catch (e) {\n\t\t\tthrow new ValidationError(e.message, options);\n\t\t}\n\t}, true)]);\n};\nSchema.arrayBuffer = function arrayBuffer(encoding) {\n\treturn Schema.union([\n\t\tSchema.is(ArrayBuffer),\n\t\tSchema.is(SharedArrayBuffer),\n\t\tSchema.transform(Schema.any(), (value, options) => {\n\t\t\tif (Binary.isSource(value)) return Binary.fromSource(value);\n\t\t\tthrow new ValidationError(`expected ArrayBufferSource but got ${value}`, options);\n\t\t}, true),\n\t\t...encoding ? [Schema.transform(Schema.string(), (value, options) => {\n\t\t\ttry {\n\t\t\t\treturn encoding === \"base64\" ? Binary.fromBase64(value) : Binary.fromHex(value);\n\t\t\t} catch (e) {\n\t\t\t\tthrow new ValidationError(e.message, options);\n\t\t\t}\n\t\t}, true)] : []\n\t]);\n};\nSchema.extend(\"lazy\", (data, schema, options, strict) => {\n\tif (!schema.inner[kSchema]) {\n\t\tschema.inner = schema.builder();\n\t\tschema.inner.meta = {\n\t\t\t...schema.meta,\n\t\t\t...schema.inner.meta\n\t\t};\n\t\tvalidateVolatileSchema(schema.inner, options.path, true);\n\t}\n\treturn Schema.resolve(data, schema.inner, options, strict);\n});\nSchema.extend(\"any\", (data) => {\n\treturn [data];\n});\nSchema.extend(\"never\", (data, _, options) => {\n\tthrow new ValidationError(`expected nullable but got ${data}`, options);\n});\nSchema.extend(\"const\", (data, { value }, options) => {\n\tif (deepEqual(data, value)) return [value];\n\tthrow new ValidationError(`expected ${value} but got ${data}`, options);\n});\nfunction checkWithinRange(data, meta, description, options, skipMin = false) {\n\tconst { max = Infinity, min = -Infinity } = meta;\n\tif (data > max) throw new ValidationError(`expected ${description} <= ${max} but got ${data}`, options);\n\tif (data < min && !skipMin) throw new ValidationError(`expected ${description} >= ${min} but got ${data}`, options);\n}\nSchema.extend(\"string\", (data, { meta }, options) => {\n\tif (typeof data !== \"string\") throw new ValidationError(`expected string but got ${data}`, options);\n\tif (meta.pattern) {\n\t\tconst regexp = new RegExp(meta.pattern.source, meta.pattern.flags);\n\t\tif (!regexp.test(data)) throw new ValidationError(`expect string to match regexp ${regexp}`, options);\n\t}\n\tcheckWithinRange(data.length, meta, \"string length\", options);\n\treturn [data];\n});\nfunction decimalShift(data, digits) {\n\tconst str = data.toString();\n\tif (str.includes(\"e\")) return data * Math.pow(10, digits);\n\tconst index = str.indexOf(\".\");\n\tif (index === -1) return data * Math.pow(10, digits);\n\tconst frac = str.slice(index + 1);\n\tconst integer = str.slice(0, index);\n\tif (frac.length <= digits) return +(integer + frac.padEnd(digits, \"0\"));\n\treturn +(integer + frac.slice(0, digits) + \".\" + frac.slice(digits));\n}\nfunction isMultipleOf(data, min, step) {\n\tstep = Math.abs(step);\n\tif (!/^\\d+\\.\\d+$/.test(step.toString())) return (data - min) % step === 0;\n\tconst index = step.toString().indexOf(\".\");\n\tconst digits = step.toString().slice(index + 1).length;\n\treturn Math.abs(decimalShift(data, digits) - decimalShift(min, digits)) % decimalShift(step, digits) === 0;\n}\nSchema.extend(\"number\", (data, { meta }, options) => {\n\tif (typeof data !== \"number\") throw new ValidationError(`expected number but got ${data}`, options);\n\tcheckWithinRange(data, meta, \"number\", options);\n\tconst { step } = meta;\n\tif (step && !isMultipleOf(data, meta.min ?? 0, step)) throw new ValidationError(`expected number multiple of ${step} but got ${data}`, options);\n\treturn [data];\n});\nSchema.extend(\"boolean\", (data, _, options) => {\n\tif (typeof data === \"boolean\") return [data];\n\tthrow new ValidationError(`expected boolean but got ${data}`, options);\n});\nSchema.extend(\"bitset\", (data, { bits, meta }, options) => {\n\tlet value = 0, keys = [];\n\tif (typeof data === \"number\") {\n\t\tvalue = data;\n\t\tfor (const key in bits) if (data & bits[key]) keys.push(key);\n\t} else if (Array.isArray(data)) {\n\t\tkeys = data;\n\t\tfor (const key of keys) {\n\t\t\tif (typeof key !== \"string\") throw new ValidationError(`expected string but got ${key}`, options);\n\t\t\tif (key in bits) value |= bits[key];\n\t\t}\n\t} else throw new ValidationError(`expected number or array but got ${data}`, options);\n\tif (value === meta.default) return [value];\n\treturn [value, keys];\n});\nSchema.extend(\"function\", (data, _, options) => {\n\tif (typeof data === \"function\") return [data];\n\tthrow new ValidationError(`expected function but got ${data}`, options);\n});\nSchema.extend(\"is\", (data, { constructor }, options) => {\n\tif (typeof constructor === \"function\") {\n\t\tif (data instanceof constructor) return [data];\n\t\tthrow new ValidationError(`expected ${constructor.name} but got ${data}`, options);\n\t} else {\n\t\tif (isNullable(data)) throw new ValidationError(`expected ${constructor} but got ${data}`, options);\n\t\tlet prototype = Object.getPrototypeOf(data);\n\t\twhile (prototype) {\n\t\t\tif (prototype.constructor?.name === constructor) return [data];\n\t\t\tprototype = Object.getPrototypeOf(prototype);\n\t\t}\n\t\tthrow new ValidationError(`expected ${constructor} but got ${data}`, options);\n\t}\n});\nfunction property(data, key, schema, options) {\n\ttry {\n\t\tconst [value, adapted] = Schema.resolve(data[key], schema, {\n\t\t\t...options,\n\t\t\tpath: [...options.path || [], key]\n\t\t});\n\t\tif (adapted !== void 0) data[key] = adapted;\n\t\treturn value;\n\t} catch (e) {\n\t\tif (!options?.autofix) throw e;\n\t\tdelete data[key];\n\t\treturn schema.meta.volatile ? createVolatile(schema.meta.default) : schema.meta.default;\n\t}\n}\nSchema.extend(\"array\", (data, { inner, meta }, options) => {\n\tif (!Array.isArray(data)) throw new ValidationError(`expected array but got ${data}`, options);\n\tcheckWithinRange(data.length, meta, \"array length\", options, !isNullable(inner.meta.default));\n\treturn [data.map((_, index) => property(data, index, inner, options))];\n});\nSchema.extend(\"dict\", (data, { inner, sKey }, options, strict) => {\n\tif (!isPlainObject(data)) throw new ValidationError(`expected object but got ${data}`, options);\n\tconst result = {};\n\tfor (const key in data) {\n\t\tlet rKey;\n\t\ttry {\n\t\t\trKey = Schema.resolve(key, sKey, options)[0];\n\t\t} catch (error) {\n\t\t\tif (strict) continue;\n\t\t\tthrow error;\n\t\t}\n\t\tresult[rKey] = property(data, key, inner, options);\n\t\tdata[rKey] = data[key];\n\t\tif (key !== rKey) delete data[key];\n\t}\n\treturn [result];\n});\nSchema.extend(\"tuple\", (data, { list }, options, strict) => {\n\tif (!Array.isArray(data)) throw new ValidationError(`expected array but got ${data}`, options);\n\tconst result = list.map((inner, index) => property(data, index, inner, options));\n\tif (strict) return [result];\n\tresult.push(...data.slice(list.length));\n\treturn [result];\n});\nfunction merge(result, data) {\n\tfor (const key in data) {\n\t\tif (key in result) continue;\n\t\tresult[key] = data[key];\n\t}\n}\nSchema.extend(\"object\", (data, { dict }, options, strict) => {\n\tif (!isPlainObject(data)) throw new ValidationError(`expected object but got ${data}`, options);\n\tconst result = {};\n\tfor (const key in dict) {\n\t\tconst value = property(data, key, dict[key], options);\n\t\tif (!isNullable(value) || key in data) result[key] = value;\n\t}\n\tif (!strict) merge(result, data);\n\treturn [result];\n});\nSchema.extend(\"union\", (data, { list, toString }, options, strict) => {\n\tconst messages = [];\n\tfor (const inner of list) try {\n\t\treturn Schema.resolve(data, inner, options, strict);\n\t} catch (error) {\n\t\tmessages.push(error);\n\t}\n\tthrow new ValidationError(`expected ${toString()} but got ${JSON.stringify(data)}`, options);\n});\nSchema.extend(\"intersect\", (data, { list, toString }, options, strict) => {\n\tif (!list.length) return [data];\n\tlet result;\n\tfor (const inner of list) {\n\t\tconst value = Schema.resolve(data, inner, options, true)[0];\n\t\tif (isNullable(value)) continue;\n\t\tif (isNullable(result)) result = value;\n\t\telse if (typeof result !== typeof value) throw new ValidationError(`expected ${toString()} but got ${JSON.stringify(data)}`, options);\n\t\telse if (typeof value === \"object\") merge(result ??= {}, value);\n\t\telse if (result !== value) throw new ValidationError(`expected ${toString()} but got ${JSON.stringify(data)}`, options);\n\t}\n\tif (!strict && isPlainObject(data)) merge(result, data);\n\treturn [result];\n});\nSchema.extend(\"transform\", (data, { inner, callback, preserve }, options) => {\n\tconst [result, adapted = data] = Schema.resolve(data, inner, options, true);\n\tif (preserve) return [callback(result)];\n\telse return [callback(result), callback(adapted)];\n});\nconst formatters = {};\nfunction defineMethod(name, keys, format) {\n\tformatters[name] = format;\n\tObject.assign(Schema, { [name](...args) {\n\t\tconst schema = new Schema({ type: name });\n\t\tkeys.forEach((key, index) => {\n\t\t\tswitch (key) {\n\t\t\t\tcase \"sKey\":\n\t\t\t\t\tschema.sKey = args[index] ?? Schema.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"inner\":\n\t\t\t\t\tschema.inner = Schema.from(args[index]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"list\":\n\t\t\t\t\tschema.list = args[index].map(Schema.from);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"dict\":\n\t\t\t\t\tschema.dict = valueMap(args[index], Schema.from);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"bits\":\n\t\t\t\t\tschema.bits = {};\n\t\t\t\t\tfor (const key in args[index]) {\n\t\t\t\t\t\tif (typeof args[index][key] !== \"number\") continue;\n\t\t\t\t\t\tschema.bits[key] = args[index][key];\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"callback\": {\n\t\t\t\t\tconst callback = schema.callback = args[index];\n\t\t\t\t\tcallback[\"toJSON\"] ||= () => callback.toString();\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"constructor\": {\n\t\t\t\t\tconst constructor = schema.constructor = args[index];\n\t\t\t\t\tif (typeof constructor === \"function\") constructor[\"toJSON\"] ||= () => constructor[\"name\"];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tdefault: schema[key] = args[index];\n\t\t\t}\n\t\t});\n\t\tif (name === \"object\" || name === \"dict\") schema.meta.default = {};\n\t\telse if (name === \"array\" || name === \"tuple\") schema.meta.default = [];\n\t\telse if (name === \"bitset\") schema.meta.default = 0;\n\t\treturn schema;\n\t} });\n}\ndefineMethod(\"is\", [\"constructor\"], ({ constructor }) => {\n\tif (typeof constructor === \"function\") return constructor.name;\n\telse return constructor;\n});\ndefineMethod(\"any\", [], () => \"any\");\ndefineMethod(\"never\", [], () => \"never\");\ndefineMethod(\"const\", [\"value\"], ({ value }) => typeof value === \"string\" ? JSON.stringify(value) : value);\ndefineMethod(\"string\", [], () => \"string\");\ndefineMethod(\"number\", [], () => \"number\");\ndefineMethod(\"boolean\", [], () => \"boolean\");\ndefineMethod(\"bitset\", [\"bits\"], () => \"bitset\");\ndefineMethod(\"function\", [], () => \"function\");\ndefineMethod(\"array\", [\"inner\"], ({ inner }) => `${inner.toString(true)}[]`);\ndefineMethod(\"dict\", [\"inner\", \"sKey\"], ({ inner, sKey }) => `{ [key: ${sKey.toString()}]: ${inner.toString()} }`);\ndefineMethod(\"tuple\", [\"list\"], ({ list }) => `[${list.map((inner) => inner.toString()).join(\", \")}]`);\ndefineMethod(\"object\", [\"dict\"], ({ dict }) => {\n\tif (Object.keys(dict).length === 0) return \"{}\";\n\treturn `{ ${Object.entries(dict).map(([key, inner]) => {\n\t\treturn `${key}${inner.meta.required ? \"\" : \"?\"}: ${inner.toString()}`;\n\t}).join(\", \")} }`;\n});\ndefineMethod(\"union\", [\"list\"], ({ list }, inline) => {\n\tconst result = list.map(({ toString: format }) => format()).join(\" | \");\n\treturn inline ? `(${result})` : result;\n});\ndefineMethod(\"intersect\", [\"list\"], ({ list }) => {\n\treturn `${list.map((inner) => inner.toString(true)).join(\" & \")}`;\n});\ndefineMethod(\"transform\", [\n\t\"inner\",\n\t\"callback\",\n\t\"preserve\"\n], ({ inner }, isInner) => inner.toString(isInner));\n//#endregion\nexport { Schema as default };\n","/**\n * Message protocol for opt-in extension worker\n * execution mode. This module is imported by BOTH the parent supervisor and\n * the worker runtime, so it must stay pure: types and dependency-free helpers\n * only — no Cordis, no node:worker_threads.\n */\n\n/** Upper bound for a per-operation `timeoutMs` override (mirrors extensions.ts). */\nexport const WORKER_OPERATION_TIMEOUT_MAX_MS = 300_000\n\n/** Ceiling for one serialized action result, enforced worker-side. */\nexport const WORKER_RESULT_MAX_BYTES = 4 * 1024 * 1024\n/** HTTP response metadata crossing threads stays within the ordinary HTTP header budget. */\nexport const WORKER_RESPONSE_METADATA_MAX_BYTES = 16 * 1024\n\n/** Per-stream credit window: the worker may send at most this many unacknowledged bytes. */\nexport const WORKER_STREAM_CREDIT_BYTES = 256 * 1024\n\n/** The worker splits source chunks larger than this before credit control. */\nexport const WORKER_STREAM_MAX_CHUNK_BYTES = 64 * 1024\n\n/** Per-worker aggregate bound: total unacknowledged bytes across ALL streams. */\nexport const WORKER_STREAM_AGGREGATE_BYTES = 1024 * 1024\n\n/** Logger-adapter budget per time window: bursts are allowed, silence is not permanent. */\nexport const WORKER_LOG_WINDOW_MS = 1_000\n\n/** If a cancelled stream is not ended by the worker within this grace, the supervisor terminates it. */\nexport const WORKER_STREAM_CANCEL_GRACE_MS = 1_000\n\n/** Default budget for one worker action when the action sets no override. */\nexport const WORKER_OPERATION_TIMEOUT_MS = 30_000\n\n/** After a deadline-detached action fails to settle within this grace, the worker is terminated. */\nexport const WORKER_DEADLINE_GRACE_MS = 250\n\n/** Parent → worker: activate one extension generation inside this runtime. */\nexport interface WorkerActivateMessage {\n  readonly kind: 'activate'\n  readonly id: string\n  readonly hostFile: string\n  readonly generation: string\n  /** Full manifest so `api.manifest` matches the in-process contract. */\n  readonly manifest: WorkerActivationManifest\n}\n\n/** Manifest shape crossing the boundary (structural, Cordis-free). */\nexport interface WorkerActivationManifest {\n  readonly schemaVersion: 1\n  readonly id: string\n  readonly name: string\n  readonly version: string\n  readonly description?: string\n}\n\n/** Parent → worker: run one action; reply with worker-serialized bytes. */\nexport interface WorkerInvokeMessage {\n  readonly kind: 'invoke'\n  readonly id: string\n  readonly action: string\n  readonly deviceId: string\n  readonly input: unknown\n}\n\n/** Parent → worker: the caller detached; stop the identified operation. */\nexport interface WorkerCancelMessage {\n  readonly kind: 'cancel'\n  readonly id: string\n}\n\n/** Parent → worker: run generation teardown inside the runtime. */\nexport interface WorkerDisposeMessage {\n  readonly kind: 'dispose'\n  readonly id: string\n}\n\n/** Parent → worker: run one route handler; the body crosses as bytes. */\nexport interface WorkerRouteMessage {\n  readonly kind: 'route'\n  readonly id: string\n  readonly routeIndex: number\n  readonly method: string\n  readonly path: string\n  readonly query: readonly (readonly [string, string])[]\n  readonly headers: Readonly<Record<string, string>>\n  readonly body: Uint8Array\n  readonly deviceId: string\n}\n\n/** Parent → worker: the consumer took this many streamed bytes; grant credit. */\nexport interface WorkerStreamAckMessage {\n  readonly kind: 'stream-ack'\n  readonly id: string\n  readonly bytes: number\n}\n\n/** Parent → worker: the consumer is gone; stop this stream. */\nexport interface WorkerStreamCancelMessage {\n  readonly kind: 'stream-cancel'\n  readonly id: string\n}\n\nexport type ParentMessage = WorkerActivateMessage | WorkerInvokeMessage | WorkerCancelMessage | WorkerDisposeMessage | WorkerRouteMessage | WorkerStreamAckMessage | WorkerStreamCancelMessage\n\n/** Metadata for one action, crossing the boundary without its functions. */\nexport interface WorkerActionMetadata {\n  readonly name: string\n  readonly timeoutMs?: number\n}\n\n/** Metadata for one route, crossing the boundary without its functions. */\nexport interface WorkerRouteMetadata {\n  readonly method: string\n  readonly path: string\n  readonly kind?: 'exact' | 'prefix'\n  readonly timeoutMs?: number\n}\n\n/** Worker → parent: activation finished; registration crossed as metadata only. */\nexport interface WorkerActivatedMessage {\n  readonly kind: 'activated'\n  readonly runtimeId: string\n  readonly actions: readonly WorkerActionMetadata[]\n  readonly routes: readonly WorkerRouteMetadata[]\n}\n\n/** Worker → parent: an action produced size-checked JSON bytes. */\nexport interface WorkerResultMessage {\n  readonly kind: 'result'\n  readonly runtimeId: string\n  readonly id: string\n  readonly bytes: Uint8Array\n}\n\n/** Worker → parent: an operation failed with a controlled business error. */\nexport interface WorkerErrorMessage {\n  readonly kind: 'error'\n  readonly runtimeId: string\n  readonly id: string\n  readonly code: string\n  readonly message: string\n  readonly status: number\n}\n\n/** Worker → parent: bounded logger-adapter traffic. */\nexport interface WorkerLogMessage {\n  readonly kind: 'log'\n  readonly level: 'debug' | 'info' | 'warn' | 'error'\n  readonly args: readonly unknown[]\n}\n\n/** Worker → parent: a route produced a complete buffered response as bytes. */\nexport interface WorkerRouteResponseMessage {\n  readonly kind: 'route-response'\n  readonly runtimeId: string\n  readonly id: string\n  readonly status?: number\n  readonly contentType?: string\n  readonly headers?: Readonly<Record<string, string>>\n  readonly bytes?: Uint8Array\n}\n\n/** Worker → parent: a route produced a stream; chunks follow under credit control. */\nexport interface WorkerStreamStartMessage {\n  readonly kind: 'stream-start'\n  readonly runtimeId: string\n  readonly id: string\n  readonly status?: number\n  readonly contentType?: string\n  readonly headers?: Readonly<Record<string, string>>\n}\n\n/** Worker → parent: one stream chunk, sent only while credit remains. */\nexport interface WorkerStreamChunkMessage {\n  readonly kind: 'stream-chunk'\n  readonly runtimeId: string\n  readonly id: string\n  readonly bytes: Uint8Array\n}\n\n/** Worker → parent: the stream finished normally. */\nexport interface WorkerStreamEndMessage {\n  readonly kind: 'stream-end'\n  readonly runtimeId: string\n  readonly id: string\n}\n\n/** Worker → parent: the stream failed. */\nexport interface WorkerStreamErrorMessage {\n  readonly kind: 'stream-error'\n  readonly runtimeId: string\n  readonly id: string\n  readonly message: string\n}\n\nexport type WorkerMessage = WorkerActivatedMessage | WorkerResultMessage | WorkerErrorMessage | WorkerLogMessage | WorkerRouteResponseMessage | WorkerStreamStartMessage | WorkerStreamChunkMessage | WorkerStreamEndMessage | WorkerStreamErrorMessage\n\n/** Validate an optional per-operation timeout override against the same bounds as in-process. */\nexport function validOperationTimeout(value: unknown): number | undefined {\n  if (value === undefined) return undefined\n  if (typeof value !== 'number' || !Number.isInteger(value) || value < 1 || value > WORKER_OPERATION_TIMEOUT_MAX_MS) return undefined\n  return value\n}\n\n/** Normalize an extension route path exactly like the in-process registry. */\nexport function normalizeWorkerRoutePath(value: string): string {\n  if (typeof value !== 'string' || value.length === 0 || value.length > 256 || value.includes('?') || value.includes('#') || value.includes('\\\\') || /[\\u0000-\\u001f\\u007f]/u.test(value)) throw new Error('invalid route path')\n  const normalizedInput = value.startsWith('/') ? value : `/${value}`\n  const parts = normalizedInput.split('/')\n  if (parts.some(part => part === '..' || part === '.')) throw new Error('invalid route path')\n  return normalizedInput === '/' ? '/' : normalizedInput.replace(/\\/+$/u, '')\n}\n\n/**\n * Recognize a controlled business error (MobileExtensionError shape) thrown by\n * host code so its code/status survive the boundary instead of collapsing to\n * a generic 500. Pure duck-typing keeps the runtime Cordis-free.\n */\nexport function businessErrorShape(error: unknown): { readonly code: string; readonly message: string; readonly status: number } | undefined {\n  if (error === null || typeof error !== 'object') return undefined\n  const candidate = error as { readonly code?: unknown; readonly message?: unknown; readonly status?: unknown }\n  if (typeof candidate.code !== 'string' || candidate.code.length === 0 || candidate.code.length > 64) return undefined\n  if (typeof candidate.message !== 'string' || candidate.message.length > 500) return undefined\n  if (typeof candidate.status !== 'number' || !Number.isInteger(candidate.status) || candidate.status < 400 || candidate.status > 599) return undefined\n  return { code: candidate.code, message: candidate.message, status: candidate.status }\n}\n\n/**\n * Serialize an action result to JSON bytes worker-side.\n *\n * Plain JSON.stringify, matching the in-process gateway contract exactly:\n * non-JSON-serializable values (e.g. BigInt) throw and surface as\n * `extension_failed`, same as in-process mode today.\n */\nexport function serializeWorkerResult(value: unknown): Uint8Array {\n  const serialized = JSON.stringify(value)\n  if (serialized === undefined) throw new Error('extension result is not JSON serializable')\n  return new TextEncoder().encode(serialized)\n}\n","/**\n * Worker-side runtime for opt-in local extension hosts.\n *\n * This file is a standalone tsdown entry (lib/extension-worker-runtime.mjs).\n * It executes ALL host behavior inside the worker thread — module import,\n * activation, input validation, actions, effects and cleanup — and answers the\n * parent with metadata and pre-serialized bytes only. It must never import\n * Cordis or any DSH service.\n */\nimport { parentPort, workerData } from 'node:worker_threads'\nimport { inspect } from 'node:util'\nimport { resolveHostExecution } from './extension-worker-config.js'\nimport { randomUUID } from 'node:crypto'\nimport { pathToFileURL } from 'node:url'\nimport z from '@deepseek-ai/schemastery'\nimport {\n  businessErrorShape,\n  normalizeWorkerRoutePath,\n  serializeWorkerResult,\n  validOperationTimeout,\n  WORKER_RESPONSE_METADATA_MAX_BYTES,\n  type ParentMessage,\n  type WorkerActionMetadata,\n  type WorkerRouteMetadata,\n} from './extension-worker-protocol.js'\n\ninterface RuntimeActionSpec {\n  readonly timeoutMs?: number\n  readonly input?: ((value: unknown) => unknown) | { parse(value: unknown): unknown }\n  readonly run: (context: { readonly signal: AbortSignal; readonly deviceId: string }, input: unknown) => unknown\n}\n\ninterface RuntimeRouteSpec {\n  readonly method: string\n  readonly path: string\n  readonly kind?: 'exact' | 'prefix'\n  readonly timeoutMs?: number\n  readonly handle: (request: {\n    readonly method: string\n    readonly pathname: string\n    readonly query: URLSearchParams\n    readonly headers: Readonly<Record<string, string>>\n    readonly body: Buffer\n    readonly signal: AbortSignal\n    readonly deviceId: string\n  }) => { status?: number; contentType?: string; headers?: Record<string, string>; body: string | Uint8Array | import('node:stream').Readable } | Promise<{ status?: number; contentType?: string; headers?: Record<string, string>; body: string | Uint8Array | import('node:stream').Readable }>\n}\n\ntype HostModule = { readonly default?: (api: RuntimeHostApi) => void | Promise<void> }\n\n/**\n * The worker-side host API. `context` is a documented LOGGER-ONLY adapter —\n * it is deliberately not typed or advertised as a Cordis Context.\n */\ninterface RuntimeHostApi {\n  readonly manifest: { readonly id: string }\n  readonly context: { readonly logger: Record<'debug' | 'info' | 'warn' | 'error', (...args: unknown[]) => void> }\n  readonly schema: typeof z\n  readonly signal: AbortSignal\n  action(name: string, spec: RuntimeActionSpec): void\n  route(spec: RuntimeRouteSpec): void\n  effect(setup: () => void | (() => void | Promise<void>) | Promise<void | (() => void | Promise<void>)>): void\n}\n\nconst parentChannel = parentPort\nif (parentChannel === null) throw new Error('extension-worker-runtime must run inside a Worker')\nconst port = parentChannel\nconst limits = resolveHostExecution((workerData as { readonly limits?: unknown } | undefined)?.limits)\n\n/** Logger-adapter burst budget per time window; the budget resets each window. */\nconst LOG_QUEUE_LIMIT = limits.logMessagesPerWindow\n\nconst runtimeId = randomUUID()\nconst generationController = new AbortController()\nconst actions = new Map<string, RuntimeActionSpec>()\nconst routes: RuntimeRouteSpec[] = []\nconst cleanups: (() => void | Promise<void>)[] = []\nlet logWindowCount = 0\nlet logWindowStartedAt = Date.now()\n\nfunction send(message: unknown): void {\n  port.postMessage(message)\n}\n\n/** Upper bound for one stringified log argument forwarded to the parent. */\nconst LOG_ARG_MAX_CHARS = limits.logMessageBytes\n\n/** Render a log argument that structured cloning cannot carry (or that is huge). */\nfunction sanitizeLogArg(value: unknown): string {\n  const rendered = typeof value === 'string' ? value : inspect(value, { depth: 2, maxArrayLength: 16, maxStringLength: 256, customInspect: false, getters: false })\n  return rendered.slice(0, LOG_ARG_MAX_CHARS)\n}\n\nfunction log(level: 'debug' | 'info' | 'warn' | 'error', args: readonly unknown[]): void {\n  const now = Date.now()\n  if (now - logWindowStartedAt >= limits.logWindowMs) {\n    logWindowStartedAt = now\n    logWindowCount = 0\n  }\n  if (logWindowCount >= LOG_QUEUE_LIMIT) return\n  logWindowCount += 1\n  try {\n    // Logging must never fail the host's calling code: clone-unsafe values are\n    // rendered, oversized strings are truncated, and a postMessage failure\n    // (deep non-cloneable objects) is swallowed.\n    let remaining = limits.logMessageBytes\n    const rendered: string[] = []\n    for (const arg of args) {\n      if (remaining <= 0) break\n      const bytes = Buffer.from(sanitizeLogArg(arg)).subarray(0, remaining)\n      const text = bytes.toString('utf8').replace(/\\uFFFD$/u, '')\n      rendered.push(text); remaining -= Buffer.byteLength(text)\n    }\n    send({ kind: 'log', level, args: rendered })\n  } catch (error) { void error /* Logging cannot fail host execution. */ }\n}\n\n/** Bound a forwarded error message so it cannot carry unbounded text. */\nfunction boundedMessage(error: unknown): string {\n  const text = error instanceof Error ? error.message : String(error)\n  return text.length > 500 ? text.slice(0, 500) : text\n}\n\nconst loggerAdapter = {\n  debug: (...args: unknown[]) => { log('debug', args) },\n  info: (...args: unknown[]) => { log('info', args) },\n  warn: (...args: unknown[]) => { log('warn', args) },\n  error: (...args: unknown[]) => { log('error', args) },\n}\n\n/** The lifecycle RPC id currently in flight, for outer-catch replies. */\nlet lifecycleReplyId = 'lifecycle'\n\nport.on('message', (message: ParentMessage) => {\n  void handleMessage(message).catch((error: unknown) => {\n    send({ kind: 'error', runtimeId, id: lifecycleReplyId, code: 'extension_failed', message: boundedMessage(error), status: 500 })\n  })\n})\n\n/** Live per-request controllers, so parent cancel messages abort running work. */\nconst requestControllers = new Map<string, AbortController>()\n\nfunction abortRequest(id: string): void {\n  requestControllers.get(id)?.abort(new Error('request cancelled'))\n}\n\n/** Live stream sources by request id, so generation abort can destroy them. */\nconst activeSources = new Map<string, import('node:stream').Readable>()\n\n/** Credit per stream id; the worker pauses a source when its window is exhausted. */\nconst streamCredit = new Map<string, number>()\n\n/** Sent and acknowledged bytes per stream; their difference is in-flight load. */\nconst streamSent = new Map<string, number>()\nconst streamAcked = new Map<string, number>()\n\n/** FIFO demands reserve aggregate bytes before waking a source pump. */\nconst sendBudgetWaiters: { readonly id: string; readonly length: number; readonly bail: () => boolean; readonly resolve: (granted: boolean) => void }[] = []\nconst finishedStreams = new Set<string>()\nlet drainingBudget = false\n\n/** Bytes sent but not yet acknowledged, across all live streams. */\nfunction inFlightTotal(): number {\n  let total = 0\n  for (const [id, sent] of streamSent) total += sent - (streamAcked.get(id) ?? 0)\n  return total\n}\n\nfunction wakeSendBudgetWaiters(): void {\n  if (drainingBudget) return\n  drainingBudget = true\n  try {\n    for (let index = 0; index < sendBudgetWaiters.length;) {\n      const waiter = sendBudgetWaiters[index]!\n      if (waiter.bail()) { sendBudgetWaiters.splice(index, 1); waiter.resolve(false); continue }\n      // An unconsumed full stream does not block siblings that have their own window credit.\n      if ((streamCredit.get(waiter.id) ?? 0) < waiter.length) { index += 1; continue }\n      // Protect headroom for the oldest eligible demand: a hot small-chunk producer cannot continually steal it.\n      if (inFlightTotal() + waiter.length > limits.streamAggregateBytes) break\n      if (!tryReserve(waiter.id, waiter.length)) throw new Error('worker stream reservation failed')\n      sendBudgetWaiters.splice(index, 1)\n      waiter.resolve(true)\n    }\n  } finally { drainingBudget = false }\n}\n\n/**\n * Atomically check and debit send budget for one piece: the per-stream window\n * must hold it AND the per-worker aggregate in-flight bound must hold. Check\n * and debit are one synchronous step, so concurrently awakened pumps can never\n * double-reserve the same freed capacity.\n */\nfunction tryReserve(id: string, length: number): boolean {\n  const credit = streamCredit.get(id) ?? 0\n  if (credit < length) return false\n  if (inFlightTotal() + length > limits.streamAggregateBytes) return false\n  streamCredit.set(id, credit - length)\n  streamSent.set(id, (streamSent.get(id) ?? 0) + length)\n  return true\n}\n\n/** Wait until a piece may be sent; resolves false when the caller bailed. */\nasync function acquireSendBudget(id: string, length: number, bail: () => boolean): Promise<boolean> {\n  if (bail()) return false\n  return new Promise<boolean>(resolve => { sendBudgetWaiters.push({ id, length, bail, resolve }); wakeSendBudgetWaiters() })\n}\n\nasync function handleMessage(message: ParentMessage): Promise<void> {\n  if (message.kind === 'activate') {\n    lifecycleReplyId = message.id\n    await activate(message.id, message.hostFile, message.generation, message.manifest)\n    return\n  }\n  if (message.kind === 'invoke') {\n    await runAction(message.id, message.action, message.deviceId, message.input)\n    return\n  }\n  if (message.kind === 'route') {\n    await runRoute(message)\n    return\n  }\n  if (message.kind === 'stream-ack') {\n    if (!streamSent.has(message.id) || !Number.isInteger(message.bytes) || message.bytes < 0 || message.bytes > (streamSent.get(message.id) ?? 0) - (streamAcked.get(message.id) ?? 0)) return\n    streamAcked.set(message.id, (streamAcked.get(message.id) ?? 0) + message.bytes)\n    if (!finishedStreams.has(message.id)) streamCredit.set(message.id, (streamCredit.get(message.id) ?? 0) + message.bytes)\n    if (finishedStreams.has(message.id) && streamSent.get(message.id) === streamAcked.get(message.id)) releaseStreamAccounting(message.id)\n    // Freed aggregate headroom may unblock streams that opened starved.\n    wakeSendBudgetWaiters()\n    return\n  }\n  if (message.kind === 'stream-cancel') {\n    const source = activeSources.get(message.id)\n    source?.destroy()\n    if (finishedStreams.has(message.id)) releaseStreamAccounting(message.id)\n    // A pump parked on exhausted budget must wake up and observe the destroy.\n    wakeSendBudgetWaiters()\n    return\n  }\n  if (message.kind === 'cancel') {\n    abortRequest(message.id)\n    return\n  }\n  if (message.kind === 'dispose') {\n    lifecycleReplyId = message.id\n    generationController.abort()\n    for (const source of activeSources.values()) source.destroy()\n    const pending: Promise<unknown>[] = []\n    for (const cleanup of [...cleanups].reverse()) {\n      try { pending.push(Promise.resolve(cleanup())) } catch { /* teardown cannot block the parent */ }\n    }\n    await Promise.allSettled(pending)\n    send({ kind: 'result', runtimeId, id: message.id, bytes: new Uint8Array() })\n    return\n  }\n}\n\nasync function runRoute(message: {\n  readonly id: string\n  readonly routeIndex: number\n  readonly method: string\n  readonly path: string\n  readonly query: readonly (readonly [string, string])[]\n  readonly headers: Readonly<Record<string, string>>\n  readonly body: Uint8Array\n  readonly deviceId: string\n}): Promise<void> {\n  const spec = routes[message.routeIndex]\n  if (spec === undefined) {\n    send({ kind: 'error', runtimeId, id: message.id, code: 'route_not_found', message: 'route not found', status: 404 })\n    return\n  }\n  const controller = new AbortController()\n  requestControllers.set(message.id, controller)\n  const onGenerationAbort = (): void => { controller.abort(generationController.signal.reason) }\n  if (generationController.signal.aborted) controller.abort()\n  else generationController.signal.addEventListener('abort', onGenerationAbort, { once: true })\n  try {\n    const response = await spec.handle({\n      method: message.method,\n      pathname: message.path,\n      query: new URLSearchParams([...message.query].map(([key, value]) => [key, value] as [string, string])),\n      headers: message.headers,\n      body: Buffer.from(message.body),\n      signal: controller.signal,\n      deviceId: message.deviceId,\n    })\n    if (response === null || typeof response !== 'object') {\n      send({ kind: 'error', runtimeId, id: message.id, code: 'invalid_route_response', message: 'extension returned an invalid response', status: 500 })\n      return\n    }\n    const body:unknown = response.body\n    if (typeof body !== 'string' && !(body instanceof Uint8Array) && !isStream(body)) throw Object.assign(new Error('extension returned an invalid response'), {code:'invalid_route_response',status:500})\n    let wireMeta:ReturnType<typeof snapshotResponseMetadata>\n    try {wireMeta = snapshotResponseMetadata(response)} catch(error) {\n      if(isStream(body)){body.once('error',()=>undefined);body.destroy()}\n      throw error\n    }\n    if (isStream(body)) {\n      await pumpStream(message.id, body, wireMeta)\n      return\n    }\n    const bytes = typeof body === 'string' ? new TextEncoder().encode(body) : new Uint8Array(body)\n    if (bytes.byteLength > limits.resultMaxBytes) {\n      send({ kind: 'error', runtimeId, id: message.id, code: 'extension_result_too_large', message: 'extension response is too large', status: 500 })\n      return\n    }\n    send({\n      kind: 'route-response', runtimeId, id: message.id,\n      ...wireMeta,\n      bytes,\n    })\n  } catch (error) {\n    const business = businessErrorShape(error)\n    if (business !== undefined) {\n      send({ kind: 'error', runtimeId, id: message.id, code: business.code, message: business.message, status: business.status })\n      return\n    }\n    send({ kind: 'error', runtimeId, id: message.id, code: 'extension_failed', message: boundedMessage(error), status: 500 })\n  } finally {\n    requestControllers.delete(message.id)\n    generationController.signal.removeEventListener('abort', onGenerationAbort)\n  }\n}\n\nfunction isStream(value: unknown): value is import('node:stream').Readable {\n  return value !== null && typeof value === 'object' && typeof (value as { pipe?: unknown }).pipe === 'function'\n}\n\nasync function pumpStream(id: string, source: import('node:stream').Readable, meta: { status?: number; contentType?: string; headers?: Record<string, string> }): Promise<void> {\n  activeSources.set(id, source)\n  streamCredit.set(id, limits.streamWindowBytes)\n  streamSent.set(id, 0)\n  streamAcked.set(id, 0)\n  send({\n    kind: 'stream-start', runtimeId, id,\n    ...(meta.status === undefined ? {} : { status: meta.status }),\n    ...(meta.contentType === undefined ? {} : { contentType: meta.contentType }),\n    ...(meta.headers === undefined ? {} : { headers: meta.headers }),\n  })\n  let ended = false\n  const finish = (): void => {\n    if (ended) return\n    ended = true\n    activeSources.delete(id)\n    streamCredit.delete(id)\n    finishedStreams.add(id)\n    if (source.destroyed && !source.readableEnded || streamSent.get(id) === streamAcked.get(id)) releaseStreamAccounting(id)\n    // Freed aggregate budget may unblock other streams.\n    wakeSendBudgetWaiters()\n  }\n  source.once('error', error => {\n    if (ended) return\n    finish()\n    send({ kind: 'stream-error', runtimeId, id, message: boundedMessage(error) })\n  })\n  try {\n    for await (const chunk of source) {\n      const bytes = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk as Uint8Array)\n      if (ended) return\n      // A chunk larger than the whole window can never be granted: split it.\n      for (let offset = 0; offset < bytes.byteLength;) {\n        const piece = bytes.subarray(offset, Math.min(offset + limits.streamChunkBytes, bytes.byteLength))\n        // Explicit pull/credit flow control plus the per-worker aggregate bound;\n        // reservation is atomic, so competing wakes cannot over-send.\n        if (!(await acquireSendBudget(id, piece.byteLength, () => source.destroyed || ended))) {\n          finish()\n          send({ kind: 'stream-end', runtimeId, id })\n          source.destroy()\n          return\n        }\n        send({ kind: 'stream-chunk', runtimeId, id, bytes: new Uint8Array(piece) })\n        offset += piece.byteLength\n      }\n    }\n    finish()\n    send({ kind: 'stream-end', runtimeId, id })\n  } catch (error) {\n    if (ended) return\n    finish()\n    send({ kind: 'stream-error', runtimeId, id, message: boundedMessage(error) })\n  }\n}\n\n/** Evaluate extension metadata only in the worker and forward the Gateway's existing safe headers. */\nfunction snapshotResponseMetadata(response: {status?:number;contentType?:string;headers?:Record<string,string>}): {status?:number;contentType?:string;headers?:Record<string,string>} {\n  const status = response.status\n  const contentType = response.contentType\n  if (status !== undefined && (!Number.isSafeInteger(status) || status < 200 || status > 599)) throw Object.assign(new Error('invalid HTTP status'), {code:'invalid_route_response',status:500})\n  if (contentType !== undefined && (typeof contentType !== 'string' || contentType.length > 1024 || !/^[\\x20-\\x7e]+$/u.test(contentType) || !/^[\\w!#$&+.^-]+\\/[\\w!#$&+.^-]+(?:;[\\x20-\\x7e]*)?$/u.test(contentType))) throw Object.assign(new Error('invalid content type'), {code:'invalid_route_response',status:500})\n  const headers:Record<string,string> = {}\n  const source = response.headers\n  let bytes = Buffer.byteLength(contentType ?? '')\n  if (source !== undefined) {\n    if (source === null || typeof source !== 'object' || Array.isArray(source)) throw Object.assign(new Error('invalid response headers'), {code:'invalid_route_response',status:500})\n    for (const name of Object.keys(source)) {\n      if (!/^(?:content-disposition|cache-control|etag)$/iu.test(name)) continue\n      const value = source[name]\n      if (typeof value !== 'string') throw Object.assign(new Error('invalid response header'), {code:'invalid_route_response',status:500})\n      if (/[\\r\\n]/u.test(value)) continue\n      bytes += Buffer.byteLength(name) + Buffer.byteLength(value)\n      if (bytes > WORKER_RESPONSE_METADATA_MAX_BYTES) throw Object.assign(new Error('response headers are too large'), {code:'invalid_route_response',status:500})\n      headers[name.toLowerCase()] = value\n    }\n  }\n  return {...(status === undefined ? {} : {status}),...(contentType === undefined ? {} : {contentType}),...(source === undefined ? {} : {headers})}\n}\n\nfunction releaseStreamAccounting(id: string): void {\n  finishedStreams.delete(id); streamCredit.delete(id); streamSent.delete(id); streamAcked.delete(id)\n  wakeSendBudgetWaiters()\n}\n\nasync function activate(replyId: string, hostFile: string, generation: string, manifest: import('./extension-worker-protocol.js').WorkerActivationManifest): Promise<void> {\n  // Async effect setups gate activation exactly like the in-process path: a\n  // rejection fails activation instead of vanishing.\n  const pendingEffects: Promise<void>[] = []\n  let activationOpen = true\n  const ensureOpen = (): void => { if (!activationOpen || generationController.signal.aborted) throw new Error('host activation is closed') }\n  const api: RuntimeHostApi = {\n    manifest: Object.freeze(manifest),\n    context: Object.freeze({ logger: Object.freeze(loggerAdapter) }),\n    schema: z,\n    signal: generationController.signal,\n    action(name, spec) {\n      ensureOpen()\n      if (!/^[a-z][a-z0-9-]{0,63}$/u.test(name) || typeof spec?.run !== 'function') throw runtimeError('invalid_action', `invalid action ${name}`)\n      if (actions.has(name)) throw runtimeError('duplicate_action', `duplicate action ${name}`)\n      if (actions.size + routes.length >= limits.maxRegistrations) throw runtimeError('extension_registration_limit', 'local worker registration limit reached')\n      const timeoutMs = checkedTimeout(spec.timeoutMs, 'invalid_action')\n      const input = spec.input\n      actions.set(name, Object.freeze({ run: spec.run.bind(spec), ...(input === undefined ? {} : { input: typeof input === 'function' ? input : Object.freeze({ parse: input.parse.bind(input) }) }), ...(timeoutMs === undefined ? {} : { timeoutMs }) }))\n    },\n    route(spec) {\n      ensureOpen()\n      if (typeof spec?.handle !== 'function') throw runtimeError('invalid_route', 'invalid route')\n      if (actions.size + routes.length >= limits.maxRegistrations) throw runtimeError('extension_registration_limit', 'local worker registration limit reached')\n      const method = spec.method.toUpperCase()\n      if (!['GET', 'HEAD', 'POST', 'PUT', 'PATCH', 'DELETE'].includes(method) || spec.kind !== undefined && spec.kind !== 'exact' && spec.kind !== 'prefix') throw new Error('invalid route')\n      const path = normalizeWorkerRoutePath(spec.path)\n      const kind = spec.kind ?? 'exact'\n      if (routes.some(route => route.method === method && route.path === path && (route.kind ?? 'exact') === kind)) throw new Error('duplicate route')\n      const timeoutMs = checkedTimeout(spec.timeoutMs, 'invalid_route')\n      routes.push(Object.freeze({ method, path, kind, handle: spec.handle.bind(spec), ...(timeoutMs === undefined ? {} : { timeoutMs }) }))\n    },\n    effect(setup) {\n      ensureOpen()\n      const result = setup()\n      if (result instanceof Promise) {\n        const pending = result.then(async cleanup => {\n          if (typeof cleanup !== 'function') return\n          if (activationOpen && !generationController.signal.aborted) cleanups.push(cleanup)\n          else await cleanup()\n        })\n        pendingEffects.push(pending)\n        void pending.catch(() => undefined)\n      } else if (typeof result === 'function') {\n        cleanups.push(result)\n      }\n    },\n  }\n  let imported: HostModule\n  try {\n    imported = await import(`${pathToFileURL(hostFile).href}?dsh_generation=${generation}`) as HostModule\n  } catch {\n    send({ kind: 'error', runtimeId, id: replyId, code: 'host_load_failed', message: 'could not load host.mjs', status: 500 })\n    return\n  }\n  if (generationController.signal.aborted) return\n  try {\n    if (imported.default !== undefined) await imported.default(api)\n    await Promise.all(pendingEffects)\n  } catch (error) {\n    activationOpen = false\n    const business = businessErrorShape(error)\n    send({ kind: 'error', runtimeId, id: replyId, code: business?.code ?? 'host_activation_failed', message: boundedMessage(error), status: business?.status ?? 500 })\n    return\n  }\n  activationOpen = false\n  const actionMetadata: WorkerActionMetadata[] = [...actions.entries()].map(([name, spec]) => {\n    const timeoutMs = validOperationTimeout(spec.timeoutMs)\n    return { name, ...(timeoutMs === undefined ? {} : { timeoutMs }) }\n  })\n  const routeMetadata: WorkerRouteMetadata[] = routes.map(route => {\n    const timeoutMs = validOperationTimeout(route.timeoutMs)\n    return {\n      method: String(route.method).toUpperCase(),\n      path: normalizeWorkerRoutePath(route.path),\n      kind: route.kind ?? 'exact',\n      ...(timeoutMs === undefined ? {} : { timeoutMs }),\n    }\n  })\n  send({ kind: 'activated', runtimeId, actions: actionMetadata, routes: routeMetadata })\n}\n\nfunction checkedTimeout(value: unknown, code: string): number | undefined {\n  if (value === undefined) return undefined\n  const timeout = validOperationTimeout(value)\n  if (timeout === undefined) throw Object.assign(new Error('operation timeoutMs is invalid'), { code, status: 400 })\n  return timeout\n}\n\nfunction runtimeError(code: string, message: string): Error & { readonly code: string; readonly status: number } {\n  return Object.assign(new Error(message), { code, status: 400 })\n}\n\nasync function runAction(id: string, name: string, deviceId: string, input: unknown): Promise<void> {\n  const spec = actions.get(name)\n  if (spec === undefined) {\n    send({ kind: 'error', runtimeId, id, code: 'action_not_found', message: `action ${name} not found`, status: 404 })\n    return\n  }\n  const controller = new AbortController()\n  requestControllers.set(id, controller)\n  const onGenerationAbort = (): void => { controller.abort(generationController.signal.reason) }\n  if (generationController.signal.aborted) controller.abort()\n  else generationController.signal.addEventListener('abort', onGenerationAbort, { once: true })\n  const errorReply = (error: unknown): void => {\n    const business = businessErrorShape(error)\n    if (business !== undefined) {\n      send({ kind: 'error', runtimeId, id, code: business.code, message: business.message, status: business.status })\n      return\n    }\n    send({ kind: 'error', runtimeId, id, code: 'extension_failed', message: boundedMessage(error), status: 500 })\n  }\n  try {\n    let parsed = input\n    if (spec.input !== undefined) {\n      try {\n        parsed = typeof spec.input === 'function' ? spec.input(input) : spec.input.parse(input) ?? input\n        parsed = await parsed\n      } catch {\n        // Input validation failures keep the in-process contract: 400.\n        send({ kind: 'error', runtimeId, id, code: 'invalid_action_input', message: 'action input is invalid', status: 400 })\n        return\n      }\n    }\n    controller.signal.throwIfAborted()\n    const value = await spec.run({ signal: controller.signal, deviceId }, parsed)\n    const bytes = serializeWorkerResult(value)\n    if (bytes.byteLength > limits.resultMaxBytes) {\n      send({ kind: 'error', runtimeId, id, code: 'extension_result_too_large', message: 'extension result is too large', status: 500 })\n      return\n    }\n    send({ kind: 'result', runtimeId, id, bytes })\n  } catch (error) {\n    errorReply(error)\n  } finally {\n    requestControllers.delete(id)\n    generationController.signal.removeEventListener('abort', onGenerationAbort)\n  }\n}\n"],"x_google_ignoreList":[1,2],"mappings":"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"}