dsh-mobile 0.6.14 → 0.6.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"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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"}
1
+ {"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"],"ignoreList":[1,2],"mappings":"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"}