dsh-composer-ux 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +47 -0
- package/LICENSE +21 -0
- package/README.md +148 -0
- package/cordis.patch.yml +12 -0
- package/lib/client.js +1626 -0
- package/lib/client.js.map +7 -0
- package/lib/index.js +1029 -0
- package/lib/index.js.map +7 -0
- package/package.json +54 -0
package/lib/index.js.map
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../DeepSeek Harness/vendor/cosmokit/lib/index.js", "../../../../DeepSeek Harness/vendor/schemastery/lib/index.mjs", "../src/settings-contract.ts", "../src/host.ts"],
|
|
4
|
+
"sourcesContent": ["//#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/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/** Deeply compare arrays, dates, regexps, buffers, and plain object fields. */\nfunction deepEqual(a, b, strict) {\n\tif (a === b) return true;\n\tif (!strict && isNullable(a) && isNullable(b)) return true;\n\tif (typeof a !== typeof b) return false;\n\tif (typeof a !== \"object\") return false;\n\tif (!a || !b) return false;\n\tfunction check(test, then) {\n\t\treturn test(a) ? test(b) ? then(a, b) : false : test(b) ? false : void 0;\n\t}\n\treturn check(Array.isArray, (a, b) => a.length === b.length && a.every((item, index) => deepEqual(item, b[index]))) ?? check(is(\"Date\"), (a, b) => a.valueOf() === b.valueOf()) ?? check(is(\"RegExp\"), (a, b) => a.source === b.source && a.flags === b.flags) ?? check(isArrayBufferLike, (a, b) => {\n\t\tif (a.byteLength !== b.byteLength) return false;\n\t\tconst viewA = new Uint8Array(a);\n\t\tconst viewB = new Uint8Array(b);\n\t\tfor (let i = 0; i < viewA.length; i++) if (viewA[i] !== viewB[i]) return false;\n\t\treturn true;\n\t}) ?? Object.keys({\n\t\t...a,\n\t\t...b\n\t}).every((key) => deepEqual(a[key], b[key], strict));\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, deduplicate, deepEqual, defineProperty, difference, filterKeys, formatProperty, hexToArrayBuffer, hyphenate, intersection, is, isNonNullable, isNullable, isPlainObject, makeArray, mapValues, mapValues as valueMap, noop, omit, paramCase, pick, remove, sanitize, snakeCase, trimSlash, uncapitalize, union };\n", "import { Binary, clone, deepEqual, filterKeys, isNullable, isPlainObject, 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 (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} });\nconst resolvers = {};\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.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}\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.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 * dsh-composer-ux \u516C\u5171\u5951\u7EA6\uFF1A\u8BBE\u7F6E\u5B57\u6BB5\u3001\u9ED8\u8BA4\u503C\u3001\u5C55\u793A\u5143\u6570\u636E\u3002\n * \u672C\u6A21\u5757\u5FC5\u987B\u96F6 import\uFF08host \u4E0E client \u4E24\u534A\u5171\u7528\uFF0C\u8DE8\u7AEF\u4E0D\u5171\u4EAB\u4EFB\u4F55\u8FD0\u884C\u65F6\u8EAB\u4EFD\uFF09\u3002\n */\n\n/** Host settings namespace\uFF08\u5C0F\u5199\u5B57\u6BCD/\u6570\u5B57/\u8FDE\u5B57\u7B26\uFF09\u3002 */\nexport const NAMESPACE = 'composer-ux'\n\n/** \u5168\u5C40\u603B\u5F00\u5173\u5B57\u6BB5\u540D\u3002 */\nexport const ENABLED_FIELD = 'enabled'\n\n/** \u952E\u4F4D\u5B57\u6BB5\u540D\u3002 */\nexport const SEND_KEY_FIELD = 'sendKey'\nexport const NEWLINE_KEY_FIELD = 'newlineKey'\n\n/** \u8BBE\u7F6E\u9762\u677F\u5B57\u6BB5\u540D\u3002 */\nexport const PANEL_SCROLL_FIELD = 'panelScroll'\nexport const PANEL_RESIZE_FIELD = 'panelResize'\nexport const PANEL_WIDTH_FIELD = 'panelWidth'\nexport const PANEL_HEIGHT_FIELD = 'panelHeight'\n\n/** \u53F3\u952E\u83DC\u5355\u5F00\u5173\u5B57\u6BB5\u540D\u3002 */\nexport const MENU_FIELDS = [\n 'menuUndo',\n 'menuRedo',\n 'menuCut',\n 'menuCopy',\n 'menuPaste',\n 'menuDelete',\n 'menuSelectAll',\n] as const\n\nexport type MenuField = (typeof MENU_FIELDS)[number]\n\n/** \u53F3\u952E\u83DC\u5355\u6A21\u5F0F\u5B57\u6BB5\u540D\uFF1Atrue = \u6D4F\u89C8\u5668\u539F\u751F\u83DC\u5355\uFF08\u7C98\u8D34\u514D\u6388\u6743\uFF09\uFF0Cfalse = \u81EA\u5B9A\u4E49\u83DC\u5355\u3002 */\nexport const MENU_NATIVE_FIELD = 'menuNative'\n\n// \u2500\u2500 OpenCode \u8BF7\u6C42\u5934 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n//\n// OpenCode \u7684\u63A5\u53E3\u8981\u6C42\u5BA2\u6237\u7AEF\u6BCF\u6B21\u8BF7\u6C42\u90FD\u5E26\u4E00\u4E2A\u7A33\u5B9A\u7684\u4F1A\u8BDD ID \u8BF7\u6C42\u5934\n// \uFF08\u5B98\u65B9 Go \u6587\u6863\u300C\u53EF\u4EE5\u5728\u54EA\u91CC\u4F7F\u7528\uFF1F\u300D\u7B2C 3 \u6761\uFF09\u3002DSH \u7684 Models \u8BBE\u7F6E\u9875\u660E\u786E\u4E0D\u63D0\u4F9B\n// \u8BF7\u6C42\u5934\u7F16\u8F91\u5668\uFF0C\u6240\u4EE5\u672C\u63D2\u4EF6\u628A\u8FD9\u4E00\u9879\u5199\u8FDB llm-pi-ai \u7684 provider profile.headers \u2014\u2014\n// \u90A3\u662F DSH \u91CC\u552F\u4E00\u53D7\u652F\u6301\u7684\u51FA\u7F51\u8BF7\u6C42\u5934\u5165\u53E3\uFF08\u4F1A\u5728 pi-ai \u4FA7\u6700\u540E\u5408\u5E76\uFF0C\u4E0B\u4E00\u6B21\u8BF7\u6C42\u751F\u6548\uFF09\u3002\n\n/** \u8BF7\u6C42\u5934\u680F\u76EE\u5B57\u6BB5\u540D\u3002 */\nexport const HEADER_ENABLED_FIELD = 'headerEnabled'\nexport const HEADER_NAME_FIELD = 'headerName'\nexport const HEADER_VALUE_FIELD = 'headerValue'\n/** \u4F5C\u7528\u8DEF\u7531\u540D\u5355\uFF08\u9017\u53F7/\u7A7A\u683C\u5206\u9694\uFF09\uFF1B\u7559\u7A7A = \u81EA\u52A8\u5339\u914D opencode \u7CFB\u8DEF\u7531\u3002 */\nexport const HEADER_ROUTES_FIELD = 'headerRoutes'\n\n/** \u5BBF\u4E3B\u534A\u8BB0\u8D26\uFF1A\u4E0A\u6B21\u5B9E\u9645\u5199\u5165\u7684\u5934\u540D\u4E0E\u503C\uFF08\u51B3\u5B9A\u505C\u7528/\u6539\u540D\u65F6\u64A4\u9500\u54EA\u4E9B\u952E\uFF09\u3002 */\nexport const HEADER_APPLIED_NAME_FIELD = 'headerAppliedName'\nexport const HEADER_APPLIED_VALUE_FIELD = 'headerAppliedValue'\n\n/** \u5BBF\u4E3B\u534A\u5199\u5165\u7684\u6267\u884C\u7ED3\u679C\uFF1B\u8BBE\u7F6E\u9875\u53EA\u8BFB\u5C55\u793A\u3002 */\nexport const HEADER_STATUS_FIELD = 'headerStatus'\n\n/**\n * \u53EA\u5728\u5BBF\u4E3B\u534A\u7EF4\u62A4\u7684\u5B57\u6BB5\uFF1A\u8BBE\u7F6E\u9875\u300C\u6062\u590D\u9ED8\u8BA4\u300D\u4E0D\u5F97\u6E05\u7A7A\u5B83\u4EEC\uFF0C\n * \u5426\u5219\u5DF2\u5199\u5165\u7684\u5934\u4F1A\u5931\u53BB\u8BB0\u8D26\u3001\u6C38\u8FDC\u64A4\u9500\u4E0D\u6389\u3002\n */\nexport const HOST_OWNED_FIELDS = [\n HEADER_APPLIED_NAME_FIELD,\n HEADER_APPLIED_VALUE_FIELD,\n HEADER_STATUS_FIELD,\n] as const\n\n/** \u8BF7\u6C42\u5934\u6700\u7EC8\u843D\u5730\u7684\u8BBE\u7F6E\u547D\u540D\u7A7A\u95F4\uFF08\u7531 llm-pi-ai \u6CE8\u518C\uFF09\u3002 */\nexport const LLM_NAMESPACE = 'llm-pi-ai'\n\n/** \u4F5C\u7528\u8DEF\u7531\u7684\u81EA\u52A8\u5339\u914D\u524D\u7F00\uFF1A`providers` \u91CC\u4EE5\u5B83\u5F00\u5934\u7684\u8DEF\u7531\u3002 */\nexport const OPENCODE_ROUTE_PREFIX = 'opencode'\n\n/** \u5934\u540D\u9ED8\u8BA4\u503C = OpenCode \u5B98\u65B9\u8981\u6C42\u7684\u90A3\u4E00\u4E2A\u3002 */\nexport const DEFAULT_HEADER_NAME = 'x-opencode-session'\n\n/** \u5934\u503C\u957F\u5EA6\u4E0A\u9650\uFF08HTTP \u5934\u4E0E\u8BBE\u7F6E\u6587\u6863\u90FD\u4E0D\u5B9C\u8FC7\u957F\uFF09\u3002 */\nexport const HEADER_VALUE_MAX = 200\n\n/** \u5934\u540D\u957F\u5EA6\u4E0A\u9650\u3002 */\nexport const HEADER_NAME_MAX = 64\n\n/** \u5168\u90E8\u53EF\u6301\u4E45\u5316\u5B57\u6BB5\u3002 */\nexport type SettingsField =\n | typeof ENABLED_FIELD\n | typeof SEND_KEY_FIELD\n | typeof NEWLINE_KEY_FIELD\n | typeof PANEL_SCROLL_FIELD\n | typeof PANEL_RESIZE_FIELD\n | typeof PANEL_WIDTH_FIELD\n | typeof PANEL_HEIGHT_FIELD\n | typeof MENU_NATIVE_FIELD\n | typeof HEADER_ENABLED_FIELD\n | typeof HEADER_NAME_FIELD\n | typeof HEADER_VALUE_FIELD\n | typeof HEADER_ROUTES_FIELD\n | MenuField\n\n/** \u9F20\u6807\u53F3\u952E\u83DC\u5355\u6253\u5F00\u65F6\u7684\u4E00\u6B21\u5FEB\u7167\uFF08\u542B\u4F4D\u7F6E\u4E0E\u9009\u62E9\u72B6\u6001\uFF09\u3002 */\nexport interface MenuState {\n /** \u89C6\u53E3\u5750\u6807\u3002 */\n readonly x: number\n readonly y: number\n /** \u53F3\u952E\u65F6\u8F93\u5165\u6846\u5185\u662F\u5426\u6709\u975E\u6298\u53E0\u9009\u533A\uFF08\u51B3\u5B9A\u526A\u5207/\u590D\u5236/\u5220\u9664\u662F\u5426\u53EF\u7528\uFF09\u3002 */\n readonly hasSelection: boolean\n /** \u7C98\u8D34\u5931\u8D25\u65F6\u7684\u77ED\u6682\u63D0\u793A\u3002 */\n readonly note?: string\n}\n\n/** \u89E3\u6790\u540E\u7684\u8BBE\u7F6E\u3002 */\nexport interface ComposerUxSettings {\n /** \u5168\u5C40\u603B\u5F00\u5173\uFF1Afalse \u65F6\u672C\u63D2\u4EF6\u6240\u6709\u529F\u80FD\u505C\u7528\u3002 */\n enabled: boolean\n /** \u53D1\u9001\u952E\u4F4D\u89C4\u8303\u4E32\uFF08\u5982 'Enter'\u3001'Ctrl+Enter'\u3001''=\u65E0\uFF09\u3002 */\n sendKey: string\n /** \u6362\u884C\u952E\u4F4D\u89C4\u8303\u4E32\u3002 */\n newlineKey: string\n menuUndo: boolean\n menuRedo: boolean\n menuCut: boolean\n menuCopy: boolean\n menuPaste: boolean\n menuDelete: boolean\n menuSelectAll: boolean\n /** true = \u6D4F\u89C8\u5668\u539F\u751F\u53F3\u952E\u83DC\u5355\uFF08\u7C98\u8D34\u514D\u6388\u6743\uFF09\uFF1Bfalse = \u81EA\u5B9A\u4E49\u83DC\u5355\u3002 */\n menuNative: boolean\n /** \u8BBE\u7F6E\u9762\u677F\uFF1A\u6761\u76EE\u8FC7\u591A\u65F6\u5BFC\u822A\u5217\u53EF\u6EDA\u52A8\u3002 */\n panelScroll: boolean\n /** \u8BBE\u7F6E\u9762\u677F\uFF1A\u5141\u8BB8\u62D6\u62FD\u8FB9\u7F18\u8C03\u6574\u5927\u5C0F\u3002 */\n panelResize: boolean\n /** \u8BBE\u7F6E\u9762\u677F\u5BBD\uFF08px\uFF09\uFF1B\u7F3A\u7701\u4F7F\u7528\u5B98\u65B9\u9ED8\u8BA4 800\u3002 */\n panelWidth?: number\n /** \u8BBE\u7F6E\u9762\u677F\u9AD8\uFF08px\uFF09\uFF1B\u7F3A\u7701\u4F7F\u7528\u5B98\u65B9\u9ED8\u8BA4 min(800, \u89C6\u53E3-48)\u3002 */\n panelHeight?: number\n /** OpenCode \u8BF7\u6C42\u5934\uFF1A\u542F\u7528\u540E\u5199\u8FDB llm-pi-ai \u7684 opencode \u7CFB\u8DEF\u7531\u3002 */\n headerEnabled: boolean\n /** \u5934\u540D\uFF08\u9ED8\u8BA4 x-opencode-session\uFF09\u3002 */\n headerName: string\n /** \u5934\u503C\uFF1B\u7559\u7A7A\u65F6\u9996\u6B21\u542F\u7528\u7531\u5BBF\u4E3B\u534A\u751F\u6210\u4E00\u4E2A\u7A33\u5B9A ID \u5E76\u843D\u76D8\u6CBF\u7528\u3002 */\n headerValue: string\n /** \u4F5C\u7528\u8DEF\u7531\u540D\u5355\uFF1B\u7559\u7A7A = \u81EA\u52A8\u5339\u914D opencode \u7CFB\u8DEF\u7531\uFF08\u53EA\u52A8\u5DF2\u5B58\u5728\u7684\u8DEF\u7531\uFF09\u3002 */\n headerRoutes: string\n /** \u5BBF\u4E3B\u534A\u8BB0\u8D26\u5B57\u6BB5\uFF08\u8BBE\u7F6E\u9875\u53EA\u8BFB\uFF09\u3002 */\n headerAppliedName: string\n headerAppliedValue: string\n /** \u5BBF\u4E3B\u534A\u5199\u5165\u7ED3\u679C\uFF08\u8BBE\u7F6E\u9875\u53EA\u8BFB\uFF09\u3002 */\n headerStatus: string\n}\n\n/** \u9ED8\u8BA4\u503C = DSH Web \u73B0\u72B6\uFF08Enter \u53D1\u9001\u3001Shift+Enter \u6362\u884C\u3001\u53F3\u952E\u83DC\u5355\u5168\u5F00\uFF09\u3002 */\nexport const DEFAULT_SETTINGS: ComposerUxSettings = {\n enabled: true,\n sendKey: 'Enter',\n newlineKey: 'Shift+Enter',\n menuUndo: true,\n menuRedo: true,\n menuCut: true,\n menuCopy: true,\n menuPaste: true,\n menuDelete: true,\n menuSelectAll: true,\n menuNative: false,\n panelScroll: true,\n panelResize: true,\n headerEnabled: false,\n headerName: DEFAULT_HEADER_NAME,\n headerValue: '',\n headerRoutes: '',\n headerAppliedName: '',\n headerAppliedValue: '',\n headerStatus: '',\n}\n\n/** \u8BBE\u7F6E\u9875\u300C\u952E\u4F4D\u300D\u4E00\u8282\u7684\u9884\u8BBE\u3002 */\nexport const SEND_PRESETS: readonly string[] = ['Enter', 'Ctrl+Enter', 'Alt+Enter', 'Shift+Enter']\nexport const NEWLINE_PRESETS: readonly string[] = ['Shift+Enter', 'Enter', 'Ctrl+Enter', 'Alt+Enter']\n\n/** \u53F3\u952E\u83DC\u5355\u6761\u76EE\uFF08\u987A\u5E8F\u5373\u663E\u793A\u987A\u5E8F\uFF1Bshortcut \u4E0E\u56FE\u7247\u4E00\u81F4\uFF09\u3002 */\nexport const MENU_ITEMS: readonly {\n readonly field: MenuField\n readonly label: string\n readonly shortcut: string\n}[] = [\n { field: 'menuUndo', label: '\u64A4\u9500', shortcut: 'Ctrl+Z' },\n { field: 'menuRedo', label: '\u91CD\u505A', shortcut: 'Ctrl+Y' },\n { field: 'menuCut', label: '\u526A\u5207', shortcut: 'Ctrl+X' },\n { field: 'menuCopy', label: '\u590D\u5236', shortcut: 'Ctrl+C' },\n { field: 'menuPaste', label: '\u7C98\u8D34', shortcut: 'Ctrl+V' },\n { field: 'menuDelete', label: '\u5220\u9664', shortcut: '' },\n { field: 'menuSelectAll', label: '\u5168\u9009', shortcut: 'Ctrl+A' },\n]\n\n/**\n * \u751F\u6210\u4E00\u4E2A\u7A33\u5B9A\u7684\u4F1A\u8BDD ID\uFF08UUID v4\uFF1B\u65E0 crypto \u65F6\u9000\u56DE\u7B49\u4EF7\u7684\u968F\u673A\u5341\u516D\u8FDB\u5236\uFF09\u3002\n * \u503C\u672C\u8EAB\u4E0D\u53C2\u4E0E\u9274\u6743\uFF0C\u53EA\u7528\u4E8E\u8BA9\u7F51\u5173\u628A\u540C\u4E00\u6BB5\u5BF9\u8BDD\u56FA\u5B9A\u5230\u540C\u4E00\u4E2A\u4E0A\u6E38\uFF0C\u6545 Math.random \u515C\u5E95\u53EF\u63A5\u53D7\u3002\n * @returns 36 \u5B57\u7B26\u7684 UUID \u5B57\u7B26\u4E32\u3002\n */\nexport function newSessionId(): string {\n const bag = globalThis as unknown as { crypto?: { randomUUID?: () => string } }\n if (typeof bag.crypto?.randomUUID === 'function') return bag.crypto.randomUUID()\n const hex = (count: number): string => Array.from(\n { length: count },\n () => Math.floor(Math.random() * 16).toString(16),\n ).join('')\n return `${hex(8)}-${hex(4)}-4${hex(3)}-a${hex(3)}-${hex(12)}`\n}\n\n/** \u89E3\u6790\u300C\u4F5C\u7528\u8DEF\u7531\u300D\u6587\u672C\uFF1A\u9017\u53F7 / \u7A7A\u683C / \u6362\u884C\u5206\u9694\uFF0C\u53BB\u91CD\u4FDD\u5E8F\u3002 */\nexport function parseRouteList(text: string): readonly string[] {\n const parts = text.split(/[\\s,\uFF0C\u3001]+/).map(item => item.trim()).filter(item => item !== '')\n return [...new Set(parts)]\n}\n\n/** \u8BBE\u7F6E\u6570\u636E\u51C0\u5316\uFF1A\u628A\u7EBF\u4E0A\u503C\u6536\u7A84\u4E3A\u5B89\u5168\u5F62\u72B6\uFF08\u9632\u810F\u6570\u636E\uFF09\u3002 */\nexport function sanitizeSettings(value: unknown): ComposerUxSettings {\n const source = (typeof value === 'object' && value !== null ? value : {}) as Record<string, unknown>\n const asString = (field: string): string => {\n const v = source[field]\n return typeof v === 'string' && v.length > 0 && v.length <= 64 ? v : ''\n }\n const asText = (field: string, max: number): string => {\n const v = source[field]\n return typeof v === 'string' && v.length <= max ? v : ''\n }\n const asBool = (field: string): boolean => {\n const v = source[field]\n return typeof v === 'boolean' ? v : (DEFAULT_SETTINGS as unknown as Record<string, unknown>)[field] as boolean\n }\n const asSize = (field: string): number | undefined => {\n const v = source[field]\n return typeof v === 'number' && Number.isFinite(v) && v >= 320 && v <= 4000 ? Math.round(v) : undefined\n }\n return {\n enabled: asBool(ENABLED_FIELD),\n sendKey: asString(SEND_KEY_FIELD),\n newlineKey: asString(NEWLINE_KEY_FIELD),\n menuUndo: asBool('menuUndo'),\n menuRedo: asBool('menuRedo'),\n menuCut: asBool('menuCut'),\n menuCopy: asBool('menuCopy'),\n menuPaste: asBool('menuPaste'),\n menuDelete: asBool('menuDelete'),\n menuSelectAll: asBool('menuSelectAll'),\n menuNative: asBool(MENU_NATIVE_FIELD),\n panelScroll: asBool(PANEL_SCROLL_FIELD),\n panelResize: asBool(PANEL_RESIZE_FIELD),\n panelWidth: asSize(PANEL_WIDTH_FIELD),\n panelHeight: asSize(PANEL_HEIGHT_FIELD),\n headerEnabled: asBool(HEADER_ENABLED_FIELD),\n // \u5934\u540D\u7559\u7A7A\u662F\u4E0D\u5408\u6CD5\u72B6\u6001\uFF08\u5BBF\u4E3B\u534A\u4F1A\u62D2\u7EDD\u5199\u5165\u5E76\u628A\u539F\u56E0\u5199\u8FDB headerStatus\uFF09\uFF0C\n // \u6545\u51C0\u5316\u53EA\u505A\u957F\u5EA6\u6536\u7A84\u3001\u4FDD\u7559\u539F\u6837\uFF0C\u8BA9\u7528\u6237\u770B\u5F97\u89C1\u81EA\u5DF1\u8F93\u9519\u4E86\u4EC0\u4E48\u3002\n headerName: asText(HEADER_NAME_FIELD, HEADER_NAME_MAX),\n headerValue: asText(HEADER_VALUE_FIELD, HEADER_VALUE_MAX),\n headerRoutes: asText(HEADER_ROUTES_FIELD, HEADER_VALUE_MAX),\n headerAppliedName: asText(HEADER_APPLIED_NAME_FIELD, HEADER_NAME_MAX),\n headerAppliedValue: asText(HEADER_APPLIED_VALUE_FIELD, HEADER_VALUE_MAX),\n headerStatus: asText(HEADER_STATUS_FIELD, HEADER_VALUE_MAX),\n }\n}\n", "/**\n * Host half\u3002\u4E24\u4EF6\u4E8B\uFF1A\n *\n * 1. \u5F53 settings \u670D\u52A1\u5B58\u5728\u65F6\uFF0C\u4E3A\u6D4F\u89C8\u5668\u4FA7\u6CE8\u518C\u300Ccomposer-ux\u300D\u8BBE\u7F6E\u533A\uFF08schema\uFF09\uFF1B\n * 2. \u628A\u8BBE\u7F6E\u9875\u7684\u300COpenCode \u8BF7\u6C42\u5934\u300D\u955C\u50CF\u8FDB llm-pi-ai \u7684 provider profile\u3002\n * \u5F15\u64CE/\u83DC\u5355\u884C\u4E3A\u4ECD\u5168\u90E8\u7531 client \u534A\u5B9E\u73B0\u3002\n *\n * \u4E3A\u4EC0\u4E48\u8BF7\u6C42\u5934\u5FC5\u987B\u843D\u5728\u5BBF\u4E3B\u534A\uFF1A\u51FA\u7F51\u8BF7\u6C42\u7531\u5BBF\u4E3B\u7684\u6A21\u578B\u9002\u914D\u5668\u53D1\u51FA\uFF0C\u6D4F\u89C8\u5668\u4FA7\u78B0\u4E0D\u5230\u3002\n * \u800C DSH \u91CC\u552F\u4E00\u53D7\u652F\u6301\u7684\u8BF7\u6C42\u5934\u5165\u53E3\u5C31\u662F llm-pi-ai \u7684 `providers.<route>.headers`\n * \u2014\u2014 \u5B83\u4F5C\u4E3A pi-ai \u7684 optionsHeaders \u5728\u6700\u540E\u5408\u5E76\uFF08\u80FD\u8986\u76D6\u9ED8\u8BA4\u5934\uFF09\uFF0C\u4E14\u8BE5\u9002\u914D\u5668\u6BCF\u6B21\n * \u8BF7\u6C42\u90FD\u91CD\u8BFB\u914D\u7F6E\uFF0C\u6240\u4EE5\u300C\u6539\u5B8C\u4E0B\u4E00\u6B21\u8BF7\u6C42\u5373\u751F\u6548\u3001\u4E0D\u7528\u91CD\u542F\u300D\u3002\n *\n * \u5199\u5165\u65B9\u5F0F\u7528 `settings.mutate` \u7684\u8DEF\u5F84\u5BFB\u5740\uFF1A\u53EA\u52A8\u6211\u4EEC\u81EA\u5DF1\u90A3\u4E00\u4E2A\u952E\uFF0C\n * \u65E2\u4E0D\u91CD\u8FF0\u4E5F\u4E0D\u5220\u9664\u7528\u6237\u5199\u5728\u540C\u4E00\u4E2A profile \u91CC\u7684\u5176\u5B83\u5B57\u6BB5\u3002\n */\nimport type { Context } from '@deepseek-ai/cordis'\nimport z from '@deepseek-ai/schemastery'\nimport {\n DEFAULT_HEADER_NAME, DEFAULT_SETTINGS, ENABLED_FIELD, HEADER_APPLIED_NAME_FIELD,\n HEADER_APPLIED_VALUE_FIELD, HEADER_ENABLED_FIELD, HEADER_NAME_FIELD, HEADER_NAME_MAX,\n HEADER_ROUTES_FIELD, HEADER_STATUS_FIELD, HEADER_VALUE_FIELD, HEADER_VALUE_MAX,\n LLM_NAMESPACE, MENU_FIELDS, MENU_NATIVE_FIELD, NAMESPACE, NEWLINE_KEY_FIELD,\n OPENCODE_ROUTE_PREFIX, PANEL_HEIGHT_FIELD, PANEL_RESIZE_FIELD, PANEL_SCROLL_FIELD,\n PANEL_WIDTH_FIELD, SEND_KEY_FIELD, newSessionId, parseRouteList,\n} from './settings-contract.ts'\n\nexport const name = 'composer-ux'\n\n/** \u8BBE\u7F6E\u9762\u677F\u53EF\u8C03\u5C3A\u5BF8\u7684\u4E0A\u4E0B\u9650\uFF08\u4E0E client \u4FA7\u7684 clamp \u4FDD\u6301\u4E00\u81F4\uFF09\u3002 */\nconst PANEL_MIN = 560\nconst PANEL_MAX = 4000\n\n/** \u8DEF\u5F84\u5BFB\u5740\u5199\u5165\uFF1A\u4E0E settings \u670D\u52A1\u7684 SettingsPathOp \u7ED3\u6784\u4E00\u81F4\u3002 */\ntype PathOp =\n | { op: 'set'; path: readonly string[]; value: unknown }\n | { op: 'unset'; path: readonly string[] }\n\n/** \u672C\u63D2\u4EF6\u7528\u5230\u7684 settings \u80FD\u529B\uFF08\u4FDD\u6301\u7ED3\u6784\u6700\u5C0F\uFF0C\u907F\u514D\u4F9D\u8D56\u5177\u4F53\u5B9E\u73B0\u7C7B\uFF09\u3002 */\ninterface SettingsLike {\n get(ns: string): unknown\n mutate(ns: string, ops: readonly PathOp[]): Promise<void>\n}\n\n/** \u6536\u7A84\u6210\u666E\u901A\u5BF9\u8C61\uFF08\u6570\u7EC4\u4E0E null \u90FD\u4E0D\u7B97\uFF09\u3002 */\nfunction objectOf(value: unknown): Record<string, unknown> | undefined {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n ? value as Record<string, unknown>\n : undefined\n}\n\n/** \u53EA\u63A5\u53D7\u5B57\u7B26\u4E32\uFF0C\u5176\u4F59\u4E00\u5F8B\u89C6\u4E3A\u7A7A\u4E32\u3002 */\nfunction textOf(value: unknown): string {\n return typeof value === 'string' ? value : ''\n}\n\n/** \u5934\u540D\u662F\u5426\u5408\u6CD5\uFF1A\u4E0E llm-pi-ai \u7684 assertValidHeaders \u540C\u89C4\u5219\uFF08Fetch \u63A5\u53D7\u624D\u7B97\uFF09\u3002 */\nfunction nameIsValid(name: string): boolean {\n if (name === '' || name.length > HEADER_NAME_MAX) return false\n try {\n new Headers([[name, 'probe']])\n return true\n } catch {\n return false\n }\n}\n\n/** \u5934\u503C\u662F\u5426\u5408\u6CD5\uFF1A\u975E\u7A7A\u3001\u4E0D\u8D85\u957F\u3001\u5355\u884C\u4E14\u53EF\u8868\u793A\u4E3A\u5B57\u8282\uFF08Fetch \u63A5\u53D7\u624D\u7B97\uFF09\u3002 */\nfunction valueIsValid(value: string): boolean {\n if (value === '' || value.length > HEADER_VALUE_MAX) return false\n try {\n new Headers([['x-dsh-probe', value]])\n return true\n } catch {\n return false\n }\n}\n\n/**\n * \u672C\u6B21\u8981\u5199\u7684\u76EE\u6807\u8DEF\u7531\u3002\n * \u663E\u5F0F\u540D\u5355\u53EA\u4FDD\u7559 llm-pi-ai \u91CC**\u5DF2\u5B58\u5728**\u7684\u8DEF\u7531\u2014\u2014profile \u7684 `models` \u662F\u5FC5\u586B\u9879\uFF0C\n * \u51ED\u7A7A\u9020\u4E00\u4E2A\u53EA\u6709 headers \u7684 profile \u4F1A\u8BA9\u6574\u4EFD\u914D\u7F6E\u6821\u9A8C\u5931\u8D25\u3002\n * @param providers - llm-pi-ai \u5F53\u524D\u7684 providers \u5B57\u5178\u3002\n * @param listed - \u8BBE\u7F6E\u91CC\u7684\u300C\u4F5C\u7528\u8DEF\u7531\u300D\u540D\u5355\uFF08\u7559\u7A7A\u8868\u793A\u81EA\u52A8\u5339\u914D\uFF09\u3002\n * @returns \u76EE\u6807\u8DEF\u7531\u540D\uFF0C\u987A\u5E8F\u8DDF\u968F providers \u7684\u952E\u987A\u5E8F\u3002\n */\nfunction pickRoutes(\n providers: Record<string, unknown>,\n listed: readonly string[],\n): readonly string[] {\n const keys = Object.keys(providers)\n if (listed.length === 0) return keys.filter(key => key.startsWith(OPENCODE_ROUTE_PREFIX))\n return listed.filter(key => Object.prototype.hasOwnProperty.call(providers, key))\n}\n\n/** \u9519\u8BEF\u8F6C\u4E00\u884C\u53EF\u8BFB\u6587\u672C\uFF08\u5199\u8FDB headerStatus\uFF0C\u4F9B\u8BBE\u7F6E\u9875\u5C55\u793A\uFF09\u3002 */\nfunction errorText(error: unknown): string {\n if (error instanceof Error && error.message !== '') return error.message\n return String(error)\n}\n\n/**\n * \u628A\u300C\u8BF7\u6C42\u5934\u300D\u680F\u76EE\u5BF9\u9F50\u5230 llm-pi-ai \u914D\u7F6E\u3002\u5E42\u7B49\uFF1A\u7B97\u51FA\u7684\u76EE\u6807\u4E0E\u73B0\u72B6\u4E00\u81F4\u65F6\u4E0D\u5199\u4EFB\u4F55\u4E1C\u897F\uFF0C\n * \u56E0\u6B64\u672C\u51FD\u6570\u65E2\u53EF\u5728\u63D2\u4EF6\u542F\u52A8\u65F6\u8DD1\u4E00\u6B21\uFF0C\u4E5F\u53EF\u5728\u6BCF\u6B21 settings \u53D8\u66F4\u540E\u88AB\u53CD\u590D\u8C03\u7528\u3002\n * @param settings - settings \u670D\u52A1\u3002\n */\nasync function mirrorHeader(settings: SettingsLike): Promise<void> {\n const own = objectOf(settings.get(NAMESPACE))\n if (own === undefined) return\n\n const enabled = own[ENABLED_FIELD] === true && own[HEADER_ENABLED_FIELD] === true\n const name = textOf(own[HEADER_NAME_FIELD])\n const nameOk = nameIsValid(name)\n const routesText = parseRouteList(textOf(own[HEADER_ROUTES_FIELD]))\n\n // \u9996\u6B21\u542F\u7528\u4E14\u503C\u4E3A\u7A7A\uFF1A\u751F\u6210\u4E00\u4E2A\u7A33\u5B9A ID \u5E76\u843D\u76D8\uFF0C\u6B64\u540E\u6BCF\u6B21\u90FD\u7528\u540C\u4E00\u4E2A\u3002\n let value = textOf(own[HEADER_VALUE_FIELD])\n if (enabled && nameOk && value === '') {\n value = newSessionId()\n await settings.mutate(NAMESPACE, [{ op: 'set', path: [HEADER_VALUE_FIELD], value }])\n }\n\n const llm = objectOf(settings.get(LLM_NAMESPACE))\n const providers = llm === undefined ? undefined : objectOf(llm.providers)\n\n const writes: PathOp[] = []\n const applied: string[] = []\n let status = ''\n\n if (!enabled) {\n status = ''\n } else if (providers === undefined) {\n status = '\u672A\u6302\u8F7D llm-pi-ai\uFF08\u6A21\u578B\u8DEF\u7531\uFF09\u8BBE\u7F6E\uFF0C\u6682\u672A\u5199\u5165'\n } else if (!nameOk) {\n status = '\u5934\u540D\u4E0D\u5408\u6CD5\uFF0C\u672A\u5199\u5165'\n } else if (!valueIsValid(value)) {\n status = `\u5934\u503C\u4E0D\u5408\u6CD5\uFF08\u9700 1\u2013${HEADER_VALUE_MAX} \u5B57\u7B26\u4E14\u5355\u884C\uFF09\uFF0C\u672A\u5199\u5165`\n } else {\n for (const route of pickRoutes(providers, routesText)) {\n const headers = objectOf(objectOf(providers[route])?.headers)\n if (headers?.[name] !== value) {\n writes.push({ op: 'set', path: ['providers', route, 'headers', name], value })\n }\n applied.push(route)\n }\n status = applied.length === 0\n ? `\u5DF2\u542F\u7528\uFF0C\u4F46\u6CA1\u6709\u53EF\u5199\u5165\u7684\u8DEF\u7531\uFF08\u76EE\u6807\uFF1A${routesText.length === 0 ? `${OPENCODE_ROUTE_PREFIX}*` : routesText.join('\u3001')}\uFF09`\n : `\u5DF2\u5199\u5165 ${applied.join('\u3001')}`\n }\n\n // \u64A4\u9500\uFF1A\u4E0A\u6B21\u5199\u5165\u8FC7\u3001\u8FD9\u6B21\u4E0D\u518D\u662F\u76EE\u6807\u7684\u4F4D\u7F6E\uFF08\u505C\u7528\u3001\u6539\u540D\u3001\u503C\u88AB\u6362\u3001\u8DEF\u7531\u88AB\u79FB\u9664\uFF09\u3002\n // \u53EA\u5220\u300C\u786E\u5B9E\u662F\u6211\u4EEC\u5199\u7684\u300D\uFF1A\u503C\u5FC5\u987B\u7B49\u4E8E\u5F53\u524D\u914D\u7F6E\u503C\u6216\u8BB0\u8D26\u503C\uFF0C\u5426\u5219\u89C6\u4E3A\u7528\u6237\u81EA\u5DF1\u5199\u7684\uFF0C\u4E0D\u78B0\u3002\n const stale: PathOp[] = []\n if (providers !== undefined) {\n const previousName = textOf(own[HEADER_APPLIED_NAME_FIELD])\n const previousValue = textOf(own[HEADER_APPLIED_VALUE_FIELD])\n const ours = new Set([textOf(own[HEADER_VALUE_FIELD]), previousValue])\n ours.delete('')\n // \u672C\u8F6E\u7684\u76EE\u6807\u952E\uFF08\u54EA\u6015\u503C\u5DF2\u7ECF\u5BF9\u3001\u4E0D\u9700\u8981\u5199\uFF09\u2014\u2014\u5B83\u4EEC\u7EDD\u4E0D\u80FD\u88AB\u5F53\u6210\u8FC7\u671F\u9879\u64A4\u9500\u3002\n const targets = new Set(applied.map(route => `${route}\\u0000${name}`))\n const candidates = new Set([previousName, nameOk ? name : ''])\n candidates.delete('')\n for (const candidate of candidates) {\n for (const [route, profile] of Object.entries(providers)) {\n if (targets.has(`${route}\\u0000${candidate}`)) continue\n const headers = objectOf(objectOf(profile)?.headers)\n const current = headers?.[candidate]\n if (typeof current !== 'string' || !ours.has(current)) continue\n stale.push({ op: 'unset', path: ['providers', route, 'headers', candidate] })\n }\n }\n }\n\n const providerOps = [...writes, ...stale]\n let failed = false\n if (providerOps.length > 0) {\n try {\n await settings.mutate(LLM_NAMESPACE, providerOps)\n } catch (error: unknown) {\n failed = true\n status = `\u5199\u5165\u5931\u8D25\uFF1A${errorText(error)}`\n }\n }\n\n // \u8BB0\u8D26 + \u72B6\u6001\u56DE\u5199\uFF1A\u53EA\u6709\u771F\u6B63\u5199\u6210\u529F\u624D\u8BB0\u8D26\uFF0C\u4E14\u503C\u4E0D\u53D8\u65F6\u4E0D\u5199\uFF08\u4FDD\u8BC1\u5E42\u7B49\u3001\u4E0D\u4EA7\u751F\u56DE\u73AF\uFF09\u3002\n const nextAppliedName = !failed && applied.length > 0 ? name : ''\n const nextAppliedValue = !failed && applied.length > 0 ? value : ''\n const ownOps: PathOp[] = []\n if (textOf(own[HEADER_APPLIED_NAME_FIELD]) !== nextAppliedName) {\n ownOps.push({ op: 'set', path: [HEADER_APPLIED_NAME_FIELD], value: nextAppliedName })\n }\n if (textOf(own[HEADER_APPLIED_VALUE_FIELD]) !== nextAppliedValue) {\n ownOps.push({ op: 'set', path: [HEADER_APPLIED_VALUE_FIELD], value: nextAppliedValue })\n }\n if (textOf(own[HEADER_STATUS_FIELD]) !== status) {\n ownOps.push({ op: 'set', path: [HEADER_STATUS_FIELD], value: status })\n }\n if (ownOps.length > 0) await settings.mutate(NAMESPACE, ownOps)\n}\n\n/** \u6CE8\u518C durable section\uFF1Bsettings \u670D\u52A1\u7F3A\u5E2D\uFF08\u65E0 provider\uFF09\u65F6\u9759\u9ED8\u8DF3\u8FC7\u3002 */\nexport function apply(ctx: Context): void {\n ctx.inject(['settings'], (settingsCtx) => {\n settingsCtx.settings.register(\n NAMESPACE,\n z.object({\n [ENABLED_FIELD]: z.boolean().default(DEFAULT_SETTINGS.enabled),\n [SEND_KEY_FIELD]: z.string().default(DEFAULT_SETTINGS.sendKey),\n [NEWLINE_KEY_FIELD]: z.string().default(DEFAULT_SETTINGS.newlineKey),\n ...Object.fromEntries(MENU_FIELDS.map(field => [\n field,\n z.boolean().default(DEFAULT_SETTINGS[field]),\n ])),\n [MENU_NATIVE_FIELD]: z.boolean().default(DEFAULT_SETTINGS.menuNative),\n [PANEL_SCROLL_FIELD]: z.boolean().default(DEFAULT_SETTINGS.panelScroll),\n [PANEL_RESIZE_FIELD]: z.boolean().default(DEFAULT_SETTINGS.panelResize),\n // schemastery \u65E0 .optional()\uFF1A\u53EF\u9009\u952E\u7528 .required(false)\u3002\n [PANEL_WIDTH_FIELD]: z.number().min(PANEL_MIN).max(PANEL_MAX).required(false),\n [PANEL_HEIGHT_FIELD]: z.number().min(320).max(PANEL_MAX).required(false),\n // OpenCode \u8BF7\u6C42\u5934\u680F\u76EE\uFF08\u503C\u7531\u5BBF\u4E3B\u534A\u6309 llm-pi-ai \u7684 Fetch \u89C4\u5219\u81EA\u6821\u9A8C\u540E\u518D\u5199\u5165\uFF09\u3002\n [HEADER_ENABLED_FIELD]: z.boolean().default(DEFAULT_SETTINGS.headerEnabled),\n [HEADER_NAME_FIELD]: z.string().default(DEFAULT_HEADER_NAME),\n [HEADER_VALUE_FIELD]: z.string().default(DEFAULT_SETTINGS.headerValue),\n [HEADER_ROUTES_FIELD]: z.string().default(DEFAULT_SETTINGS.headerRoutes),\n [HEADER_APPLIED_NAME_FIELD]: z.string().default(DEFAULT_SETTINGS.headerAppliedName),\n [HEADER_APPLIED_VALUE_FIELD]: z.string().default(DEFAULT_SETTINGS.headerAppliedValue),\n [HEADER_STATUS_FIELD]: z.string().default(DEFAULT_SETTINGS.headerStatus),\n }),\n )\n\n const settings = settingsCtx.settings as unknown as SettingsLike\n // \u4E32\u884C\u5316\uFF1A\u672C\u63D2\u4EF6\u81EA\u5DF1\u7684\u5199\u5165\u4E5F\u4F1A\u518D\u89E6\u53D1 settings/updated\uFF0C\u7528 busy/again \u4FDD\u8BC1\n // \u4E00\u6B21\u53EA\u8DD1\u4E00\u8F6E\u955C\u50CF\uFF0C\u4E14\u4E0D\u6F0F\u6389\u671F\u95F4\u5230\u8FBE\u7684\u53D8\u66F4\u3002\n let busy = false\n let again = false\n const sync = (): void => {\n if (busy) {\n again = true\n return\n }\n busy = true\n void mirrorHeader(settings)\n .catch((error: unknown) => {\n console.error('[composer-ux] \u8BF7\u6C42\u5934\u955C\u50CF\u5931\u8D25', error)\n })\n .finally(() => {\n busy = false\n if (again) {\n again = false\n sync()\n }\n })\n }\n\n const onSettingsUpdated = (ns: unknown): void => {\n if (ns === NAMESPACE || ns === LLM_NAMESPACE) sync()\n }\n ctx.on('settings/updated' as never, onSettingsUpdated as never)\n // \u542F\u52A8\u5373\u5BF9\u9F50\u4E00\u6B21\uFF1A\u542F\u7528\u72B6\u6001\u4E0B\u7684\u5934\u5373\u4F7F\u5728\u522B\u5904\u88AB\u62B9\u6389\uFF0C\u4E5F\u4F1A\u5728\u6B64\u8865\u56DE\u3002\n sync()\n })\n}\n"],
|
|
5
|
+
"mappings": ";AAIA,SAAS,WAAW,OAAO;AAC1B,SAAO,UAAU,QAAQ,UAAU;AACpC;AAMA,SAAS,cAAc,MAAM;AAC5B,SAAO,QAAQ,OAAO,SAAS,YAAY,CAAC,MAAM,QAAQ,IAAI;AAC/D;AAEA,SAAS,WAAW,QAAQ,QAAQ;AACnC,SAAO,OAAO,YAAY,OAAO,QAAQ,MAAM,EAAE,OAAO,CAAC,CAAC,KAAK,KAAK,MAAM,OAAO,KAAK,KAAK,CAAC,CAAC;AAC9F;AAEA,SAAS,UAAU,QAAQ,WAAW;AACrC,SAAO,OAAO,YAAY,OAAO,QAAQ,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,GAAG,CAAC,CAAC,CAAC;AACrG;AAEA,SAAS,KAAK,QAAQ,MAAM,QAAQ;AACnC,MAAI,CAAC,KAAM,QAAO,EAAE,GAAG,OAAO;AAC9B,QAAM,SAAS,CAAC;AAChB,aAAW,OAAO,KAAM,KAAI,UAAU,OAAO,GAAG,MAAM,OAAQ,QAAO,GAAG,IAAI,OAAO,GAAG;AACtF,SAAO;AACR;AAqDA,SAAS,GAAG,MAAM,OAAO;AACxB,MAAI,UAAU,WAAW,EAAG,QAAO,CAACA,WAAU,GAAG,MAAMA,MAAK;AAC5D,SAAO,QAAQ,cAAc,iBAAiB,WAAW,IAAI,KAAK,OAAO,UAAU,SAAS,KAAK,KAAK,EAAE,MAAM,GAAG,EAAE,MAAM;AAC1H;AACA,SAAS,kBAAkB,OAAO;AACjC,SAAO,GAAG,eAAe,KAAK,KAAK,GAAG,qBAAqB,KAAK;AACjE;AACA,SAAS,oBAAoB,OAAO;AACnC,SAAO,kBAAkB,KAAK,KAAK,YAAY,OAAO,KAAK;AAC5D;AAEA,IAAI;AAAA,CACH,SAASC,SAAQ;AACjB,EAAAA,QAAO,KAAK;AACZ,EAAAA,QAAO,WAAW;AAClB,WAAS,WAAW,QAAQ;AAC3B,QAAI,YAAY,OAAO,MAAM,EAAG,QAAO,OAAO,OAAO,MAAM,OAAO,YAAY,OAAO,aAAa,OAAO,UAAU;AAAA,QAC9G,QAAO;AAAA,EACb;AACA,EAAAA,QAAO,aAAa;AACpB,WAAS,SAAS,QAAQ;AACzB,aAAS,WAAW,MAAM;AAC1B,QAAI,OAAO,WAAW,YAAa,QAAO,OAAO,KAAK,MAAM,EAAE,SAAS,QAAQ;AAC/E,QAAI,SAAS;AACb,UAAM,QAAQ,IAAI,WAAW,MAAM;AACnC,aAAS,IAAI,GAAG,IAAI,MAAM,YAAY,IAAK,WAAU,OAAO,aAAa,MAAM,CAAC,CAAC;AACjF,WAAO,KAAK,MAAM;AAAA,EACnB;AACA,EAAAA,QAAO,WAAW;AAClB,WAAS,WAAW,QAAQ;AAC3B,QAAI,OAAO,WAAW,YAAa,QAAO,WAAW,OAAO,KAAK,QAAQ,QAAQ,CAAC;AAClF,WAAO,WAAW,KAAK,KAAK,MAAM,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAAA,EAC5D;AACA,EAAAA,QAAO,aAAa;AACpB,WAAS,MAAM,QAAQ;AACtB,aAAS,WAAW,MAAM;AAC1B,QAAI,OAAO,WAAW,YAAa,QAAO,OAAO,KAAK,MAAM,EAAE,SAAS,KAAK;AAC5E,WAAO,MAAM,KAAK,IAAI,WAAW,MAAM,GAAG,CAAC,SAAS,KAAK,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE;AAAA,EAChG;AACA,EAAAA,QAAO,QAAQ;AACf,WAAS,QAAQ,QAAQ;AACxB,QAAI,OAAO,WAAW,YAAa,QAAO,WAAW,OAAO,KAAK,QAAQ,KAAK,CAAC;AAC/E,UAAM,MAAM,OAAO,SAAS,MAAM,IAAI,SAAS,OAAO,MAAM,GAAG,OAAO,SAAS,CAAC;AAChF,UAAM,SAAS,CAAC;AAChB,aAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK,EAAG,QAAO,KAAK,SAAS,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AAC1F,WAAO,WAAW,KAAK,MAAM,EAAE;AAAA,EAChC;AACA,EAAAA,QAAO,UAAU;AAClB,GAAG,WAAW,SAAS,CAAC,EAAE;AAE1B,IAAM,sBAAsB,OAAO;AAEnC,IAAM,sBAAsB,OAAO;AAEnC,IAAM,mBAAmB,OAAO;AAEhC,IAAM,mBAAmB,OAAO;AAEhC,SAAS,MAAM,QAAQ,OAAuB,oBAAI,IAAI,GAAG;AACxD,MAAI,CAAC,UAAU,OAAO,WAAW,SAAU,QAAO;AAClD,MAAI,GAAG,QAAQ,MAAM,EAAG,QAAO,IAAI,KAAK,OAAO,QAAQ,CAAC;AACxD,MAAI,GAAG,UAAU,MAAM,EAAG,QAAO,IAAI,OAAO,OAAO,QAAQ,OAAO,KAAK;AACvE,MAAI,kBAAkB,MAAM,EAAG,QAAO,OAAO,MAAM,CAAC;AACpD,MAAI,YAAY,OAAO,MAAM,EAAG,QAAO,OAAO,OAAO,MAAM,OAAO,YAAY,OAAO,aAAa,OAAO,UAAU;AACnH,QAAM,SAAS,KAAK,IAAI,MAAM;AAC9B,MAAI,OAAQ,QAAO;AACnB,MAAI,MAAM,QAAQ,MAAM,GAAG;AAC1B,UAAMC,UAAS,CAAC;AAChB,SAAK,IAAI,QAAQA,OAAM;AACvB,WAAO,QAAQ,CAAC,OAAO,UAAU;AAChC,MAAAA,QAAO,KAAK,IAAI,QAAQ,MAAM,OAAO,MAAM,CAAC,OAAO,IAAI,CAAC;AAAA,IACzD,CAAC;AACD,WAAOA;AAAA,EACR;AACA,QAAM,SAAS,OAAO,OAAO,OAAO,eAAe,MAAM,CAAC;AAC1D,OAAK,IAAI,QAAQ,MAAM;AACvB,aAAW,OAAO,QAAQ,QAAQ,MAAM,GAAG;AAC1C,UAAM,aAAa,EAAE,GAAG,QAAQ,yBAAyB,QAAQ,GAAG,EAAE;AACtE,QAAI,WAAW,WAAY,YAAW,QAAQ,QAAQ,MAAM,OAAO,MAAM,CAAC,WAAW,OAAO,IAAI,CAAC;AACjG,YAAQ,eAAe,QAAQ,KAAK,UAAU;AAAA,EAC/C;AACA,SAAO;AACR;AAEA,SAAS,UAAU,GAAG,GAAG,QAAQ;AAChC,MAAI,MAAM,EAAG,QAAO;AACpB,MAAI,CAAC,UAAU,WAAW,CAAC,KAAK,WAAW,CAAC,EAAG,QAAO;AACtD,MAAI,OAAO,MAAM,OAAO,EAAG,QAAO;AAClC,MAAI,OAAO,MAAM,SAAU,QAAO;AAClC,MAAI,CAAC,KAAK,CAAC,EAAG,QAAO;AACrB,WAAS,MAAM,MAAM,MAAM;AAC1B,WAAO,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,QAAQ,KAAK,CAAC,IAAI,QAAQ;AAAA,EACnE;AACA,SAAO,MAAM,MAAM,SAAS,CAACC,IAAGC,OAAMD,GAAE,WAAWC,GAAE,UAAUD,GAAE,MAAM,CAAC,MAAM,UAAU,UAAU,MAAMC,GAAE,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,MAAM,GAAG,CAACD,IAAGC,OAAMD,GAAE,QAAQ,MAAMC,GAAE,QAAQ,CAAC,KAAK,MAAM,GAAG,QAAQ,GAAG,CAACD,IAAGC,OAAMD,GAAE,WAAWC,GAAE,UAAUD,GAAE,UAAUC,GAAE,KAAK,KAAK,MAAM,mBAAmB,CAACD,IAAGC,OAAM;AACpS,QAAID,GAAE,eAAeC,GAAE,WAAY,QAAO;AAC1C,UAAM,QAAQ,IAAI,WAAWD,EAAC;AAC9B,UAAM,QAAQ,IAAI,WAAWC,EAAC;AAC9B,aAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,IAAK,KAAI,MAAM,CAAC,MAAM,MAAM,CAAC,EAAG,QAAO;AACzE,WAAO;AAAA,EACR,CAAC,KAAK,OAAO,KAAK;AAAA,IACjB,GAAG;AAAA,IACH,GAAG;AAAA,EACJ,CAAC,EAAE,MAAM,CAAC,QAAQ,UAAU,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,MAAM,CAAC;AACpD;AAqEA,IAAI;AAAA,CACH,SAASC,OAAM;AACf,EAAAA,MAAK,cAAc;AACnB,EAAAA,MAAK,SAAS;AACd,EAAAA,MAAK,SAASA,MAAK,SAAS;AAC5B,EAAAA,MAAK,OAAOA,MAAK,SAAS;AAC1B,EAAAA,MAAK,MAAMA,MAAK,OAAO;AACvB,EAAAA,MAAK,OAAOA,MAAK,MAAM;AACvB,MAAI,kBAAkC,oBAAI,KAAK,GAAG,kBAAkB;AACpE,WAAS,kBAAkB,QAAQ;AAClC,qBAAiB;AAAA,EAClB;AACA,EAAAA,MAAK,oBAAoB;AACzB,WAAS,oBAAoB;AAC5B,WAAO;AAAA,EACR;AACA,EAAAA,MAAK,oBAAoB;AACzB,WAAS,cAAcC,QAAuB,oBAAI,KAAK,GAAG,QAAQ;AACjE,QAAI,OAAOA,UAAS,SAAU,CAAAA,QAAO,IAAI,KAAKA,KAAI;AAClD,QAAI,WAAW,OAAQ,UAAS;AAChC,WAAO,KAAK,OAAOA,MAAK,QAAQ,IAAID,MAAK,SAAS,UAAU,IAAI;AAAA,EACjE;AACA,EAAAA,MAAK,gBAAgB;AACrB,WAAS,eAAe,OAAO,QAAQ;AACtC,UAAMC,QAAO,IAAI,KAAK,QAAQD,MAAK,GAAG;AACtC,QAAI,WAAW,OAAQ,UAAS;AAChC,WAAO,IAAI,KAAK,CAACC,QAAO,SAASD,MAAK,MAAM;AAAA,EAC7C;AACA,EAAAA,MAAK,iBAAiB;AACtB,QAAM,UAAU,gBAAgB;AAChC,QAAM,aAAa,IAAI,OAAO,IAAI;AAAA,IACjC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,EAAE,IAAI,CAAC,SAAS,IAAI,OAAO,GAAG,IAAI,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG;AACnD,WAAS,UAAU,QAAQ;AAC1B,UAAM,UAAU,WAAW,KAAK,MAAM;AACtC,QAAI,CAAC,QAAS,QAAO;AACrB,YAAQ,WAAW,QAAQ,CAAC,CAAC,IAAIA,MAAK,QAAQ,MAAM,WAAW,QAAQ,CAAC,CAAC,IAAIA,MAAK,OAAO,MAAM,WAAW,QAAQ,CAAC,CAAC,IAAIA,MAAK,QAAQ,MAAM,WAAW,QAAQ,CAAC,CAAC,IAAIA,MAAK,UAAU,MAAM,WAAW,QAAQ,CAAC,CAAC,IAAIA,MAAK,UAAU;AAAA,EAClO;AACA,EAAAA,MAAK,YAAY;AACjB,WAAS,UAAUC,OAAM;AACxB,UAAM,SAAS,UAAUA,KAAI;AAC7B,QAAI,OAAQ,CAAAA,QAAO,KAAK,IAAI,IAAI;AAAA,aACvB,2BAA2B,KAAKA,KAAI,EAAG,CAAAA,QAAO,IAAoB,oBAAI,KAAK,GAAG,mBAAmB,CAAC,IAAIA,KAAI;AAAA,aAC1G,2CAA2C,KAAKA,KAAI,EAAG,CAAAA,QAAO,IAAoB,oBAAI,KAAK,GAAG,YAAY,CAAC,IAAIA,KAAI;AAC5H,WAAOA,QAAO,IAAI,KAAKA,KAAI,IAAoB,oBAAI,KAAK;AAAA,EACzD;AACA,EAAAD,MAAK,YAAY;AACjB,WAAS,OAAO,IAAI;AACnB,UAAM,MAAM,KAAK,IAAI,EAAE;AACvB,QAAI,OAAOA,MAAK,MAAMA,MAAK,OAAO,EAAG,QAAO,KAAK,MAAM,KAAKA,MAAK,GAAG,IAAI;AAAA,aAC/D,OAAOA,MAAK,OAAOA,MAAK,SAAS,EAAG,QAAO,KAAK,MAAM,KAAKA,MAAK,IAAI,IAAI;AAAA,aACxE,OAAOA,MAAK,SAASA,MAAK,SAAS,EAAG,QAAO,KAAK,MAAM,KAAKA,MAAK,MAAM,IAAI;AAAA,aAC5E,OAAOA,MAAK,OAAQ,QAAO,KAAK,MAAM,KAAKA,MAAK,MAAM,IAAI;AACnE,WAAO,KAAK;AAAA,EACb;AACA,EAAAA,MAAK,SAAS;AACd,WAAS,SAAS,QAAQ,SAAS,GAAG;AACrC,WAAO,OAAO,SAAS,EAAE,SAAS,QAAQ,GAAG;AAAA,EAC9C;AACA,EAAAA,MAAK,WAAW;AAChB,WAAS,SAASE,WAAU,OAAuB,oBAAI,KAAK,GAAG;AAC9D,WAAOA,UAAS,QAAQ,QAAQ,KAAK,YAAY,EAAE,SAAS,CAAC,EAAE,QAAQ,MAAM,KAAK,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,QAAQ,MAAM,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,EAAE,QAAQ,MAAM,SAAS,KAAK,QAAQ,CAAC,CAAC,EAAE,QAAQ,MAAM,SAAS,KAAK,SAAS,CAAC,CAAC,EAAE,QAAQ,MAAM,SAAS,KAAK,WAAW,CAAC,CAAC,EAAE,QAAQ,MAAM,SAAS,KAAK,WAAW,CAAC,CAAC,EAAE,QAAQ,OAAO,SAAS,KAAK,gBAAgB,GAAG,CAAC,CAAC;AAAA,EAC5X;AACA,EAAAF,MAAK,WAAW;AACjB,GAAG,SAAS,OAAO,CAAC,EAAE;;;AChUtB,IAAM,UAAU,OAAO,IAAI,aAAa;AACxC,IAAM,mBAAmB,OAAO,IAAI,iBAAiB;AACrD,WAAW,0BAA0B;AACrC,WAAW,uBAAuB;AAClC,IAAI,kBAAkB,cAAc,UAAU;AAAA,EAC7C;AAAA,EACA,OAAO;AAAA,EACP,YAAY,SAAS,SAAS;AAC7B,QAAI,SAAS;AACb,eAAW,WAAW,QAAQ,QAAQ,CAAC,EAAG,KAAI,OAAO,YAAY,SAAU,WAAU,MAAM;AAAA,aAClF,OAAO,YAAY,SAAU,WAAU,MAAM,UAAU;AAAA,aACvD,OAAO,YAAY,SAAU,WAAU,WAAW,QAAQ,SAAS,CAAC;AAC7E,QAAI,OAAO,WAAW,GAAG,EAAG,UAAS,OAAO,MAAM,CAAC;AACnD,WAAO,WAAW,MAAM,KAAK,GAAG,MAAM,OAAO,OAAO;AACpD,SAAK,UAAU;AAAA,EAChB;AAAA,EACA,OAAO,GAAG,OAAO;AAChB,WAAO,CAAC,CAAC,QAAQ,gBAAgB;AAAA,EAClC;AACD;AACA,OAAO,eAAe,gBAAgB,WAAW,kBAAkB,EAAE,OAAO,KAAK,CAAC;AAClF,IAAM,SAAS,SAAS,SAAS;AAChC,QAAM,SAAS,SAAS,MAAMG,WAAU,CAAC,GAAG;AAC3C,WAAO,OAAO,QAAQ,MAAM,QAAQA,QAAO,EAAE,CAAC;AAAA,EAC/C;AACA,MAAI,QAAQ,MAAM;AACjB,UAAM,OAAO,UAAS,QAAQ,MAAM,CAACA,aAAY,IAAI,OAAOA,QAAO,CAAC;AACpE,UAAM,SAAS,CAAC,QAAQ,KAAK,GAAG;AAChC,eAAW,OAAO,MAAM;AACvB,YAAMA,WAAU,KAAK,GAAG;AACxB,MAAAA,SAAQ,OAAO,OAAOA,SAAQ,IAAI;AAClC,MAAAA,SAAQ,QAAQ,OAAOA,SAAQ,KAAK;AACpC,MAAAA,SAAQ,OAAOA,SAAQ,QAAQA,SAAQ,KAAK,IAAI,MAAM;AACtD,MAAAA,SAAQ,OAAOA,SAAQ,QAAQ,UAASA,SAAQ,MAAM,MAAM;AAAA,IAC7D;AACA,WAAO,KAAK,QAAQ,GAAG;AAAA,EACxB;AACA,SAAO,OAAO,QAAQ,OAAO;AAC7B,MAAI,OAAO,OAAO,aAAa,SAAU,KAAI;AAC5C,WAAO,WAAW,IAAI,SAAS,YAAY,OAAO,QAAQ,EAAE;AAAA,EAC7D,QAAQ;AAAA,EAAC;AACT,SAAO,eAAe,QAAQ,OAAO,EAAE,OAAO,WAAW,wBAAwB,CAAC;AAClF,SAAO,eAAe,QAAQ,OAAO,SAAS;AAC9C,SAAO,SAAS,CAAC;AACjB,SAAO,WAAW,OAAO,SAAS,KAAK,MAAM;AAC7C,SAAO;AACR;AACA,OAAO,YAAY,OAAO,OAAO,SAAS,SAAS;AACnD,OAAO,UAAU,OAAO,IAAI;AAC5B,OAAO,eAAe,OAAO,WAAW,aAAa,EAAE,MAAM;AAC5D,SAAO;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,UAAU,CAAC,UAAU;AACpB,UAAI;AACH,eAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;AAAA,MACpD,SAAS,OAAO;AACf,YAAI,gBAAgB,GAAG,KAAK,EAAG,QAAO,EAAE,QAAQ,CAAC;AAAA,UAChD,SAAS,MAAM;AAAA,UACf,MAAM,MAAM,QAAQ;AAAA,QACrB,CAAC,EAAE;AACH,cAAM;AAAA,MACP;AAAA,IACD;AAAA,EACD;AACD,EAAE,CAAC;AACH,OAAO,kBAAkB;AACzB,OAAO,UAAU,SAAS,SAAS,SAAS;AAC3C,MAAI,WAAW,sBAAsB;AACpC,eAAW,qBAAqB,KAAK,GAAG,MAAM,KAAK,MAAM,KAAK,UAAU,EAAE,GAAG,KAAK,CAAC,CAAC;AACpF,WAAO,KAAK;AAAA,EACb;AACA,aAAW,uBAAuB,EAAE,CAAC,KAAK,GAAG,GAAG,EAAE,GAAG,KAAK,EAAE;AAC5D,aAAW,qBAAqB,KAAK,GAAG,IAAI,KAAK,MAAM,KAAK,UAAU,EAAE,GAAG,KAAK,CAAC,CAAC;AAClF,QAAM,SAAS;AAAA,IACd,KAAK,KAAK;AAAA,IACV,MAAM,WAAW;AAAA,EAClB;AACA,aAAW,uBAAuB;AAClC,SAAO;AACR;AACA,OAAO,UAAU,MAAM,SAAS,IAAI,KAAK,OAAO;AAC/C,OAAK,KAAK,GAAG,IAAI;AACjB,SAAO;AACR;AACA,OAAO,UAAU,OAAO,SAAS,KAAK,OAAO;AAC5C,OAAK,KAAK,KAAK,KAAK;AACpB,SAAO;AACR;AACA,SAAS,UAAU,UAAU,UAAU;AACtC,QAAM,SAAS,OAAO,aAAa,WAAW,EAAE,IAAI,SAAS,IAAI,EAAE,GAAG,SAAS;AAC/E,aAAW,UAAU,UAAU;AAC9B,UAAM,QAAQ,SAAS,MAAM;AAC7B,QAAI,OAAO,gBAAgB,OAAO,MAAO,QAAO,MAAM,IAAI,MAAM,gBAAgB,MAAM;AAAA,aAC7E,OAAO,UAAU,SAAU,QAAO,MAAM,IAAI;AAAA,EACtD;AACA,SAAO;AACR;AACA,SAAS,SAAS,OAAO;AACxB,SAAO,OAAO,UAAU,OAAO;AAChC;AACA,SAAS,YAAY,MAAM;AAC1B,SAAO,WAAW,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,WAAW,GAAG,CAAC;AAC5D;AACA,OAAO,UAAU,OAAO,SAAS,KAAK,UAAU;AAC/C,QAAM,SAAS,OAAO,IAAI;AAC1B,QAAM,OAAO,UAAU,OAAO,KAAK,aAAa,QAAQ;AACxD,MAAI,OAAO,KAAK,IAAI,EAAE,OAAQ,QAAO,KAAK,cAAc;AACxD,MAAI,OAAO,KAAM,QAAO,OAAO,UAAS,OAAO,MAAM,CAAC,OAAO,QAAQ;AACpE,WAAO,MAAM,KAAK,UAAS,UAAU,CAAC,SAAS,SAAS,IAAI,IAAI,GAAG,KAAK,OAAO,GAAG,CAAC,CAAC;AAAA,EACrF,CAAC;AACD,MAAI,OAAO,KAAM,QAAO,OAAO,OAAO,KAAK,IAAI,CAAC,OAAO,UAAU;AAChE,WAAO,MAAM,KAAK,UAAS,UAAU,CAAC,OAAO,CAAC,MAAM;AACnD,UAAI,MAAM,QAAQ,SAAS,IAAI,CAAC,EAAG,QAAO,SAAS,IAAI,EAAE,KAAK;AAC9D,UAAI,MAAM,QAAQ,IAAI,EAAG,QAAO,KAAK,KAAK;AAC1C,aAAO,YAAY,IAAI;AAAA,IACxB,CAAC,CAAC;AAAA,EACH,CAAC;AACD,MAAI,OAAO,MAAO,QAAO,QAAQ,OAAO,MAAM,KAAK,UAAS,UAAU,CAAC,SAAS;AAC/E,QAAI,SAAS,IAAI,EAAG,QAAO,SAAS,IAAI;AACxC,WAAO,YAAY,IAAI;AAAA,EACxB,CAAC,CAAC;AACF,MAAI,OAAO,KAAM,QAAO,OAAO,OAAO,KAAK,KAAK,UAAS,UAAU,CAAC,SAAS,MAAM,IAAI,CAAC;AACxF,SAAO;AACR;AACA,OAAO,UAAU,QAAQ,SAAS,MAAM,KAAK,OAAO;AACnD,QAAM,SAAS,OAAO,IAAI;AAC1B,SAAO,OAAO;AAAA,IACb,GAAG,OAAO;AAAA,IACV,CAAC,GAAG,GAAG;AAAA,EACR;AACA,SAAO;AACR;AACA,WAAW,OAAO;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,EAAG,QAAO,OAAO,OAAO,WAAW,EAAE,CAAC,GAAG,EAAE,QAAQ,MAAM;AACxD,QAAM,SAAS,OAAO,IAAI;AAC1B,SAAO,OAAO;AAAA,IACb,GAAG,OAAO;AAAA,IACV,CAAC,GAAG,GAAG;AAAA,EACR;AACA,SAAO;AACR,EAAE,CAAC;AACH,OAAO,UAAU,aAAa,SAAS,aAAa;AACnD,QAAM,SAAS,OAAO,IAAI;AAC1B,SAAO,KAAK,WAAW,CAAC;AACxB,SAAO,KAAK,OAAO,KAAK;AAAA,IACvB,MAAM;AAAA,IACN,MAAM;AAAA,EACP,CAAC;AACD,SAAO;AACR;AACA,OAAO,UAAU,eAAe,SAAS,eAAe;AACvD,QAAM,SAAS,OAAO,IAAI;AAC1B,SAAO,KAAK,WAAW,CAAC;AACxB,SAAO,KAAK,OAAO,KAAK;AAAA,IACvB,MAAM;AAAA,IACN,MAAM;AAAA,EACP,CAAC;AACD,SAAO;AACR;AACA,OAAO,UAAU,UAAU,SAAS,QAAQ,QAAQ;AACnD,QAAM,SAAS,OAAO,IAAI;AAC1B,QAAMC,WAAU,KAAK,QAAQ,CAAC,UAAU,OAAO,CAAC;AAChD,SAAO,OAAO;AAAA,IACb,GAAG,OAAO;AAAA,IACV,SAAAA;AAAA,EACD;AACA,SAAO;AACR;AACA,OAAO,UAAU,WAAW,SAAS,SAAS,OAAO;AACpD,MAAI,UAAU,OAAO,KAAK,KAAK,SAAS,KAAK,SAAS,MAAM,EAAG,QAAO;AACtE,MAAI,WAAW,KAAK,EAAG,QAAO;AAC9B,MAAI,KAAK,SAAS,YAAY,KAAK,SAAS,QAAQ;AACnD,UAAM,SAAS,CAAC;AAChB,eAAW,OAAO,OAAO;AACxB,YAAM,QAAQ,KAAK,SAAS,WAAW,KAAK,KAAK,GAAG,IAAI,KAAK,QAAQ,SAAS,MAAM,GAAG,CAAC;AACxF,UAAI,KAAK,SAAS,UAAU,CAAC,WAAW,IAAI,EAAG,QAAO,GAAG,IAAI;AAAA,IAC9D;AACA,QAAI,UAAU,QAAQ,KAAK,KAAK,SAAS,KAAK,SAAS,MAAM,EAAG,QAAO;AACvE,WAAO;AAAA,EACR,WAAW,KAAK,SAAS,WAAW,KAAK,SAAS,SAAS;AAC1D,UAAM,SAAS,CAAC;AAChB,UAAM,QAAQ,CAACC,QAAO,UAAU;AAC/B,YAAM,SAAS,KAAK,SAAS,UAAU,KAAK,QAAQ,KAAK,KAAK,KAAK;AACnE,YAAM,OAAO,SAAS,OAAO,SAASA,MAAK,IAAIA;AAC/C,aAAO,KAAK,IAAI;AAAA,IACjB,CAAC;AACD,WAAO;AAAA,EACR,WAAW,KAAK,SAAS,aAAa;AACrC,UAAM,SAAS,CAAC;AAChB,eAAW,QAAQ,KAAK,KAAM,QAAO,OAAO,QAAQ,KAAK,SAAS,KAAK,CAAC;AACxE,WAAO;AAAA,EACR,WAAW,KAAK,SAAS,QAAS,YAAW,UAAU,KAAK,KAAM,KAAI;AACrE,WAAO,QAAQ,OAAO,QAAQ,CAAC,CAAC;AAChC,WAAO,OAAO,SAAS,KAAK;AAAA,EAC7B,QAAQ;AAAA,EAAC;AACT,SAAO;AACR;AACA,OAAO,UAAU,WAAW,SAAS,SAAS,QAAQ;AACrD,SAAO,WAAW,KAAK,IAAI,IAAI,MAAM,MAAM,KAAK,UAAU,KAAK,IAAI;AACpE;AACA,OAAO,UAAU,OAAO,SAAS,KAAK,MAAMC,QAAO;AAClD,QAAM,SAAS,OAAO,IAAI;AAC1B,SAAO,OAAO;AAAA,IACb,GAAG,OAAO;AAAA,IACV;AAAA,IACA,OAAAA;AAAA,EACD;AACA,SAAO;AACR;AACA,WAAW,OAAO;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,EAAG,QAAO,OAAO,OAAO,WAAW,EAAE,CAAC,GAAG,EAAE,OAAO;AACjD,QAAM,SAAS,OAAO,IAAI;AAC1B,SAAO,OAAO;AAAA,IACb,GAAG,OAAO;AAAA,IACV,CAAC,GAAG,GAAG;AAAA,EACR;AACA,SAAO;AACR,EAAE,CAAC;AACH,IAAM,YAAY,CAAC;AACnB,OAAO,SAAS,SAAS,OAAO,MAAMC,UAAS;AAC9C,YAAU,IAAI,IAAIA;AACnB;AACA,OAAO,UAAU,SAAS,QAAQ,MAAM,QAAQ,UAAU,CAAC,GAAG,SAAS,OAAO;AAC7E,MAAI,CAAC,OAAQ,QAAO,CAAC,IAAI;AACzB,MAAI,QAAQ,SAAS,MAAM,MAAM,EAAG,QAAO,CAAC,IAAI;AAChD,MAAI,WAAW,IAAI,KAAK,OAAO,SAAS,QAAQ;AAC/C,QAAI,OAAO,KAAK,SAAU,OAAM,IAAI,gBAAgB,0BAA0B,OAAO;AACrF,QAAI,UAAU;AACd,QAAI,WAAW,OAAO,KAAK;AAC3B,WAAO,SAAS,SAAS,eAAe,WAAW,QAAQ,GAAG;AAC7D,gBAAU,QAAQ,KAAK,CAAC;AACxB,iBAAW,SAAS,KAAK;AAAA,IAC1B;AACA,QAAI,WAAW,QAAQ,EAAG,QAAO,CAAC,IAAI;AACtC,WAAO,MAAM,QAAQ;AAAA,EACtB;AACA,QAAM,WAAW,UAAU,OAAO,IAAI;AACtC,MAAI,CAAC,SAAU,OAAM,IAAI,gBAAgB,qBAAqB,OAAO,IAAI,KAAK,OAAO;AACrF,MAAI;AACH,WAAO,SAAS,MAAM,QAAQ,SAAS,MAAM;AAAA,EAC9C,SAAS,OAAO;AACf,QAAI,CAAC,OAAO,KAAK,MAAO,OAAM;AAC9B,WAAO,CAAC,OAAO,KAAK,OAAO;AAAA,EAC5B;AACD;AACA,OAAO,OAAO,SAAS,KAAK,QAAQ;AACnC,MAAI,WAAW,MAAM,EAAG,QAAO,OAAO,IAAI;AAAA,WACjC;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,EACD,EAAE,SAAS,OAAO,MAAM,EAAG,QAAO,OAAO,MAAM,MAAM,EAAE,SAAS;AAAA,WACvD,OAAO,OAAO,EAAG,QAAO;AAAA,WACxB,OAAO,WAAW,WAAY,SAAQ,QAAQ;AAAA,IACtD,KAAK;AAAQ,aAAO,OAAO,OAAO,EAAE,SAAS;AAAA,IAC7C,KAAK;AAAQ,aAAO,OAAO,OAAO,EAAE,SAAS;AAAA,IAC7C,KAAK;AAAS,aAAO,OAAO,QAAQ,EAAE,SAAS;AAAA,IAC/C,KAAK;AAAU,aAAO,OAAO,SAAS,EAAE,SAAS;AAAA,IACjD;AAAS,aAAO,OAAO,GAAG,MAAM,EAAE,SAAS;AAAA,EAC5C;AAAA,MACK,OAAM,IAAI,UAAU,4BAA4B,MAAM,EAAE;AAC9D;AACA,OAAO,OAAO,SAAS,KAAK,SAAS;AACpC,QAAMC,UAAS,MAAM;AACpB,QAAI,CAAC,OAAO,MAAM,OAAO,GAAG;AAC3B,aAAO,QAAQ,OAAO,QAAQ;AAC9B,aAAO,MAAM,OAAO;AAAA,QACnB,GAAG,OAAO;AAAA,QACV,GAAG,OAAO,MAAM;AAAA,MACjB;AAAA,IACD;AACA,WAAO,OAAO,MAAM,OAAO;AAAA,EAC5B;AACA,QAAM,SAAS,IAAI,OAAO;AAAA,IACzB,MAAM;AAAA,IACN;AAAA,IACA,OAAO,EAAE,QAAAA,QAAO;AAAA,EACjB,CAAC;AACD,SAAO;AACR;AACA,OAAO,UAAU,SAAS,UAAU;AACnC,SAAO,OAAO,OAAO,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC;AACrC;AACA,OAAO,UAAU,SAAS,UAAU;AACnC,SAAO,OAAO,OAAO,EAAE,KAAK,IAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,QAAQ;AAC7D;AACA,OAAO,OAAO,SAAS,OAAO;AAC7B,SAAO,OAAO,MAAM,CAAC,OAAO,GAAG,IAAI,GAAG,OAAO,UAAU,OAAO,OAAO,EAAE,KAAK,UAAU,GAAG,CAAC,OAAO,YAAY;AAC5G,UAAMC,QAAO,IAAI,KAAK,KAAK;AAC3B,QAAI,MAAM,CAACA,KAAI,EAAG,OAAM,IAAI,gBAAgB,iBAAiB,KAAK,KAAK,OAAO;AAC9E,WAAOA;AAAA,EACR,GAAG,IAAI,CAAC,CAAC;AACV;AACA,OAAO,SAAS,SAAS,OAAO,OAAO,IAAI;AAC1C,SAAO,OAAO,MAAM,CAAC,OAAO,GAAG,MAAM,GAAG,OAAO,UAAU,OAAO,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,YAAY;AACtH,QAAI;AACH,aAAO,IAAI,OAAO,OAAO,IAAI;AAAA,IAC9B,SAAS,GAAG;AACX,YAAM,IAAI,gBAAgB,EAAE,SAAS,OAAO;AAAA,IAC7C;AAAA,EACD,GAAG,IAAI,CAAC,CAAC;AACV;AACA,OAAO,cAAc,SAAS,YAAY,UAAU;AACnD,SAAO,OAAO,MAAM;AAAA,IACnB,OAAO,GAAG,WAAW;AAAA,IACrB,OAAO,GAAG,iBAAiB;AAAA,IAC3B,OAAO,UAAU,OAAO,IAAI,GAAG,CAAC,OAAO,YAAY;AAClD,UAAI,OAAO,SAAS,KAAK,EAAG,QAAO,OAAO,WAAW,KAAK;AAC1D,YAAM,IAAI,gBAAgB,sCAAsC,KAAK,IAAI,OAAO;AAAA,IACjF,GAAG,IAAI;AAAA,IACP,GAAG,WAAW,CAAC,OAAO,UAAU,OAAO,OAAO,GAAG,CAAC,OAAO,YAAY;AACpE,UAAI;AACH,eAAO,aAAa,WAAW,OAAO,WAAW,KAAK,IAAI,OAAO,QAAQ,KAAK;AAAA,MAC/E,SAAS,GAAG;AACX,cAAM,IAAI,gBAAgB,EAAE,SAAS,OAAO;AAAA,MAC7C;AAAA,IACD,GAAG,IAAI,CAAC,IAAI,CAAC;AAAA,EACd,CAAC;AACF;AACA,OAAO,OAAO,QAAQ,CAAC,MAAM,QAAQ,SAAS,WAAW;AACxD,MAAI,CAAC,OAAO,MAAM,OAAO,GAAG;AAC3B,WAAO,QAAQ,OAAO,QAAQ;AAC9B,WAAO,MAAM,OAAO;AAAA,MACnB,GAAG,OAAO;AAAA,MACV,GAAG,OAAO,MAAM;AAAA,IACjB;AAAA,EACD;AACA,SAAO,OAAO,QAAQ,MAAM,OAAO,OAAO,SAAS,MAAM;AAC1D,CAAC;AACD,OAAO,OAAO,OAAO,CAAC,SAAS;AAC9B,SAAO,CAAC,IAAI;AACb,CAAC;AACD,OAAO,OAAO,SAAS,CAAC,MAAM,GAAG,YAAY;AAC5C,QAAM,IAAI,gBAAgB,6BAA6B,IAAI,IAAI,OAAO;AACvE,CAAC;AACD,OAAO,OAAO,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;AACpD,MAAI,UAAU,MAAM,KAAK,EAAG,QAAO,CAAC,KAAK;AACzC,QAAM,IAAI,gBAAgB,YAAY,KAAK,YAAY,IAAI,IAAI,OAAO;AACvE,CAAC;AACD,SAAS,iBAAiB,MAAM,MAAM,aAAa,SAAS,UAAU,OAAO;AAC5E,QAAM,EAAE,MAAM,UAAU,MAAM,UAAU,IAAI;AAC5C,MAAI,OAAO,IAAK,OAAM,IAAI,gBAAgB,YAAY,WAAW,OAAO,GAAG,YAAY,IAAI,IAAI,OAAO;AACtG,MAAI,OAAO,OAAO,CAAC,QAAS,OAAM,IAAI,gBAAgB,YAAY,WAAW,OAAO,GAAG,YAAY,IAAI,IAAI,OAAO;AACnH;AACA,OAAO,OAAO,UAAU,CAAC,MAAM,EAAE,KAAK,GAAG,YAAY;AACpD,MAAI,OAAO,SAAS,SAAU,OAAM,IAAI,gBAAgB,2BAA2B,IAAI,IAAI,OAAO;AAClG,MAAI,KAAK,SAAS;AACjB,UAAM,SAAS,IAAI,OAAO,KAAK,QAAQ,QAAQ,KAAK,QAAQ,KAAK;AACjE,QAAI,CAAC,OAAO,KAAK,IAAI,EAAG,OAAM,IAAI,gBAAgB,iCAAiC,MAAM,IAAI,OAAO;AAAA,EACrG;AACA,mBAAiB,KAAK,QAAQ,MAAM,iBAAiB,OAAO;AAC5D,SAAO,CAAC,IAAI;AACb,CAAC;AACD,SAAS,aAAa,MAAM,QAAQ;AACnC,QAAM,MAAM,KAAK,SAAS;AAC1B,MAAI,IAAI,SAAS,GAAG,EAAG,QAAO,OAAO,KAAK,IAAI,IAAI,MAAM;AACxD,QAAM,QAAQ,IAAI,QAAQ,GAAG;AAC7B,MAAI,UAAU,GAAI,QAAO,OAAO,KAAK,IAAI,IAAI,MAAM;AACnD,QAAM,OAAO,IAAI,MAAM,QAAQ,CAAC;AAChC,QAAM,UAAU,IAAI,MAAM,GAAG,KAAK;AAClC,MAAI,KAAK,UAAU,OAAQ,QAAO,EAAE,UAAU,KAAK,OAAO,QAAQ,GAAG;AACrE,SAAO,EAAE,UAAU,KAAK,MAAM,GAAG,MAAM,IAAI,MAAM,KAAK,MAAM,MAAM;AACnE;AACA,SAAS,aAAa,MAAM,KAAK,MAAM;AACtC,SAAO,KAAK,IAAI,IAAI;AACpB,MAAI,CAAC,aAAa,KAAK,KAAK,SAAS,CAAC,EAAG,SAAQ,OAAO,OAAO,SAAS;AACxE,QAAM,QAAQ,KAAK,SAAS,EAAE,QAAQ,GAAG;AACzC,QAAM,SAAS,KAAK,SAAS,EAAE,MAAM,QAAQ,CAAC,EAAE;AAChD,SAAO,KAAK,IAAI,aAAa,MAAM,MAAM,IAAI,aAAa,KAAK,MAAM,CAAC,IAAI,aAAa,MAAM,MAAM,MAAM;AAC1G;AACA,OAAO,OAAO,UAAU,CAAC,MAAM,EAAE,KAAK,GAAG,YAAY;AACpD,MAAI,OAAO,SAAS,SAAU,OAAM,IAAI,gBAAgB,2BAA2B,IAAI,IAAI,OAAO;AAClG,mBAAiB,MAAM,MAAM,UAAU,OAAO;AAC9C,QAAM,EAAE,KAAK,IAAI;AACjB,MAAI,QAAQ,CAAC,aAAa,MAAM,KAAK,OAAO,GAAG,IAAI,EAAG,OAAM,IAAI,gBAAgB,+BAA+B,IAAI,YAAY,IAAI,IAAI,OAAO;AAC9I,SAAO,CAAC,IAAI;AACb,CAAC;AACD,OAAO,OAAO,WAAW,CAAC,MAAM,GAAG,YAAY;AAC9C,MAAI,OAAO,SAAS,UAAW,QAAO,CAAC,IAAI;AAC3C,QAAM,IAAI,gBAAgB,4BAA4B,IAAI,IAAI,OAAO;AACtE,CAAC;AACD,OAAO,OAAO,UAAU,CAAC,MAAM,EAAE,MAAM,KAAK,GAAG,YAAY;AAC1D,MAAI,QAAQ,GAAG,OAAO,CAAC;AACvB,MAAI,OAAO,SAAS,UAAU;AAC7B,YAAQ;AACR,eAAW,OAAO,KAAM,KAAI,OAAO,KAAK,GAAG,EAAG,MAAK,KAAK,GAAG;AAAA,EAC5D,WAAW,MAAM,QAAQ,IAAI,GAAG;AAC/B,WAAO;AACP,eAAW,OAAO,MAAM;AACvB,UAAI,OAAO,QAAQ,SAAU,OAAM,IAAI,gBAAgB,2BAA2B,GAAG,IAAI,OAAO;AAChG,UAAI,OAAO,KAAM,UAAS,KAAK,GAAG;AAAA,IACnC;AAAA,EACD,MAAO,OAAM,IAAI,gBAAgB,oCAAoC,IAAI,IAAI,OAAO;AACpF,MAAI,UAAU,KAAK,QAAS,QAAO,CAAC,KAAK;AACzC,SAAO,CAAC,OAAO,IAAI;AACpB,CAAC;AACD,OAAO,OAAO,YAAY,CAAC,MAAM,GAAG,YAAY;AAC/C,MAAI,OAAO,SAAS,WAAY,QAAO,CAAC,IAAI;AAC5C,QAAM,IAAI,gBAAgB,6BAA6B,IAAI,IAAI,OAAO;AACvE,CAAC;AACD,OAAO,OAAO,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY;AACvD,MAAI,OAAO,gBAAgB,YAAY;AACtC,QAAI,gBAAgB,YAAa,QAAO,CAAC,IAAI;AAC7C,UAAM,IAAI,gBAAgB,YAAY,YAAY,IAAI,YAAY,IAAI,IAAI,OAAO;AAAA,EAClF,OAAO;AACN,QAAI,WAAW,IAAI,EAAG,OAAM,IAAI,gBAAgB,YAAY,WAAW,YAAY,IAAI,IAAI,OAAO;AAClG,QAAI,YAAY,OAAO,eAAe,IAAI;AAC1C,WAAO,WAAW;AACjB,UAAI,UAAU,aAAa,SAAS,YAAa,QAAO,CAAC,IAAI;AAC7D,kBAAY,OAAO,eAAe,SAAS;AAAA,IAC5C;AACA,UAAM,IAAI,gBAAgB,YAAY,WAAW,YAAY,IAAI,IAAI,OAAO;AAAA,EAC7E;AACD,CAAC;AACD,SAAS,SAAS,MAAM,KAAK,QAAQ,SAAS;AAC7C,MAAI;AACH,UAAM,CAAC,OAAO,OAAO,IAAI,OAAO,QAAQ,KAAK,GAAG,GAAG,QAAQ;AAAA,MAC1D,GAAG;AAAA,MACH,MAAM,CAAC,GAAG,QAAQ,QAAQ,CAAC,GAAG,GAAG;AAAA,IAClC,CAAC;AACD,QAAI,YAAY,OAAQ,MAAK,GAAG,IAAI;AACpC,WAAO;AAAA,EACR,SAAS,GAAG;AACX,QAAI,CAAC,SAAS,QAAS,OAAM;AAC7B,WAAO,KAAK,GAAG;AACf,WAAO,OAAO,KAAK;AAAA,EACpB;AACD;AACA,OAAO,OAAO,SAAS,CAAC,MAAM,EAAE,OAAO,KAAK,GAAG,YAAY;AAC1D,MAAI,CAAC,MAAM,QAAQ,IAAI,EAAG,OAAM,IAAI,gBAAgB,0BAA0B,IAAI,IAAI,OAAO;AAC7F,mBAAiB,KAAK,QAAQ,MAAM,gBAAgB,SAAS,CAAC,WAAW,MAAM,KAAK,OAAO,CAAC;AAC5F,SAAO,CAAC,KAAK,IAAI,CAAC,GAAG,UAAU,SAAS,MAAM,OAAO,OAAO,OAAO,CAAC,CAAC;AACtE,CAAC;AACD,OAAO,OAAO,QAAQ,CAAC,MAAM,EAAE,OAAO,KAAK,GAAG,SAAS,WAAW;AACjE,MAAI,CAAC,cAAc,IAAI,EAAG,OAAM,IAAI,gBAAgB,2BAA2B,IAAI,IAAI,OAAO;AAC9F,QAAM,SAAS,CAAC;AAChB,aAAW,OAAO,MAAM;AACvB,QAAI;AACJ,QAAI;AACH,aAAO,OAAO,QAAQ,KAAK,MAAM,OAAO,EAAE,CAAC;AAAA,IAC5C,SAAS,OAAO;AACf,UAAI,OAAQ;AACZ,YAAM;AAAA,IACP;AACA,WAAO,IAAI,IAAI,SAAS,MAAM,KAAK,OAAO,OAAO;AACjD,SAAK,IAAI,IAAI,KAAK,GAAG;AACrB,QAAI,QAAQ,KAAM,QAAO,KAAK,GAAG;AAAA,EAClC;AACA,SAAO,CAAC,MAAM;AACf,CAAC;AACD,OAAO,OAAO,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,SAAS,WAAW;AAC3D,MAAI,CAAC,MAAM,QAAQ,IAAI,EAAG,OAAM,IAAI,gBAAgB,0BAA0B,IAAI,IAAI,OAAO;AAC7F,QAAM,SAAS,KAAK,IAAI,CAAC,OAAO,UAAU,SAAS,MAAM,OAAO,OAAO,OAAO,CAAC;AAC/E,MAAI,OAAQ,QAAO,CAAC,MAAM;AAC1B,SAAO,KAAK,GAAG,KAAK,MAAM,KAAK,MAAM,CAAC;AACtC,SAAO,CAAC,MAAM;AACf,CAAC;AACD,SAAS,MAAM,QAAQ,MAAM;AAC5B,aAAW,OAAO,MAAM;AACvB,QAAI,OAAO,OAAQ;AACnB,WAAO,GAAG,IAAI,KAAK,GAAG;AAAA,EACvB;AACD;AACA,OAAO,OAAO,UAAU,CAAC,MAAM,EAAE,KAAK,GAAG,SAAS,WAAW;AAC5D,MAAI,CAAC,cAAc,IAAI,EAAG,OAAM,IAAI,gBAAgB,2BAA2B,IAAI,IAAI,OAAO;AAC9F,QAAM,SAAS,CAAC;AAChB,aAAW,OAAO,MAAM;AACvB,UAAM,QAAQ,SAAS,MAAM,KAAK,KAAK,GAAG,GAAG,OAAO;AACpD,QAAI,CAAC,WAAW,KAAK,KAAK,OAAO,KAAM,QAAO,GAAG,IAAI;AAAA,EACtD;AACA,MAAI,CAAC,OAAQ,OAAM,QAAQ,IAAI;AAC/B,SAAO,CAAC,MAAM;AACf,CAAC;AACD,OAAO,OAAO,SAAS,CAAC,MAAM,EAAE,MAAM,UAAAC,UAAS,GAAG,SAAS,WAAW;AACrE,QAAM,WAAW,CAAC;AAClB,aAAW,SAAS,KAAM,KAAI;AAC7B,WAAO,OAAO,QAAQ,MAAM,OAAO,SAAS,MAAM;AAAA,EACnD,SAAS,OAAO;AACf,aAAS,KAAK,KAAK;AAAA,EACpB;AACA,QAAM,IAAI,gBAAgB,YAAYA,UAAS,CAAC,YAAY,KAAK,UAAU,IAAI,CAAC,IAAI,OAAO;AAC5F,CAAC;AACD,OAAO,OAAO,aAAa,CAAC,MAAM,EAAE,MAAM,UAAAA,UAAS,GAAG,SAAS,WAAW;AACzE,MAAI,CAAC,KAAK,OAAQ,QAAO,CAAC,IAAI;AAC9B,MAAI;AACJ,aAAW,SAAS,MAAM;AACzB,UAAM,QAAQ,OAAO,QAAQ,MAAM,OAAO,SAAS,IAAI,EAAE,CAAC;AAC1D,QAAI,WAAW,KAAK,EAAG;AACvB,QAAI,WAAW,MAAM,EAAG,UAAS;AAAA,aACxB,OAAO,WAAW,OAAO,MAAO,OAAM,IAAI,gBAAgB,YAAYA,UAAS,CAAC,YAAY,KAAK,UAAU,IAAI,CAAC,IAAI,OAAO;AAAA,aAC3H,OAAO,UAAU,SAAU,OAAM,WAAW,CAAC,GAAG,KAAK;AAAA,aACrD,WAAW,MAAO,OAAM,IAAI,gBAAgB,YAAYA,UAAS,CAAC,YAAY,KAAK,UAAU,IAAI,CAAC,IAAI,OAAO;AAAA,EACvH;AACA,MAAI,CAAC,UAAU,cAAc,IAAI,EAAG,OAAM,QAAQ,IAAI;AACtD,SAAO,CAAC,MAAM;AACf,CAAC;AACD,OAAO,OAAO,aAAa,CAAC,MAAM,EAAE,OAAO,UAAU,SAAS,GAAG,YAAY;AAC5E,QAAM,CAAC,QAAQ,UAAU,IAAI,IAAI,OAAO,QAAQ,MAAM,OAAO,SAAS,IAAI;AAC1E,MAAI,SAAU,QAAO,CAAC,SAAS,MAAM,CAAC;AAAA,MACjC,QAAO,CAAC,SAAS,MAAM,GAAG,SAAS,OAAO,CAAC;AACjD,CAAC;AACD,IAAM,aAAa,CAAC;AACpB,SAAS,aAAaC,OAAM,MAAM,QAAQ;AACzC,aAAWA,KAAI,IAAI;AACnB,SAAO,OAAO,QAAQ,EAAE,CAACA,KAAI,KAAK,MAAM;AACvC,UAAM,SAAS,IAAI,OAAO,EAAE,MAAMA,MAAK,CAAC;AACxC,SAAK,QAAQ,CAAC,KAAK,UAAU;AAC5B,cAAQ,KAAK;AAAA,QACZ,KAAK;AACJ,iBAAO,OAAO,KAAK,KAAK,KAAK,OAAO,OAAO;AAC3C;AAAA,QACD,KAAK;AACJ,iBAAO,QAAQ,OAAO,KAAK,KAAK,KAAK,CAAC;AACtC;AAAA,QACD,KAAK;AACJ,iBAAO,OAAO,KAAK,KAAK,EAAE,IAAI,OAAO,IAAI;AACzC;AAAA,QACD,KAAK;AACJ,iBAAO,OAAO,UAAS,KAAK,KAAK,GAAG,OAAO,IAAI;AAC/C;AAAA,QACD,KAAK;AACJ,iBAAO,OAAO,CAAC;AACf,qBAAWC,QAAO,KAAK,KAAK,GAAG;AAC9B,gBAAI,OAAO,KAAK,KAAK,EAAEA,IAAG,MAAM,SAAU;AAC1C,mBAAO,KAAKA,IAAG,IAAI,KAAK,KAAK,EAAEA,IAAG;AAAA,UACnC;AACA;AAAA,QACD,KAAK,YAAY;AAChB,gBAAM,WAAW,OAAO,WAAW,KAAK,KAAK;AAC7C,mBAAS,QAAQ,MAAM,MAAM,SAAS,SAAS;AAC/C;AAAA,QACD;AAAA,QACA,KAAK,eAAe;AACnB,gBAAM,cAAc,OAAO,cAAc,KAAK,KAAK;AACnD,cAAI,OAAO,gBAAgB,WAAY,aAAY,QAAQ,MAAM,MAAM,YAAY,MAAM;AACzF;AAAA,QACD;AAAA,QACA;AAAS,iBAAO,GAAG,IAAI,KAAK,KAAK;AAAA,MAClC;AAAA,IACD,CAAC;AACD,QAAID,UAAS,YAAYA,UAAS,OAAQ,QAAO,KAAK,UAAU,CAAC;AAAA,aACxDA,UAAS,WAAWA,UAAS,QAAS,QAAO,KAAK,UAAU,CAAC;AAAA,aAC7DA,UAAS,SAAU,QAAO,KAAK,UAAU;AAClD,WAAO;AAAA,EACR,EAAE,CAAC;AACJ;AACA,aAAa,MAAM,CAAC,aAAa,GAAG,CAAC,EAAE,YAAY,MAAM;AACxD,MAAI,OAAO,gBAAgB,WAAY,QAAO,YAAY;AAAA,MACrD,QAAO;AACb,CAAC;AACD,aAAa,OAAO,CAAC,GAAG,MAAM,KAAK;AACnC,aAAa,SAAS,CAAC,GAAG,MAAM,OAAO;AACvC,aAAa,SAAS,CAAC,OAAO,GAAG,CAAC,EAAE,MAAM,MAAM,OAAO,UAAU,WAAW,KAAK,UAAU,KAAK,IAAI,KAAK;AACzG,aAAa,UAAU,CAAC,GAAG,MAAM,QAAQ;AACzC,aAAa,UAAU,CAAC,GAAG,MAAM,QAAQ;AACzC,aAAa,WAAW,CAAC,GAAG,MAAM,SAAS;AAC3C,aAAa,UAAU,CAAC,MAAM,GAAG,MAAM,QAAQ;AAC/C,aAAa,YAAY,CAAC,GAAG,MAAM,UAAU;AAC7C,aAAa,SAAS,CAAC,OAAO,GAAG,CAAC,EAAE,MAAM,MAAM,GAAG,MAAM,SAAS,IAAI,CAAC,IAAI;AAC3E,aAAa,QAAQ,CAAC,SAAS,MAAM,GAAG,CAAC,EAAE,OAAO,KAAK,MAAM,WAAW,KAAK,SAAS,CAAC,MAAM,MAAM,SAAS,CAAC,IAAI;AACjH,aAAa,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,MAAM,IAAI,KAAK,IAAI,CAAC,UAAU,MAAM,SAAS,CAAC,EAAE,KAAK,IAAI,CAAC,GAAG;AACrG,aAAa,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,MAAM;AAC9C,MAAI,OAAO,KAAK,IAAI,EAAE,WAAW,EAAG,QAAO;AAC3C,SAAO,KAAK,OAAO,QAAQ,IAAI,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM;AACtD,WAAO,GAAG,GAAG,GAAG,MAAM,KAAK,WAAW,KAAK,GAAG,KAAK,MAAM,SAAS,CAAC;AAAA,EACpE,CAAC,EAAE,KAAK,IAAI,CAAC;AACd,CAAC;AACD,aAAa,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW;AACrD,QAAM,SAAS,KAAK,IAAI,CAAC,EAAE,UAAU,OAAO,MAAM,OAAO,CAAC,EAAE,KAAK,KAAK;AACtE,SAAO,SAAS,IAAI,MAAM,MAAM;AACjC,CAAC;AACD,aAAa,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,MAAM;AACjD,SAAO,GAAG,KAAK,IAAI,CAAC,UAAU,MAAM,SAAS,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC;AAChE,CAAC;AACD,aAAa,aAAa;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AACD,GAAG,CAAC,EAAE,MAAM,GAAG,YAAY,MAAM,SAAS,OAAO,CAAC;;;AC3kB3C,IAAM,YAAY;AAGlB,IAAM,gBAAgB;AAGtB,IAAM,iBAAiB;AACvB,IAAM,oBAAoB;AAG1B,IAAM,qBAAqB;AAC3B,IAAM,qBAAqB;AAC3B,IAAM,oBAAoB;AAC1B,IAAM,qBAAqB;AAG3B,IAAM,cAAc;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAKO,IAAM,oBAAoB;AAU1B,IAAM,uBAAuB;AAC7B,IAAM,oBAAoB;AAC1B,IAAM,qBAAqB;AAE3B,IAAM,sBAAsB;AAG5B,IAAM,4BAA4B;AAClC,IAAM,6BAA6B;AAGnC,IAAM,sBAAsB;AAa5B,IAAM,gBAAgB;AAGtB,IAAM,wBAAwB;AAG9B,IAAM,sBAAsB;AAG5B,IAAM,mBAAmB;AAGzB,IAAM,kBAAkB;AAsExB,IAAM,mBAAuC;AAAA,EAClD,SAAS;AAAA,EACT,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,UAAU;AAAA,EACV,SAAS;AAAA,EACT,UAAU;AAAA,EACV,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,aAAa;AAAA,EACb,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB,oBAAoB;AAAA,EACpB,cAAc;AAChB;AA0BO,SAAS,eAAuB;AACrC,QAAM,MAAM;AACZ,MAAI,OAAO,IAAI,QAAQ,eAAe,WAAY,QAAO,IAAI,OAAO,WAAW;AAC/E,QAAM,MAAM,CAAC,UAA0B,MAAM;AAAA,IAC3C,EAAE,QAAQ,MAAM;AAAA,IAChB,MAAM,KAAK,MAAM,KAAK,OAAO,IAAI,EAAE,EAAE,SAAS,EAAE;AAAA,EAClD,EAAE,KAAK,EAAE;AACT,SAAO,GAAG,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;AAC7D;AAGO,SAAS,eAAe,MAAiC;AAC9D,QAAM,QAAQ,KAAK,MAAM,UAAU,EAAE,IAAI,UAAQ,KAAK,KAAK,CAAC,EAAE,OAAO,UAAQ,SAAS,EAAE;AACxF,SAAO,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC;AAC3B;;;AC1LO,IAAM,OAAO;AAGpB,IAAM,YAAY;AAClB,IAAM,YAAY;AAclB,SAAS,SAAS,OAAqD;AACrE,SAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK,IACtE,QACA;AACN;AAGA,SAAS,OAAO,OAAwB;AACtC,SAAO,OAAO,UAAU,WAAW,QAAQ;AAC7C;AAGA,SAAS,YAAYE,OAAuB;AAC1C,MAAIA,UAAS,MAAMA,MAAK,SAAS,gBAAiB,QAAO;AACzD,MAAI;AACF,QAAI,QAAQ,CAAC,CAACA,OAAM,OAAO,CAAC,CAAC;AAC7B,WAAO;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAGA,SAAS,aAAa,OAAwB;AAC5C,MAAI,UAAU,MAAM,MAAM,SAAS,iBAAkB,QAAO;AAC5D,MAAI;AACF,QAAI,QAAQ,CAAC,CAAC,eAAe,KAAK,CAAC,CAAC;AACpC,WAAO;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAUA,SAAS,WACP,WACA,QACmB;AACnB,QAAM,OAAO,OAAO,KAAK,SAAS;AAClC,MAAI,OAAO,WAAW,EAAG,QAAO,KAAK,OAAO,SAAO,IAAI,WAAW,qBAAqB,CAAC;AACxF,SAAO,OAAO,OAAO,SAAO,OAAO,UAAU,eAAe,KAAK,WAAW,GAAG,CAAC;AAClF;AAGA,SAAS,UAAU,OAAwB;AACzC,MAAI,iBAAiB,SAAS,MAAM,YAAY,GAAI,QAAO,MAAM;AACjE,SAAO,OAAO,KAAK;AACrB;AAOA,eAAe,aAAa,UAAuC;AACjE,QAAM,MAAM,SAAS,SAAS,IAAI,SAAS,CAAC;AAC5C,MAAI,QAAQ,OAAW;AAEvB,QAAM,UAAU,IAAI,aAAa,MAAM,QAAQ,IAAI,oBAAoB,MAAM;AAC7E,QAAMA,QAAO,OAAO,IAAI,iBAAiB,CAAC;AAC1C,QAAM,SAAS,YAAYA,KAAI;AAC/B,QAAM,aAAa,eAAe,OAAO,IAAI,mBAAmB,CAAC,CAAC;AAGlE,MAAI,QAAQ,OAAO,IAAI,kBAAkB,CAAC;AAC1C,MAAI,WAAW,UAAU,UAAU,IAAI;AACrC,YAAQ,aAAa;AACrB,UAAM,SAAS,OAAO,WAAW,CAAC,EAAE,IAAI,OAAO,MAAM,CAAC,kBAAkB,GAAG,MAAM,CAAC,CAAC;AAAA,EACrF;AAEA,QAAM,MAAM,SAAS,SAAS,IAAI,aAAa,CAAC;AAChD,QAAM,YAAY,QAAQ,SAAY,SAAY,SAAS,IAAI,SAAS;AAExE,QAAM,SAAmB,CAAC;AAC1B,QAAM,UAAoB,CAAC;AAC3B,MAAI,SAAS;AAEb,MAAI,CAAC,SAAS;AACZ,aAAS;AAAA,EACX,WAAW,cAAc,QAAW;AAClC,aAAS;AAAA,EACX,WAAW,CAAC,QAAQ;AAClB,aAAS;AAAA,EACX,WAAW,CAAC,aAAa,KAAK,GAAG;AAC/B,aAAS,qDAAa,gBAAgB;AAAA,EACxC,OAAO;AACL,eAAW,SAAS,WAAW,WAAW,UAAU,GAAG;AACrD,YAAM,UAAU,SAAS,SAAS,UAAU,KAAK,CAAC,GAAG,OAAO;AAC5D,UAAI,UAAUA,KAAI,MAAM,OAAO;AAC7B,eAAO,KAAK,EAAE,IAAI,OAAO,MAAM,CAAC,aAAa,OAAO,WAAWA,KAAI,GAAG,MAAM,CAAC;AAAA,MAC/E;AACA,cAAQ,KAAK,KAAK;AAAA,IACpB;AACA,aAAS,QAAQ,WAAW,IACxB,yGAAoB,WAAW,WAAW,IAAI,GAAG,qBAAqB,MAAM,WAAW,KAAK,QAAG,CAAC,WAChG,sBAAO,QAAQ,KAAK,QAAG,CAAC;AAAA,EAC9B;AAIA,QAAM,QAAkB,CAAC;AACzB,MAAI,cAAc,QAAW;AAC3B,UAAM,eAAe,OAAO,IAAI,yBAAyB,CAAC;AAC1D,UAAM,gBAAgB,OAAO,IAAI,0BAA0B,CAAC;AAC5D,UAAM,OAAO,oBAAI,IAAI,CAAC,OAAO,IAAI,kBAAkB,CAAC,GAAG,aAAa,CAAC;AACrE,SAAK,OAAO,EAAE;AAEd,UAAM,UAAU,IAAI,IAAI,QAAQ,IAAI,WAAS,GAAG,KAAK,KAASA,KAAI,EAAE,CAAC;AACrE,UAAM,aAAa,oBAAI,IAAI,CAAC,cAAc,SAASA,QAAO,EAAE,CAAC;AAC7D,eAAW,OAAO,EAAE;AACpB,eAAW,aAAa,YAAY;AAClC,iBAAW,CAAC,OAAO,OAAO,KAAK,OAAO,QAAQ,SAAS,GAAG;AACxD,YAAI,QAAQ,IAAI,GAAG,KAAK,KAAS,SAAS,EAAE,EAAG;AAC/C,cAAM,UAAU,SAAS,SAAS,OAAO,GAAG,OAAO;AACnD,cAAM,UAAU,UAAU,SAAS;AACnC,YAAI,OAAO,YAAY,YAAY,CAAC,KAAK,IAAI,OAAO,EAAG;AACvD,cAAM,KAAK,EAAE,IAAI,SAAS,MAAM,CAAC,aAAa,OAAO,WAAW,SAAS,EAAE,CAAC;AAAA,MAC9E;AAAA,IACF;AAAA,EACF;AAEA,QAAM,cAAc,CAAC,GAAG,QAAQ,GAAG,KAAK;AACxC,MAAI,SAAS;AACb,MAAI,YAAY,SAAS,GAAG;AAC1B,QAAI;AACF,YAAM,SAAS,OAAO,eAAe,WAAW;AAAA,IAClD,SAAS,OAAgB;AACvB,eAAS;AACT,eAAS,iCAAQ,UAAU,KAAK,CAAC;AAAA,IACnC;AAAA,EACF;AAGA,QAAM,kBAAkB,CAAC,UAAU,QAAQ,SAAS,IAAIA,QAAO;AAC/D,QAAM,mBAAmB,CAAC,UAAU,QAAQ,SAAS,IAAI,QAAQ;AACjE,QAAM,SAAmB,CAAC;AAC1B,MAAI,OAAO,IAAI,yBAAyB,CAAC,MAAM,iBAAiB;AAC9D,WAAO,KAAK,EAAE,IAAI,OAAO,MAAM,CAAC,yBAAyB,GAAG,OAAO,gBAAgB,CAAC;AAAA,EACtF;AACA,MAAI,OAAO,IAAI,0BAA0B,CAAC,MAAM,kBAAkB;AAChE,WAAO,KAAK,EAAE,IAAI,OAAO,MAAM,CAAC,0BAA0B,GAAG,OAAO,iBAAiB,CAAC;AAAA,EACxF;AACA,MAAI,OAAO,IAAI,mBAAmB,CAAC,MAAM,QAAQ;AAC/C,WAAO,KAAK,EAAE,IAAI,OAAO,MAAM,CAAC,mBAAmB,GAAG,OAAO,OAAO,CAAC;AAAA,EACvE;AACA,MAAI,OAAO,SAAS,EAAG,OAAM,SAAS,OAAO,WAAW,MAAM;AAChE;AAGO,SAAS,MAAM,KAAoB;AACxC,MAAI,OAAO,CAAC,UAAU,GAAG,CAAC,gBAAgB;AACxC,gBAAY,SAAS;AAAA,MACnB;AAAA,MACA,OAAE,OAAO;AAAA,QACP,CAAC,aAAa,GAAG,OAAE,QAAQ,EAAE,QAAQ,iBAAiB,OAAO;AAAA,QAC7D,CAAC,cAAc,GAAG,OAAE,OAAO,EAAE,QAAQ,iBAAiB,OAAO;AAAA,QAC7D,CAAC,iBAAiB,GAAG,OAAE,OAAO,EAAE,QAAQ,iBAAiB,UAAU;AAAA,QACnE,GAAG,OAAO,YAAY,YAAY,IAAI,WAAS;AAAA,UAC7C;AAAA,UACA,OAAE,QAAQ,EAAE,QAAQ,iBAAiB,KAAK,CAAC;AAAA,QAC7C,CAAC,CAAC;AAAA,QACF,CAAC,iBAAiB,GAAG,OAAE,QAAQ,EAAE,QAAQ,iBAAiB,UAAU;AAAA,QACpE,CAAC,kBAAkB,GAAG,OAAE,QAAQ,EAAE,QAAQ,iBAAiB,WAAW;AAAA,QACtE,CAAC,kBAAkB,GAAG,OAAE,QAAQ,EAAE,QAAQ,iBAAiB,WAAW;AAAA;AAAA,QAEtE,CAAC,iBAAiB,GAAG,OAAE,OAAO,EAAE,IAAI,SAAS,EAAE,IAAI,SAAS,EAAE,SAAS,KAAK;AAAA,QAC5E,CAAC,kBAAkB,GAAG,OAAE,OAAO,EAAE,IAAI,GAAG,EAAE,IAAI,SAAS,EAAE,SAAS,KAAK;AAAA;AAAA,QAEvE,CAAC,oBAAoB,GAAG,OAAE,QAAQ,EAAE,QAAQ,iBAAiB,aAAa;AAAA,QAC1E,CAAC,iBAAiB,GAAG,OAAE,OAAO,EAAE,QAAQ,mBAAmB;AAAA,QAC3D,CAAC,kBAAkB,GAAG,OAAE,OAAO,EAAE,QAAQ,iBAAiB,WAAW;AAAA,QACrE,CAAC,mBAAmB,GAAG,OAAE,OAAO,EAAE,QAAQ,iBAAiB,YAAY;AAAA,QACvE,CAAC,yBAAyB,GAAG,OAAE,OAAO,EAAE,QAAQ,iBAAiB,iBAAiB;AAAA,QAClF,CAAC,0BAA0B,GAAG,OAAE,OAAO,EAAE,QAAQ,iBAAiB,kBAAkB;AAAA,QACpF,CAAC,mBAAmB,GAAG,OAAE,OAAO,EAAE,QAAQ,iBAAiB,YAAY;AAAA,MACzE,CAAC;AAAA,IACH;AAEA,UAAM,WAAW,YAAY;AAG7B,QAAI,OAAO;AACX,QAAI,QAAQ;AACZ,UAAM,OAAO,MAAY;AACvB,UAAI,MAAM;AACR,gBAAQ;AACR;AAAA,MACF;AACA,aAAO;AACP,WAAK,aAAa,QAAQ,EACvB,MAAM,CAAC,UAAmB;AACzB,gBAAQ,MAAM,4DAAyB,KAAK;AAAA,MAC9C,CAAC,EACA,QAAQ,MAAM;AACb,eAAO;AACP,YAAI,OAAO;AACT,kBAAQ;AACR,eAAK;AAAA,QACP;AAAA,MACF,CAAC;AAAA,IACL;AAEA,UAAM,oBAAoB,CAAC,OAAsB;AAC/C,UAAI,OAAO,aAAa,OAAO,cAAe,MAAK;AAAA,IACrD;AACA,QAAI,GAAG,oBAA6B,iBAA0B;AAE9D,SAAK;AAAA,EACP,CAAC;AACH;",
|
|
6
|
+
"names": ["value", "Binary", "result", "a", "b", "Time", "date", "template", "options", "pattern", "value", "extra", "resolve", "toJSON", "date", "toString", "name", "key", "name"]
|
|
7
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "dsh-composer-ux",
|
|
3
|
+
"version": "0.1.2",
|
|
4
|
+
"description": "DSH Web 输入体验增强插件:可配置发送/换行键位 + 自定义输入框右键菜单 + 面板尺寸记忆 + OpenCode 会话请求头(含设置页)",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./lib/index.js",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": "./lib/index.js",
|
|
9
|
+
"./client": {
|
|
10
|
+
"default": "./lib/client.js"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"files": [
|
|
14
|
+
"lib",
|
|
15
|
+
"cordis.patch.yml",
|
|
16
|
+
"README.md",
|
|
17
|
+
"CHANGELOG.md",
|
|
18
|
+
"LICENSE"
|
|
19
|
+
],
|
|
20
|
+
"keywords": [
|
|
21
|
+
"dsh-plugin",
|
|
22
|
+
"dsh",
|
|
23
|
+
"deepseek-harness",
|
|
24
|
+
"cordis",
|
|
25
|
+
"web",
|
|
26
|
+
"input",
|
|
27
|
+
"context-menu",
|
|
28
|
+
"settings",
|
|
29
|
+
"opencode"
|
|
30
|
+
],
|
|
31
|
+
"license": "MIT",
|
|
32
|
+
"repository": {
|
|
33
|
+
"type": "git",
|
|
34
|
+
"url": "https://github.com/fangwen9527/dsh-composer-ux.git"
|
|
35
|
+
},
|
|
36
|
+
"dsh": {
|
|
37
|
+
"client": {
|
|
38
|
+
"platform": "web",
|
|
39
|
+
"inject": [
|
|
40
|
+
"slots",
|
|
41
|
+
"settingsScope"
|
|
42
|
+
]
|
|
43
|
+
},
|
|
44
|
+
"bundle": {
|
|
45
|
+
"patch": "./cordis.patch.yml"
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"scripts": {
|
|
49
|
+
"build": "node build.mjs"
|
|
50
|
+
},
|
|
51
|
+
"devDependencies": {
|
|
52
|
+
"esbuild": "^0.25.0"
|
|
53
|
+
}
|
|
54
|
+
}
|